💬×
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相关命令