ROS : 话题通信
Creating a workspace for catkin
链接: http://wiki.ros.org/catkin/Tutorials/create_a_workspace
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
添加环境变量
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
Creating a ROS Package
链接: http://wiki.ros.org/ROS/Tutorials/CreatingPackage
# Creating a catkin Package
$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
# Building a catkin workspace and sourcing the setup file(上面已添加环境变量,此处无需重复添加)
$ cd ~/catkin_ws
$ catkin_make
话题编程
话题通信模型
自定义话题消息
1)新建 msg 消息目录,定义 msg 消息
2)在 package.xml 中添加功能包依赖
3)在 CMakeLists.txt 添加编译选项
话题编程流程
1)创建发布者
- 初始化 ROS 节点
- 向 ROS Master 注册节点信息,包括发布的话题名和话题中的消息类型
- 按照一定频率循环发布消息
2)创建订阅者
- 初始化 ROS 节点
- 订阅需要的话题
- 循环等待话题消息,接收到消息后进入回调函数
- 在回调函数中完成消息处理
3)运行可执行程序
-
打开终端一,启动 ros master
$ roscore -
打开终端二,创建发布者
$ rosrun beginner_tutorials talker.py -
打开终端三,创建订阅者
$ rosrun beginner_tutorials listener.py
话题编程 Demo(发布者每 100ms 发布实时的时间戳,订阅者实时监听发布者发布的内容)
自定义话题消息
1)新建 msg 消息目录,定义 msg 消息
$ roscd beginner_tutorials/
$ mkdir msg
$ cd msg/
$ touch Num.msg
$ rosed beginner_tutorials Num.msg
$ cat Num.msg
int64 num
链接: vi/vim 使用(Linux)
2)在 package.xml 中添加功能包依赖
$ rosed beginner_tutorials package.xml
$ tail -n +62 ../package.xml | head -n 2
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
3)在 CMakeLists.txt 添加编译选项
$ rosed beginner_tutorials CMakeLists.txt
- 在 CMakeLists.txt 文件中增加对 message_generation 的依赖
$ tail -n +10 ../CMakeLists.txt | head -n 6
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
- 增加消息文件
$ tail -n +50 ../CMakeLists.txt | head -n 7
## Generate messages in the 'msg' folder
add_message_files(
FILES
Num.msg