【笔记】ROS1|1 ROS基本命令介绍及创建工作空间与功能包【旧文转载】

由于发布在博客园的我自己的博客转不过来(CSDN关闭了博客搬家的功能),但是博客园大家刷又刷不到,老问我一些莫名其妙的问题,我把我自己的博客从博客园直接复制粘贴过来,之后如果有更新也一律在CSDN更新,望周知,原文链接:

  1. 【ROS】1.1 ROS基本命令介绍 - shandianchengzi - 博客园
  2. 【ROS】1.2 创建工作空间与功能包 - shandianchengzi - 博客园

如果你期望更加美观的排版,可以去我的博客园看,如果你对排版不介意,就在这里看吧。
原发布时间:21/02/22 15:51,搬运时阅读量1681。
由于是旧文,书写时不免有许多错漏,如有问题请在评论区指出或私信给我。

本文对应的视频教程:ROS|实验一 玩转小乌龟 (ROS基本命令)_哔哩哔哩_bilibili

1.1 ROS基本命令介绍

右键新标签页查看大图!

have to do

Command

CommandResult中文解释图示
roscoreOpen the core of the ROS.启动ROS Master。20210223174011.png
sudo apt install python3-ros+Install the ros+ command.下载需要用到的命令,如rosservice(如果你的python版本不是python3,用python-ros+就行)20210224105804.png

Error

ErrorWhoseSolution
roscoregedit ~/.bashrc
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=localhost
export ROS_IP=‘hostname -I’
source ~/.bashrc
“正在等待缓存锁:无法获得锁……”apt installuse ‘sudo -i’ and install with root
若之后的指令运行不了,检查是否有右侧所示包,有关ros系统的安装问题参考Ubuntu 20.04安装Ros Noetic及Ubuntu 18.04安装ROS Melodic(两版本详细填坑)rosrun turtlesim等等sudo apt-get install ros-noetic-rospy、sudo apt install ros-noetic-roslaunch、sudo apt install ros-noetic-rosbash、sudo apt install ros-noetic-turtlesim、sudo apt-get install ros-noetic -teleop-twist-keyboard(注意我的版本是ubuntu20.04,因此对应ros-noetic系统)

need to run

rosrun: ros-run

CommandResult中文解释图示
rosrun turtlesimShow you all the turtlesim commands.列出所有可用的turtlesim命令。
rosrun turtlesim turtlesim-nodeCreate and run a turtle node.启动小海龟结点、小海龟仿真器。
rosrun turtlesim turtle_teleop_keyCreate and run a control node to control turtle with keyboard.启动小海龟控制结点。

Error

ErrorWhoseSolution
rosrun turtlesim打完指令之后,不要回车,tab两次就能出结果。

how to know

rqt_

CommandResult中文解释图示
rqt_graphShow a graph contained nodes, topics and so on.利用基于qt的可视化工具显示系统当前的结点和话题信息。
rqt_plotrqt_plot /turtle1/pose/x:y: A plot show just-in-time turtle1’s pose.基于qt的用于显示某信息的坐标工具。

ros+

CommandAddResult图示
rosnodelist,info,ping,machine,kill,cleanuprosnode list: Show the names of all the nodes.
rosnode info ABC: Show the information of the node named ABC, such as Publications, Subscriptions, Services and some Low-level communication information.
/rosout is a default active node.
rostopicbw,delay,echo,find,hz,info,list,pub,typerostopic list: Show the names of all the topics.
rostopic pub ABC content[tab,tab]: Publish the content of ABC. Tab twice will make the content show.
rostopic hz: 用来检测消息标题的发布频率。
rosmsgshow,info,list,md5,package,packagesrosmsg show [tab,tab]: Show message description. Tab twice will make the message description show.
rosservicelist,call,args,find,info,type,urirosservice list: Show the names of all the services.
rosservice call ABC content[tab,tab]: Open a service named ABC, whose content can be shown by tab twice.
/spwan是产卵的意思。
rosbagrecord,playrosbag record: Start recording messages.
rosbag play ABC: Play the messages of the bag named ABC.

1.2 创建工作空间与功能包

创建流程

  1. 创建文件夹A,A下创建文件夹src:mkdir -p A/src
  2. src下:catkin_init_workspace
  3. A下:catkin_make
  4. src下,创建工作包learning_pkg:catkin_create_pkg learning_pkg
  5. A下:gedit ~/.bashrc,结尾添加source ~/A/devel/setup.bash
  6. 重启终端
  7. A下,测试环境变量是否添加成功:echo $ROS_PACKAGE_PATH

C++文件:

  1. learning_pkg的src下:添加一个xxx.cpp,然后gedit CMakeLists.txt,在154行加

add_executable(xxx src/xxx.cpp)
target_link_libraries(ccc ${catkin_LIBRARIES})

  1. A下:catkin_make

  2. 重启终端

