marker主题 ros_ROS消息, 服务, 主题, 订阅 1

首先, msg, 消息可以理解成一个类, 或者结构体, 用于在C++跟Python之间传递数据用, 里面就是数据结构类似:

int8, int16, int32, int64 (plus uint*)

float32, float64

string

time, duration

other msg files

variable-length array[] and fixed-length array[C]

整数, 浮点数, 字符串, 时间, 时间间隔, 其他的msg文件类型, 固定长度数组跟非固定长度数据, 等等, 其实跟一个java bean的概念很像吧.

例子:

Header header

string child_frame_id

geometry_msgs/PoseWithCovariance pose

geometry_msgs/TwistWithCovariance twist

这个msg里面包含了, Header, 其他msg类型, string, geometry_msgs/PosewithCovariance, 字面理解就是姿势类.

srv, 服务类似msg, 只是用---符号分隔开发送跟回应, 比如:

int64 A

int64 B

---

int64 Sum

就是request是A, B, response是Sum

概念介绍完毕, 接下来实战一下, 首先创建msg, 其实就是写一个文件在package的/msg/文件夹.

$ roscd beginner_tutorials

$ mkdir msg

$ echo "int64 num" > msg/Num.msg

接着, 修改package.xml文件, 让编译跟运行的时候, 认识msg文件:

message_generation

message_runtime

然后修改CMakeLists.text, 加入msg的支持, 在已有的定义段落内添加即可:

find_package(catkin REQUIRED COMPONENTS

roscpp

rospy

std_msgs

message_generation

)

catkin_package(

...

CATKIN_DEPENDS message_runtime ...

...)

add_message_files(

FILES

Num.msg

)

generate_messages(

DEPENDENCIES

std_msgs

)

上面的很多内容已经存在, 只需要去掉注释部分即可.

如果以后, 你想查看某个package的msg数据类型, 用这个命令:

$ rosmsg show beginner_tutorials/Num

如果你连包名都记不住, 直接rosmsg show Num也可以.

接下来是srv, 再说一次, srv跟msg一个概念, 是个类, 只是分为request跟response而已.

先建一个srv文件夹:

$ roscd beginner_tutorials

$ mkdir srv

这里, 可以用roscp命令, 从别的package里面copy一个srv文件过来

$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

一样, 检查一下package.xml, 下面的有没有被注释, 有的话, 取消掉.

message_generation

message_runtime

CMakeLists.c里面同样:

# Do not just add this line to your CMakeLists.txt, modify the existing line

find_package(catkin REQUIRED COMPONENTS

roscpp

rospy

std_msgs

message_generation

)

srv跟msg本质上一样, 所以这里也一样.

add_service_files(

FILES

AddTwoInts.srv

)

service文件也要增加进去.

同样, 如果要查看service, 可以用类似查看msg的命令:

$ rossrv show beginner_tutorials/AddTwoInts

然后, 无论msg,还是srv, 都要再改下面:

generate_messages(

DEPENDENCIES

std_msgs

)

然后启动安装:

$ roscd beginner_tutorials

$ cd ../..

$ catkin_make install

然后你会发现, 在devel/include/beginner_tutorials目录下面,msg被干成了.h文件,可能是被序列化了吧...

OK, msg跟srv就建好了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值