本指导基于高通机器人RB5开发套件,围绕AI开发工作流、开发套件快速上手、嵌入式Linux环境配置、硬件板卡初始化、多媒体与ROS生态开发核心环节,提供全流程实操步骤,助力开发者快速完成高通机器人AI硬件的部署与开发调试。

一、核心AI开发工作流

高通机器人RB5的AI开发遵循模型训练-集成-部署的标准化流程,适配不同角色开发者的工作环节,核心依托高通神经处理SDK for AI实现模型优化与端侧部署,整体流程如下:

  1. 模型训练:在开发工作站完成离线训练,生成包含静态权重、学习偏差的AI模型,支持主流机器学习框架;
  2. 模型集成:基于高通神经处理SDK for AI对训练模型进行优化,生成端侧可运行的优化版AI模型;
  3. 应用部署:将优化后的模型集成到应用流水线,最终在RB5目标硬件上实现AI推理与应用运行。

适配角色:数据科学家(模型训练)、ML推理工程师(模型优化)、应用开发者(应用集成)、DevOps工程师(部署运维)。

二、开发套件开箱与快速起步

2.1 前期准备

  1. 开箱后核对套件组件,确保RB5核心板、外设、线材等完整;
  2. Thundercomm官网注册账号,下载配套SDK Manager(核心工具,含固件、驱动、开发资源);
  3. 参考SDK内的ReadMe文件、高通开发者网络(Qualcomm Developer Network)的快速入门指南软件参考指南,Thundercomm产品页可查询工具及配件专属文档。

2.2 核心操作步骤

  1. 软件下载:通过SDK Manager下载RB5所需的Linux内核、根文件系统、工具链等开发资源;
  2. 编译与烧录:按照SDK Manager内的实操指引,完成固件编译并烧录至RB5开发板;
  3. 示例程序获取:GitHub上提供高通RB5专属示例应用,可直接拉取用于开发入门,覆盖AI检测、多媒体、ROS等场景。

三、嵌入式设备Linux环境支持

高通机器人RB5平台提供多版本Linux内核支持,适配不同开发需求,核心环境及获取方式如下,均支持板上编译离线跨平台编译(配套SDK工具链):

内核版本 构建系统 获取渠道 根文件系统
5.x Yocto SDK Manager Ubuntu系
4.x Yocto SDK Manager 定制化
6.x(上游) Debian/Open Embedded Linaro 开源社区版
通用支持 - SDK Manager APT包管理器(便捷安装依赖)

四、RB5板卡初始化(基础配置)

板卡初始化核心完成HDMI显示Wi-Fi网络配置,是后续开发的基础,操作均通过板卡终端执行,默认登录账号:用户名root,密码oelinux123

4.1 HDMI显示配置(软件启动)

  1. 笔记本端打开相机应用,将视频源选为HDMI,通过键盘登录RB5开发板;
  2. 启动Weston桌面服务,依次执行以下命令:
    mkdir -p /usr/bin/weston_socket
    chmod 700 /usr/bin/weston_socket
    export XDG_RUNTIME_DIR=/usr/bin/weston_socket
    export LD_LIBRARY_PATH=/usr/lib:/usr/lib/aarch64-linux-gnu/
    weston --tty=1 --connector=29 --backend=drm-backend.so
    
  3. 如需打开终端窗口,通过触控板点击左上角图标即可,等待命令提示符出现即为启动成功。

4.2 Wi-Fi网络配置

  1. 编辑Wi-Fi配置文件wpa_supplicant.conf,修改网络信息:
    vi /data/misc/wifi/wpa_supplicant.conf
    
  2. 在文件中写入目标Wi-Fi信息(替换<>内内容):
    network={
    ssid="<你的Wi-Fi名称>"
    proto=WPA2
    key_mgmt=WPA-PSK
    pairwise=TKIP CCMP
    group=TKIP CCMP
    psk="<你的Wi-Fi密码>"
    }
    
  3. 保存文件后重启设备,可通过硬件开关断电/通电,或终端执行reboot命令;
  4. 设备重启后重新登录,再次启动HDMI服务,执行以下命令测试网络连通性:
    ping www.qualcomm.com
    
    出现连续回包即为网络配置成功。

