5. 二次开发程序部署
5. 二次开发程序部署
二次开发程序一般推荐两种部署方式,分别为本体 HDU 、 ADU 部署和三方工控机部署,本体部署硬件上较为简洁,适用于二开程序资源占用不大的情况,如需占用较多资源则需将 HDU 、 ADU 上原有的部分程序关闭释放 CPU/GPU 等资源;三方工控机部署则需使用额外的传输方式传输数据,如http传输协议,好处是原有机上软件程序功能都可以保留,同时又有相对充足的算力资源。
5.1 本体 HDU 、 ADU 部署
推荐的程序部署目录为 /agibot/data/home/agi/Desktop,机上磁盘清理模块会定时清理空间,该文件夹为白名单文件夹不会被清理。
mkdir -p /agibot/data/home/agi/Desktop
如遇权限问题,可考虑使用如下命令进行文件夹创建
sudo mkdir -p /agibot/data/home/agi/Desktop
sudo chown -R agi:agi /agibot/data/home/agi
5.1.1 Python 虚拟环境
使用 Python 语言进行二次开发只需创建虚拟环境即可,可使用 conda/venv 等工具创建虚拟环境,其中 venv 为系统自带工具,conda 安装可以参考 miniconda 安装官方文档。
5.1.2 Docker 部署
使用 C++ 或其他编译型语言,或者需要安装或修改某些系统依赖,可以考虑使用 docker 进行部署。
docker 安装方式参考 https://docs.docker.com/engine/install/ubuntu/#install-from-a-package,请勿使用 apt 进行程序安装。
5.1.2.1 修改 docker 默认数据路径
docker 数据的默认路径 /var/lib/docker 的分区容量较小,需要将其默认数据存储路径修改为白名单路径。
- 移动默认存储路径bash
# 停止 Docker 服务 sudo systemctl stop docker # 移动默认存储路径(请先创建目标路径 /agibot/data/home/agi/Desktop) sudo mv /var/lib/docker /agibot/data/home/agi/Desktop - 修改配置文件bash
# 修改 Docker 配置 sudo vim /etc/docker/daemon.json
在配置文件中添加:json{ "data-root": "/agibot/data/home/agi/Desktop/docker" } - 重启docker:bash
sudo systemctl start docker
docker配置完毕。
5.1.2.2 容器内外 ROS2 通信设置
默认配置下,容器内无法正常与机上系统间进行 ROS2 通信,需要进行一定配置。下面以 HDU 为例, ADU 也相同。
- 创建容器时将 ipc 通信和 net 通信与主机共享,添加如下选项bash
--ipc=host --net=host - 在容器内使用与 HDU 上相同的 agi 用户,uid 和 gid 均为 1001bash
groupadd -g 1001 agi && useradd -u 1001 -g 1001 -m -s /bin/bash agi - 在容器内外使用相同的 dds 配置文件,将 HDU 上的 /agibot/software/v0/entry/cfg/ros_dds_configuration.xml 拷贝到容器中,在容器内执行 ROS2 程序或使用 ros2 命令前执行如下命令(其中 /path/to 需要替换为真实路径)bash
export ROS_DOMAIN_ID=232 export FASTRTPS_DEFAULT_PROFILES_FILE=/path/to/ros_dds_configuration.xml - 此时在容器内应该可以收到 HDU 上发布的 ROS2 话题bash
ros2 topic list
5.2 有线连接机器人设备
普通外设连接
机器人头部具有与HDU设备连接的Type-C接口,用于与HDU设备进行通信。用户可将机器人头部的Type-C接口连接到其他设备上,即可实现与HDU设备的通信。

第三方工控机连接
如若需要在有线连接机器人设备时进行 ROS2 通信,需要进行如下操作:
首先将第三方工控机连接到机器人背部调试仓网口处,修改工控机网段为10.42.10.x,然后将 HDU 上的 /agibot/software/v0/entry/cfg/ros_dds_configuration.xml 拷贝到本地电脑,在本地电脑上执行 ROS2 程序或使用 ros2 命令前执行如下命令(其中 /path/to 需要替换为真实路径)
export ROS_DOMAIN_ID=232
export FASTRTPS_DEFAULT_PROFILES_FILE=/path/to/ros_dds_configuration.xml