ros官网教程:编写简单的发布者和订阅者
c++版
在新建好的catkin_ws工作空间下建立。
cd catkin_ws/src
在该目录下创建自己的功能包:catkin_creat_pkg wjl_tutorials std_msgs roscpp rospy
其中wjl_tutorials为功能包名,std_msgs roscpp rospy为依赖项。
在该目录下生成:
在src目录下 cd src
创建发布者文件:gedit talker.cpp
创建订阅者文件:gedit listener.cpp
。分别将官网教程中的对应内容复制进去。ros官网教程
更改上一级中的CMakeLists.txt文件,即:
然后在catkin_ws目录下重新:catkin_make
打开新终端,启动ros:roscore
打开新终端,查看现有rospack:rospack list
发布我们的功能包:rosrun wjl_tutorials talker
或者是直接找到编译好的文件直接运行(在devel/lib/wjl_tutorials/下):./talker
打开新终端,接收我们的功能包:rosrun wjl_tutorials listener
查看现有节点:rosnode list
python版
在当前wjl_tutorials目录下:mkdir scripts
用于存放python脚本。
cd scripts
然后新建talker和listener文件:gedit talker.py
gedit listener.py
将官网文件内容各自复制进去。
python 相对于C++版本的文件,不需要编译,直接运行。
这里有几种运行方式:
1.python talker.py
2.增加该文件权限后用rosrun的方式运行
chmod +x talker.py
rosrun wjl_tutorials talker.py
(其实这种方式的运行就是把talker文件的地址找出来运行)
3 直接./talker.py
注意
不同版本的文件的收发是可以互相调用的。
只要是我们发布的参数与接收的参数设置的匹配,就可以接收到,可以同时接收多种话题一样的。
在终端用命令继续发布:rostopic pub -r 20 /chatter std_msgs/String ''data: 'hello wjl'"
接收到多个:
也可以使用rostopic echo /chatter
接收
在上述过程中,使用py和rostopic pub发布,C++和rostopic echo接收。
用:rostopic info /chatter
查看当前话题的信息,该话题有两个在发布,两个在接收(多发多收)。