五、智能多媒体开发(基于Intelligent Multimedia SDK & GStreamer)

高通RB5搭载智能多媒体SDK,深度集成GStreamer框架,支持音视频采集、编解码、AI推理融合,核心实现相机采集、视频编解码、端侧AI目标检测等功能,以下为核心示例应用的实操步骤。

5.1 核心多媒体架构

基于QMMF Server、Camera HAL3、CamX等核心组件,实现音视频采集-编解码-AI处理-显示全链路,支持H264/YUV编码、硬件加速解码、GStreamer插件化开发,兼容ROS2生态数据交互。

5.2 GStreamer示例应用运行

所有示例应用均在终端执行,完成后可关闭终端窗口,核心命令如下:

(1)相机采集示例
# 进入相机示例目录
cd /home/sample-apps-for-Qualcomm-Robotics-RB5-platform/Gstreamer-Applications/gst_camera
# 编译并运行
make
./ispcam_display 0
# 按Ctrl+c停止程序
(2)AI目标检测示例
# 进入AI示例目录
cd /home/sample-apps-for-Qualcomm-Robotics-RB5-platform/Gstreamer-Applications/gst_tflite
# 安装依赖并编译运行
sh install.sh
cd src
make
./tflite_object_detection
# 按Ctrl+c停止程序

六、ROS2机器人生态开发

高通RB5深度兼容ROS2(Foxy版本) 机器人操作系统,支持传感器数据采集、机器人运动控制、多节点通信,适配TurtleBot3、mBot等开源机器人平台,核心包含ROS2安装、基础测试、硬件适配、运动控制四大环节。

6.1 ROS2(Foxy)安装与环境配置

步骤1:安装并配置区域语言
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
步骤2:添加ROS2软件源
# 安装依赖工具
sudo apt install software-properties-common
sudo add-apt-repository universe
# 下载并添加ROS GPG密钥
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# 添加ROS2源到系统列表
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
步骤3:安装ROS2包
sudo apt update && sudo apt upgrade
# 安装桌面版ROS2及补全工具
sudo apt install ros-foxy-desktop python3-argcomplete
步骤4:配置ROS2环境(永久生效)
# 将环境变量写入bashrc
echo 'source /opt/ros/foxy/setup.bash' >> ~/.bashrc
echo 'export ROS_DOMAIN_ID=30' >> ~/.bashrc
mkdir ~/my_ros_logs
echo 'export ROS_HOME=~/my_ros_logs' >> ~/.bashrc
# 生效环境变量
source ~/.bashrc

6.2 ROS2基础功能测试

(1)节点通信测试(Talker/Listener)

打开两个终端窗口,分别执行以下命令,实现节点间消息发布与接收:

  • 终端1(发布者):
    source ~/.bashrc
    ros2 run demo_nodes_cpp talker
    
  • 终端2(订阅者):
    source ~/.bashrc
    ros2 run demo_nodes_py listener
    
    终端2可看到终端1发布的消息,按Ctrl+c停止程序。
(2)IMU传感器数据采集测试

实现RB5板卡IMU传感器数据的实时读取,打开两个终端窗口

  • 终端1(启动IMU节点):
    ros2 run imu-ros2node imu-ros2node
    
  • 终端2(查看IMU数据):
    ros2 topic echo /imu
    
    晃动/移动开发板,终端2可看到IMU数据实时变化,按Ctrl+c停止程序。

6.3 开发板终端访问方式

RB5提供3种终端访问方式,适配不同开发场景:

  1. ADB工具:通过adb platform tools连接板卡与电脑;
  2. SSH远程:通过网络实现电脑对板卡的远程终端访问;
  3. 独立PC模式:将板卡作为独立PC,外接键鼠、显示器直接操作。

七、主流开源机器人平台适配

