ROS2与Python入门教程-新建ros2工作空间
说明:
- 介绍如何创建ros2工作空间
概念:
- 工作空间是包含ROS2软件包的目录。
- 在使用ROS2之前,有必要在计划使用的终端中提供ROS2安装工作区。
- 这使ROS2的软件包可供您在该终端中使用。
- 您还可以选择“覆盖”资源–一个辅助工作空间,您可以在其中添加新软件包而不会干扰正在扩展的现有ROS2工作空间或“底层”。
- 参考底层必须包含覆盖层中所有软件包的依赖项。
- 叠加中的包将覆盖底层中的包。
- 也可以有多个参考底层和覆盖层,每个后续的覆盖层都使用其父参考底层的包。
步骤:
- 要加载ros2工作空间
- 如果是apt安装的ros2,假设安装为foxy版本
source /opt/ros/foxy/setup.bash
- 如果是源码安装的ros2,假设安装在~/ros2_ws/目录下
source ~/ros2_ws/install/local_setup.bash
- 创建新的工作空间
mkdir -p ~/dev_ws/src
cd ~/dev_ws/src
- 克隆一个例子软件包
~/dev_ws/src$ git clone https://github.com/ros/ros_tutorials.git -b foxy-devel
- 查看包结构:
~/dev_ws/src$ ls ros_tutorials/
roscpp_tutorials rospy_tutorials ros_tutorials turtlesim
- 解决包的依赖
rosdep install -i --from-path src --rosdistro foxy -y
- colcon 编译
~/dev_ws$ colcon build --symlink-install
Starting >>> turtlesim
Finished <<< turtlesim [21.0s]
Summary: 1 package finished [21.2s]
- 编译后目录结构
~/dev_ws$ ls
build install log src
测试新工作空间
- 新开终端,ros2底层工作空间
source /opt/ros/foxy/setup.bash
- 加载dev工作空间
cd ~/dev_ws
. install/setup.bash
- 这样新的dev工作空间下的相关包会覆盖ros2底层的相关包
验证新工作空间的是否会覆盖
- ros2底层本身带有turtlesim包,dev工作空间也带有turtlesim包
- 那么我们通过修改dev工作空间的包来确认是否运行的是dev下工作空间下的turtlesim包
- 修改
turtle_frame.cpp
,位于~/dev_ws/src/ros_tutorials/turtlesim/src
下 - 修改
setWindowTitle("TurtleSim")
为etWindowTitle("MyTurtleSim");
- 重新编译下工作空间
cd ~/dev_ws/
colcon build --symlink-install
- 运行turtlesim_node
ros2 run turtlesim turtlesim_node
- 如图:
- 图片上的标题已经变更为MyTurtleSim,说明新工作空间下同名包,已经覆盖了底层工作空间的同名包