0
点赞
收藏
分享

微信扫一扫

ROS2与C++入门教程-新建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

  • 如图:

ROS2与C++入门教程-新建ros2工作空间_机器学习

  • 图片上的标题已经变更为MyTurtleSim,说明新工作空间下同名包,已经覆盖了底层工作空间的同名包


举报

相关推荐

0 条评论