Skip to content

ROS1与ROS2的对比

本章节将总结和对比ROS1与ROS2的一些常用指令,

ROS1 tutorials,链接如下,可详细学习 https://wiki.ros.org/ROS/Tutorials

ROS2 官方链接如下,可详细学习 https://docs.ros.org/en/humble/

ROS1与ROS2之间的变化 http://design.ros2.org/articles/changes.html

常用操作

ros工作空间

ROS1ROS2主要功能
mkdir -p ~/catkin_ws/srcmkdir -p ~/ros2_ws/src创建工作空间
cd ~/catkin_wscd ~/ros2_ws切换至工作空间目录
catkin_makecolcon build编译工作空间
source ~/catkin_ws/devel/setup.bashsource ~/ros2_ws/install/local_setup.bash将工作区添加到ROS环境中
echo $ROS_PACKAGE_PATHecho $ROS_PACKAGE_PATH检查环境变量
sudo apt-get install ros-$ROS_DISTRO--< Package Name > (需要手动添加)rosdep install -i --from-path src --rosdistro humble -y(自动搜索)安装工作空间中功能包所需依赖项

编译工具

ROS1(rosbuild、catkin)ROS2 (ament、colcon)主要功能
catkin_makecolcon build编译整个工作空间
catkin_create_pkg <package_name> std_msgs rospy roscppros2 pkg create --build-type ament_cmake <package_name>创建功能包 (std_msgs、roscpp、rospy为依赖文件)
catkin_make_isolated编译整个工作空间,独立每个功能包
catkin_make -DCATKIN_WHITELIST_PACKAGES="需要单独编译的包名"colcon build --packages-select <package_name>编译指定的功能包
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3指定编译时Python解释器为Python3

ROS基础指令

ROS1ROS2主要功能
rosmsg showros2 interface show查看某个消息的数据结构
rosbagros2 bag记录系统中所有的话题记录并保存起来,下次用的时候再复现出来
roscoreroscore在运行所有ROS程序前首先要运行的命令
rosrun [package_name] [node_name]ros2 run [package_name] [node_name]直接运行一个包内的节点
rosserviceros2 service查看当前存在的服务
sudo apt-get install ros-<发行版>-ros-tutorials同左安装ros-tutorials的包
rospack find [package_name]ros2 pkg获取有关软件包的位置信息等
roscd只会查找ROS_PACKAGE_PATH中列出的目录中的 ROS 包
rosrun rqt_graph rqt_graphros2 run rqt_graph rqt_graph创建系统中正在发生的事情的动态图
rosed [package_name] [filename]查看并选择性地编辑包中的所有文件,而无需知道其确切名称

node操作

ROS1ROS2主要功能
rosnode listros2 node list获得运行节点列表
rosnode info node-nameros2 node info node-name查看节点信息
rosnode kill node-name终止节点
rosnode cleanup将节点从列表中删除

topic操作

ROS1ROS2主要功能
rostopic listros2 topic list当前活跃的话题
rostopic echo topic-nameros2 topic echo topic-name查看某个话题上发布的消息
rostopic info topic-nameros2 topic info topic-name获取更多关于话题的信息
rostopic list l grep goalros2 topic list l grep查找特定的节点
rosmsg show message-type-nameros2 topic list -t查看消息类型
rostopic pub –r rate-in-hz topic-name message-type message-content:ros2 topic pub –r rate-in-hz topic-name message-type message-content:发布特定消息
rostopic hz topic-nameros2 topic hz topic-name输出每秒发布的消息数量
rostopic -v显示要发布和订阅的主题及其类型的详细列表
rostopic type [topic]ros2 topic type [topic]返回正在发布的任何主题的消息类型
rosmsg show [话题类型]查看消息的详细信息

service操作

ROS1ROS2主要功能
rosservice listros2 service list打印有关活动服务的信息
rosservice call [service] [args]ros2 service call [service] [args]使用提供的参数调用服务
rosservice type [service]ros2 service type [service]类型打印服务类型
rosservice findros2 service find [service]按服务类型查找服务
rosservice uri打印服务 ROSRPC uri

param操作

ROS1ROS2主要功能
rosparam setros2 param set设置参数
rosparam getros2 param get获取参数
rosparam loadros2 param load从文件中加载参数
rosparam dumpros2 param dump转储参数到文件
rosparam deleteros2 param delete删除参数
rosparam listros2 param list列表参数名称

pack操作

ROS1ROS2主要功能
rospack listros2 pkg list显示出当前的包信息
rospack depends1 beginner_tutorials显示当前包的一级依赖
rospack depends beginner_tutorials显示当前包的所有依赖

rqt操作

ROS1ROS2主要功能
rqt_graphros2 run rqt_graph rqt_graph可视化当前的节点连接图
rqt_bagros2 run rqt_bag rqt_bag可视化进行rosbag的录制、播放操作
rqt_plotros2 run rqt_plot rqt_plot可视化某一话题的数据波形,比如IMU,支持导出
rqt_consoleros2 run rqt_console rqt_console可视化节点日志,便于调试
rqt_image_viewros2 run rqt_image_view rqt_image_view可视化ros节点输出图像的查看
rqt_depros2 run rqt_dep rqt_dep可视化ros Package的节点依赖图
rqt_logger_levelros2 run qt_logger_level qt_logger_level提供了一个GUI插件,用于配置ROS节点的记录器级别
rqt_topicros2 run rqt_topic rqt_topic可视化当前ROS通信网络中的所有话题

使用Tips

ROS1

  • 在编译ros工作空间前,先执行下面的命令,可以避免一些奇怪的功能包依赖关系
shell
tianbot@ros2go:~$ source /opt/ros/noetic/setup.bash

再执行

shell
tianbot@ros2go:~$ cd ~/tianbot_ws && catkin_make

ROS2

shell
tianbot@ros2go:~$ ros2 --help   # 快速查看ros2相关命令