[转]RoboWare Studio的使用和发布器/订阅器的编写与测试
原文地址:https://blog.csdn.net/han_l/article/details/77772352,转载主要方便随时查阅,如有版权要求,请及时联系。
开始ROS学习之前,先按照官网教程和其他老大们写的博客安装好ROS,再安装一个RoboWare-Studio,虽然用Qt和Eclipse也行,但比较麻烦,这个很方便。
RoboWare Studio
是ROS
的一款IDE
,基于微软开源的VSCode
开发,功能比较强大,使得开发更加快速、简单。是目前最好用的ROS
开发工具了。
整个安装过程非常简单,只要去RoboWare Studio官网,下载最新的安装包,然后双击安装即可。
按照大多网络教材的顺序,我们先来做一个发布器和订阅器。步骤如下:
1.在RoboWare-Studio里的工作区间下新建一个包beginner_tutorials,依赖项是std_msgs,roscpp.
2.在_tutorials包下的src里创建两个cpp源文件talker和listener。
talker文件内容如下:
1 #include"ros/ros.h"//导入ros核心头文件
2 #include"std_msgs/String.h"//导入std_msgs/String消息头文件,由std_msgs包的string.msg文件自动生成
3 #include<sstream>
4 int main(int argc, char **argv)
5 {
6 ros::init(argc, argv, "talker");//初始化ROS,指定节点名为talker
7 ros::NodeHandle n;//实例化节点
8 ros::Publisher chatter_pub=n.advertise<std_msgs::String>("chatter",1000);//发布一个名为chatter的的话题的消息,消息类型为std_msgs/String,消息队列大小为1000,超过后旧的消息丢弃
9 ros::Rate loop_rate(10);//发消息的频率,这里指每秒10次,通过 Rate::sleep()来处理睡眠的时间来控制对应的发布频率。
10 int count=0;
11 while(ros::ok())//默认roscpp会植入一个SIGINT处理机制,当按下Ctrl-C,就会让ros::ok()返回false,那循环就会结束
12 {
13 std_msgs::String msg;
14 std::stringstream ss;
15 ss<<"hello world"<<count;
16 msg.data=ss.str();//实例化消息msg, 定义字符串流“hello world”并赋值给ss, 最后转成为字符串赋值给msg.data
17 ROS_INFO("%s",msg.data.c_str());//输出调试信息
18 chatter_pub.publish(msg);//实际发布的函数
19 ros::spinOnce();//不是必需的,但是保持增加这个调用,是好习惯。如果程序里也有订阅话题,就必需,否则回调函数不能起作用。
20 loop_rate.sleep();
21 ++count;
22 }
23 return 0;
24 }
25 /*ros::ok() 返回false的几种情况:
26
27 SIGINT收到(Ctrl-C)信号
28 另一个同名节点启动,会先中止之前的同名节点
29 ros::shutdown()被调用
30 所有的ros::NodeHandles被销毁
31 */
listener里的内容如下:
1 #include"ros/ros.h"
2 #include"std_msgs/String.h"
3
4 void chatterCallback(const std_msgs::String::ConstPtr& msg)
5 {
6 ROS_INFO("I heared :[%s]",msg->data.c_str());
7 }//回调函数,收到chatter话题时会调用这个函数,消息通过boost shared_ptr(共享指针)传递,收到消息通过ROS_INFO显示到终端
8 int main(int argc, char **argv)
9 {
10 ros::init(argc, argv, "listener");
11 ros::NodeHandle n;
12 ros::Subscriber sub=n.subscribe("chatter",1000,chatterCallback);//订阅节点
13 ros::spin();//调用此函数才能进入循环处理,直到ros::ok返回false结束
14 return 0;
15 }
通过Roboware-studio编写,package.xml和CMakeLists.txt不需要修改,会帮我们修改好。
3.点击左上角资源管理器边上的小锤子进行编译,有错误的话会报。
4.上方菜单栏的ROS里的roscore点一下,也可以<Ctrl>+<Alt>+T
打开终端运行roscore。
5.在终端里到工作空间下source一下setup.sh文件
1 # In your catkin workspace
2 $ cd ~/catkin_ws
3 $ source ./devel/setup.bash
6.在两个终端里分别rosrun talker和listener
1 $ rosrun beginner_tutorials talker (C++)
2 $ rosrun beginner_tutorials talker.py (Python)
3
4
5 $ rosrun beginner_tutorials listener (C++)
6 $ rosrun beginner_tutorials listener.py (Python)
7.验证一下成功后<Ctrl>+c
关闭两个终端
参考网站:
测试消息发布器和订阅器 (C++)
编写简单的消息发布器和订阅器 (C++)
http://www.php8.org/fwq/90575.html
http://www.rosclub.cn/post-591.html
[转]RoboWare Studio的使用和发布器/订阅器的编写与测试的更多相关文章
- RoboWare Studio 安装
RoboWare Studio是一个ROS集成开发环境.它使 ROS开发更加直观.简单.并且易于操作.可进行ROS工作区及包的管理.代码编辑.构建及调试. 下载链接:https://pan.baidu ...
- 微软Visual Studio "14" CTP 2 发布
微软Visual Studio "14" CTP 2 发布 对于在微软阵营下进行工作的团队来说,拥有最新版本的Visual Studio是提高效率最佳的选择,没有之一. 在本文中, ...
- 最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- [翻译] Visual Studio 2019 RC版发布
[翻译] Visual Studio 2019 RC版发布 原文: Visual Studio 2019 Release Candidate (RC) now available 今天,我们将分享 V ...
- 终于等到你,最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- Visual Studio Code 1.0发布,支持中文在内9种语言
Visual Studio Code 1.0发布,支持中文在内的9种语言:Simplified Chinese, Traditional Chinese, French, German, Italia ...
- Android Studio 2.2.2 发布
Android Studio 2.2.2 发布了.包括 canary, dev, beta, and stable 这几个系列. 该版本修复了 Android Studio 2.2.1 中排名较前的b ...
- Visual Studio 2017正式版发布全纪录
又是一年发布季,微软借着Visual Studio品牌20周年之际,于美国太平洋时间2017年3月7日9点召开发布会议,宣布正式发布新一代开发利器Visual Studio 2017.同时发布的还有 ...
- Android Studio 1.0RC1版发布
Android Studio 1.0RC1 版本发布. 以下是官网该版本说明: Android Studio 1.0 Release Candidate 1 November 20th, 2014: ...
随机推荐
- 使用VMware WorkStation虚拟机软件安装CentOS 8
使用VMware WorkStation虚拟机软件安装CentOS 8 说明:本章我们使用的虚拟机软件是VMware WorkStation15.5 PRO,镜像包是CentOS-8.2.2004-x ...
- Jenkins(3)拉取git仓库代码,执行python自动化脚本
前言 python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了 新建项目 打开Jenkins新建一个自由风格的项目 源码管理 Repository ...
- 浅谈Webpack模块打包工具一
为什么要使用模块打包工具 1.模块化开发ES Modules存在兼容性问题 打包之后成产阶段编译为ES5 解决兼容性问题 2.模块文件过多 网络请求频繁 开发阶段把散的模块打包成一个模块 解决网络请 ...
- TDH社区版搭建总结
在安装之前需要对docker分区进行格式化处理: Redhat/CentOS 在Redhat/CentOS上,docker分区必须采用XFS格式,实现的步骤如下: 1. 创建目录/var/lib/do ...
- P4587 [FJOI2016]神秘数(主席树)
题意:给出1e5个数 查询l,r区间内第一个不能被表示的数 比如1,2,4可以用子集的和表示出[1,7] 所以第一个不能被表示的是8 题解:先考虑暴力的做法 把这个区间内的数字按从小到大排序后 从前往 ...
- HDU6311 Cover【欧拉路径 | 回路】
HDU6311 Cover 题意: 给出\(N\)个点的简单无向图,不一定联通,现在要用最少的路径去覆盖所有边,并且每条边只被覆盖一次,问最少路径覆盖数和各条路径 \(N\le 10^5\) 题解: ...
- hdu4348 To the moon (主席树 || 离线线段树)
Problem Description Background To The Moon is a independent game released in November 2011, it is a ...
- 2019 Multi-University Training Contest 5——permutation 2
传送门 题意: t组输入,之后每组例子有三个数n.x.y代表在一个以x为开头y为结尾的长为n的数组里面,开头和结尾数据已经固定,让你从1--n中找其他数据填入数组中 (每个数据不能重复使用),使它满足 ...
- How many integers can you find HDU - 1796 容斥原理
题意: 给你一个数n,找出来区间[1,n]内有多少书和n不互质 题解: 容斥原理 这一道题就让我真正了解容斥原理的实体部分 "容斥原理+枚举状态,碰到奇数加上(n-1)/lcm(a,b,c. ...
- hdu3516 Tree Construction
Problem Description Consider a two-dimensional space with a set of points (xi, yi) that satisfy xi & ...