ROS命令与基本知识汇总

目前为止用到的指令

  • rospack = ros+pack(age) : provides information related to ROS packages
  • roscd = ros+cd : changes directory to a ROS package or stack
  • rosls = ros+ls : lists files in a ROS package
  • roscp = ros+cp : copies files from/to a ROS package
  • rosmsg = ros+msg : provides information related to ROS message definitions
  • rossrv = ros+srv : provides information related to ROS service definitions
  • catkin_make : makes (compiles) a ROS package
    • rosmake = ros+make : makes (compiles) a ROS package (if you're not using a catkin workspace)

辅助知识:

一个程序包要想称为catkin程序包必须符合以下要求:

每个目录下只能有一个程序包。

    • 这意味着在同一个目录下不能有嵌套的或者多个程序包存在。

最简单的程序包也许看起来就像这样:

·       my_package/

·         CMakeLists.txt

·         package.xml

 

工作空间示例:

workspace_folder/        -- WORKSPACE

  src/                   -- SOURCE SPACE

    CMakeLists.txt       -- 'Toplevel' CMake file, provided bycatkin

    package_1/

      CMakeLists.txt     -- CMakeLists.txt file for package_1

      package.xml        -- Package manifest for package_1

    ...

    package_n/

      CMakeLists.txt     -- CMakeLists.txt file for package_n

      package.xml        -- Package manifest for package_n

 

改变节点名称:

rosrun turtlesimturtlesim_node __name:=my_turtle

清除rosnode节点:

rosnodecleanup

ping节点

$ rosnode pingmy_turtle

话题和节点

urtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来互相通信的。turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim则订阅该话题以接收该消息。

上图中,红色箭头就表示一个话题,蓝色和绿色表示ros节点,他们通过/turtle1/cmd_vel的话题来通信,这样在键盘上按方向键,消息就发布到话题上了,然后turtle则订阅了这个话题,消息传递给乌龟,乌龟就会移动。

ROSMessages

话题之间的通信是通过在节点之间发送ROS消息实现的。对于发布器(turtle_teleop_key)和订阅器(turtulesim_node)之间的通信,发布器和订阅器之间必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面的消息类型决定的。使用rostopic type命令可以查看发布在某个话题上的消息类型

消息(msg)和服务(srv)介绍

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

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

msg文件存放在packagemsg目录下,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文件的样例,它使用了Headerstring,和其他另外两个消息类型。

  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 是响应。

获取帮助

我们认识了很多ros工具,但是很难一下子记住他们,幸运的是,大多数工具都自带帮助。

试试:

$ rosmsg -h

你将看到:

Commands:

  rosmsg show     Show message description

  rosmsg list     List all messages

  rosmsg md5      Display message md5sum

  rosmsg package  List messages in a package

  rosmsg packages List packages that containmessages

你还可以在子指令中获得帮助:

$ rosmsg show -h

显示:

Usage: rosmsg show[options] <message type>

 

Options:

  -h, --help show this help message and exit

  -r, --raw  show raw message text, including comments

 

发布器和订阅器节点

发布器节点和订阅器节点一般在/ROSPACKAGE/scripts中添加,官方例程中在scripts中添加了talk.py和listen.py并将他们都加上可执行文件权限,然后再来编译节点,在工作空间中使用catkin_make。

rosrunbeginner_tutorials talker.py   (Python)

使用类似命令执行文件。

服务端和客户端

服务端和客户端的Python程序也是在scripts文件夹中存放的,并拥有可执行权限,最后需要编译节点。官方教程还可以提供更多程序参考。

录制与回放数据

新建一个文件夹/bagfiles来记录数据文件。

使用如下命令记录数据:

rosbag record -a

使用该命令查看数据信息:

rosbag info<your bagfile>

或者回放该数据信息:

rosbag play<your bagfile>

改变回放数据的速率:

rosbag play -r 2<your bagfile>

 

只记录一个单个话题:

rosbag record -Osubset /turtle1/cmd_vel /turtle1/pose

-O选项是让记录的文件名字为subset。

日志等级说明

日志等级按以下优先顺序排列:

Fatal

Error

Warn

Info

Debug

Fatal是最高优先级,Debug是最低优先级。通过设置日志等级你可以获取该等级及其以上优先等级的所有日志消息。比如,将日志等级设为Warn时,你会得到WarnErrorFatal这三个等级的所有日志消息。

概念介绍

Packages

Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。

Manifest

Manifest (package.xml): 清单,是对于'软件包'相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。

package.xml

描述标签

<description>Thebeginner_tutorials package</description>

将描述信息修改为任何你喜欢的内容,但是按照约定第一句话应该简短一些,因为它覆盖了程序包的范围。如果用一句话难以描述完全那就需要换行了

维护者标签

  <!-- One maintainer tag required, multipleallowed, one person per tag -->

  <!-- Example:  -->

  <!-- <maintaineremail="jane.doe@example.com"&g

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值