在本教程中,您将学习如何在 ROS 2 系统中导航。此外,您将启动您的第一个 ROS 2 节点并创建您自己的 ROS 工作区以用于进一步的教程。您可以使用文档中的给定链接获取更多信息。( 以 $ 开头的行是终端命令。)
二、 ROS文件系统
在开始之前确保您的系统知道最新的 ROS 2 包:
$ sudo apt update
$ rosdep update
如果您刚刚安装了 rosdep,请先运行以下命令:
$ sudo rosdep init
ROS 2 文件系统由 ROS 2 包组成——ROS 2 中最小的构建部分。
通常,一个 ROS 文件系统由数百个不同的包组成。为了在 ROS 系统中高效导航,ROS 提供了不同的管理工具。最常用的工具在 ROS 包 turtlesim 的示例中进行了描述。
首先,您必须获取 ROS 安装及其安装工作区的源代码!
提示:必须为每个新的终端窗口完成此操作。
用**foxy** 作为ROS 发布版号
$ source /opt/ros/foxy/setup.bash
在您的工作空间用:
$ source install/setup.bash
Colcon 是 ROS 2 的构建工具。工作区是一个文件夹,您可以在其中修改、构建和安装包。它是创建包和节点或修改现有包和节点以适合您的应用程序的地方。在进一步的教程中,您将在您的工作区中工作。
新建workspace:
$ cd ~
$ mkdir -p ~/dev_ws/src
存在两种类型的 ROS 2 包:二进制包和源代码包。ROS 二进制包在 Ubuntu 中作为 debian 包提供,可以通过 apt 命令进行管理。
安装二进制包:
$ sudo apt install ros-foxy-rosbag2*
# sudo apt install ros-
ros-foxy-rosbag2* 表示所有以“ros-foxy-rosbag2”开头的包
$ ros2 pkg prefix rosbag2
# ros2 pkg prefix
ros2 pkg executables action_tutorials_py
# ros2 pkg executables
Build-from-source包可以分为ROS 2提供的包和你开发的包。两者都必须放在 ROS 2 工作区的 src 文件夹中。
提示:确保您在克隆之前仍在 dev_ws/src 目录中。
$ cd ~/dev_ws/src$ git clone https://github.com/ros/ros_tutorials.git -b foxy-devel
# git clone -b
注意目录列表左侧的“Branch”下拉列表。当您克隆此 repo 时,添加 -b 参数,后跟与您的 ROS 2 发行版对应的分支。
要查看 ros_tutorials 中的包,请输入命令:
$ ls ros_tutorialsy
有四个包packages:
roscpp_tutorials rospy_tutorials ros_tutorials turtlesim
其中turtlesim是ROS2的包。
在构建工作区之前,您需要解决包依赖关系。您可能已经拥有所有依赖项,但最佳做法是在每次克隆时检查依赖项。您不希望构建由于缺少依赖项而在长时间等待后失败。
提示:在运行 rosdep 之前,请确保您位于工作区根目录 (~/dev_ws) 中。
If it is your first time to run rosdep
, you need to run rosdep init
first.
$ cd ..
$ rosdep install --from-paths src --ignore-src -r -y
此命令神奇地安装了您工作区中的包所依赖但在您的计算机上缺失的所有包。 http://wiki.ros.org/rosdep
使用 colcon 构建工作区
提示:不要忘记在构建之前获取 ROS 安装源,并确保您位于工作区的根目录 (~/dev_ws) 中。
$ source /opt/ros/foxy/setup.bash
$ colcon build --symlink-install
正在上传…重新上传取消 Source the overlay 当你构建这个工作区时,你的主要 ROS 2 环境是“底层”。现在您可以在“underlay”的“顶部”获取覆盖层。
提示:如果您打开一个新的终端,请先设置 ROS 2 环境。
您可以通过以下方式启动一个新的终端窗口【 ctl + alt +t 】
$ cd dev_ws
$ source install/setup.bash
正在上传…重新上传取消 ROS 节点是 ROS 环境中的可执行文件。节点始终是 ROS 包的一部分。如何启动ROS节点以及如何显示运行时信息在turtlesim包的例子中有说明。
开启 ROS节点:
(先开启新终端,source节点源)
$ ros2 run turtlesim turtlesim_node
# ros2 run
启动另一个节点来控制海龟:
$ ros2 run turtlesim turtle_teleop_key
# ros2 run
启动另一个节点来控制海龟:如果选择当前运行 turtle_teleop_node 的终端,则可以使用键盘的方向键控制海龟。
这两个节点 turtlesim_node 和 turtle_teleop_key 当前在您的 ROS 2 系统上处于活动状态。由于更复杂的系统将包含许多节点,ROS 提供了内省工具来显示有关活动节点的信息。
显示所有活动节点:
$ ros2 node list
显示有关节点的信息:
$ ros2 node info /turtlesim
# ros2 node info
给定的信息包括该节点订阅和发布的主题。