7.1 TurtleBot3(激光雷达版移动机器人)

TurtleBot3是开源ROS移动机器人,适配RB5的激光雷达、电机控制、视觉模块,核心分为软件配置运动控制两步。

(1)软件配置(分两部分)
第一部分:安装依赖与编译包
# 安装基础依赖
apt install python3-argcomplete python3-colcon-common-extensions libboost-system-dev build-essential
# 创建工作空间并拉取源码
mkdir -p ~/turtlebot3_ws/src && cd ~/turtlebot3_ws/src
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/DynamixelSDK.git
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone -b foxy-devel https://github.com/ROBOTIS-GIT/lds08_driver.git
# 编译并配置环境变量
colcon build --symlink-install
echo 'export TURTLEBOT3_MODEL=burger' >> ~/.bashrc
echo 'export LDS_MODEL=LDS-02' >> ~/.bashrc
echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc
source ~/.bashrc
第二部分:更新OpenCR板固件
# 创建目录并下载固件
mkdir /home/opencrbin && cd /home/opencrbin
wget https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/Ros2/latest/opencr_update.tar.bz2
tar xvf ./opencr_update.tar.bz2
# 配置环境变量并更新固件
export OPENCR_PORT=/dev/ttyACM0
export OPENCR_MODEL=burger
dpkg --add-architecture armhf
apt-get update && apt-get install libc6:armhf
cd /home/opencrbin/opencr_update
./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr

固件更新完成后,按住OpenCR板的PUSH SW 1按钮几秒,机器人将前进约30厘米,验证硬件组装正常。

(2)TurtleBot3运动控制

打开两个终端窗口,实现机器人旋转、移动控制:

  • 终端1(启动机器人节点):
    source ~/.bashrc
    ros2 launch turtlebot3_bringup robot.launch.py
    # 等待终端出现“Run!”即为启动成功
    
  • 终端2(发布运动指令):
    source ~/.bashrc
    # 左转
    ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist '{linear: {x:0.0,y:0.0,z:0.0}, angular: {x:0.0,y:0.0,z:0.3}}'
    # 右转
    ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist '{linear: {x:0.0,y:0.0,z:0.0}, angular: {x:0.0,y:0.0,z:-0.3}}'
    

7.2 mBot(入门级移动机器人)

mBot是轻量级开源ROS机器人,适配RB5的USB拓展、手柄控制,核心包含上位机配置、固件烧录、硬件组装、驱动安装、手柄控制五大环节。

(1)上位机配置(电脑端)
  1. 安装Arduino IDE;
  2. 下载Arduino MegaPi库,通过Sketch→Include Library→Add .ZIP library导入库文件。
(2)mBot固件烧录
  1. USB线连接mBot的MegaPi板与电脑;
  2. Arduino IDE中选择板型:Tools→Board→Arduino AVR Boards→Arduino Mega or Mega 2560
  3. 选择串口号:Tools→Port→[连接设备的串口号]
  4. 打开固件示例:File→Examples→MakeBlockDrive→Firmware_for_MegaPi
  5. 点击上传按钮烧录固件,完成后断开USB线并重启MegaPi板。
(3)RB5与mBot硬件组装
  1. 用扎带将RB5开发板固定在mBot上;
  2. USB线连接RB5与MegaPi板;
  3. USB线连接游戏手柄与RB5板;
  4. 通过DC电源分配线为MegaPi板和RB5板分别接电池供电。
(4)RB5驱动安装(joydev+ch341)

需在RB5上编译并安装游戏手柄驱动(joydev)串口驱动(ch341),以下为通用步骤(以内核4.x为例):

