SO-ARM101 Pro 第五个舵机(HX-30HM)位置编码异常及360°旋转控制问题咨询

SO-ARM101 Pro 第五个舵机(HX-30HM)位置编码异常及360°旋转控制问题咨询

一、产品名称

  • 机械臂型号:SO-ARM101 Pro Follower

  • 舵机型号:HX-30HM

  • 舵机数量:6 个

  • 控制板:Hiwonder 舵机总线控制板

  • 通信方式:UART 总线通信

  • 波特率:1 Mbps

二、硬件及软件版本

  • 舵机固件版本:V3.15

  • 操作系统:Ubuntu 20.04

  • Python 版本:3.8.10

  • ROS 版本:ROS Noetic

  • 使用 SDK:Hiwonder Servo Python SDK

三、问题描述

目前已经完成 SO-ARM101 六个舵机的通信测试,能够正常识别全部六个舵机,并通过 Python SDK 读取舵机的位置、电压、温度、电流等信息。

六个舵机的 ID 对应关系如下:

舵机 ID 对应关节
ID 1 shoulder_pan
ID 2 shoulder_lift
ID 3 elbow_flex
ID 4 wrist_flex
ID 5 wrist_roll
ID 6 gripper

目前发现第五个舵机(ID 5,wrist_roll)存在位置反馈数据异常的问题。

连续多次读取,得到的数据基本一致:

  • 原始位置值:33745

  • 十六进制:0x83D1

  • 电压:约 12.3 V

  • 温度:约 44 ℃

  • 电流:约 42~43 mA

  • 通信状态:正常

  • 舵机状态:未运动,无硬件错误标志

其他五个舵机的位置反馈值均处于普通 0~4095 范围内。

由于第五个舵机的原始位置值为 33745,超过普通 12-bit 位置范围,因此目前无法确定其正确的位置解码方式。

我们查阅了一些 Hiwonder 相关资料,发现 HX-30HM 可能支持有符号位置及多圈位置控制。

按照一种候选的 16-bit 符号幅值编码方式,0x83D1 可以解释为 -977,但目前无法确认这种编码是否适用于本机 V3.15 固件。

四、具体咨询问题

希望官方技术人员帮助确认以下问题:

1. 关于位置反馈编码

  • HX-30HM V3.15 的当前位置寄存器(0x38)采用什么编码方式?

  • 读取到的 33745(0x83D1)是否属于正常的位置反馈数据?

  • 该数值是否应该按照有符号数解释为 -977?

  • 是否存在其他位置偏置或多圈编码机制?

2. 关于 360° 旋转及多圈控制

  • ID 5 对应的 wrist_roll 舵机是否支持完整 360° 旋转?

  • 是否支持超过 360° 的多圈位置控制?

  • 360° 是指单圈连续旋转,还是能够进行多圈绝对位置控制?

  • 多圈位置反馈是否会在断电或重新上电后保留?

3. 关于目标位置控制

  • HX-30HM V3.15 的目标位置寄存器(0x2A)采用什么数据编码?

  • 负数目标位置应该如何转换为十六进制数据?

  • 当前 SDK 中的 Servo.move_to(position) 是否支持负数位置及多圈位置控制?

  • 如果支持,应该使用什么函数或具体通信指令?

4. 关于官方技术资料

是否可以提供 HX-30HM V3.15 对应的完整寄存器表及通信协议文档,尤其是当前位置、目标位置、位置偏置和多圈控制部分?

五、希望得到的帮助

目前六个舵机均可以正常通信,第五个舵机也可以正常读取数据。

希望能够确认 ID 5 的位置反馈编码方式,并获得适用于 V3.15 固件的正确控制方法,以便后续通过 Python SDK 和 ROS1 实现 SO-ARM101 六关节控制。

感谢技术人员的帮助!

正在请官方支持人员协助核实您提出的位置编码、旋转控制及协议资料问题。如仍需要助手协助,您可以在本帖中 @我。 @hw_5807d807aa044d25a

是校准的时候最小值过0了,重新校准一下控制一下5号舵机,最小值到0的时候不要继续往那个方向校准了