ROS学习记录:基于Python的ROS话题消息编程
基于Python的ROS话题消息编程
1、进入工作空间,创建名为learning_topic的功能包
cd catkin_ws/src
catkin_create_pkg learning_topic std_msgs rospy roscpp
2、在功能包目录下创建msg文件夹用于存放Person.msg文件
Person.msg文件内容如下:
string name
uint8 sex
uint8 ageuint8 unkonw=0
uint8 male=1
uint8 female=2
3、在package.xml文件中添加功能包依赖
<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>
4、在CMakeLists.txt文件中添加编译选项
找到对应位置做如下修改
5、编译
cd ~/catkin_ws
catkin_make
6、编译成功之后在learning_topic包里创建文件夹scripts存放py文件
Person_publisher.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#该例程将发布/person_info话题,自定义消息类型learning_topic::Personimport rospy
from learning_topic.msg import Persondef velocity_publisher():#ROS节点初始化rospy.init_node('person_publisher',anonymous=True)#创建一个Publisher,发布名为/person_info的topic,消息类型为learning_topic::Person,队列长度为10person_info_pub=rospy.Publisher('/person_info',Person,queue_size=10)#设置循环频率rate=rospy.Rate(10)while not rospy.is_shutdown():#初始化learning_topic::Peson类型的消息person_msg=Person()person_msg.name="ZhangJian";person_msg.age=20;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.ROSInteruptException:pass
Person_subscriber.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#该例程将订阅/person_info话题,自定义消息类型learning_topic::Personimport rospy
from learning_topic.msg import Persondef personInfoCallback(msg):rospy.loginfo("Subscribe 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()
7、为py文件添加执行权限
chmod 777 person_publisher.py
chmod 777 person_subscriber.py
再次编译
catkin_make
8、运行程序
运行person_publisher.py
source ./devel/setup.bash
rosrun learning_topic person_publisher.py
运行person_subscriber.py
source ./devel/setup.bash
rosrun learning_topic person_subscriber.py
订阅者(subscriber)会收到打印发布者(publisher)发布的消息。
ROS学习记录:基于Python的ROS话题消息编程相关推荐
- 【ROS学习笔记】(五)话题消息的定义与使用
一.目的 在ROS Master中,可以发布与订阅已经定义好的消息,比如海龟的运动.位姿等信息.但有时我们需要自己定义消息的类型. 本节主要目的为定义一个Person个人信息,Publisher发布个 ...
- ros学习(2-2):ros节点创建(python)
参考 Python创建简单的ROS节点: 用Python实现ROS节点(这里也说明了用Python写ROS功能包也是需要CMakelists.txt的) https://blog.csdn.net/s ...
- ROS学习记录 | 便于回顾
ROS学习记录 | 便于回顾 ROS环境搭建 ROS部分基础知识 ROS环境搭建 step1 创建工作空间目录结构 mkdir catkin_ws cd catkin_ws mkdir src cd ...
- ROS学习记录(二)阿克曼转向车运动学模型及在gazebo中搭建仿真环境
前言:该篇是ROS学习记录的第二篇,如果还没关注过之前文章的读者,如有需要可以通过下方传送门去看之前的文章: ROS学习记录(一) Plugin插件 这两天关注了古月老师的公众号,看到了其中一篇课程推 ...
- ROS学习记录9——urdf文件的创建与使用
零.前言 在学习这一节之前,至少得明白如何创建一个工作空间,如何编译工作空间,如何运行工作空间里的文件(把工作空间的环境目录添加到环境里).如果有不会的,请看鄙人的ROS学习记录3. 本节默认工作空间 ...
- ros学习记录:Gazebo加载速度慢,长时间停在“Preparing your world”
前言 ros学习记录笔记,一个小白的自留地,欢迎大佬批评指正~ 一.问题描述 Gazebo加载速度慢,长时间停在"Preparing your world" 二.解决办法 1.下载 ...
- Webots+ROS学习记录(4)——六轮全地形移动机器人
Webots+ROS学习记录(4)--六轮全地形移动机器人 有了以上经验,可以创造出一个全地形的移动机器人如图1 第一步,创建robot节点,并给robot节点编写相应参数 注意,这里的机身不能再使用 ...
- ros学习笔记12——python实现发布和接收ros topic
ros学习笔记12--python实现发布和接收ros topic 一.简单demo 1.工作空间是存放工程开发的相关文件的文件夹 2.创作工作空间指令 3 .创建功能包 4. 创建Topic的订阅发 ...
- 【ROS学习记录】2021/7/2 Gazebo+rviz仿真(一)
[ROS学习记录]2021/7/2 Gazebo+rviz进行turtlebot2仿真问题记录 ##小插曲 今天ubuntu挂载u盘一直读取失败所以做了一些令人窒息的操作,晚上开机就进入了initra ...
- ROS学习笔记四:理解ROS节点
ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...
最新文章
- 山沟沟里的实业路(3)
- 解决ubuntu无法修改分辨率为1920*1080问题
- linux c语言 readline,Linux C代码实现读取配置文件示例
- Tomcat connector 实现原理
- mmseg java_MMSeg中文分词算法
- WCF跨域 这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP...
- 【招聘(南京)】南京纳龙科技有限公司招高级.net开发工程师
- oracle acfs snap 恢复,删除ACFS系统碰到的问题
- Mysql批量更新的三种方式
- Java中选择排序,冒泡排序,插入排序,快速排序
- MOSFET(一):基础
- memcpy和strcpy的区别
- 数据挖掘与商业智能理论
- 操作系统实验四:C++实现独占设备的分配与回收算法模拟
- 2020 奇安信前端秋招笔试选择题
- 推荐20个neo4j实例?
- java.lang.NoClassDefFoundError: javax/activation/DataSource
- 线控转向 四轮转向控制 4WIS CarSim与Simulink联合
- vue elementui下载文件和使用vue-pdf展示pdf文件
- 数字化转型写书笔记-第43天