作者:AGIROS Release SIG Committer 岚
近期,AGIROS 智能机器人操作系统适配应用再迎新突破,成功完成对知合计算 A210 单板的深度适配工作。A210 是知合计算于 2025 年 7 月推出的 “阿基米德” 系列首款 RISC-V 架构芯片,定位于边缘服务器场景下的"通推一体"算力载体。本次适配基于 openEuler 24.03 LTS 操作系统与 AGIROS 25.12 操作系统的协同环境开展,不仅顺利实现机械臂视觉抓取核心功能,同时也达成了AGIROS、openEuler 与 RISC-V 架构的首次全栈技术协同,完成从底层硬件、基础操作系统到上层机器人应用框架的端到端适配与全链路验证。这一成果的落地,为 RISC-V 架构在机器人生态领域的垂直拓展提供了关键的技术路径与解决方案,有效填补了 RISC-V 从芯片算力到机器人上层应用的适配空白,进一步强化了 RISC-V 架构在智能机器人领域的技术支撑能力与生态竞争力。
以下为AGIROS 25.12在openEuler 24.03 LTS操作系统中,基于知合A210的UR5机械臂适配流程,欢迎广大开发者查阅:
A210(RISC-V)单板机械臂适配全流程
1.1为A210单板烧录openEuler-24.03-LTS系统
环境:使用windows11系统进行固体和镜像的烧录。
1.资源地址:
a.资源——烧录所需的软件的下载地址:
i.Android SDK Platform-Tools(platform-tools-r34.0.5-windows.zip):
http://developer.zhcomputing.com/artifactory/release/tools/platform-tools_r34.0.5-windows.zip
ii.Google USB Driver (usb_driver_r13 _windows.zip):
http://developer.zhcomputing.com/downloads/release/tools/usb_driver_r13-windows.zip
iii.系统镜像和所需的系统固件:
https://images.oerv.ac.cn/release/openeuler/24.03sp1/zhihe/a210-dev/zhihe-a210-extlinux?revision=0&lang=zh_CN&doc=0
b.烧录指南参考:
https://developer.zhcomputing.com/docs/A210/A210_Burning_Instruction/A210_SODIMM_V2_Burning_Instruction
2.完成烧录
此时可以对设备下电并上电,进行重启。
也可以短摁K2(RESET)按钮正常开机并进入系统。
默认用户名为 root
默认密码为 openEuler12#$
1.2为A210单板配置抓取环境
单板外观:

1.2.1网络配置
任务目标:用网线连接机械臂、单板和电脑,通过以太网网口共享笔记本电脑的网络,单板能够正常的上网,通过ping指令连接到机械臂的IP地址。
1.连接网线
将网线从机械臂控制柜上连接到单板的以太网网口end1处,将单板的以太网网口end0处连接到笔记本电脑的以太网网口上。

2.配置电脑的共享网络,需要单板与电脑相连的以太网网口为动态获取ip地址。该功能主要用于单板通过网线共享电脑wifi的网络,同时可以通过mobaxterm来远程ssh单板,用于进行单板的调试。
a.到网络适配器配置界面,设置wifi为共享网络,选择以太网为家庭网络连接。


b.此刻可以在以太网的ipv4界面看到,其IP地址已经被设置为192.168.137.1。

c.将电脑的以太网网口连接到单板的end0网口处。
d.因为之前的网络共享,当前你的以太网网卡的ip地址192.168.137.1,使arp -a命令查看192.168.137.1下所有其他设备的ip地址。
arp -a

e.使用mobaxterm等远程软件,连接刚刚尝试的arp-a命令显示的所有动态ip地址,当弹出了输入用户名和密码的界面就代表找到设备正确的ip地址,以下以mobaxterm为例。
i.右键User session,单击新建会话。

ii.选择ssh进行远程。

iii.输入刚刚尝试的arp-a命令显示的其中一个动态ip地址,点击OK。

iv.为了方便之后的使用可以将用户名设定为默认,这里将默认用户名设为root,这样以后就不用每次进入后输入密码了。

v.在配置好后,侧边栏中会出现已经配置好的设备,可以再次点击对应的ip地址来快速打开一个终端。

3.配置单板与机械臂相连的以太网网口的ip地址,设置为静态IP地址,并通过网线连接机械臂和单板。
a.找到网卡配置文件路径。通常在/etc/sysconfig/network-scripts/目录下,文件名可能是ifcfg-end1,如果没有的话就自己新建一个。
b.使用文本编辑器(如vi或nano)编辑该文件:
vi /etc/sysconfig/network-scripts/ifcfg-end1
输入以下内容:
DEVICE=end1BOOTPROTO=static #静态IPONBOOT=yesIPADDR=192.168.0.150 #IP地址NETMASK=255.255.255.0 #子网掩码GATEWAY=192.168.0.1 #网关
c.重新配置网络接口:
sudo nmcli connection reloadsudo nmcli connection showsudo nmcli connection up "System end1"


