ROS2和ROS1常用命令速查与对比

目录

1. 创建一个ROS工作空间

2. 初始化ROS工作空间

3. 构建catkin workspace中的代码

4. 将工作空间的路径加入环境变量

5. 查询ROS版本

最后的话


接上回,

在我们把ROS1和ROS2整到一个Ubuntu系统里之后。

如何将ROS1和ROS2安装到同一个ubuntu系统中?https://blog.csdn.net/slampai/article/details/127933085

为了后续调试方便,我们整理一下两者的异同。

1. 创建一个ROS工作空间

    空间名为ros_ws,并在内创建src文件夹,src用于存储所有功能包的代码。

mkdir -p ~/ros_ws/src
cd ~/ros_ws/src

# ------------------------------------------
# 另一种方式:两条指令合并在一起
mkdir -p ~/ros_ws/src && cd ~/ros_ws/src

2. 初始化ROS工作空间

      在src路径下,执行完初始化命令后,src目录下会多出一个 CMakeLists.txt 文件。

#ROS1                   ==>   #ROS2
catkin_init_workspace   ==>   

3. 构建catkin workspace中的代码

      在catkin workspace的根目录下,执行代码构建命令。

        (<package_name>替换为实际的包名,下同)

#ROS1          ==>     #ROS2
catkin_make    ==>     colcon build

#---------------------------------------------------------------------------

#ROS1 编译指定的软件包, 包名带双引号,包名之间用分号隔开
catkin_make -DCATKIN_WHITELIST_PACKAGES=“package_name1; package_name2”

#ROS1 还原为构建所有包
catkin_make -DCATKIN_WHITELIST_PACKAGES=“”

#---------------------------------------------------------------------------

#ROS2 编译指定的软件包,包名无符号包围,包名之间用空格分开
colcon build --packages-select <package_name1> <package_name2>

#ROS2 若希望python脚本修改后,不再需要每次重新编译(警告:可能出现代码的不适配)
colcon build --symlink-install

在工作空间ros_ws中,除src文件夹外,其他为编译后产生的文件,删除后可重新编译获得。

对于ROS1,使用Catkin编译系统,编译后新增3个可删目录: build、install和devel。
1)build 编译空间:用于存储编译过程产生的缓存和中间文件。
2)devel 开发空间:用于放置编译生成的可执行文件。
3)install 安装空间:非必须的,可在工作目录下用catkin_make install生成,可以将可执行文件安装到此空间。

对于ROS2,使用colcon编译系统,编译后新增3个可删目录: build、install和log。
1)build 编译空间:用于存储编译过程产生的缓存和中间文件。
2)install 安装空间:用于放置编译生成的可执行文件和脚本。
3)log 日志空间:用于保存编译和运行过程中警告、报错等日志的空间。

4. 将工作空间的路径加入环境变量

将对应的工作空间的路径加入环境变量ROS_PACKAGE_PATH中。

如果新开了一个终端命令行,在使用该工作空间前,必须先将该工作空间的路径加入环境变量ROS_PACKAGE_PATH中。

#ROS1 
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc 

#ROS2
echo "source ~/colcon_ws/install/setup.bash" >> ~/.bashrc

#在ROS1中可查询ROS_PACKAGE_PATH, 一般不为空表示设置正常。
echo $ROS_PACKAGE_PATH

5. 常用的ROS命令对比

#ROS1      --> #ROS2
# -----------------------------------
roscore    --> ros2
rosrun     --> ros2 run
rosnode    --> ros2 node
roslaunch  --> ros2 launch
rosparam   --> ros2 param
rospkg     --> ros2 pkg
rosservice --> ros2 service 
rossrv     --> ros2 srv
rostopic   --> ros2 topic
rosaction  --> ros2 action

最后的话

与ROS1相比,ROS2的命令稍微有点变化,但还是有规律的。

希望对你有所帮助。

猜你喜欢

转载自blog.csdn.net/slampai/article/details/127938047
今日推荐