ROS学习(一)——命令行代码(以小乌龟程序为例)

1 基础命令行语句

从大二四旋翼无人机编队后就没再接触过ROS了,最近由于科研任务需要重新捡起来,打算系统学一下!学习过程参考古月居老师的视频,有兴趣的同学可以去[BliBli]学习。

  • 学习平台:Ubuntu 18.04
  • 硬件支持:Redme G

1.1 roscore

启动Ros Master 即Ros节点控制器(几乎所有的Ros工作都需要输入这条命令)
首先启动小海龟仿真程序,输入如下指令:

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

结果如图所示:
ROS学习(一)——命令行代码(以小乌龟程序为例)_第1张图片  此时,可以在第三个命令行窗口下,通过方向键控制小乌龟移动。活用Tab键可以自动补全代码。

1.2 rqt_graph(显示系统计算图)

ROS学习(一)——命令行代码(以小乌龟程序为例)_第2张图片

1.3 rosnode(显示所有节点相关信息)

可以输入rosnode,并双击Tab查看相关帮助信息
ROS学习(一)——命令行代码(以小乌龟程序为例)_第3张图片

  • rosnode list 展示所有节点信息
  • rosnode info /turtlesim 展示特定节点的工作进程

1.4 rostopic(和话题相关)

可以直接通过此命令控制小龟移动: rostopic+话题名称+消息结构,如下命令:

 rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 2.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 2.0" 

 从图中可以看出,此指令只发布一次,小龟只会移动一小段,接下来尝试循环操作。
ROS学习(一)——命令行代码(以小乌龟程序为例)_第4张图片
尝试以10Hz的频率持续发布命令:

rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 2.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 2.0" 

ROS学习(一)——命令行代码(以小乌龟程序为例)_第5张图片
查看一下上述命令 geometry_msgs/Twist的格式:

ROS学习(一)——命令行代码(以小乌龟程序为例)_第6张图片

2 服务类型指令rosservice

ROS学习(一)——命令行代码(以小乌龟程序为例)_第7张图片

同时存在两只海龟

rosservice call /spawn 
"x: 2.0
y: 2.0
theta: 2.0
name: 'turtle2'" #定义海龟的初始位置和名字

ROS学习(一)——命令行代码(以小乌龟程序为例)_第8张图片此时,查看当前节点数,可以看到已经出现了第二只小海龟的节点(可以同时控制两只海龟了呦)

rostopic list

ROS学习(一)——命令行代码(以小乌龟程序为例)_第9张图片

ROS学习(一)——命令行代码(以小乌龟程序为例)_第10张图片

3 指令记录

rosbag record -a -O cmd_record #话题纪录 record= 纪录 -a =all -O=保存为什么形式
rosbag play cmd_record.bag #话题复现

ROS学习(一)——命令行代码(以小乌龟程序为例)_第11张图片
ROS学习(一)——命令行代码(以小乌龟程序为例)_第12张图片

[1] : https://www.bilibili.com/video/BV1zt411G7Vn?from=search&seid=16813335425953229316&spm_id_from=333.337.0.0

你可能感兴趣的:(ROS,linux)