4.通过ping指令查看网络连接结果。
在单板上执行下列执行,用来验证其连接外网的能力。
ping www.baidu.com
1.2.2安装AGIROS
任务目标:在A210上的openeuler环境中安装AGIROS完整版。
1.使用一键安装脚本,选择需要的agiros版本,例如AGIROS桌面基础版(agiros-loong-ros-base)或者全量安装。
wget -qO - http://1.94.193.239/yumrepo/agiros/openeuler2403lts/2512/install.sh | bash
2.配置环境变量:
echo " source /opt/agiros/loong/setup.bash" >> ~/.bashrc
3.重新source环境变量:
source ~/.bashrc
1.2.3安装机械臂测试包
任务目标:安装ur5-moveit-demo机械臂测试包,运行测试案例,测试当前环境是否配置成功。
1.下载测试包:
yum install agiros-loong-ur5-moveit-demo
2.重新source环境变量:
source ~/.bashrc
3.启动测试案例:
agiros launch ur5_moveit_demo start_xn.launch.py
测试预期结果:
能正常的显示rqt和rviz的界面,同时在移动机械臂末端的轨迹规划球后,点击Plan&Execute按钮,机械臂能够进行轨迹规划。

1.2.4修改并编译源码
任务目标:如果需要适配不同的机械臂和摄像头,则需要对launch文件和cpp可执行文件进行修改和编译。
1.如果在之前已经安装了oe官方源上的opencv,则需要卸载opencv,不然在编译的时候会因为缺少opencv的相关拓展库,导致编译报错,在删除之后再重新进行下载,这里使用的是rpm包安装的方式,因为直接通过yum安装的话,也会下载oe官方源上的opencv。
rpm -e --nodeps opencvwget http://1.94.193.239/yumrepo/agiros/openeuler2403lts/2512/riscv64/3-party/opencv-4.5.2-9.oe2403.riscv64.rpmrpm -i opencv-4.5.2-9.oe2403.riscv64.rpm
2.创建工作空间:
mkdir -p ~/ur5_ws/src
3.下载UR5demo源码:
cd ~/ur5_ws/srcgit clone https://gitee.com/agiros/ur5-demo.git
4.下载源码所需的依赖:
sudo yum install agiros-loong-aruco* \agiros-loong-ur-* \agiros-loong-moveit* \agiros-loong-*-control* \agiros-loong-ament-lint-auto \agiros-loong-tf2-sensor-msgs \agiros-loong-agiros-base \agiros-loong-rqt* \agiros-loong-tf* \agiros-loong-urdf-sim-tutorial \liblttng-ust* --skip-brokenyum install libgflags-dev \agiros-loong-image-geometry \agiros-loong-camera-info-manager \agiros-loong-image-transport \agiros-loong-image-publisher \glog-devel \libusb-devel \eigen3-devel \nlohmann-json-devel \tinyxml-devel \libuvc-devel --skip-broken
5.配置源码的编译环境:
echo 'source ~/ur5_ws/install/setup.bash' >> ~/.bashrc
6.编译源码:
通过colcon build编译。
cd ~/ur5_wscolcon build --cmake-args -Wno-dev

1.3 A210单板搭载AGIROS,控制UR5实体机械臂实现视觉识别抓取
使用的机械臂型号为UR5,夹爪型号为Robotiq-2f-85,相机采用的是免驱的rgb摄像头,单板(A210)的系统环境为openEuler-24.03-LTS,用来共享网络的电脑系统为win11,AGIROS版本是25.12版本。
1.3.1环境准备
1.3.1.1网络配置
1.配置机械臂的IP地址:
IP地址:192.168.0.101 子网掩码:255.255.255.0 其余保持不变。

2.通过ping指令查看网络连接结果:
在单板上执行下列执行,用来验证其和机械臂的通信和其连接外网的能力。
ping 192.168.0.101ping www.baidu.com
网络配置正确的话结果如下图:

1.3.1.2连接夹爪和相机
任务目标:在连接上相机和夹爪的USB数据线之后,能够通过ls/dev/ttyUSB*指令找到已经连接的夹爪和相机。
1.通过ls指令查看外部USB设备是否连接上:
#检查虚拟机的usb驱动是否正常安装lsmod | grep usbserial#查看是否有外部USB设备输入ls /dev/ttyUSB*
出现了/dev/ttyUSB0则代表夹爪和相机连接成功:

