【嵌入式应用4】ROS话题编程
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话题编程相关推荐
- 【机器人操作系统】ROS话题编程
文章目录 自定义消息的实现过程及说明 一.功能包的创建 二.自定义话题消息 (1)创建自定义消息文件步骤 (2)添加编译选项步骤 三.创建发布者 四.创建订阅者 五.添加编译选项 六.编译运行 (1) ...
- 机器人操作系统ROS(4)话题编程
此节的前提是已经创建好工作空间,请参考 工作空间 一.话题通讯模型 二.话题编程实现 1. 实现发布者(Talker) a.在~/catkin_ws/src/learning_communicaton ...
- ROS学习【2】-----ubuntu16.04中进行ROS通信编程(话题编程)
ROS通信编程-----话题编程 作为嵌入式系统应用开发的重要支柱之一的ROS,是我们学习嵌入式开发的第一步,既要学习ROS,我们就得知道ROS怎么使用,今天,林君学长带大家开始学习ROS的第一步:R ...
- ROS(五)之话题编程:msg文件
文章目录 一.话题编程 1.talker.cpp 2.listerner.cpp 3.修改CMakeLists.txt文件 4.编译执行 二.自定义消息类型 1.新建消息类型文件 2.添加依赖 (1) ...
- 【一学就会的ROS基础入门教程 】03-1 ROS基础编程:ROS工作空间的创建、话题topic的发布与接收、以及话题消息的自定义使用
[一学就会的ROS基础入门教程 ]03-1 ROS基础编程:ROS工作空间的创建.话题topic的发布与接收.以及话题消息的自定义使用 文前白话 1.创建工作空间与功能包 关于工作空间的介绍 创建开发 ...
- 【Robot学习 5 】ROS通信编程 待更新。。。
https://blog.csdn.net/weixin_39036700/article/details/81660828 ROS通信编程--话题编程 如何运行文件 rosrun learning_ ...
- ros机器人编程实践(15.2)- 使用科大讯飞语音控制turtlebot导航
一.前言 接上一篇博客:ros机器人编程实践(15.1)- 使用科大讯飞语音控制turtlebot导航 二.使用科大讯飞语音SDK 对着上一篇博客中科大讯飞的安装教程,创建了robot_voice的基 ...
- 理解ROS话题---ROS学习第5篇
文章目录 1. 通过键盘控制turtle 2. ROS话题 2.1 使用rqt_graph 2.2 介绍rostopic 2.3 使用功能rostopic echo 2.4 使用rostopic li ...
- 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. ...
最新文章
- OutOfMemoryError与StackOverFlowError
- 【推荐系统】深入理解推荐系统:排序
- java并发synchronized 锁的膨胀过程(锁的升级过程)深入剖析(1)
- Qt文档阅读笔记-官方Form Extractor Example实例解析
- C++调用MATLAB函数
- java集合对字符串或对象去重
- SpaceX第二次商业载人任务发射日期不早于4月22日
- XGBoost深度理解
- java给一个类添加属性_给java虚拟机增加一个属性,java -D
- MATALB程序调试
- Servlet CDI Example Analysis
- Atitit USRqc62204 证书管理器标准化规范
- tensorflow学习笔记(1):使用入门
- [WebApi] 捣鼓一个资源管理器--数据库辅助服务器文件访问
- SNAP7 C++ 通讯
- VRP基础,命令行基础,文件系统基础,系统管理(2017年12月13日 09:51:51)
- 微信小程序商城有发展机会吗?
- 手把手教你如何用PhotoShop制作gif动画
- Java具体可以做什么?
- 如何解决Win10应用商店代码:0x80131500错误
热门文章
- “实名认证”与“实人认证”该怎么选?
- maya加载不了arnold的mtoa可能是这个低级错误!
- 微信H5公众号chooseImg上传图片
- 载入pytorch的预训练模型时遇到_pickle.UnpicklingError: unpickling stack underflow
- excel中统计某个字符的数量
- EasyExcel的简单读取操作
- MS8422/MS8413/MS8412/MS8416音频光纤同轴解码芯片样品技术支持
- android开发艺术探索3:IPC--AIDL(跨进程)的使用
- 国内虚拟主机与香港云主机的优劣势
- 红胖子 = 红 + 胖子 = 红(红模仿) + 胖子 --- 2007.6 ~ 至永远