前言:目前还在学习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
创建功能包
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 计算机主机名
:查看其他计算机中的节点信息
可在终端中查看计算机主机名:
- 终端输入命令行开头有“xxx@xxx”格式的信息,@前代表当前所在的用户名,@之后代表的是计算机的主机名
- ②执行命令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_cmake和ament_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博客