学习目标:
ROS_Publisher和调试
学习内容:
学习ROS_Publisher的写法和如何GUI调试以及命令行调试。
学习产出:
生成hello_topic的pkg文件夹:
cd ROSWorkspace/first_ws
catkin_create_pkg hello_topic rospy rosmsg roscpp
source devel/setup.zsh (或者是.bash)
cd /snap/clion/139/bin
./clion.sh
编写hello_topic:
先在hello_topic下生成scripts目录,这个是用来存放python代码的。
然后在scripts下新建一个py文件,我取名为hello_topic.py
#!/usr/bin/env python3.8
import rospy
from std_msgs.msg import String
# 这个来自rosmsg
if __name__ == '__main__':
rospy.init_node("publisher_node")
rate1 = rospy.Rate(4)
# 主题名称,唯一类型
topic_name = "hello_topic_publisher"
publisher1 = rospy.Publisher(topic_name, String, queue_size=100, )
# 主题名称,数据类型,
count = 0
while not rospy.is_shutdown():
# 往外发送数据
msg = String()
msg.data = "hello topic {}".format(count)
publisher1.publish(msg)
rate1.sleep()
count += 1
运行之前要把这个hello_topic.py设置成可执行文件。
rosrun hello_topic hello_topic.py
这时候topic已经在运行了,但是终端上看不到。
我们可以进行GUI调试或者是命令行调试。
GUI调试:
这里有个BUG 虽然Ubuntu的默认python是3.8版本,但是这里不能直接运行rqt_topic 会提示环境目录中没有python 这是因为它lib文件里面的环境还是python2.7的环境。
所以要这样来运行:
rosrun rqt_gui rqt_gui
在弹出的框中,选择菜单栏里的plugins,找到topics 里面对应有Topic Monitor,选择这个就可以了。
然后在Topic Monitor里可以看到我们正在运行的hello_topic的节点。勾选它,可以在展开信息里看到data的变化。
命令栏调试:
rostopic XXXX
echo | 打印目前的消息 |
---|---|
hz | 显示频率 |
bw | 带宽 |
info | 节点信息 |
list | topic所有的节点 |
type | topic的消息类型 |