1.3.1.3抓取环境搭建
任务目标:将机械臂、相机、单板、待抓取物体摆放到合适的位置,使机械臂在运动过程中不会撞到相机或者其他障碍物。
1. 将机械臂周围环境清理出一片空地,单板放置到不会被机械臂触碰到的后方,并将相机固定到机械臂正前方,视角为斜向下。
1.3.2手眼标定准备
1. 打印aruco标定图片。
通过在线工具生成ID和尺寸匹配的标定板(例如边长0.1米,ID为101)。
在线工具:http://chev.me/arucogen/
打印出来,将其贴在方块上方便夹爪进行抓取。
程序中使用的有两个Aruco码:
编号:582 格式:Original ArUco 大小:边长:50mm 用途:贴在待抓取物体上用于定位。
编号:100 格式:Original ArUco 大小:边长:100mm 用途:贴在标定板上用于进行手眼标定。
可以将标定板直接用胶带固定到夹爪上,用于手眼标定。


2.配置UR5机械臂实体示教器或者是URSIM中的External Control模块的IP地址和端口号。
如下图所示,示教器上配置的IP地址需要与主机IP和launch文件启动时输入的参数对应。


1.3.3手眼标定(眼在手外)
1.启动手眼标定。
a.在正式进行手眼标定前,还需要给夹爪的串口授权:
#临时生效,需要多次输入sudo chmod a+rw /dev/ttyUSB0
b.部分单板需要将防火墙给关闭了,不然无法和外部设备进行通信:
sudo systemctl stop firewalld #停止firewalld服务
在机械臂示教器执行程序时会出现以下情况:

c.启动手眼标定的launch文件:
agiros launch ur5_moveit_demo robot_eye_to_hand.launch.py
需要先点击示教器上的external control程序启动按钮才能进行下一步,不然有概率moveit无法控制机械臂,需要重新来一遍流程。
2.将机械臂末端夹爪移动到合适的位置,让夹爪夹持的aruco码处于正对着相机画面的正中间,距离适中,不要让aruco码占据相机画面的大部分区域。
3.启动自动移动机械臂程序:
程序会根据当前位姿和周围x、y、z轴的偏移点为基础进行r、p、y方向的姿态变换生成标定点,标定只需要其中的17个点,点越多最后的标定结果越精准。
agiros run ur5_moveit_demo moveit_eyetohand
4.标定步骤:
a.将ur5机械臂移动到标定点,调整机械臂姿态,可以使标定板在相机正中间。
b.等到标定板在相机画面中稳定后,点击Take Sample按钮。
c.等到Samples栏目中出现坐标变换信息后,点击终端,按下enter键,机器人移动到下一个标定点。
持续进行以上三个步骤,直到自动移动机械臂程序结束。

5.保存和校准得出的手眼标定结果:
在保定完成后,点击标定界面中的Save按钮。

发布得到的手眼标定结果:
agiros launch easy_handeye2 publish.launch.py name:=eye2hand_camera

校准标定文件:
a.将贴了aruco码的物块放置到夹爪的正下方。
b.关闭之前启动的所有终端。
c.启动 start_xn.launch.py 。
agiros launch ur5_moveit_demo start_xn.launch.py
d.观察aruco_marker_frame发布到rviz中的坐标系(使用的aruco码是582,如果不同的话可以修改start.launch.py中的参数)。
e.接着修改标定文件的xyz对应的参数,使得aruco_maker_frame坐标系能够与现实中对应上。修改后重新启动launch文件进行发布,可以刷新发布的坐标系。
agiros launch easy_handeye2 publish.launch.py name:=eye2hand_camera


1.3.4相机与UR5机械臂联合抓取
1.启动相机与UR5启动相机与UR5机械臂联合抓取的launch文件start.launch.py,当想要在虚拟环境中运行时可以启动start_xn.launch.py。
sudo chmod a+rw /dev/ttyUSB0#现实环境,需要连接机械臂、夹爪、相机不然会报错agiros launch ur5_moveit_demo start.launch.py#虚拟环境,只需要连接相机即可agiros launch ur5_moveit_demo start_xn.launch.py
2.启动抓取节点:
会循环进行抓取->放置->抓取操作,间隔15s执行一次,可以在这段时间内移动物块。
agiros run ur5_moveit_demo moveit_pick_place_demo
在启动start.launch.py前都需要在虚拟环境下进行调试,启动start_xn.launch.py,观察有没有出现机械臂撞击的情况。当确认抓取的时候不会出现碰撞就启动start.launch.py。
真实环境下进行抓取操作:
完整的适配流程可参照:
https://agiros.org.cn/#/caseDetail?id=2003029224927113217
关于知合计算
知合计算致力于开发基于 RISC-V 架构的高性能、可扩展“通推一体” CPU 芯片,依托自身生态优势,聚焦应用实际需求,以“应用定义产品”的方式,为包括通用人工智能在内的广泛应用场景打造创新、高效的算力基础。