ros1学习笔记:ros命令行工具的使用(ubuntu20.04)(代码片段)

Aaron-ywl Aaron-ywl     2023-03-17     277

关键词:

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

文章目录

一、启动小海龟

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

roscore

再打开一个终端,启动小海龟可视化仿真器(可以输入rosrun turtlesim ,敲两下空格查看这个命令有哪些功能):

如看到有turtlesim_node,完整命令为:

rosrun turtlesim turtlesim_node

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

rosrun turtlesim turtle_teleop_key

这样启动小海龟的完整命令结束了,然后可以通过←→↑↓来控制小海龟的移动:

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

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

rqt_graph

可以展示当前小海龟系统启动成功后的计算图:

从这个计算图可以清晰地了解到节点间通信的部分信息。
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 (参数) 话题名 消息数据结构 “具体数据”

我们可以输入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"

我们可以通过←→来更改速度的信息,比如我更改了线速度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" 

可以发现小海龟在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" 

3、消息rosmsg

查看消息数据结构:rosmsg show

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

rosmsg show geometry_msgs/Twist


Twist是有关速度的数据结构,包含线速度和角速度的x,y,z的三个分量

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

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

查看服务列表:rosservice list

通过rosservice list来查看服务列表:

手动通过服务来进行操作

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

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


