ros机器人编程实践(3.1)- 将消息发布在话题上

696
0
2020年8月7日 08时25分

前言

 

记录下学习过程,《ros机器人编程实践》第三章第一个例子讲的不是很清楚,又是入门学习的算是第一第二个例子,对新手真的很不友好。

 

实现过程

 

1、创建catkin工作区(这部分不清楚可以在wiki上看详细介绍):

mkdir -p ~/catkin_ws/src

 

cd ~/catkin_ws/src

 

catkin_init_workspace

 

cd ~/catkin_ws

 

catkin_make

 

source devel/setup.bash

 

2、创建basic包

 

创建basic包依赖于std_msg和rospy

 

cd ~/catkin_ws/src
catkin_creat_pkg basic std_msg rospy

 

进入basic的src目录

 

cd basic/src

 

创建并编辑topic_publisher.py文件

 

touch topic_publisher.py
gedit topic_publisher.py

 

复制一下代码进去并保存

 

#!/usr/bin/env python
import roslib; roslib.load_manifest('basic')
import rospy
from std_msgs.msg import Int32
rospy.init_node('topic_publisher')
pub = rospy.Publisher('counter', Int32)
rate = rospy.Rate(2)
count = 0
while not rospy.is_shutdown():
        pub.publish(count)
        count += 1
        rate.sleep()

 

设置文件执行权限

 

chmod u+x topic_publisher.py

 

返回catkin_ws目录并编译

 

cd ~/catkin_ws
catkin_make

 

写入环境变量并source环境变量文件使之生效

 

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

 

ctrl+alt+t打开新终端启动roscore

 

roscore

 

在原来的终端启动写好的发布消息的节点

 

rosrun basic topic_publisher.py

 

程序执行情况

 

ros机器人编程实践(3.1)- 将消息发布在话题上插图

 

这个警告好像无伤大雅,刚入门百度搜了一些没太看明白怎么解决。
再开一个新终端,用rostopic list打印正在执行的话题

 

rostopic list

 

ros机器人编程实践(3.1)- 将消息发布在话题上插图(1)

 

可以看到我们的节点已经在运行了。

用rostopic echo打印节点的数据

 

rostopic echo counter -n 5

 

打印五条消息

 

ros机器人编程实践(3.1)- 将消息发布在话题上插图(2)

 

用rostopic来检验他是否按照我们的预期速率发送

 

rostopic hz counter

 

ros机器人编程实践(3.1)- 将消息发布在话题上插图(3)

 

ctrl+c停止打印,用rostopic info查看已经被声明的话题

 

rostopic info counter

 

ros机器人编程实践(3.1)- 将消息发布在话题上插图(4)

 

用rostopic find来查询发布某种类型消息的所有话题

 

rostopic find std_msgs/Int32

 

ros机器人编程实践(3.1)- 将消息发布在话题上插图(5)

 

ok到此结束啦~enjoy it

发表评论

后才能评论