ROS编程基本语法

ROS编程基本语法

1.c_str()和data()
相同点:都生成一个const char*指针,指向一个临时数组。
不同点:string中的数据并没有保证被存储在独立的一块连续内存中,string的内部表示形式并没承诺以一个null字符结束。这
解释了string 的成员函数c_str存在的原因,它返回一个按C风格设计的指针,指向string的值。因此我们可以这样传递一个
string对象s给这个函数:
void doSomething(const char *pString);
即使是字符串的长度为0,它都能工作。data并没有这个保证(也就是说返回字符串一定会以null结尾)
勿通过string::data、string::c_str返回指针修改string内容,也就是说data()和c_str()只供引用使用。而且一旦string内容变动,则必须重新获取该指针。string对象的赋值,必须使用符合string类规则的处理方式,比如构造、append、erase等函数进行。
2.消息(msg)和服务(srv)

  • 消息(msg): msg文件就是一个描述ROS中所使用消息类型的简单文本,它们会被用来生成不同语言的源代码

  • 服务(srv): 一个srv文件描述一项服务。它包含两个部分:请求和响应

msg文件存放在package的msg目录下,srv文件则存放在srv目录下。

msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:

int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]
在ROS中有一个特殊的数据类型:Header,它含有时间戳和坐标系信息,在msg文件的第一行经常可以看到Header header的声明

下面是一个msg文件的样例,它使用了Header,string,和其他另外两个消息类型

  Header header
  string child_frame_id
  geometry_msgs/PoseWithCovariance pose
  geometry_msgs/TwistWithCovariance twist

srv文件分为请求和响应两部分,由’- - -'分隔,下面是srv的一个样例

int64 A
int64 B
---
int64 Sum

其中 A 和 B 是请求, 而Sum 是响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值