宇树h1_2机器人:基于unitree_sdk2_python的机械臂控制-正逆解求法以及源码复现
摘要
本文介绍了宇树H1_2双足机器人右臂控制算法的实现方法。首先通过官方文档和URDF文件了解机器人的基本结构,使用Python SDK接口进行编程控制。重点讲解了如何通过正逆运动学方法操控机械臂:(1)解析底层控制例程,实现关节复位和动作控制;(2)通过设定目标角度控制机械臂运动;(3)将7自由度简化成4自由度进行逆运动学解算。文中还提供了具体代码实现方法和注意事项,包括关节限位、角度定义等。
1 宇树h1_2机器人基本信息
(1)官方文档
链接:宇树科技 文档中心
官方文档涵盖h1_2机器人的各个部件名称、自由度、基本结构、关节序号与关节限位等进本信息。由于本文做的是机器人右臂的控制算法,所以我只总结了右臂有关信息。

(2)URDF文件
链接:https://github.com/unitreerobotics/unitree_ros/tree/master/robots/h1_2_description
(2)h1_2机器人本体控制sdk2_python接口
链接:unitree_sdk2_python/example at master · unitreerobotics/unitree_sdk2_python · GitHub
unitree_sdk2_python 是一个开源项目,旨在为 Unitree 双足机器人提供 SDK 接口,以便用户可以使用 Python 语言进行编程和控制。该项目是 Unitree 机器人开发者工具集的一部分,允许开发者通过 Python 实现对机器人硬件的访问和控制。
C++与底层开发不熟练的读者可以通过python接口很方便地调用该例程进行研究。
example路径下可以找到b2、b2w、g1、go2、h1_2等不同型号机器人的控制例程。
2 控制例程实现
参考宇树官方文档的教程,链接:unitree_sdk2_python/README zh.md at master · unitreerobotics/unitree_sdk2_python · GitHub
在Ubuntu22.04(Linux电脑,右键打开)终端(依次)输入,主要功能是克隆项目到本地。
(这里需要下载git并且联网)
cd ~ sudo apt install python3-pip git clone https://github.com/unitreerobotics/unitree_sdk2_python.git cd unitree_sdk2_python pip3 install -e .用网线链接电脑与机器人:宇树科技 文档中心
这里需要知道机器人网卡名称(终端输入 ifconfig 查看)与网址。
在克隆的python项目中找到h1_2的底层(low_level)控制例程,并运行,即在终端输入:
python3 ./example/h1_2/low_level/h1_2_low_level_example.py enp2s0最后的 enp2s0 改为自己查询到的网卡名称即可。
3利用正逆解操控机械臂
(1)控制例程源码解析
定义左右臂关节名称及序号:(可以对比官方文档给出的名称,对应起来)


LeftShoulderPitch = 13 LeftShoulderRoll = 14 LeftShoulderYaw = 15 LeftElbow = 16 LeftWristRoll = 17 LeftWristPitch = 18 LeftWristYaw = 19 RightShoulderPitch = 20 RightShoulderRoll = 21 RightShoulderYaw = 22 RightElbow = 23 RightWristRoll = 24 RightWristPitch = 25 RightWristYaw = 26关节复位至零状态:(注意此时机器人不是双手下垂而是大小臂垂直,小臂平行于地面)
此处利用的是平滑处理,将手臂从下垂变成至大小臂垂直。
def LowCmdWrite(self): self.time_ += self.control_dt_ self.low_cm