python中msg函数_【ROS】ROS自定义msg以及在python中的使用

总结一下ROS自定义msg的用法(python)

参考:ROS Tutorials

一、自定义msg

1.新建msg文件

ROS自定义message需要在软件包下新建 /msg 文件夹,并在此文件夹下建立文件 msg名称.msg。.msg文件的文件格式如下

<< data_type1 >> << name_1 >>

<< data_type2 >> << name_2 >>

<< data_type3 >> << name_3 >>

...

(实际应用中删除<>)

其中data_type包含以下几种:

int8,int16,int32,int64

float32,float64

string

其他自定义msg:package/MessageName

不定长array[ ]以及定长array[N]

msg文件例子

string message

float32 sent_time

2.修改package.xml

在package.xml中加入以下两行代码

message_generation

message_runtime

message_generation用于编译阶段,message_runtime用于运行阶段。

3.修改CMakelist.txt

在CMakelist.txt中找到以下代码并取消注释

find_package(catkin REQUIRED COMPONENTS rospy std_msgs message_generation)

add_message_files(FILES <>.msg)

generate_messages(DEPENDENCIES std_msgs)

catkin_package(CATKIN_DEPENDS rospy std_msgs message_runtime)

注意第二行使用自己定义的msg文件名称,使用时去掉<>。

4.catkin_make

以上步骤使用完毕后回到catkin工作空间使用catkin_make命令就大功告成了,可以使用如下命令验证msg是否定义成功

rosmsg show <>

二、python文件中的自定义msg使用

话不多说,直接上代码

#!/usr/bin/env python

import rospy

from my_chatter.msg import TimestampString

def talker():

rospy.init_node('talker', anonymous=True) #定义节点

pub = rospy.Publisher('user_message', TimestampString, queue_size=10) #定义话题

r = rospy.Rate(10) # 10hz

# Loop until the node is killed with Ctrl-C

while not rospy.is_shutdown():

pub_string = TimestampString() #声明msg类型

pub_string.message = raw_input("Please enter a line of text and press :") # ros使用python2.7,使用raw_input读取字符串

pub_string.sent_time = rospy.get_time()

pub.publish(pub_string) #发布消息

r.sleep()

if __name__ == '__main__':

try:

talker()

except rospy.ROSInterruptException: pass

原文链接:https://blog.csdn.net/HIT_Kyrie/article/details/106483121

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值