Adam_demo 版本更新 & 功能说明
基本功能
模式(mode
)
机器人支持以下基础模式:
Start
: 启动模式,初始化机器人状态。Zero
: 回零模式,机器人回到零位位置。Stand
: 站立模式,机器人保持站立姿态。Walk
: 行走模式,机器人执行行走动作。Run
: 跑步模式,机器人执行跑步动作。
遥操数据记录方法
- 启动程序,切换到站立状态
- 准备动捕设备,标定完毕
- 动捕时,在PC端动作映射无误后,才可以启动
动捕数据发送
- 机器人端在站立模式下且确保周围区域开阔时才可以打开动捕数据接收。防止造成动作突变,初始时动捕人员尽可能处于
立正状态
。此时按下遥控器十字按键的右侧按键
,观察终端打印real time retarget start
时,表示机器人进入接收动捕数据状态
,此时机器人可跟随动捕人员的动作运动,该过程中不可以操作遥控器中按钮
- 数据采集时会把数据记录到目录
bin/*.txt
中,日期为相对最新日期的那个文件,文件命名示例如:retarget_data20250829_182522log.txt
- 按下
RT按键 + 遥控器十字按键下方按键
即可记录动捕数据到上述txt
文件中,记录周期为0.01s
即一秒记录100组数据,每组数据包括腰部3+头部2+左臂7+左手6+右臂7+右手6+机器人高度1
共32
个数据,一组即在txt文件中的一行,再按下RT按键 + 遥控器十字按键下方按键
即可停止记录 - 文件记录时为按照行数递增记录,重新记录时会生成一个新的动捕记录文件,文件命名示例如:
retarget_data20250829_182522log.txt
,为确保数据有效,需要将数据进行处理,即如果文件首行和末行数据不完整,删掉即可 - 动作复现时,将
记录的动捕数据
复制到目录bin/Sources/motion/
下,如果只想复现此动作,将该目录下只有该动作的txt文件
- 按下
- 如果想让机器人复现这个动作,需要机器人结束
接收动捕数据状态
,具体方法参考最后一步 - 结束动捕时
- 动捕人员尽可能处于
立正状态
,使机器人处于接近零位状态
,避免加速度过大 - 按下
遥控器十字按键左侧按键
,观察终端打印real time retarget end
时,机器人退出接收动捕数据状态,此时为正常站立状态,此时可以进行正常走站跑以及展示预定义动作等操作
- 动捕人员尽可能处于
动作(motion
)
机器人支持以下预设动作:
Greeting
: 打招呼动作。Chest Expansion
: 扩胸动作。Stretching
: 伸展动作。Gentleman's Salute
: 绅士礼动作。
控制动作 (action
)
机器人支持以下基础控制动作:
Roll
: 机器人绕 X 轴旋转。Yaw
: 机器人绕 Z 轴旋转。Pitch
: 机器人绕 Y 轴旋转。Base Height
: 调整机器人浮动基座高度。
工程结构
以下是项目的配置文件夹结构:
-
Source/
config/
: 机器人配置文件夹,包含机器人的基本控制参数和电机参数配置。hand/
: 手部控制文件夹,包含因时手部控制脚本。motion/
: 机器人动作文件夹,包含机器人预设及动捕动作文件。python_scripts
/: 零位脚本文件夹,包含机器人回零相关脚本文件。urdf/
: 模型文件夹,包含机器人urdf文件。
版本更新: v1.5.1
新增功能
push recovery
功能:- 机器人能够根据外力冲击大小进行动态调整,提升抗干扰能力。
- 动捕动作集:
- 新增动作捕捉支持,提供更丰富的可执行动作,支持复杂动作的执行。
- 上层控制接口:
- 新增 gRPC 接口,集成 gRPC 服务端,支持远程控制和数据传输。
- 提供完善的客户端例程,用户可参考或自定义客户端进行机器人控制。
- 提供上位控制界面 (PAC),用户可通过界面进行机器人控制。
优化改进
- 站走切换优化:
- 提升站走切换的稳定性,减少起步和停止过程中的抖动。
- 腰部控制优化:
- 实现更柔软的腰部控制,提升机器人运动的灵活性和自然度。
- 稳定性提升:
- 优化核心控制算法,提升整体运动稳定性。
- 动作流畅性:
- 改进动作执行逻辑,使机器人动作更加流畅自然。
- 状态保护:
- 增加意外状态保护机制,避免机器人因意外状态导致程序崩溃。
注意事项
push recovery
功能:- 机器人自我调整能力有限,在高强度外力冲击下可能出现失衡。
- 建议在平坦地面上测试,以获得最佳效果。
- 动捕动作集:
- 建议在平坦地面上测试,确保动作执行效果。
- 动作执行过程中请勿进行其他操作,等待动作完成后再进行下一步。
- 上层控制客户端:
- 使用 gRPC 接口前,请参考官方文档进行配置和调用。
- 自定义客户端时,需实现必要的逻辑保护代码,确保控制安全。