多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

让开发板跑通 VLA 模型:IB-Robot 在 Ascend 与 RKNN 上的 NPU 部署指南

让开发板跑通 VLA 模型:IB-Robot 在 Ascend 与 RKNN 上的 NPU 部署指南 让开发板跑通 VLA 模型IB-Robot 在 Ascend 与 RKNN 上的 NPU 部署指南【免费下载链接】IB_RobotSave the code of IB-Robot, an AI robot execution framework developed by openEuler Embedded for embodied intelligence scenarios. It includes references to the forked version of tensormsg, references to lerobot fork, code references to the lerobot_ros2:ros2_ws branch, as well as some code related to development usability.项目地址: https://gitcode.com/openeuler/IB_Robot本文面向新手讲解如何用IB-Robot把 VLA视觉-语言-动作模型部署到开发板的 NPU 上在 HiSilicon Ascend 310P/310B 上用 OM 模型推理在 RK3588 上用 RKNN 推理。IB-Robot 是 openEuler Embedded 开源的具身智能机器人框架打通了 LeRobot 训练生态与 ROS 2 控制链路提供导出 → 打包 → 验证 → 启动的完整工具链。一、为什么选 IB-Robot 做 NPU 部署 VLA 模型如 ACT、SmolVLA、Diffusion Policy在笔记本上训练但要让机器人真正跑起来必须放到算力有限的开发板上。直接手写推理代码容易踩坑IB-Robot 把这件事变成配置驱动的标准流程一套模型多平台部署同一个 policy bundle 可以通过inference_manifest.json声明多个 deployment如ascend_310p、ascend_310b、rknn启动时用名字选择即可互不干扰。统一推理服务src/inference_service/ 提供 pipeline、Action server 和健康检查板端只需一条ros2 launch命令。ABI 契约保护编译器可能重排模型输入顺序IB-Robot 在导出时生成 runtime ABI JSON 并写入 manifest运行时严格按绑定映射输入不会猜参数。二、先选平台Ascend 与 RKNN 怎么选IB-Robot 主干工作流支持三类平台其中两块端侧板卡对应不同的 NPU 技术栈维度AscendHiSiliconRKNNRockchip典型芯片Ascend 310P / 310BRK35886 TOPS NPU运行系统openEuler Embedded 24.03OpenHarmony EmbodiedAI 1.0.1模型格式ONNX →ATC 编译为 .omONNX →RKNN Toolkit 转换为 .rknn运行时ACLCANNRKNNLite官方文档SD3403 SDK 与 IB-Robot 部署资源OpenHarmony RKNN NPU 推理指南提示两套运行时 API不应混用。SD3403 平台还区分 ACL/OM 与 SVP/NNIE 两条工具链选型时先确认你的板卡属于哪一条。LeRobot 子模块依赖与 patch 管理机制可参考仓库根目录 README.md 中的说明三、RKNN 部署5 步在 RK3588 板跑通 ACT 以 ACT 策略在 OpenHarmony EmbodiedAI 1.0.1 板卡如贝启 BQ3588HM上部署为例完整步骤如下。步骤 1主机侧独立环境转换模型RKNN Toolkit 与主项目依赖容易冲突先建一个独立 venvpython3 -m venv .venv-rknn . .venv-rknn/bin/activate python -m pip install rknn-toolkit2 onnx onnxruntime注意板端 RKNN runtime 与主机 toolkit 版本应匹配版本不一致可能导致模型加载失败或数值差异。步骤 2运行统一 ExporterIB-Robot 的 export_onnx_rknn.py 一条命令完成 6 件事从 LeRobot checkpoint 导出并简化 ACT ONNX → 调用独立环境转换 RKNN → 生成 runtime ABI JSON → 复制 artifact 到 bundle → 写入 SHA-256 与完整 bindings 到inference_manifest.json→ 用生产级 strict loader 重新验证source .shrc_local python3 src/model_utils/model_utils/export_onnx_rknn.py \ --policy_path $WORKSPACE/models/502000/pretrained_model \ --convert_rknn --deployment rknn步骤 3在 Robot YAML 中指向 RKNN deployment推理配置位于control_modes.mode.inference.pipelines核心就三个关键字段pipelines: policy: model_path: /data/models/502000/pretrained_model deployment: rknn # 必须与 manifest 中的命名一致 execution_mode: monolithic # 单板推理用 monolithic步骤 4板端最小化验证加载板端环境后用 hardware_mock 做仿真联调比直接上真机更利于定位问题. /data/roboframe/scripts/robooh_1.0.1.env export ROS_DOMAIN_ID51 ros2 launch hardware_mock hardware_mock.launch.py robot_config:so101_single_arm ros2 launch inference_service eval_inference.launch.py \ model_path:/data/models/502000/pretrained_model \ deployment:rknn pipeline_id:policy触发一次/inference/policy/dispatchAction结果中出现success: true、非空deployment_fingerprint和backend_latency_ms即部署成功。步骤 5切换真实机械臂闭环把use_sim改为false后启动整机ros2 launch robot_config robot.launch.py \ config_path:.../so101_single_arm.yaml \ control_mode:model_inference use_sim:false首次使用真机请先执行 calibrate_arm 机械臂校准。整个板端部署流程的详细命令与进程清单见 README.OpenHarmony.md。四、Ascend 部署OM 编译三板斧 ⚡Ascend 平台的典型流程是ONNX → ATC → OM → ACL。以 310B 板openEuler Embedded aarch64为例导出 ONNX 并编译 OM使用 export_onnx_hisilicon.py 导出再用 CANN 的 ATC 工具以--soc_versionAscend310B1编译为 .om打包 deploymentros2 run model_utils package-compiled-deployment生成含inference_manifest.json的 bundle启动推理与 RKNN 侧相同的 launch 命令只需把deployment:ascend_310b换成对应的命名。一个值得新手借鉴的真实案例语音增强模型 FullSubNet 在 310B1 上的转换记录 fullsubnet_310b_deployment.md 展示了完整的门控 → 定位 → 修复 → 长序列漂移验证方法论——例如 fused LSTM 算子在 310B1 上时延 40ms 超标静态展开后降到 10ms 量级fp16 递归漂移问题则靠origin精度模式解决。这类踩坑记录是 NPU 部署最宝贵的参考资料。五、进阶边云分布式推理 当单板算力吃紧时例如 SmolVLA 推理速度慢于动作消费速度IB-Robot 支持边云分布式推理Edge 侧YAML 中execution_mode: distributed只保留本地 processor/tokenizer不含云端编译产物Cloud 侧在板卡上启动cloud_inference.launch.py承担 NPU 重计算约束两侧的 bundle digest、deployment 名称与 fingerprint 必须一致cloud 重启或心跳超时后会自动失效 session 并重新握手。详细 YAML 示例与命令见 OpenHarmony RKNN 推理指南第 6 节。六、常见问题速查表 ️现象原因处理Deployment rknn is not present启动名称与 manifest 不一致查看deploymentskeys用正确名称或重新导出Bundle digest mismatchmanifest 与文件不一致重新运行 exporter不要手改manifest模型加载失败 / 数值异常toolkit 与板端 runtime 版本不匹配用匹配版本重建模型并在板上验证RKNNLite import 失败板端环境未加载先. robooh_1.0.1.env再启动动作全零、运动不连续推理慢于消费速度或算子 CPU fallback 失败参考 SmolVLA RKNN 排查记录核心经验RKNN 转换成功不等于板端可用。务必在目标板上完成最小化 launch Action 触发 真机闭环三级验证stateful 模型还要做长序列漂移测试。七、相关资料与模块路径 快速上手含 3 步部署命令README.OpenHarmony.mdRKNN 完整部署与排障docs/OpenHarmony_EmbodiedAI_RKNN_Inference.mdAscend/SD3403 工具链与部署docs/SD3403_SDK_ACL_NNIE_IB-Robot_deployment_zh.mdSmolVLA RKNN 全链路故障排查实录docs/SmolVLA_RKNN_Troubleshooting_Record.md模型导出工具集src/model_utils/推理服务与 backend 实现src/inference_service/manifest 加载与校验逻辑src/inference_manifest/需要源码时仓库地址为 https://gitcode.com/openeuler/IB_Robot 克隆后按scripts/setup/下的平台脚本初始化环境即可开始部署。【免费下载链接】IB_RobotSave the code of IB-Robot, an AI robot execution framework developed by openEuler Embedded for embodied intelligence scenarios. It includes references to the forked version of tensormsg, references to lerobot fork, code references to the lerobot_ros2:ros2_ws branch, as well as some code related to development usability.项目地址: https://gitcode.com/openeuler/IB_Robot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表