【ROS读书笔记】---2-2. 实用指令

指令篇

I、基础的命令

1. 安装功能包:

sudo apt-get install ros-版本号-包名

sudo apt-get install ros-melodic-turtlesim
2. 运行节点:

rosrun 包名 可执行文件

rosrun turtlesim turtlesim_node

II、关于packages的命令

1. 查看软件包列表:
rospack list
  • 会列出很多软件包,每个包由package.xml定义,包括其名称、版本、维护者和依赖关系。包含这个xml文件的目录被称为软件包目录。
  • 通过catkin编译系统产生的可执行文件并未存放在功能包目录下
    • 通过apt-get命令安装的功能包,其所在的根目录为/opt/ros/melodic,可执行文件储存在include子目录下。

2. 定位软件包:

rospack find 包名

rospack find turtlesim
3. 查看某package里的文件

rosls 包名

rosls turtlesim
4. 打开某个package
roscd turtlesim

III、关于node指令

1. 启动node

rosrun 包名 可执行文件名

注意要开启the master

rosrun turtlesim turtlesim_node

甚至可以直接这样执行

/opt/ros/melodic/lib/turtlesim/turtlesim_node
2. 查看node列表
rosnode list

/rosout前边的反斜杠表明该节点属于全局命名空间。


4. 为节点命名

rosrun 包名 可执行文件名 __name:=新的名字

rosrun turtlesim turtlesim_node __name:=aa

节点名不一定和可执行文件名相同名
此时再查看rosnodelist会看到 /aa节点


5. 查看节点信息

rosnode info 节点名

rosnode info turtlesim_node
  • 会打印出话题列表,发布者,订阅者,PID等等信息。

6. 终止节点
rosnode kill turtlesim_node
  • 此外,还可以通过Ctrl-C命令终止节点,但这种使用方法可能不会再the master中注销该节点,没有坏处,但会影响开发者的观测。
    此时可以通过如下命令将节点从列表中删除
rosnode cleanup

IV、话题和消息的命令

1. 查看计算图
rqt_graph
2. 查看活跃的所有话题:
rostopic list
3. 实时打印某话题上发布的消息内容

rostopic echo 话题名

rostopic echo /turtle1/color_sensor

则会输出速度信息,实时变化的。如下,且每个—代表了消息的结束和另一个消息的开始

r : 179
g : 184
b : 255
---
r : 179
g : 184
b : 255

4. 查看话题

rostopic info 话题名

rostopic info /turtle1/color_sensor

输出如下:

  Type: turtlesim/Color 
  Publishers: 
   */turtlesim (http://donatello:46397/) 
  Subscribers: None
  • type表示该话题的消息类型

承接上文

5. 查看消息类型

rosmsg show 消息名

rosmsg show turtlesim/Color

即查看消息的数据结构,输出如下:

  uint8 r 
  uint8 g 
  uint8 b
  • 关于消息的内容,后边会给出更详细的理解

6. 查看消息发布的频率

rostopic hz 话题名

rostopic hz /turtle1/color_sensor
7. 查看消息发布的带宽

rostopic bw 话题名

rostopic bw /turtle1/color_sensor
8. 用命令行发布消息:

rostopic pub -r 消息发布频率 话题名 消息类型 message-content

rostopic pub -r 1 /turtle1/cmd_vel geometry_msgs/Twist '[2,0,0]' '[2,0,0]'
  • 这里的消息类型参考msgshow命令的类型格式按顺序分别给出 [第一个域的消息参数] [第二个域里的参数]。

V、对消息更深入的了解

基于小乌龟的例子可以看到
在/turtle1/color_sensor话题上的turtlesim_Color消息内容如下:

uint8 r 
uint8 g 
uint8 b
  • 上述输出的格式是域(field)的列表,每行一个元素,每一个域由基本数据类型(int8,bool,string)以及域名称定义。
  • 这条消息告诉我们,它包含三个无符号8位整型变量r,g,b。任何话题的消息只要是turtlesim/Color类型,都由上述三个域的值定义。

多看一点

再来看在/turtle1/cmd_vel话题上发布的geometry_msgs/Twist消息内容,如下:

geometry_msgs/Vector3 linear 
	float64 x 
	float64 y 
	float64 z 
geometry_msgs/Vector3 angular 
	float64 x 
	float64 y 
	float64 z
  • 不难看出:linear和angular都是复合域,其数据类型为geometry_msgs/Vector3。
  • 从缩进格式可以看出x,y,z的域是上级两个域的成员。
  • 即geometry_msgs/Twist消息包含六个成员,被组织成两个向量的形式。所以在我们前文用命令行发消息时赋值的时候才会以为[]0,0,0,[1,0,0]的2X3的形式赋值。

值得注意的是:复合域本身也可以作为消息类型。例如,一个具有消息类型geometry_msgs/Vector3的话题是符合语法的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值