(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 文件名

比如我们使用之前打开的键盘操作器让海龟移动一圈并记录下来:

执行命令后,就会开始记录开发者的执行过程,我们通过键盘方向键来移动小海龟,然后结束可以按Ctrl+C来停止。
保存的文件记录在主目录下:

接下来我们要复现一遍刚才移动小海龟的记录,我们先关闭所有小海龟的ROS节点,重新开启roscore,开启小海龟节点rosrun turtlesim turtlesim_node
复现之前的移动过程的格式为:

rosbag play 文件名

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

rosbag play cmd_record

ros2学习笔记29--项目从ros1迁移到ros2的经验参考(代码片段)

环境:ubuntu20.04,ros-foxy(ros2),vscode背景:项目需要,一直折腾把ros1下面的包升级到ros2版本.以下纯属个人查找资料摸索,自我理解所得,有错误的地方,望大佬们不吝赐教.1.消失的句柄ro... 查看详情

ros1云课→08基础实践(cli命令行接口)

ROS1云课→07基础概念本小节将01-07内容进行单项和综合实践。对于ROS1、2使用过程中遇到问题,要善于使用开源社区。ROS开源社区级的概念主要是ROS资源,其能够通过独立的网络社区分享软件和知识。这些资源包括:... 查看详情

ftxui编译和使用(不含ros1/2)

...,先介绍基础内容,FTXUI是C++编写的适用:winlinuxmacos……命令行UI。下载FTXUI源码,然后,编译即可:mkdirbuildcmake..make看一看效果?按钮示例颜色调节灰 黄 曲线图等 最简单的例子:#include<ftxui/dom/elements.hpp>#include&... 查看详情

ros1云课-1024(代码片段)

...复习一下,ROS1主要内容。 分为如下:基础部分命令部分图形化工具部分功能包使用部分功能包编译部分导航部分区域覆盖部分1.基础部分参考一键配置:ROS1云课→30导航仿真演示_zhangrelay的博客-CSDN博客ROS1云课→31欢... 查看详情

ros1云课→09功能包小定制(cli命令行接口)(代码片段)

ROS1云课→08基础实践(CLI命令行接口)默认的turtlesim:开始定制化: 首先,将turtlesim源码拷贝到base_tutorials/src目录下:图标换一下:然后修改源码turtle_frame.cpp:QVector<QString>turtles;tu 查看详情

ros1云课→09功能包小定制(cli命令行接口)(代码片段)

ROS1云课→08基础实践(CLI命令行接口)默认的turtlesim:开始定制化: 首先,将turtlesim源码拷贝到base_tutorials/src目录下:图标换一下:然后修改源码turtle_frame.cpp:QVector<QString>turtles;tu 查看详情

ros1云课→10日志信息(代码片段)

ROS1云课→09功能包小定制(CLI命令行接口)使用console 运行ROS1各类应用后,消息会分类显示:通过这类信息可以查看机器人系统过程中的各种警报信息等。日志信息通过信息记录显示程序的运行状态是好的习惯&#x... 查看详情

ros1云课→13三维可视化工具rviz(代码片段)

...可视化从二维到三维,不仅仅是多了一个维度,工具也由rqt升级为rviz。使用rviz打开工具,(ROS2使用rviz2)。注意,ros1单独使用rviz时候需要保证roscore处于运行状态。rviz  rviz2:这部分ros1和ros2,在... 查看详情

ros1云课→13三维可视化工具rviz(代码片段)

...可视化从二维到三维,不仅仅是多了一个维度,工具也由rqt升级为rviz。使用rviz打开工具,(ROS2使用rviz2)。注意,ros1单独使用rviz时候需要保证roscore处于运行状态。rviz  rviz2:这部分ros1和ros2,在... 查看详情

ftxui编译和使用(不含ros1/2)(代码片段)

...内容,FTXUI是C++编写的适用:winlinuxmacos……命令行UI。下载FTXUI源码,然后,编译即可:mkdirbuildcmake..make看一看效果?按钮示例颜色调节灰 黄 曲线图等 最简单的例子:​#incl 查看详情

ros系统常用命令行工具的使用(代码片段)

...ph可视化工具查看系统汇总运行的计算图rqt_graph使用rosnode命令可以查看ros节点相关的信息。1.rosnodelist命令可以列出运行的ros节点rosnodelist注&#x 查看详情

ros1云课→10日志信息(代码片段)

ROS1云课→09功能包小定制(CLI命令行接口)使用console 运行ROS1各类应用后,消息会分类显示:通过这类信息可以查看机器人系统过程中的各种警报信息等。日志信息通过信息记录显示程序的运行状态是好的习惯&#x... 查看详情

ros学习笔记之——evo工具的使用(代码片段)

之前博客《ROS学习笔记之——VICON的使用》用vincon获得了机器人的真实轨迹,并且通过amcl可以获得了机器人的定位结果,下面通过EVO包来表征performance(本文不像网上大部分博客复制粘贴别人的图,连跑都没跑过&#... 查看详情

ros学习笔记之——rpg_trajectory_evaluation工具的使用(代码片段)

之前博客《ROS学习笔记之——EVO工具的使用》采用了EVO来衡量误差,本博文试试rpg_trajectory_evaluation首先编译mkdircatkin_wscdcatkin_wsmkdirsrccdsrcgitclonehttps://github.com/uzh-rpg/rpg_trajectory_evaluation.gitgitclonehttps://githu 查看详情

ros1云课→11曲线绘制

...幻步伐(轨迹类题型)_zhangrelay的博客-CSDN博客rqt工具非常多,绘图plot只是其中之一:绘制标量数据图使用ROS中现有的一些通用工具轻松地绘制标量数据图。当然非标量数据也可以绘制,但是要分别在不 查看详情

ros1学习-01使用ros系统进行相关代码开发,使用docker解决环境问题,遇到一些奇怪问题,总结汇总下,开始学习研究(代码片段)

目录前言1,关于ROS系统2,使用docker进行安装3,总结前言本文的原文连接是:https://blog.csdn.net/freewebsys/article/details/126063760未经博主允许不得转载。博主地址是:http://blog.csdn.net/freewebsys1,关于ROS系统https:// 查看详情

ros1学习-01使用ros系统进行相关代码开发,使用docker解决环境问题,遇到一些奇怪问题,总结汇总下,开始学习研究(代码片段)

目录前言1,关于ROS系统2,使用docker进行安装3,总结前言本文的原文连接是:https://blog.csdn.net/freewebsys/article/details/126063760未经博主允许不得转载。博主地址是:http://blog.csdn.net/freewebsys1,关于ROS系统https:// 查看详情

-firststepswithros2.1(代码片段)

...人编程简述新书推荐-AConciseIntroductiontoRobotProgrammingwithROS2学习笔记流水账-推荐阅读原书。第二章主要就是一些ROS的基本概念,其实ROS1和ROS2的基本概念很多都是类似的。ROS2机器人个人教程博客汇总(2021共6套)如何更... 查看详情