Python文件:

  1. learning_pkg的src下:添加一个xx.py,然后右键设置成允许作为可执行文件。
  2. 重启终端(把小海龟也重启了)

附录

ROS可以通过在shell环境中输入命令来进行文件系统的使用、源代码编辑、构建、调试和功能包管理等。为了正确使用ROS,除了基本的Linux命令之外,还需要熟悉ROS专用命令。为了熟练掌握ROS的各种命令,我们对每个命令的功能进行了简单的描述,并给出了例子。在介绍每条命令时,考虑到使用的频率和重要性,标了星级评分。虽然很难从一开始就很熟练地使用所有的命令,但是随着使用的次数增多,读者会发现越来越方便快捷地使用各个ROS命令。

ROS功能包命令

roscd:移动功能包

roscd [功能包名称]
这是一个移动到保存有功能包的目录的命令。该命令的基本用法是在roscd命令之后将功能包名称写入参数。在以下示例中,turtlesim功能包位于安装ROS的目录中,但是,如果将创建的功能包名称(例如,在上一章中创建的your_pkg)作为参数,则会移至您指定的功能包的目录。这是在使用基于命令行的ROS时常用的命令。

$ roscd turtlesim
/ opt / ros / kinetic / share / turtlesim
$ roscd your_pkg
~/ catkin_ws / src / your_pkg

rosls: ROS文件列表

rosls [功能包名称]
该命令查看指定的ROS功能包的文件列表。您可以使用roscd命令移动到功能包,然后使用正常的ls命令执行相同的功能,但有时需要立即查看。实际中并不经常使用。

$ rosls turtlesim
cmake images msg srv package.xml

ROS执行命令

ROS执行命令管理ROS节点的运行。最重要的是,roscore被用作节点之间的名称服务器。执行命令是rosrun和roslaunch。rosrun运行一个节点,当运行多个节点或设置各种选项时使用roslaunch。rosclean是删除节点执行时记录的日志的命令。

roscore: 运行roscore

roscore [选项]
roscore命令会运行主节点,主节点管理节点之间的消息通信中的连接信息。主节点是使用ROS时必须首先被运行的必要元素。ROS 主节点由roscore运行命令来驱动,并作为XMLRPC服务器运行。主节点接收多种信息的注册,如节点的名称、话题和服务名称、消息类型、URI地址和端口号,并在收到节点的请求时将此信息通知给其他节点。此外,会运行rosout ,这个命令用于记录ROS中使用的ROS标准输出日志,例DEBUG、INFO、WARN、
ERROR和FATAL。它还运行一个管理参数的参数服务器。当执行roscore时,将用户设置的ROS_MASTER_URI作为主URI,并且驱动主节点,用户可以在~/.bashrc文件中设置。ROS_MASTER_URI。

rosrun:运行ROS节点

rosrun [功能包名称] [节点名称]
rosrun是执行指定的功能包中的一个节点的命令。以下例子运行turtlesim功能包的turtlesim_node节点。请注意,屏幕上出现的乌龟图标是随机选择并运行的。你也可以敲击[Tab] 观察turtlesim下的其他程序功能。

$ rosrun turtlesim turtlesim_node

roslaunch:运行多个ROS节点

roslaunch [功能包名称] [ launch 文件名]
roslaunch是运行指定功能包中的一个或多个节点或设置执行选项的命令。使用launch文件启动的方式对于运行多个节点非常有用,这是ROS中常用的执行方法。实例见实验六。

rosclean:检查及删除ROS日志

rosclean [选项]
该命令检查或删除ROS日志文件。在运行roscore时,对所有节点的记录都会写入日志文件,随着时间的推移,需要定期使用rosclean命令删除这些记录。以下是检查日志使用情况的示例。

$ rosclean check
320K ROS node logs 	
→ 意味着 ROS 日志一共占 320KB

当运行roscore时,如果显示以下警告信息,则意味着日志文件超过1GB,如果用户觉得会让系统不堪重负,请使用rosclean命令将其删除。

WARNING : disk usage in log directory [/ xxx /. ros / log ] is over 1GB .

以下是删除ROS日志存储库(笔者是/home/rt/.ros/log)的所有日志的示例。如果要删除它,请按y按钮将其删除。

$ rosclean purge
Purging ROS node logs .
PLEASE BE CAREFUL TO VERIFY THE COMMAND BELOW !
Okay to perform :
rm -rf /home/pyo/.ros/log
( y / n )?

ROS信息命令

ROS信息命令用于识别话题、服务、节点和参数等信息。尤其是rostopic、rosservice、
rosnode和rosparam经常被使用,并且rosbag是ROS的主要特征之一,它具有记录数据和回放功能,务必要掌握。

运行节点

我们将使用下面的命令,利用ROS提供的turtlesim来了解相关的节点、话题和服务。在使用ROS信息命令进行测试之前,需要做好以下准备工作。为确保顺利进行,关闭所有以前运行的终端。然后打开一个新的终端并运行以下命令。

$ roscore

