1.进入工作区间
cd catkin_ws/src/
8.新建一个工程包
catkin_create_pkg lesson4 std_msgs rospy roscpp
9.新建msg文件夹
cd lesson4
mkdir msg
cd msg
touch Person.msg
gedit Person.msg

粘贴以下代码:

string name
uint8 sex
uint8 ageuint8 woman =0
uint8 man =1
uint8 manplus =2
10.修package.xml
cd ~/catkin_ws/src/lesson4
gedit package.xml

粘贴以下代码:

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
11.修改CMakeLists.txt
cd ~/catkin_ws/src/lesson4
gedit CMakeLists.txt

找到下面对应三个位置,改成如下图:


12.创建python文件夹,并在文件夹内创建两个py文件

person_subscriber.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#该例程将订阅/person_info话题,自定义消息类型lesson4::Person
import rospy
from lesson4.msg import Person
def personInfoCallback(msg):rospy.loginfo("Subcribe Person Info: name:%s age:%d sex:%d",msg.name,msg.age,msg.sex)
def person_subscriber():#ROS节点初始化rospy.init_node('person_subscriber',anonymous=True)#创建一个Subscriber,订阅名为/person_info的topic,注册回调函数personInfoCallbackrospy.Subscriber("/person_info",Person,personInfoCallback)#循环等待回调函数rospy.spin()
if __name__ == '__main__':
person_subscriber()

person_publisher.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#该例程发布/person_info话题,自定义消息类型lesson4::Person
import rospy
from lesson4.msg import Person
def velocity_publisher():#ROS节点初始化rospy.init_node('person_publisher',anonymous=True)#创建一个publisher,发布名为/person_info的topic,消息类型为learning_tpic::Person,队列长度10person_info_pub = rospy.Publisher('/person_info',Person,queue_size=10)#设置循环的频率rate = rospy.Rate(10)while not rospy.is_shutdown():#初始化learning_topic::Persion类型的消息person_msg = Person()person_msg.name = "Tom";person_msg.age = 18;person_msg.sex = Person.male;#发布消息person_info_pub.publish(person_msg)rospy.loginfo("Publish person message[%s,%d,%d]",person_msg.name,person_msg.age,person_msg.sex)#按照循环频率延时rate.sleep()if __name__ == '__main__':try:velocity_publisher()except rospy.ROSInterruptException:pass
13.回到工作区间,编译
cd ~/catkin_ws
catkin_make
运行三个终端
roscore
cd catkin_ws/
source ./devel/setup.bash
rosrun lesson4 person_subscriber.py
cd catkin_ws/
source ./devel/setup.bash
rosrun lesson4 person_publisher.py

参考链接:https://blog.csdn.net/qq_42451251/article/details/105029825

【嵌入式应用4】ROS话题编程相关推荐

  1. 【机器人操作系统】ROS话题编程

    文章目录 自定义消息的实现过程及说明 一.功能包的创建 二.自定义话题消息 (1)创建自定义消息文件步骤 (2)添加编译选项步骤 三.创建发布者 四.创建订阅者 五.添加编译选项 六.编译运行 (1) ...

  2. 机器人操作系统ROS(4)话题编程

    此节的前提是已经创建好工作空间,请参考 工作空间 一.话题通讯模型 二.话题编程实现 1. 实现发布者(Talker) a.在~/catkin_ws/src/learning_communicaton ...

  3. ROS学习【2】-----ubuntu16.04中进行ROS通信编程(话题编程)

    ROS通信编程-----话题编程 作为嵌入式系统应用开发的重要支柱之一的ROS,是我们学习嵌入式开发的第一步,既要学习ROS,我们就得知道ROS怎么使用,今天,林君学长带大家开始学习ROS的第一步:R ...

  4. ROS(五)之话题编程:msg文件

    文章目录 一.话题编程 1.talker.cpp 2.listerner.cpp 3.修改CMakeLists.txt文件 4.编译执行 二.自定义消息类型 1.新建消息类型文件 2.添加依赖 (1) ...

  5. 【一学就会的ROS基础入门教程 】03-1 ROS基础编程:ROS工作空间的创建、话题topic的发布与接收、以及话题消息的自定义使用

    [一学就会的ROS基础入门教程 ]03-1 ROS基础编程:ROS工作空间的创建.话题topic的发布与接收.以及话题消息的自定义使用 文前白话 1.创建工作空间与功能包 关于工作空间的介绍 创建开发 ...

  6. 【Robot学习 5 】ROS通信编程 待更新。。。

    https://blog.csdn.net/weixin_39036700/article/details/81660828 ROS通信编程--话题编程 如何运行文件 rosrun learning_ ...

  7. ros机器人编程实践(15.2)- 使用科大讯飞语音控制turtlebot导航

    一.前言 接上一篇博客:ros机器人编程实践(15.1)- 使用科大讯飞语音控制turtlebot导航 二.使用科大讯飞语音SDK 对着上一篇博客中科大讯飞的安装教程,创建了robot_voice的基 ...

  8. 理解ROS话题---ROS学习第5篇

    文章目录 1. 通过键盘控制turtle 2. ROS话题 2.1 使用rqt_graph 2.2 介绍rostopic 2.3 使用功能rostopic echo 2.4 使用rostopic li ...

  9. ROS学习笔记6(理解ROS话题)

    文章目录 1 启动 1.1 roscore 1.2 turtlesim 1.3 turtel_teleop_key 2 ROS 话题 2.1 使用rqt_graph 2.2 使用rostopic 2. ...

最新文章

  1. OutOfMemoryError与StackOverFlowError
  2. 【推荐系统】深入理解推荐系统:排序
  3. java并发synchronized 锁的膨胀过程(锁的升级过程)深入剖析(1)
  4. Qt文档阅读笔记-官方Form Extractor Example实例解析
  5. C++调用MATLAB函数
  6. java集合对字符串或对象去重
  7. SpaceX第二次商业载人任务发射日期不早于4月22日
  8. XGBoost深度理解
  9. java给一个类添加属性_给java虚拟机增加一个属性,java -D
  10. MATALB程序调试
  11. Servlet CDI Example Analysis
  12. Atitit USRqc62204 证书管理器标准化规范
  13. tensorflow学习笔记(1):使用入门
  14. [WebApi] 捣鼓一个资源管理器--数据库辅助服务器文件访问
  15. SNAP7 C++ 通讯
  16. VRP基础,命令行基础,文件系统基础,系统管理(2017年12月13日 09:51:51)
  17. 微信小程序商城有发展机会吗?
  18. 手把手教你如何用PhotoShop制作gif动画
  19. Java具体可以做什么?
  20. 如何解决Win10应用商店代码:0x80131500错误

热门文章

  1. “实名认证”与“实人认证”该怎么选?
  2. maya加载不了arnold的mtoa可能是这个低级错误!
  3. 微信H5公众号chooseImg上传图片
  4. 载入pytorch的预训练模型时遇到_pickle.UnpicklingError: unpickling stack underflow
  5. excel中统计某个字符的数量
  6. EasyExcel的简单读取操作
  7. MS8422/MS8413/MS8412/MS8416音频光纤同轴解码芯片样品技术支持
  8. android开发艺术探索3:IPC--AIDL(跨进程)的使用
  9. 国内虚拟主机与香港云主机的优劣势
  10. 红胖子 = 红 + 胖子 = 红(红模仿) + 胖子 --- 2007.6 ~ 至永远