返回列表 发布新帖

如何让人形机器人动起来:软件架构详解

1487 1
发表于 2024-10-23 16:27:01 | 查看全部 阅读模式
本帖最后由 用户0ed6a6b87eb0 于 2024-10-25 09:12 编辑

无论是使用操控手柄让人形机器人步态行走,还是遥操作、模仿学习、自主抓取等让机械臂智能作业,都离不开人形机器人小脑的运动控制和大脑的感知计算的相互配合。本文将从软件层面介绍人形机器人大小脑的功能和组成,帮助用户理解人形机器人的整体功能。
1 整体软件架构
如图1所示,人形机器人由三大核心模块组成:运动控制单元、感知计算单元和外接设备。这些模块通过交换机实时交换数据,确保了系统的高效协同工作。
1.1 感知计算单元
感知计算单元是机器人的大脑,负责处理遥操作和智能抓取的上肢操作及下肢的定位导航等任务。它包括:
  • 建图定位导航:负责全局和局部定位、位置重建目标6D检测、导航规划和自主决策等感知模块。
  • 参数及脚本管理:用于管理和调整机器人的运行参数。
  • 交互界面:如多种遥操作和Rviz接口,提供直观的交互方式。
  • 通信模块:包括通过ROS Topic和Service进行的数据交互。
1.2 运动控制单元
运动控制单元是机器人的小脑,负责处理底层的运动控制任务。它由以下模块构成:
  • 线程进度管理:协调各个控制线程的同步运行。
  • 数据管理:负责数据的存储和检索,共享内存负责模块间的数据交换。
  • 通信模块:包括和上层及操控APP的Socket服务、与电机的EtherCAT通讯服务和其他传感器间的通用接口服务。
  • 运动控制算法:包括全身动力学控制、强化学习和机械臂正逆运动学等。
同时还有外接的云端OS、操控终端APP、动态捕捉、外接VR及手柄等外部传感器等设备需要和感知及控制模块进行数据传输,实时控制机器人运动。

  图1 人形机器人整体软件架构图

2 数据流示例
接下来通过控制机器人智能上肢作业为例,展示在软件层面数据流的走向。
2.1 感知计算单元
人形机器人上肢智能操控目前有三种实现模式:
模式一:遥操作控制机器人上肢运动
遥操作控制机器人实现实时同步运动,有三种不同的人体手部末端位姿获取方式:
  • 穿戴Xsense动捕服及手套
    通过Aloha将上肢末端位姿和动捕手套获取手部6DOF的UDP信息转换为ROS topic,下发到中间件部分进行位姿比例缩放及手眼标定等数据处理,最终下发期望上肢末端位姿到运控单元。
  • 非沉浸式遥操作(VR手柄):
    该模式涉及两个部分,机器人本体的遥操作模块和外部的VR设备和手柄,外部VR设备通过数据传输给遥操作模块来实现遥操作。该模式适合精细操作带有夹爪的机械臂。机器人本体遥操作模块作为服务端负责接受手柄控制的数据。VR设备上的多颗摄像头,通过视觉算法和手柄上的imu补偿,来采集手柄的姿态和操作。VR设备的程序会把这些操作数据发送给机器人本体的遥操作模块。遥操作模块会翻译这些数据成为上肢位位姿指令。这些上肢位姿指令通过处理后生成机械臂的关节角数据下发给运控单元。这些操作在很低的数据传输延迟(10ms)中完成,通过手柄驱动机器人手臂,来实现精细的操作。
  • 沉浸式遥操作(头戴VR设备+手势操作):
    类似模式二,该模式涉及两个部分,机器人本体的遥操作模块和外部的头戴式vr设备,这两个部分通过数据交换来实现沉浸式遥操作体验。该模式泛用性高,适合操作带有灵巧5指的机械臂。机器人本体头部安装的双目相机会采集机器人头部视角的视觉图像,遥操作模块作为服务端会把这些图像发送给 VR头戴设备,通过VR让操作者看到机器人的视野。VR设备上的多颗摄像头,通过视觉算法采集人体上肢姿态和手部关节姿态。
模式二:模仿学习控制机器人上肢作业
模仿学习控制机器人上肢作业分为数据采集和推理验证部分:
  • 在数据采集部分,通过三种遥操作方式均可以下发末端位姿驱动机器人本体,此时在SDK用户端启用数据采集部分,通过WebSocket数据请求获取由控制单元的本体上肢作业的期望与实际关节角进行数据采集部分。当完成一条数据录制时,就可通过SDK播放关节角数据的方式进行轨迹重播。若要进行模仿学习需根据任务难度大小和泛化要求录制相应数据条数。
  • 在推理验证部分,上传相对应示教动作进行模型推理,推理完成后获取模仿学习大模型,机器人本体状态信息及机器人摄像头获取的视觉信息,处理后获得上肢关节信息通过中间件部分转化为关节指令(UDP)下发到运控单元。
模式三:自主识别抓取控制机器人上肢作业
SDK用户识别抓取上肢作业将视觉识别模型上传到视觉识别构件,机器人双目相机传给视觉识别构件视觉信息,感知单元获取来自视觉识别构件物体的抓取位姿,处理后形成作业环境信息发给SDK用户,SDK用户将上肢末端指令或上肢关节指令(ROS Topic)返回中间件部分,最终转化成UDP信息下发运控单元。
2.2  运动控制单元
  • 顶层:通过将感知单元的上肢末端指令或操控手柄下发的普通控制UDP数据写入共享内存,同时返回机器人本体状态信息到感知单元或手柄。
  • 中间层:从共享内存中读取机器人期望末端/关节数据,并进行强化学习或运动学逆解等算法处理下发期望电机信息给底层进行电机控制。
  • 底层:将机器人期望位置/速度/力矩数据通过ethercat下发电机,并返回电机实际位置/速度/力矩等状态信息。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评论1

胡言乱语阿瑞基Lv.7 发表于 2024-10-25 09:57:04 | 查看全部
醍醐灌顶,茅厕顿开,舒服了舒服了。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2025 OPENLOONG. All Rights Reserved. Powered by Discuz!
  • 关注B站
  • 关注抖音
  • 关注微信公众号
Copyright © 2025 开发者论坛 - OpenLoong 版权所有 All Rights Reserved.
关灯 在本版发帖 返回顶部
快速回复 返回顶部 返回列表