• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ros机器人编程实践(3.2)- 自定义消息类型发布与接收

人工智能 布剪刀石头 1583次浏览 0个评论

前言

《Ros机器人编程实践》第三章例程二定义虚数数据类型。

实现过程

创建工作区参见上一章博客: ros机器人编程实践(3.1)-将消息发布在话题上   先看下basic包的文件结构:  

cd ~/catkin_ws/src/basic
ls
tree

  ros机器人编程实践(3.2)- 自定义消息类型发布与接收   ok下面开始操作

1、创建我们的消息类型,也就是创建Complex.msg文件

cd ~/catkin_ws/src/basic
mkdir msg
cd msg
vi Complex.msg

  用vim编辑,先按键盘上的i进入输入模式,输入如下:   ros机器人编程实践(3.2)- 自定义消息类型发布与接收   按Esc退出编辑模式,输入”:wq”(注:引号内全部内容包括” : “),保存并退出。

2、编辑package.xml文件

cd ..
vi package.xml

  2.1、在 <build_depend>rospy</build_depend> <build_depend>std_msgs</build_depend> 在这些build_depend附近加入:

  <build_depend>message_generation</build_depend>
  <exec_depend>message_runtime</exec_depend>

  注意:如果是indigo版本的ros,exec_depend需要换成run_depend。   2.2 同上esc退出编辑模式,输入“:wq”保存并退出。   ros机器人编程实践(3.2)- 自定义消息类型发布与接收  

3、编辑CMakeLists.txt文件

vi CMakeLists.txt

  3.1、修改find_package(),加上message_generation: ros机器人编程实践(3.2)- 自定义消息类型发布与接收   3.2修改catkin_package(),加上message_runtime: ros机器人编程实践(3.2)- 自定义消息类型发布与接收   3.3修改add_message_files(),加上Complex.msg: ros机器人编程实践(3.2)- 自定义消息类型发布与接收   3.4修改generate_message(),去掉系统生成时加上的注释: ros机器人编程实践(3.2)- 自定义消息类型发布与接收  

4、在basic包的src下添加message_publisher.py和message_subscriber.py文件:

cd src
vi message_publisher.py
vi message_subscriber.py

  分别把代码粘贴进去:   message_publisher.py  

#!/usr/bin/env python
import roslib; roslib.load_manifest('basic')
import rospy
from basic.msg import Complex

from random import random

rospy.init_node('message_publisher')

pub=rospy.Publisher('complex',Complex)

rate=rospy.Rate(2)

while not rospy.is_shutdown():
	msg=Complex()
	msg.real=random()
	msg.imaginary=random()
	pub.publish(msg)
	rate.sleep()

message_subscriber.py  

#!/usr/bin/env python
import roslib; roslib.load_manifest('basic')
import rospy
from basic.msg import Complex

def callback(msg):
	print 'Real:',msg.real
	print 'Imaginary',msg.imaginary
	print

rospy.init_node('message_subscriber')
sub = rospy.Subscriber('complex', Complex,callback)
rospy.spin()

 

5、打开一个终端运行roscore:

roscore

 

6、返回catkin_ws的根目录,catkin_make编译并运行pub脚本

cd ~/catkin_ws
catkin_make
source devel/setup.bash
rosrun basic message_publisher.py

 

7、打开另一个终端,运行subscriber.py

rosrun basic message_subscriber.py

 

8、运行结果:

ros机器人编程实践(3.2)- 自定义消息类型发布与接收  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ros机器人编程实践(3.2)- 自定义消息类型发布与接收
喜欢 (0)

您必须 登录 才能发表评论!

加载中……