目录
接上回,
在我们把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的命令稍微有点变化,但还是有规律的。
希望对你有所帮助。