ROS 2

../_images/ros2_logo.jpg

可通过以下方式扩展 ArduPilot 的功能 ROS (又名机器人操作系统)。

ROS ROS 提供库、工具、硬件抽象、设备驱动程序、可视化程序、消息传递、包管理等,帮助软件开发人员创建机器人应用程序。ROS 已被以下软件取代 ROS2现在,ArduPilot 通过其库原生支持该功能 AP_DDS.

先决条件

  • 首先学习使用 ArduPilot,方法是查看相关维基站点的 无人车UGV, 旋翼飞行器固定翼飞行器.尤其是,在尝试使用 ROS 之前,请确保载具在手动和自主模式(如 "引导 "和 "自动")下运行良好。

  • 了解如何使用 ROS 2,请阅读 初学者教程.如果在使用 ROS 时遇到问题,最好先在 ROS 社区论坛上询问(或在谷歌上搜索您的错误)。

    我们非常希望改进 ArduPilot 对 ROS 2 的支持,因此如果您发现问题(例如似乎不支持的命令),请在 ArduPilot 问题列表.维护者可以将 ROS 标签

首先,确保您已成功安装 ROS 2 谦卑 .目前,ROS 2 Humble 是唯一支持的版本。

创建一个 ROS 2 工作区.本页假定您的工作区名为 ros2_ws.

在做任何事情之前,请确保您已经 创建 ROS 2 环境 并检查它是否 正确配置.

按照 安装构建依赖项 部分 AP_DDS的 README 安装 MicroXRCEDDSGen。

最后,确保您有 设置 ArduPilot 构建环境.

安装(Ubuntu)

为了方便安装,我们将使用 vcs 和一个 ros2.repos 文件

CD ~/ros2_ws vcs 舶来品 --递归 --输入  https://raw.githubusercontent.com/ArduPilot/ardupilot/master/Tools/ros2/ros2.repos 来源

现在更新所有依赖项:

CD ~/ros2_ws sudo 适切 更新 更新
消息来源 /opt/ros/humble/setup.bash rosdep 安装 --从路径 来源 --忽略源代码
# 忽略最后的 rosdep 警告(如果有的话

安装构建依赖项

苏都 适切 安装 default-jre
CD ~/ros2_ws git 复制 --子模块 https://github.com/ardupilot/Micro-XRCE-DDS-Gen.git
CD Micro-XRCE-DDS-Gen ./gradlew 组装
回响 export PATH=\$PATH:$PWD/scripts"; >>; ~/.bashrc

测试 microxrceddsgen 安装:

消息来源 ~/.bashrc microxrceddsgen -版本
# openjdk version "11.0.18" 2023-01-17
# OpenJDK 运行环境(构建 11.0.18+10-post-Ubuntu-0ubuntu122.04)
# OpenJDK 64 位服务器虚拟机(构建 11.0.18+10-post-Ubuntu-0ubuntu122.04,混合模式,共享)
# microxrceddsgen 版本:1.0.0beta2
::

⚠️ 如果您在系统中全局安装了 FastDDS 或 FastDDSGen:在这种情况下,eProsima 的库和 Ardupilot 中的打包系统不是确定的。您可能会遇到引入错误版本的库或运行时故障。目前,请避免同时进行本地安装和全局安装。如果您按照 全球安装 部分,应将其移除并转为本地安装。

最后,建立自己的工作空间:

CD ~/ros2_ws colcon 构建 --包至 测试

如果构建失败,当您请求帮助时,请在 "verbose(详细说明)"模式下像这样重新运行构建:

胶管 构建 --包至 测试 --事件处理程序=console_cohesion+

如果您想测试安装,请运行

CD ~/ros2_ws
消息来源 ./install/setup.bash colcon 测试 --软件包--选择 addupilot_dds_tests科尔康 测试结果 --全部 --verbose

安装(MacOS)

为了方便安装,我们将使用 vcs 和一个 ros2_macos.repos 文件

CD ~/ros2_ws vcs 舶来品 --递归 --输入 https://raw.githubusercontent.com/ArduPilot/ardupilot/master/Tools/ros2/ros2_macos.repos 来源

现在更新所有依赖项:

CD ~/ros_ws
消息来源 /{path_to_your_ros_distro_workspace}/install/setup.zsh

生成 microxrcedds_gen:

CD ~/ros2_ws/src/microxrcedds_gen ./gradlew 组装
出口 路径=$PATH:$(pwd)/脚本

最后,建立自己的工作空间:

CD ~/ros2_ws colcon 构建 --symlink-install --cmake-args \
-dbuild_testing=关于 \
-dcmake_build_type(构建类型=RelWithDebInfo \
-dcmake_macosx_rpath= \
-duagent_socketcan_profile(代理插座可配置文件=关闭 \
-duagent_logger_profile(监控程序配置文件=关闭 \
-使用系统日志=关闭 \
-duagent_use_system_fastdds(使用系统快显=关于 \
-使用系统快显=关于 \
--事件处理程序=桌面通知

如果您想测试安装,请运行

CD ~/ros2_ws colcon 测试 \
--参数 -s -v \
--事件处理程序 console_cohesion+ 桌面通知 \
--软件包--选择 测试

安装(Docker)

克隆 ArduPilot docker 项目:

git 复制 https://github.com/ArduPilot/ardupilot_dev_docker.git

建造集装箱

CD ~/ardupilot_dev_docker/docker docker 构建 -t ardupilot/ardupilot-dev-ros -f Dockerfile_dev-ros .

以交互模式启动容器:

装卸工 运行 -它 --名称 ardupilot-dds ardupilot/ardupilot-dev-ros

将另一个 bash 进程连接到运行中的容器:

装卸工 集装箱 执行 -它 ardupilot-dds /bin/bash

其余步骤与 Ubuntu 相同。如果容器上没有 MAVProxy,则可能需要安装。

核心 安装 -U MAVProxy