原文地址:https://blog.csdn.net/han_l/article/details/77772352,转载主要方便随时查阅,如有版权要求,请及时联系。

开始ROS学习之前,先按照官网教程和其他老大们写的博客安装好ROS,再安装一个RoboWare-Studio,虽然用Qt和Eclipse也行,但比较麻烦,这个很方便。

RoboWare StudioROS的一款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的使用和发布器/订阅器的编写与测试的更多相关文章

  1. RoboWare Studio 安装

    RoboWare Studio是一个ROS集成开发环境.它使 ROS开发更加直观.简单.并且易于操作.可进行ROS工作区及包的管理.代码编辑.构建及调试. 下载链接:https://pan.baidu ...

  2. 微软Visual Studio "14" CTP 2 发布

    微软Visual Studio "14" CTP 2 发布 对于在微软阵营下进行工作的团队来说,拥有最新版本的Visual Studio是提高效率最佳的选择,没有之一. 在本文中, ...

  3. 最强 IDE Visual Studio 2017 正式版发布

    Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...

  4. [翻译] Visual Studio 2019 RC版发布

    [翻译] Visual Studio 2019 RC版发布 原文: Visual Studio 2019 Release Candidate (RC) now available 今天,我们将分享 V ...

  5. 终于等到你,最强 IDE Visual Studio 2017 正式版发布

    Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...

  6. Visual Studio Code 1.0发布,支持中文在内9种语言

    Visual Studio Code 1.0发布,支持中文在内的9种语言:Simplified Chinese, Traditional Chinese, French, German, Italia ...

  7. Android Studio 2.2.2 发布

    Android Studio 2.2.2 发布了.包括 canary, dev, beta, and stable 这几个系列. 该版本修复了 Android Studio 2.2.1 中排名较前的b ...

  8. Visual Studio 2017正式版发布全纪录

    又是一年发布季,微软借着Visual Studio品牌20周年之际,于美国太平洋时间2017年3月7日9点召开发布会议,宣布正式发布新一代开发利器Visual Studio 2017.同时发布的还有 ...

  9. Android Studio 1.0RC1版发布

    Android Studio 1.0RC1 版本发布. 以下是官网该版本说明: Android Studio 1.0 Release Candidate 1 November 20th, 2014:  ...

随机推荐

  1. Spark练习之action操作开发

    Spark练习之action操作开发 一.reduce 1.1 Java 1.2 Scala 二.collect 2.1 Java 2.2 Scala 三.count 3.1 Java 3.2 Sca ...

  2. cocos2d-x 调试问题

    1.昨天一个新功能,在xcode模拟器上测试没问题.后来打包安卓后,一直有问题 就又添加日志功能 #   define CCLOGFUNC(s)                             ...

  3. TypeScript 入门教程学习笔记

    TypeScript 入门教程学习笔记 1. 数据类型定义 类型 实例 说明 Number let num: number = 1; 基本类型 String let myName: string = ...

  4. dp practice 1

    https://codeforces.com/problemset/problem/553/A dp+组合数学 dp[i] 放前i种颜色的方法数 #include<bits/stdc++.h&g ...

  5. 1155 Heap Paths

    题干前半略. Sample Input 1: 8 98 72 86 60 65 12 23 50   Sample Output 1: 98 86 23 98 86 12 98 72 65 98 72 ...

  6. Windows10与虚拟机中CentOS-7.2进行ftp通信

    首先Linux的IP地址可以通过以下命令获取: ifconfig Windows10上面IP地址通过下面命令获取 ipconfig 你首先要保证你的主机和Linux虚拟机是可以ping通的(ping都 ...

  7. AtCoder - agc043_a 和 POJ - 2336 dp

    题意: 给你一个n行m列由'#'和'.'构成的矩阵,你需要从(1,1)点走到(n,m)点,你每次只能向右或者向下走,且只能走'.'的位置. 你可以执行操作改变矩阵: 你可以选取两个点,r0,c0;r1 ...

  8. Codeforces750E. New Year and Old Subsequence (线段树维护DP)

    题意:长为2e5的数字串 每次询问一个区间 求删掉最少几个字符使得区间有2017子序列 没有2016子序列 不合法输出-1 题解:dp i,p(0-4)表示第i个数匹配到2017的p位置删掉的最少数 ...

  9. HDOJ1232 畅通工程 DFS

    很早之前就做过的题以前用并查集做的 现在用DFS重做算是熟悉DFS吧 #include<stdio.h>#include<string.h>const int size=100 ...

  10. 【noi 2.6_4982】踩方格(DP)

    题意:一个无限大的方格矩阵,能向北.东.西三个方向走.问走N步共有多少种不同的方案. 解法: f[i]表示走 i 格的方案数. 状态转移方程推导如下--设l[i],r[i],u[i]分别为第 i 步向 ...