先上导图:
然后是总结的一些小知识点
1.话题定义:一个定义了类型的消息流
通信机制:发布/订阅(publish/subscribe)
发布实现:声明(advertise)话题名和发送到该话题的消息类型,发布数据到话题
订阅实现:节点向roscore发出请求来订阅话题
2.ROS中,在同一个话题的所有消息必需是同一类型的
3.shebang符号(#!):指明了执行这个脚本文件的解释程序
具体使用方式:shebang具体
4.linux添加可执行权限命令:$chmod u+x topic_publisher.py
5.使用一个其他包的消息时需要告知ROS的构建系统:在package.xml文件中添加依赖:<depend package="std_msgs"/>
6.rospy.init_node('节点名')
初始化节点
7.声明节点
pub = rospy.Publisher('话题名',消息类型)
sub = rospy.Subscriber('话题名',消息类型,回调函数名)
8.rate = rospy.Rate(2)
设置速率,单位赫兹,表示发布消息的速率
9.pub.publish(话题名)
发布话题内容
10.rate.sleep()
按循环频率延时,让程序休眠一段时间,使得程序运行时间与发布消息的速率相近。
11.rospy.spin()
这个函数只有在节点准备结束时才会返回,避免使用高层while循环的捷径。
12.定义一个新消息步骤:
a.消息文件编写
b.告知构建系统新消息的定义:在package.xml文件添加
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
c.告诉catkin去哪里找message_generation包:在CMakeLists.txt文件中添加:
find_package(catkin REQUIRED COMPONENTS rospy std_msgs message_generation )
d.告知catkin我们将在运行时使用消息:
catkin_package(
CATKIN_DEPENDS message_runtime
)
e.告知catkin我们想编译他:
add_message_files(
FILES
Complex.msg
)
f.添加消息所依赖的所有依赖项:
generate_messages(
DEPENDENCIES
std_msgs
)
g.消息使用
h.编译
13.尽量不要创造新的消息类型,会加大移植难度
rosmsg:查看已有消息类型
以上是我学习时记下的一些笔记,若有误请大家能帮忙指出,谢谢