通用前置步骤
# 查看内核版本,记下车号用于后续下载
uname -r
① joydev(手柄)驱动安装
# 下载对应版本内核源码
wget https://cdn.kernel.org/pub/linux/kernel/4.x/linux-<内核版本>.tar.gz
tar xvzf linux-<内核版本>.tar.gz
# 创建驱动目录并拷贝源码
mkdir joydev
cp -r linux-<内核版本>/drivers/input/* joydev/ && cd joydev/

修改Makefile,追加以下内容:

KVERS=$(shell uname -r)
obj-m:=joydev.o
EXTRA_CFLAGS=-g -O0 -Wno-vla -Wframe-larger-than-4496
build:kernel modules
kernel modules: make -C /usr/src/header M=$(CURDIR) modules
clean:
make -C /usr/src/header M=$(CURDIR) clean

继续执行编译与加载:

# 编译并临时加载
make
insmod joydev.ko
# 创建自动加载脚本并执行
vi joydev.sh

脚本内写入以下内容:

#!/bin/bash
KERNEL_VERSION=$(uname -r)
MODINFO=$(modinfo ./joydev/joydev.ko | grep vermagic)
MODULE_VERSION=$(echo $MODINFO | cut -d " " -f2)
if [ $KERNEL_VERSION != $MODULE_VERSION ]
then
echo "Versions incompatible"
echo ".ko file compiled with" $MODULE_VERSION
echo "System kernel is" $KERNEL_VERSION
else
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/input/
cp ./joydev/joydev.ko /lib/modules/$(uname -r)/kernel/drivers/input/
depmod -a
fi
echo "JOYDEV loaded"

执行脚本完成永久加载:

bash joydev.sh
② ch341(串口)驱动安装

步骤与joydev一致,仅替换目录和文件名,核心差异命令:

# 拷贝ch341源码
mkdir ch341
cp -r linux-<内核版本>/drivers/input/* ch341/ && cd ch341/
# 编译后拷贝至串口驱动目录
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/usb/serial/
cp ./ch341/ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/

其余Makefile修改、脚本创建、执行步骤与joydev完全一致,脚本命名为ch341.sh即可。

(5)手柄测试与mBot运动控制
① 手柄功能测试

打开两个终端窗口,验证手柄数据是否正常传输:

  • 终端1(启动手柄节点):
    ros2 run joy joy_node
    
  • 终端2(查看手柄数据):
    ros2 topic echo /joy
    
    按压手柄按键/推动摇杆,终端2数据实时变化即为测试成功。
② mBot手柄控制
# 安装依赖
pip3 install megapi
source /opt/ros/dashing/setup.bash
# 创建工作空间并拉取控制源码
mkdir -p rb5_ws/src && cd rb5_ws/src
git clone https://github.com/AutonomousVehicleLaboratory/rb5_ros2.git
# 编辑控制脚本(按需调整参数)
edit the file rb5_ros2/rb5_ros2_control/scripts/rb5_mpi_control.py
# 编译并运行
cd ..
colcon build --paths src/rb5_ros2/rb5_ros2_control
source install/setup.bash
ros2 run rb5ros2control rb5_mpi_control.py

操作游戏手柄,即可实现mBot机器人的运动控制。

八、常用开发资源与问题排查

8.1 核心开发资源

  1. 高通开发者网络:提供快速入门指南、软件参考指南、API文档;
  2. Thundercomm官网:SDK Manager下载、硬件配件文档、技术支持;
  3. GitHub:高通RB5示例应用、ROS2适配源码、第三方机器人平台驱动;
  4. Linaro:上游Linux 6.x内核、开源构建系统资源。

8.2 常见问题排查

  1. HDMI启动失败:检查环境变量配置是否正确,确认LD_LIBRARY_PATH路径无拼写错误;
  2. Wi-Fi连接失败:核对wpa_supplicant.conf内的Wi-Fi信息(无空格、引号正确),确保板卡与路由器在同一网段;
  3. ROS节点启动失败:检查环境变量是否生效(source ~/.bashrc),确认ROS2版本为Foxy,与源码分支匹配;
  4. 驱动加载失败:确保内核版本与源码版本一致,uname -r输出与下载的内核源码版本完全匹配;
  5. 机器人无响应:检查硬件接线是否牢固,固件烧录是否成功,驱动是否正常加载(lsmod查看驱动模块)。

–end–

Logo

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

更多推荐