原文地址: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的使用和发布器/订阅器的编写与测试的更多相关文章

  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. Cmder的findstr问题

    在环境变量中加入C:\windows\system32即可

  2. Java通过openOffice实现word,excel,ppt转成pdf实现在线预览

    Java通过openOffice实现word,excel,ppt转成pdf实现在线预览 一.OpenOffice 1.1 下载地址 1.2 JodConverter 1.3 新建实体类PDFDemo ...

  3. Scala-文件操作

    Scala-文件操作 一.遍历一个文件中的每一行 方法一: 使用Source.getLines返回的迭代器 方法二: 将Source.getLines返回的迭代器,转换成数组 方法三: 调用Sourc ...

  4. OutOfMemoryError系列

    OutOfMemoryError系列 1.[OutOfMemoryError系列(1): Java heap space](https://blog.csdn.net/renfufei/article ...

  5. 使用zxing生成彩色或带图片的二维码

    <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <group ...

  6. C++泛型基础学习

    转载http://blog.csdn.net/xinzheng_wang/article/details/6674847 泛型的基本思想:泛型编程(Generic Programming)是一种语言机 ...

  7. C语言--指针数组大小

    #include <stdio.h> #include <string.h> int main(void) { char *str[3]={ "Hello,thisi ...

  8. Codeforces Round #631 div1C(或者div2E) Drazil Likes Heap 题解

    题目链接:https://codeforces.com/contest/1329/problem/C 或者:https://codeforces.com/contest/1330/problem/E ...

  9. Codeforces Round #547 (Div. 3) E. Superhero Battle (数学)

    题意:有一个HP为\(h\)的大怪兽,你需要轮流进行\(i\)次操作.每次可以使\(h+=d_i\)(\(d_i\)有正有负),当第\(n\)次操作完成后,再从第一次开始,问能否使得怪兽的HP变为\( ...

  10. JavaScript——变量及作用域