在OAK 4 D 上使用ROS2

OAK 4 D 可以直接在相机中运行完整的ROS2,无需外部计算机。

在本文中,我们将使用OAK 4 D作为车载感知与主控计算机,ROS2 应用程序部署到iRobot Create 3机器人上。此处展示的人员跟随Demo仅用于说明如何在OAK 4 D上构建和部署ROS2 应用程序的框架。

它使用自定义的ROS workspace template构建,你可以将此模板作为开发自由应用的起点。

通过将ROS部署为一个OAK App,你可以解锁OAK Hub的功能,实现远程部署、集群部署、调试和OTA更新——无需自行构建和维护相关基础设施。

videoplayback (3)

关于ROS2的部署模式的说明

这篇Blog介绍了在OAK 4上运行ROS2的一种方法——以独立模式在设备上完全本地(STANDALONE mode.运行。

第二种选项:外设模式(PERIPHERAL mode在此配置中,部分工作负载在相机上运行,但仍依赖于某些主机PC资源。如果您采用的架构更适合外设模式,我们提供详细的文档,涵盖外设模式的设置与使用方法。

本Blog文章使用的是ROS2 Kilted版本,但如果您在主机电脑上运行的是Jazzy或Humble版本,配置同样适用。

现有ROS 2 Apps

在构建自己的部署之前,值得注意的是,OAK Hub中已经有一个可以运行的ROS2应用程序,您可以将其作为示例:

您可以直接将其部署到OAK 4 D,并立即开始传输ROS话题流。

在oak-examples仓库中还有其他额外的ROS应用示例。然而,在本博客中,我们将重点介绍如何将自定义的ROS 2应用部署到实际机器人上。

硬件配置

在这个Demo中,我们将OAK 4 D 锁紧在一台iRobot Create 3上。因为Create 3不能直接给OAK 4 D供电,所以我们使用了:

以太网连接Create 3和OAK 4 D,一个PoE供电模块

这保持了整个系统完全可以移动,同时允许机器人和OAK 4 D之间进行直接有线通信。

为了能够通过OAK的Hub启动新应用程序和管理设备,我们使用USB WiFi dongle 将OAK 4 D 连接到WiFi。

目前,仅支持配备RTL8811CU/RTL8812CU(RLT881CU)和MT7601U芯片组的dongles,对于此设置,我们使用了联发科MT7601 USB WiFi适配器,通过USB-A母头到USB-C公头适配器连接到OAK 4 D。

相机和网络设置

为了实现OAK 4 DCreate 3之间的通信,同时允许WiFi 接入进行管理和部署,我们配置了静态以太网和WiFi连接。

1.通过PoE+ 交换机进行初始连接

为了通过WiFi进行身份验证,我们首先使用以下方式连接了OAK 4 D

  • A PoE + 交换机
  • 以太网电缆
  • 通过DHCP访问互联网

这个配置与Getting Started guide 非常相似:

2.生成静态IP配置

接下来,我们使用web configurer.生成配置命令。

在配置表单中:

非常重要的是,在高级设置下选中 "Enable SSH"

在高级设置下,配置:

Static IP: 192.168.186.3

Mask: 255.255.0.0

Gateway: 0.0.0.0

然后点击 "Finish Configuration" 并按照提供的说明进行操作。

也就是说,我们设置的命令是:

oakctl self-update
oakctl start-setup
oakctl setup --password SET_PASSWORD --static-ip 192.168.186.3,255.255.0.0,0.0.0.0 --app-config "{}" --agent-config "sc=HYFGQT" --dont-check-internet --time-zone Europe/Ljubljana --time "@1770886763" --enable-error-reporting --peripheral-mode

其中,SET_PASSWORD是所需的密码。

这将为OAK 4 D配置静态IP,以便与Create 3直接通信。

3. SSH进入相机并配置WiFi

当仍然连接到PoE交换机 (DHCP互联网可用)OAK4-D will have:

  1. One interface with the static IP
  2. One interface with a DHCP-assigned IP

为了找到DHCP IP:

oakctl list

然后通过SSH连接:

ssh root@CAMERA_IP

使用上一步设置中的密码。

4. 连接到WiFi

登录后,连接到WiFi

nmcli d wifi connect <ssid> password <password>

如果您遇到此错误:

Error: Failed to add/activate new connection: failure adding connection: error writing to file '/etc/NetworkManager/system-connections/... Read-only file system

以读写方式重新装载 /etc 并重新启动 NetworkManager

mount -o remount,rw /etc

systemctl restart NetworkManager

然后重试WiFi命令。

运行人员跟踪命令Demo

该示例是从自定义ROS workspace template开始创建的,并在其上添加了人员检测和控制逻辑。

克隆存储库:

git clone --depth 1 --branch main https://github.com/luxonis/oak-examples.git

cd oak-examples/apps/ros/ros-follow-object/

OAK 4 D 上运行应用程序:

oakctl app run .

随后会发生什么:

启动后,OAK 4 D将:

  1. 使用机载AI检测人员
  2. 计算空间坐标
  3. 生成速度指令
  4. 发布到/cmd_vel
  5. 创建3个订阅并随之移动

所有的感知、空间推理和控制逻辑都直接由OAK 4 D进行工作,无需笔记本电脑,无需外部ROS计算机,完全地在边缘端完成部署!

该应用的价值

这不仅仅关于demo的本身,而是关于如何直接在OAK 4 D上部署ROS 2应用程序。

从自定义 workspace template 开始,您可以:

  1. 添加您自己的ROS2 软件包
  2. 修改启动文件
  3. 集成自定义节点
  4. 搭建特定的机器人应用程序

通过将所有内容打包为OAK App,您可以通过Hub管理和更新机器人阵列,包括远程部署、调试和OTA更新。

Demo显示了工作流程,您可以用它来构建和扩展项目需求上您所需要的内容。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