第一节:ROS的节点通信
摘要:
介绍ROS的节点基础通信,也即发布端到订阅端的单向通信。
1. *理论介绍*
节点是ROS中最小的进程单位,每一个节点都是一个可执行的单位,负责实现具体的功能,如数据获取,坐标变换图像信息获取等功能。
编程语言可以是Python或者CPP
2. *功能实现*
创建一个发布端,发布内容是:hello,wpf
创建一个订阅端,接收发布的内容并在终端显示
3. *步骤实现*
3.1在ROS的工作空间中,创建一个功能包,并且进行编译:
wpf@wpfpc:$ cd ~/catkin_fs/src
wpf@wpfpc:~/catkin_fs/src$ catkin_create_pkg test_pkg std_msgs roscpp rospy
wpf@wpfpc:~/catkin_fs/src$ cd ..
wpf@wpfpc:~/catkin_fs$ catkin_make
文件功能包的文件目录如下
wpf@wpfpc:~/catkin_fs/src/test_pkg$ tree
.
├── CMakeLists.txt
├── include
│ └── test_pkg
├── package.xml
└── src
├── pubForBeginner.cpp
└── subForBeginner.cpp
3.2在创建的功能包的src目录下创建两个文件
pubForBeginner.cpp
subForBeginner.cpp
3.3 修改功能包中CMakeList.txt的内容
3.4 代码修改之后,编译成功之后即可运行
3.5 打开四个终端分别执行,一个roscore;两个节点,以及运行rqt查看节点之间的通信关系。
wpf@wpfpc:~/catkin_fs$ roscore
wpf@wpfpc:~/catkin_fs$ rosrun test_pkg pubForBeginner
wpf@wpfpc:~/catkin_fs$ rosrun test_pkg subForBeginner
wpf@wpfpc:~/catkin_fs$ rosrun rqt_graph rqt_graph
代码运行结果如下:
wpf@wpf:~$ rosrun test_pkg subForBeginner
[ INFO] [1654669671.867138051]: The message subscribed is hello,wpf:
[ INFO] [1654669671.966282122]: The message subscribed is hello,wpf:
[ INFO] [1654669672.066592904]: The message subscribed is hello,wpf:
[ INFO] [1654669672.167693223]: The message subscribed is hello,wpf:
....
节点之间的通信框图如下:
1.
*实验分析:*
本实验,实现了节点之间的通信功能,发布端发送信息,订阅端口能接收到信息。通过通信的结构框图也可以看出效果。