10.发布者publisher的编程实现

C++版本

1.ros::Publisher turtle_vel_pub = n.advertise("/turtle_vel_pub",10);

advertise( ) 返回一个 Publisher 对象。 通过调用对象的 publish( )函数, 你可以在这个topic上发布 message。猜测Publisher 对象应该是从属于节点的。

10是队列长度,当publisher发布频率太快,底层以太网不能迅速响应,所以先将数据放在队列中,相当于一个缓存。如果仍然发不出去,最先进队的数据会被抛掉,就会出现掉数据的情况。

2.ROS_INFO("Publish turtle velocity command[%0.2f m/s, %0.2f rad/s]", vel_msg.linear.x, vel_msg.angular.z);

ROS_INFO类似于C语言中的printf函数,输出日志信息。

3.loop_rate.sleep();

按照循环频率延时,实现每秒发布消息的频率。

4.CMakelists文件的修改

add_executable(velocity_publisher src/velocity_publisher.cpp)

将src中的velocity_publisher.cpp编译成可执行文件velocity_publisher。

target_link_libraries(velocity_publisher ${
     catkin_LIBRARIES})

将可执行文件和ros相关的一些库进行链接。

python版本

1.#!/usr/bin/env python

指定执行脚本的解释器
解释器

2.import rospy from geometry_msgs.msg import Twist

使用 import 语句来引入模块
python模块

3.if __name__ == '__main__':

__name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。(if name == ‘main’ 如何正确理解? - 旷修的回答 - 知乎https://www.zhihu.com/question/49136398/answer/114438004)
更详细的解释

4.try/except语句

python使用try/except语句处理异常。
python异常处理

你可能感兴趣的:(古月居ros21讲)