ROS指令大全(含ROS1和ROS2)

本文介绍了ROS和ROS2的目录结构,包括工作空间、src、build、devel和install目录的作用。详细列出了ROS1和ROS2常用命令,如工作空间和功能包管理、节点、话题、服务、消息和服务消息的操作,以及数据可视化工具rviz和gazebo的使用。此外,还提到了自动安装依赖和参数操作工具的使用。
摘要由CSDN通过智能技术生成

前言:目前还在学习ROS+无人机框架中,,,
更多更新文章详见我的个人博客主页【前往】

1.ROS目录架构

1.1 ROS1目录架构

在这里插入图片描述

工作空间(Workspace)是一个存放工程开发相关文件的文件夹

  • src:代码空间(Source Space)
  • build:编译空间(Build Space)
  • devel:开发空间(Development Space)
  • install:安装空间(Install Space)

1.2 ROS2目录架构

在这里插入图片描述

工作空间(Workspace)是一个存放项目开发相关文件的文件夹;是开发过程的大本营。

  • src:代码空间(Source Space)
  • build:编译空间(Build Space)
  • install:安装空间(Install Space)
  • log:日志空间(Log Space)

2.ROS常用指令

2.1ROS1指令

2.1.1工作空间和功能包指令

创建工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

编译工作空间

cd ~/catkin_ws
catkin_make

设置环境变量

source devel/setup.bash

检查环境变量

echo $ROS_PACKAGE_PATH

image-20230629233858309

创建功能包

cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp

编译功能包

cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

注:同一工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包!

2.1.2基本指令
  • source devel/setup.bash:更新当前运行环境
  • roscorce:启动master主节点,运行 ROS1 程序之前必须要执行的一个命令,执行后该程序将一直处于 运行/挂起 状态,直至结束
  • rosrun 包名 可执行程序名:启动单个ros程序
  • roslaunch 包名 launch文件名:一次性启动多个ros程序,同时launch文件中可能包含程序运行用到的参数
2.1.3节点命令
  • rosnode list:查看当前存在的全部节点
  • rosnode info 节点名:查看节点基本信息
  • rosnode ping 节点名:查看节点是否能正常通信
  • rosnode machine 计算机主机名:查看其他计算机中的节点信息

可在终端中查看计算机主机名:

  1. 终端输入命令行开头有“xxx@xxx”格式的信息,@前代表当前所在的用户名,@之后代表的是计算机的主机名
  2. ②执行命令hostname查看计算机主机名
  • rosnode kill 节点名:杀死某一节点
  • rosnode clean:彻底清楚已经结束却仍然残留的节点
2.1.4话题命令
  • rostopic list:查看当前存在的所有话题
  • rostopic info 话题名:查看某一话题的基本信息
  • rostopic echo 话题名:输出某一话题发布的信息
  • rostopic hz 话题名:查看某一话题发布频率
  • rostopic pub 话题名 参数信息:动态的发布某一话题信息,该话题必须是处于运行状态的
2.1.5服务命令
  • rosservice list:查看当前存在的所有服务
  • rosservice info 服务名:查看某一服务的基本信息
  • rosservice call 服务名 参数信息:动态请求服务
2.1.6消息命令
  • rosmsg show 消息名称 / rosmsg info 消息名称:查看某一消息的数据结构
  • rosmsg md5 消息名称:查看当前消息的md5值,常用于不同开发者使用同一自定义消息时,出现自定义消息被一方更改,而另一方不知情,导致程序运行失败的情况
2.1.7服务消息命令
  • rossrv show 消息名称 / rossrv info 消息名称:查看某一服务消息的数据结构
  • rossrv md5 消息名称:查看当前服务消息的md5值
2.1.8数据可视化命令
  • rviz (rviz文件名):可视化展示话题、服务等数据信息
  • gazebo:3D展示 ROS 程序
  • rqt:展示节点之间的通信关系
  • rosrun rqt_publisher rqt_publisher:动态发送话题信息,常用于动态调试机器运动速度

更高阶的可视化指令移步古大佬的论坛观看:ROS 常用GUI测试工具 - 古月居 (guyuehome.com)

2.2ROS2指令

2.2.1工作空间和功能包指令

创建工作空间

mkdir -p ~/dev_ws/src
cd ~/dev_ws/src

编译工作空间

sudo apt install python3-colcon-ros
cd ~/dev_ws
colcon build

设置环境变量

source install/local_setup.sh
echo "source ~./dev_ws/install/local_setup.sh" >> ~/.bashrc

创建功能包

cd ~/dev_ws/src
ros2 pkg create --build-type ament_cmake 包名
ros2 pkg create --build-type ament_python 包名

注:ament_cmakeament_python分别为c++和python格式的功能包,两种功能包格式不同

编译功能包

