• ROS1学习笔记:ROS命令行工具的使用(ubuntu20.04)


    参考B站古月居ROS入门21讲:ROS命令行工具的使用
    基于VMware Ubuntu 20.04 Noetic版本的环境

    一、启动小海龟

    打开终端,输入以下命令启动ROS的节点管理器-ROS master,这是ROS必须运行的管理器节点:

    roscore
    
    • 1

    再打开一个终端,启动小海龟可视化仿真器(可以输入rosrun turtlesim ,敲两下空格查看这个命令有哪些功能):
    在这里插入图片描述
    如看到有turtlesim_node,完整命令为:

    rosrun turtlesim turtlesim_node
    
    • 1

    再打开一个终端,启动键盘控制小海龟运动节点,命令为:

    rosrun turtlesim turtle_teleop_key
    
    • 1

    这样启动小海龟的完整命令结束了,然后可以通过←→↑↓来控制小海龟的移动:
    在这里插入图片描述

    二、计算图可视化工具:rqt_graph

    rqt_graph工具可以图形化显示当前ROS系统得中的计算图。在系统运行时,可以使用如下命令启动该工具:

    rqt_graph
    
    • 1

    可以展示当前小海龟系统启动成功后的计算图:
    在这里插入图片描述
    从这个计算图可以清晰地了解到节点间通信的部分信息。
    teleop_turtle节点(键盘控制节点)通过cmd_vel(topic)向turtlesim节点(海龟仿真器节点)发出消息,使得小海龟移动。

    三、常用命令:

    1、节点rosnode

    显示节点列表:rosnode list

    我们可以输入rosnode list来查看节点列表的信息,如下可以看到有三个节点信息:
    在这里插入图片描述

    查看节点信息:rosnode info

    查看节点的具体信息:rosnode info /节点名
    比如我们查看turtlesim(小海龟)的节点信息:
    在这里插入图片描述
    可以很详细地看到海龟仿真器节点(turtlesim)的相关话题的发布和订阅,还有服务和底层通讯的信息。

    2、话题rostopic

    显示话题列表:rostopic list

    通过rostopic list来查看话题列表:
    在这里插入图片描述

    手动发送数据给话题(topic)控制小海龟移动:rostopic pub

    上面我们是通过键盘的↑↓←→来控制小海龟的移动的,从这里开始我们可以手动发布数据给topic来控制海龟移动。
    上图我们看到小海龟是通过/cmd_vel这个topic进行发布信息而移动的,这次我们通过手动publish数据给这个topic来控制小海龟移动。

    格式:rostopic pub (参数) 话题名 消息数据结构 “具体数据”
    
    • 1

    我们可以输入rostopic pub /turtle1/cmd_vel 然后多按几次tab键来补全:
    在这里插入图片描述
    其中:linear是小海龟的线速度,angular是小海龟的角速度;这两个速度分别有x,y,z三个方向。

    rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
      x: 0.0
      y: 0.0
      z: 0.0
    angular:
      x: 0.0
      y: 0.0
      z: 0.0"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    我们可以通过←→来更改速度的信息,比如我更改了线速度x方向的信息:
    x:0.0改成x:1.0
    然后回车
    在这里插入图片描述

    rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
      x: 1.0
      y: 0.0
      z: 0.0
    angular:
      x: 0.0
      y: 0.0
      z: 0.0" 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    可以发现小海龟在x方向移动了一个单位的距离。
    我们可以补充参数使得小海龟移动很多次,比如我补充参数-r 10使得小海龟移动十次。这个r指的是rate频率。
    Ctrl+C终止
    在这里插入图片描述

    rostopic pub -r 10  /turtle1/cmd_vel geometry_msgs/Twist "linear:  
      x: 1.0
      y: 0.0
      z: 0.0
    angular:
      x: 0.0
      y: 0.0
      z: 0.0" 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3、消息rosmsg

    查看消息数据结构:rosmsg show

    上面我们使用了消息数据结构定义了一个消息传给topic,我们可以通过ros show xx数据结构来查看某数据结构,比如查看有关速度的数据结构:
    命令为:

    rosmsg show geometry_msgs/Twist
    
    • 1

    在这里插入图片描述
    Twist是有关速度的数据结构,包含线速度和角速度的x,y,z的三个分量

    4、使用服务通信方式:rosservice

    上面我们通过使用topicmsg来控制节点,这次我们来使用第二种通信方式service

    查看服务列表:rosservice list

    通过rosservice list来查看服务列表:
    在这里插入图片描述

    手动通过服务来进行操作

    我们手动来生成一个新海龟,在服务列表中,有一个/spawn服务可以生成一个新海龟。
    使用rosservice call /spawn 接tab键补充

    格式:rosservice call (参数) 服务名 “具体数据”
    
    • 1

    在这里插入图片描述
    (x,y)是小海龟生成的坐标,theta是小海龟生成的角度,name是新生成小海龟的名字。
    这里我更改了(x,y)坐标为(2.0,2.0),名字为turtle2
    在这里插入图片描述
    然后回车我们就可以看到生成一个新海龟了。
    在这里插入图片描述
    然后我们输入rostopic list,可以看到turtle2已经在topic里面了。

    在这里插入图片描述

    5、话题记录与复现:rosbag

    我们试想一个场景,如果我们在实验室A做了一番的实验,但是因为设备或者其他原因使得我们无法继续在实验室A继续做实验,这使得我们不得不搬到实验室B,这样我们就会面临一个问题:数据的保存和复现的问题
    我们不可能在实验室B把所有过程都重新执行一遍,这样太费时间了。因此我们可以在实验室A把过程数据保存下来,然后再实验室B复现一遍就可以继续实验了,这就出现了话题记录与复现的功能。
    常用命令:

    rosbag record -a -O 文件名
    
    • 1

    比如我们使用之前打开的键盘操作器让海龟移动一圈并记录下来:
    在这里插入图片描述
    执行命令后,就会开始记录开发者的执行过程,我们通过键盘方向键来移动小海龟,然后结束可以按Ctrl+C来停止。
    保存的文件记录在主目录下:
    在这里插入图片描述
    接下来我们要复现一遍刚才移动小海龟的记录,我们先关闭所有小海龟的ROS节点,重新开启roscore,开启小海龟节点rosrun turtlesim turtlesim_node
    复现之前的移动过程的格式为:

    rosbag play 文件名
    
    • 1

    这时我们输入以下命令来复现之前的移动过程:

    rosbag play cmd_record
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    Host ‘ ‘ is not allowed to connect to this MySQL server
    为什么我们要选择甲方型IT研发型IT-因为这是一个正确价值观问题
    计算机竞赛 深度学习 opencv python 实现中国交通标志识别
    一个UI设计师自学编程的经历
    LLM大模型:在RAG系统中应用知识图谱
    Spring AOP基于XML方式笔记整理
    Vue中如何使用Eachers
    网络安全(黑客技术)学习笔记
    DM数据库金融行业案例(水贴一波)
    【随笔记】SCI 简介(分区、查询网站、出版社、OA、影响因子)
  • 原文地址:https://blog.csdn.net/weixin_56197703/article/details/126912601