为了运行turtlesim功能包中的turtlesim_node节点,打开一个新的终端并运行以下命令。这将从turtlesim功能包运行turtlesim_node。用户会在一个蓝色的屏幕上看到乌龟。

$ rosrun turtlesim turtlesim_node

运行turtlesim功能包中的turtle_teleop_key节点,打开一个新的终端并运行以下命令。这将在turtlesim功能包中运行turtle_teleop_key。一旦执行,可以在该终端窗口上,用键盘上的方向键控制乌龟。请自己尝试。当您按下方向键时,屏幕上的乌龟会移动,这是一个简单的仿真,但这是将驱动机器人所需的移动速度(m/s)和旋转速度(rad/s)用消息传送的。

$ rosrun turtlesim turtle_teleop_key

rosnode:ROS节点

rosnode list:列出正在运行中的所有节点

这是列出连接到roscore的所有节点的命令。如果已经运行了roscore和之前准备好的节点(turtlesim_node,turtle_teleop_key),则可以看到终端中列出了用于在roscore进行日志记录的rosout,以及teleop_turtle和turtlesim节点。

$ rosnode list
/rosout
/teleop_turtle
/turtlesim

rosnode info [节点名称]:检查指定节点的信息

使用rosnode info命令可以查看指定节点的信息。基本上,用户可以检查发布者、订阅者和服务等。此外,还可以检查关于节点运行URI和话题输入/输出的信息。由于会显示大量信息,因此省略了内容,所以请务必亲自运行。

$ rosnode info / turtlesim
------------------------------------------------
Node [/ turtlesim ] Publications :
* / turtle1 / color _ sensor [ turtlesim / Color ]

rosnode kill [节点名称]:终止指定节点的运行

这是一个终止正在运行的节点的命令。您可以在运行节点的终端窗口中使用[Ctrl+c]直接终止节点,但也可以指定要结束的的节点,如下所示。

$ rosnode kill /turtlesim
killing /turtlesim
killed

如果使用该命令终止了节点,则会在运行该节点的终端窗口上显示如下警告消息,并关闭该节点。

[ WARN ] [ 1499668430 . 215002371 ]: Shutdown request received .
[ WARN ] [ 1499668430 . 215031074 ]: Reason given for shutdown : [ user request ]

rostopic: ROS话题

在运行ROS话题示例之前,请先关闭所有节点。通过在不同的终端窗口中分别运行以下命令来运行turtlesim_node和turtle_teleop_key。

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

rostopic list:显示当前正在发送和接收的所有话题的列表。

$ rostopic list
/ rosout
/ rosout_agg
/ turtle1/cmd_vel
/ turtle1/color_sensor
/ turtle1/pose

rostopic echo [话题名称]:实时显示指定话题的消息内容

以下示例实时显示组成/turtle1/pose话题的x、y、theta、linear_velocity和angular_velocity的数据。

$ rostopic echo /turtle1/pose
x:5.35244464874
y:5.544444561
theta:0.0
linear_velocity:0.0
angular_velocity:0.0

rostopic info [话题名称]:显示指定话题的信息

在以下示例中,用户可以看到/turtle1/pose话题使用turtlesim/Pose消息类型,发布到/turtlesim节点,并且没有实际订阅的话题。

$ rostopic info /turtle1/pose
Type:turtlesim/Pose
Publishers:*/turtlesim(http://192.168.1.100:42443/)
Subscribers:None

rostopic pub [话题名称] [消息类型] [参数]:使用指定的话题名称发布消息

以下是使用/turtle1/cmd_vel话题名称发布类型为geometry_msgs/Twist的消息的示例

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- ‘[2.0, 0.0 ,0.0 ]’ ‘[0.0 ,0.0 ,1.8 ]’
publishing and latching message for 3 . 0 seconds

每个选项的描述如下:

ROS catkin命令

ROS的catkin命令用于使用catkin 构建系统来构建功能包。

catkin_create_pkg:自动生成功能包

catkin _ create _ pkg [功能包名称] [依赖性功能包 1 ] [依赖性功能包 2 ] …
catkin_create_pkg是创建一个包含CMakeLists.txt和package.xml文件的空功能包的命令。以下例子显示了使用catkin_create_pkg命令创建一个依赖于roscpp和std_msgs的my_package功能包。

$ catkin_create_pkg my_package roscpp std_msgs

catkin_make:基于catkin 构建系统的构建

catkin_make [选项]
catkin_make是构建用户创建的功能包或构建下载的功能包的命令。以下示例是构建~/catkin_ws/src目录中所有功能包的示例。

$ cd ~/catkin_ws
$ catkin_make

如果要只构建一部分功能包,而不是全部功能包,请使用“–pkg [包名]”选项来运行,如下所示:

$ catkin_make -- pkg my_package

本账号所有文章均为原创,欢迎转载,请注明文章出处:https://shandianchengzi.blog.csdn.net/article/details/149912901。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shandianchengzi

谢谢你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值