cd ~/dev_ws/src
colcon build
cd ~/dev_ws
source install/local_setup.bash

注:同一工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包!

自动安装依赖

sudo apt install -y python3-pip
sudo pip3 install rosdepc
sudo rosdepc init & rosdepc update
cd ~/dev_ws
rosdepc install -i --from-path src --rosdistro humble -y

注:自动安装依赖常用于从其余地方copy的代码文件,一般都需要先安装一些依赖包才能正常编译。

humble要根据自己的ros2版本型号来进行修改

由于国外网络受限,推荐使用鱼香ROS大佬的rosdepc,更适用于国内环境

2.2.3包管理工具-ros2 pkg
  • ros2 pkg create 包名:创建功能包,指定包名、编译方式、依赖项、节点名等
  • ros2 pkg list:查看系统中功能包列表
  • ros2 pkg executables 包名:查看包内可执行文件列表
2.2.4节点运行工具-ros2 run
  • ros2 run 包名 节点名:运行包内节点功能
2.2.5节点查看工具-ros2 node
  • ros2 node list:查看当前域内(ROS_DOMAIN_ID相同的节点组)活动的节点列表
  • ros2 node info 节点名:查看节点详细信息,包括订阅、发布的消息,开启的服务和动作等
2.2.6主题操作工具-ros2 topic
  • ros2 topic list:列出域内可使用的主题列表
  • ros2 topic info 主题名:显示主题消息类型,订阅者数量,发布者数量等
  • ros2 topic find 消息类型:按消息类型查找相关主题
  • ros2 topic hz 主题名:显示主题平均发布频率
  • ros2 topic bw 主题名:显示所查阅主题的带宽
  • ros2 topic delay 主题名:通过header中的时间戳计算消息延迟
  • ros2 topic echo 主题名:在控制台显示主题消息
  • ros2 topic pub 主题名 消息类型 消息内容:通过命令行发布指定主题消息
2.2.7接口操作工具-ros2 interface
  • ros2 interface list:分类显示系统内所有的接口,包括消息(Messages)、服务(Services)、动作(Actions)
  • ros2 interface package 接口名:显示指定接口包内的子接口
  • ros2 interface packages:显示指定接口包
  • ros2 interface show 接口名:显示指定接口的详细内容
  • ros2 interface proto 消息名:显示消息模板
2.2.8服务操作工具-ros2 service
  • ros2 service list:列出域内服务列表,-t可同时列出服务消息类型
  • ros2 service type 服务名:列出指定服务的数据类型
  • ros2 service find 服务类型:列出域内使用指定数据类型的服务
  • ros2 service call 服务名 类型名 请求数据:通过命令行同步请求服务
    • 示例:ros2 service call /change_map_name duckietown_interface/srv/ChangeMap "{map_name: '4way'}"
2.2.9动作操作工具-ros2 action
  • ros2 action list:列出域内动作列表,-t可同时列出服务消息类型
  • ros2 action info 动作名:查看指定action信息,可以看到服务端和客户端情况
  • ros2 action send_goal 动作名 类型 数据 --feedback:模拟客户端发起动作请求
    • 示例:ros2 action send_goal /crossing_acton duckietown_interface/action/Crossing "{speed: 0.2, direction: 'right'}" --feedback
2.2.10参数操作工具-ros2 param
  • ros2 param list:列出域内可用参数列表
  • ros2 param get 节点名 参数名:查看指定参数当前的值
  • ros2 param set 节点名 参数名:设置指定参数的值
  • ros2 param delete 节点名 参数名:删除参数
  • ros2 param describe 节点名 参数名:显示有关已声明参数的描述性信息,声明参数时添加描述性信息可查看
  • ros2 param dump 节点名 --output-dir <保存路径>:所有当前参数值“转储”到文件中保存以供以后使用
    • 示例:ros2 param dump /line_detect_node --output-dir ~/ros2_ws/src/line_detect/line_detect/
  • ros2 run 包名 节点名 --ros-args --params-file 文件名:加载已有参数到节点中
    • 示例:ros2 run line_detect line_detect_node --ros-args --params-file src/line_detect/line_detect/line_detect_node.yaml
2.2.11数据可视化命令
  • rviz2 (rviz2 文件名):可视化展示话题、服务等数据信息
  • rqt:展示节点之间的通信关系
  • ros2 run rqt_console rqt_console:启动rqt_console

更多命令行参数移步下面的网址观看:

(70条消息) ROS2学习笔记(五)-- ROS2命令行操作常用指令总结(一)_溪风沐雪的博客-CSDN博客

(70条消息) ROS2学习笔记(九)-- ROS2命令行操作常用指令总结(二)_ros2 run_溪风沐雪的博客-CSDN博客

ROS2常用命令行工具 - 古月居 (guyuehome.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MGodmonkey

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值