移动机器人
智能体黑客松
以工业巡检为载体,展示从预编程机器人到自主智能体的范式跃迁—— 一场面向 dora-rs 机器人中间件与 Octos 工业级智能体的两日极限开发实战赛事。
竞赛目标
大赛以工业巡检场景为统一命题,检验参赛队伍在真实硬件上的全栈工程能力。
竞赛布局
- 场地总面积 5m × 5m,中线设有 1.2m 高物理隔离板。
- 隔离板将场地分为 A / B 两个独立区域,每区尺寸 2.5m × 5m,互不干扰。
- 参赛机器人 ADORA NANO 在区域内自主完成建图、巡检任务与回归停放。
日程安排与比赛结果
两日极限开发:10 月 16 日—17 日,具体日程如下。
参赛情况
参赛队伍名单与分组信息整理中,组委会确认后公布。
最终比赛结果
各队伍积分、排名与获奖情况将在赛事结束后由组委会统一公布。
巡检任务:Point 1 – 4
一台 ADORA NANO 在场地内依次完成阀门操作、仪表识别、物料抓取与物料放置,并安全回归起点。
阀门操作
检测阀门是否处于关闭状态,操作机械臂打开阀门。评分依据阀门把手末端落点角度(角度区间以阀门标签标记为准)。
仪表数字识别
仪表随机生成 6 个数字,需识别全部数字及其顺序。
物料抓取
检测物料、获取物料抓取点,由机械臂执行抓取动作。按抓取尝试次数计分。
物料放置 Skill 开发
开发放置物料的 skill,将 Point 3 所抓取物料放置于收纳篮中。本环节考察 skill 是否完整开发。
全程 · 安全导航 10 分
全程导航过程中,每发生一次碰撞扣 2 分,扣完为止。
终点 · 回归 Start 10 分
ADORA NANO 最终停于红色框线内得 10 分,压线得 8 分,其余停止位置均不得分。
积分构成与排名规则
比赛采用任务积分制:总得分 = 各环节任务得分总和 × 权重系数,最终按积分高低排名。
| 序号 | 得分要点 | 积分 |
|---|---|---|
| 1 | 建图 | 20 |
| 2 | 阀门操作(Point 1) | 15 |
| 3 | 仪表数字识别(Point 2) | 10 |
| 4 | 物料抓取(Point 3) | 15 |
| 5 | 导航过程中动态避障 | 10 |
| 6 | 开发 Point 4 的 skill | 20 |
| 7 | 回到 Start 位 | 10 |
| 总积分 | 100 | |
评分规则与排名
- 按积分高低排名;
- 积分相同时,依次比较以下因素决定名次:
dora-rs 中间件 × Octos 智能体
Dora 是机器人中间件,Octos 是工业级智能体。巡检全流程由五个 Skill 协同完成。
dora-rs
新一代机器人中间件框架,以数据流(dataflow)编排建图、定位、导航与感知节点,负责底层运动与传感器能力。
Octos
工业级智能体,以 Skill 为能力单元自主分配任务、决策执行,串联「导航到点位 → 执行任务 → 前往下一点」的完整巡检闭环。
adora-nano-patrol总编排
负责「到点 — 执行任务 — 前往下一点」的总编排 Skill:定义完整巡检流程、失败处理和安全规则,提供 run_patrol / patrol_status / patrol_stop 三个工具,并读取最终巡检结果(正式报告输出至 ~/Pictures/patrol_results)。
adora-nano-navigation底盘导航
移动底盘导航 Skill:定义导航任务的触发方式、安全边界与多点执行规则,提供 navigate_to_waypoint 工具,校验点位并调用 8769 端口的导航 Bridge,跟踪 goal_id 直到返回 REACHED 或失败状态。
adora-nano-valve-operate阀门操作
阀门识别与操作闭环 Skill:提供 valve_operate_loop 工具(含目标状态、决策方式、重试次数与调试模式参数),启动 valve-task.yaml 数据流,串联相机、几何计算与任务编排节点。
adora-nano-meter-detect仪表识别
仪表数字和文字识别 Skill:提供无参数的 meter_detect 工具,启动 meter-detect.yaml 数据流,返回仪表读数识别结果。
adora-nano-object-operate抓取与放置
物体识别、抓取、放置与结果验证 Skill:提供 object_operate_loop 工具(含目标类别、调试模式与重试次数),启动 object-task.yaml 数据流并返回结构化执行结果。
ADORA NANO 双臂移动机器人平台
具身智能,落地为实——从零基础到具身智能达人,你只需一台。
ADORA NANO 是面向教学与科研的移动双臂平台:双机械臂、激光雷达 SLAM 导航、环境与腕部双视觉,昇腾 / NVIDIA 双算力适配,搭载 DORA 框架与 DoRobot 工具链,支持 ACT、VLA、WAM 策略模型。本次黑客松的全部赛题任务,都在这样一台 nano 真机上完成。
| 产品形态 | 移动双臂科研平台 |
| 机械臂 | 双机械臂 · 二指夹爪 |
| 导航 | 激光雷达 · SLAM 建图 / 定位 / 导航 |
| 视觉 | 环境相机 · 腕部相机 |
| 短距通信 | 星闪(NearLink) |
| 算力平台 | 昇腾 · NVIDIA |
| 操作系统 | OpenHarmony · openEuler · Ubuntu |
| 软件框架 | DORA 框架 · DoRobot 工具链 |
| 策略模型 | ACT · VLA · WAM |
赛场实景
来自赛事官方技术文档的现场照片。
注:图5(物料抓取场景)与图6(物料放置场景)的现场照片在原技术文档中缺失,组委会补拍后更新。
参赛设备操作手册
摘自赛事官方技术文档,供参赛队伍参考。
初始化操作
设备串口分配:/ttyACM0 移动底盘/ttyACM1 机械臂/ttyACM2 2D 激光雷达
机械臂的初始姿态可保持如图2所示,以防止影响激光雷达扫描范围。
键盘控制底盘
建图结束:先在键盘控制终端按空格,确认底盘停止后,再按 X,然后执行 dora stop adora-mapping
2.1 建图操作
终端 1 —— 启动建图数据流
conda activate gosim
dora up
cd ~/adora_nano_dora_navigation/apps/adora_nano_navigation
dora start --attach -n adora-mapping adora_nano_mapping.yml # 启动建图数据流
终端 2 —— 键盘控制移动
conda activate gosim
cd ~/adora_nano_dora_navigation
python chassis/feetech_kiwi_chassis_dora_node/keyboard_control.py --teleop # 启动键盘控制
地图输出与质量检查
# 地图目录:~/adora_nano_dora_navigation/mapping/maps/
# 主要文件:ms200_keyboard_map.pgm / .yaml / .metadata.json / .posegraph.dora
python apps/adora_nano_dora_navigation/adora_nav.py quality # 查看地图质量
# 打开地图:Ristretto Image Viewer
注:禁止进行地图编辑!
2.2 采集点位操作
终端 1 —— 启动定位与点位采集
conda activate gosim # 同步新地图参数
cd ~/adora_nano_dora_navigation
python apps/adora_nano_navigation/adora_nav.py sync-map
dora up
cd ~/adora_nano_dora_navigation/apps/adora_nano_navigation
dora start --attach -n adora-localization localization_keyboard.yml
终端 2 —— 初始位姿与键盘控制
conda activate gosim
cd ~/adora_nano_dora_navigation
python localization/initial_pose_dora_node/set_initial_pose.py 0 0 0
# (0,0,0) 只是初始猜测,定位算法随后根据激光地图匹配修正为实际位姿
python chassis/feetech_kiwi_chassis_dora_node/keyboard_control.py --teleop
终端 3 —— 保存点位
conda activate gosim
cd ~/adora_nano_dora_navigation
dora-point save point1 # 移到目标位置并停稳后执行
dora-point save point1 --force # 若 point1 已存在
操作流程:用键盘移动小车到目标位置 → 按空格停车 → 停止稳定后保存点位;结束后键盘终端依次按空格、X,并在终端 3 执行 dora stop adora-localization。点位保存于 ~/adora_nano_dora_navigation/apps/adora_nano_navigation/waypoints.yaml
2.3 导航
终端 1 —— 持久导航数据流(务必执行)
conda activate gosim
cd ~/adora_nano_dora_navigation/apps/adora_nano_navigation
dora up
dora start --attach -n adora-navigation adora_nano_persistent_navigation.yml
# 重复定位需要先关闭上一个数据流:dora destroy
终端 2 —— 定位初始化与 Octos(务必执行)
conda activate gosim
cd ~/adora_nano_dora_navigation
dora-localize start # 定位初始化
/home/HwHiAiUser/.octos/bin/octos chat --cwd ~/adora_nano_dora_navigation --profile coding-full
# 可用 octos 测试导航;测试完成后输入 /exit 退出
2.4 导航文件汇总
1. 持久导航数据流(Octos 与 dora-nav 当前使用):
/home/HwHiAiUser/adora_nano_dora_navigation/apps/adora_nano_navigation/adora_nano_persistent_navigation.yml
2. 建图:/home/HwHiAiUser/adora_nano_dora_navigation/apps/adora_nano_navigation/adora_nano_mapping.yml
生成地图:~/adora_nano_dora_navigation/mapping/maps/
3. 定位(键盘移动与点位采集):/home/HwHiAiUser/adora_nano_dora_navigation/apps/adora_nano_navigation/localization_keyboard.yml
4. 点位采集:start、point1、point2、point3、point4 保存于
~/adora_nano_dora_navigation/apps/adora_nano_navigation/waypoints.yaml
Octos 启动
conda activate gosim
octos chat --profile coding-full # Octos chat 退出命令:/exit 回车