当前位置: 首页 > news >正文

宇树 G1 部署(一)——综述

人形机器人相比于传统协作机器人底层算法完全不一样,主要包括了:VLA、多模态、遥操作、强化学习四大模块

宇树部分主要是后两者,VLA 他家是集成,且多模态他的相机及激光雷达也是集成

后面很多 VLA/RL 算法会在 G1/ur 上部署测试

🤖 宇树官网:宇树科技 | 人形机器人_四足机器人_机器狗

🐾 官方开源资料:官方开源 - 宇树科技

🌐 文档中心:宇树科技 文档中心

📄 此篇笔记主要参考:G1 SDK 开发指南

目录

1 G1 基本参数

1.1 机器人规格

1.2 关节自由度

1.3 电气接口

1.4 调试接口

***1.5 机载计算机

1.6 G1雷达与相机视场角

1.7 关节电机

2 基本操作

3 SDK

3.1 概述

3.2 开发样例

4 底层运动开发

4.1 底层运动参考例程

4.2 因时 DFX 灵巧手开发

5 软件服务接口

5.1 DDS通信接口

5.2 底层服务接口

5.3 高层运动服务接口


1 G1 基本参数

直接参考官方文档:宇树科技 文档中心

1.1 机器人规格

型号G1G1-EDU
高宽厚(站立)1320x450x200mm1320x450x200mm
高宽厚(折叠)690x450x300mm690x450x300mm
带电池重量约35kg约35kg
总自由度2323~43
单腿自由度66
腰部自由度11+(可加选2个腰部自由度)
单手臂自由度55
单手自由度/7(可加选力控3指灵巧手Dex3-1)+2(可加选2个手腕自由度)
关节输出轴承工业级交叉滚子轴承(高精度,高承载力)工业级交叉滚子轴承(高精度,高承载力)
关节电机低惯量高速内转子永磁同步电机
(更好的响应速度和散热)
低惯量高速内转子永磁同步电机
(更好的响应速度和散热)
膝关节最大扭矩[1]90N.m120N.m
手臂最大负载[2]约2Kg约3Kg
小腿+大腿长度0.6M0.6M
手臂臂展约0.45M约0.45M
超大关节运动空间腰关节:Z±155°
膝关节:0~165°
髋关节:P±154°、R-30~+170°、Y±158°
腰关节:Z±155°、X±45°、Y±30°
膝关节:0~165°
髋关节:P±154°、R-30~+170°、Y±158°
腕关节:P±92.5°、Y±92.5°
全关节中空内走线
关节编码器双编码器双编码器
散热系统局部风冷散热局部风冷散热
供电方式13串锂电池13串锂电池
基础算力8核高性能CPU8核高性能CPU
感知传感器深度相机+3D激光雷达深度相机+3D激光雷达
4麦克风阵列
5w扬声器
WiFi6、蓝牙5.2
高算力模组/NVIDIA Jetson Orin
智能电池(快拆)9000mAh9000mAh
充电器54V 5A54V 5A
手持式遥控器
续航时间约2h约2h
智能OTA升级
二次开发[3]/

1.2 关节自由度

G1 整机分为上半身和下半身,具备多个自由度:

  • 单手臂拥有 5 个自由度和 7 个自由度两个版本,包括肩身关节、上臂关节、手肘关节和腕关节(选配)
  • 单腿拥有 6 个自由度,包括胯关节、腿关节、髋关节、膝关节和踝关节
  • 腰部具备 1自由度和3自由度两个版本,即腰关节
  • 整机根据版本不同,可以分为 G1 基础版本 23 自由度,G1-EDU可选23~43 自由度,拥有多个关节电机自由度,使得机器人能够实现精确的运动和姿态控制
类型G1G1-EDU
总自由度2323~43
单腿自由度66
腰部自由度11+(可加选2个腰部自由度)
单手臂自由度55
单手自由度/7(可加选力控3指灵巧手Dex3-1)+ 2(可加选 2 个手腕自由度)
部件说明

1.3 电气接口

G1 的顶部配备了电气接口,这些接口用于连接各个机身关节电机、传感器外设、网口等

序号接口类型接口简称接口说明
1XT30UPB-FVBAT58V/5A 电池电源输出(此处直连电池电源)
2XT30UPB-F24V24V/5A电源输出
3XT30UPB-F12V12V/5A电源输出
4RJ451000 BASE-T千兆以太网
5RJ451000 BASE-T千兆以太网
6Type-CType-C支持USB3.0 host,5V/1.5A电源输出
7Type-CType-C支持USB3.0 host,5V/1.5A电源输出
8Type-CType-C支持USB3.0 host,5V/1.5A电源输出
9Type-CAlt Mode Type-C支持USB3.2 host,支持DP1.4
10I/OI/O OUT12V: 12V/3A电源输出
GPIO详见下表

1.4 调试接口

***1.5 机载计算机

G1-EDU 机载标配 1 块【运控计算单元】,并且标配一块【开发计算单元】

参数开发计算单元( PC2 )
型号Jetson Orin NX
CPUArm® Cortex®-A78AE
内核数8
线程数8
最大睿频频率2GHz
显存16G
内存16G
缓存2MB L2 + 4MB L3
存储2T
英特尔® 图像处理单元6.0
GPU搭载 32 个 Tensor Core 的 1024 核 NVIDIA Ampere 架构 GPU
显卡最大动态频率918MHz
高斯和神经加速器3.0
英特尔®深度学习提升
英特尔®Adaptix™ 技术
英特尔®超线程技术
指令集64bit
OpenGL4.6
OpenCL3.0
DirectX12.1
IP 地址192.168.123.164
  • 【运控计算单元】为 Unitree 运动控制程序专用,不对外开放。开发者仅可使用【开发计算单元】进行二次开发。初始用户名:unitree, 密码:123
  • 表中PC2【开发计算单元】,地址为192.168.123.164

1.6 G1雷达与相机视场角

G1头部搭载 LIVOX-MID360 激光雷达和 D435i 深度相机

​                  

MID360激光雷达FOV                              D435i深度相机FOV

MID360+D435i合并的FOV

1.7 关节电机

G1 关节采用了 Unitree 自研电机,电机的最大扭矩为 120N.m,采用了中空轴线的设计,电机还配备了双编码器

关节顺序名称与关节限位

关节序号关节名称限位(弧度)
0L_LEG_HIP_PITCH-2.5307~2.8798
1L_LEG_HIP_ROLL-0.5236~2.9671
2L_LEG_HIP_YAW-2.7576~2.7576
3L_LEG_KNEE-0.087267~2.8798
4L_LEG_ANKLE_PITCH-0.87267~0.5236
5L_LEG_ANKLE_ROLL-0.2618~0.2618
6R_LEG_HIP_PITCH-2.5307~2.8798
7R_LEG_HIP_ROLL-2.9671~0.5236
8R_LEG_HIP_YAW-2.7576~2.7576
9R_LEG_KNEE-0.087267~2.8798
10R_LEG_ANKLE_PITCH-0.87267~0.5236
11R_LEG_ANKLE_ROLL-0.2618~0.2618
12WAIST_YAW-2.618~2.618
13WAIST_ROLL-0.52~0.52
14WAIST_PITCH-0.52~0.52
15L_SHOULDER_PITCH-3.0892~2.6704
16L_SHOULDER_ROLL-1.5882~2.2515
17L_SHOULDER_YAW-2.618~2.618
18L_ELBOW-1.0472~2.0944
19L_WRIST_ROLL-1.972222054~1.972222054
20L_WRIST_PITCH-1.614429558~1.614429558
21L_WRIST_YAW-1.614429558~1.614429558
22R_SHOULDER_PITCH-3.0892~2.6704
23R_SHOULDER_ROLL-2.2515~1.5882
24R_SHOULDER_YAW-2.618~2.618
25R_ELBOW-1.0472~2.0944
26R_WRIST_ROLL-1.972222054~1.972222054
27R_WRIST_PITCH-1.614429558~1.614429558
28R_WRIST_YAW-1.614429558~1.614429558

坐标系,关节旋转轴与关节零点

当各个关节均为零度时,各坐标系如下图。红色为 x 轴,绿色为 y 轴,蓝色为 z 轴。

23 dof29dof

2 基本操作

G1 遥控器使用说明,请查阅:《G1遥控器使用手册》

模式切换

3 SDK

3.1 概述

unitree_sdk2 是宇树科技为新一代机器人开发的 SDK。SDK 将底层电机控制、高层运动控制等接口进行封装,并提供相关的函数接口

SDK 下载地址:https://github.com/unitreerobotics/unitree_sdk2

简化模型-STEP

机型

G1-EDU标准版

G1-EDU进阶版

G1-EDU旗舰版A

G1-EDU旗舰版B

G1-EDU旗舰版C

G1-EDU旗舰版D

配置

整机 23dof

整机 29dof

整机 29dof + 2 只Dex3-1力控3指灵巧手(不含触觉)

整机 29dof + 2 只Dex3-1力控3指灵巧手(含触觉)

整机 29dof + 2 只因时DFQ灵巧手

整机 29dof + 2 只因时FTP灵巧手

简化模型

G1-EDU 标准版

G1-EDU 进阶版

G1-EDU 旗舰版A

G1-EDU 旗舰版B

G1-EDU 旗舰版C

G1-EDU 旗舰版D

URDF

G1各版本 URDF 已经上传至宇树对外 GitHub 仓库:URDF:Github获取

3.2 开发样例

使用 unitree_sdk2 对 G1 进行快速开发应用

系统环境

推荐在 Ubuntu 系统下进行开发:

  • PC1 运行官方服务,不支持开发
  • PC2 可以访问开发

网络环境

将用户计算机与 G1 交换机接入同一网络。建议新用户使用网线与转接线将用户计算机接入 G1 交换机,并将与机器人通信的网卡设置在 192.168.123.X 网段下,推荐使用 192.168.123.99

安装与编译

安装 unitree_sdk2:进入 unitree_sdk2 目录,并执行以下命令

cd unitree_sdk2/
mkdir build
cd build
cmake ..
sudo make install

编译自带例子

编译步骤:进入 unitree_sdk2 目录,并按步骤执行以下命令

cd unitree_sdk2
mkdir build
cd build
cmake ..
make

若执行成功,生成的例程会在 unitree_sdk2/build 目录下

修改网络配置

1. 网线一端连接机器人,另一端连接电脑,并开启电脑的 USB Ethernet 后进行配置。机器人机载电脑的 IP 地地址为 192.168.123.161,故需将电脑 USB Ethernet 地址设置为与机器人同一网段,如在 Address 中输入 192.168.123.222

为了测试用户电脑与机器人内置电脑是否正常连接,可在终端中输入 ping 192.168.123.161 进行检测,出现下图类似内容即为连接成功

2. 查看 123 网段对应的网卡名字,通过 ifconfig 命令查看 123 网段的网卡名字,如下图所示:

图中 IP 为 192.168.123.222 对应的网卡名字为 enxf8e43b808e06

需要记住此名字,在运行例程时其将会作为必要参数

Notes:G1 的 IP 可能会不一样,具体查看按照上述步骤一样

例程运行

进入调试模式:按照《快速开始》 的操作流程,确保机器人进入调试模式

编译运行底层控制例程

Note:运行该例程会使  G1 多个关节运动。为了保护机器人,请在运行此例程之前将机器人悬挂起来

cd unitree_sdk2
cmake -Bbuild 
cmake --build build
./build/bin/g1_ankle_swing_example network_interface_name

例程解读参考底层运动参考例程

4 底层运动开发

4.1 底层运动参考例程

底层运动开发例程实现了将机器人从任意初始关节位置,复位至零位,然后用两种不同模式控制 G1 机器人踝关节摆动,并且以一定频率打印欧拉角数据

例程源代码位于 unitree_sdk2/example/g1/low_level/g1_ankle_swing_example.cpp,可从此处访问,运行方式详见 《快速开发》

G1 机器人踝关节控制模式

G1 踝关节采用并联机构,为用户提供了两种控制模式:

  • PR 模式:控制踝关节的 Pitch(P) 和 Roll(R) 电机 (默认模式,对应 URDF 模型)
  • AB 模式:直接控制踝关节的 A 和 B 电机 (需要用户自己计算并联机构运动学)

因为 G1 机器人踝关节并联机构的 PR 与 AB 关节运动存在两组约束关系,所以踝关节实际只有两个自由度。硬件实现上,AB 关节处于主动控制 (电机直接驱动),而 PR 关节处于从动状态。为实现PR 模式,采用间接调节 AB 关节从而实现对 PR 关节的控制

G1 机器人腰部 Pitch 和 Roll 关节同样采用了并联机构,也提供了 PR 模式和 AB 模式两种控制模式

代码解析

以下代码针对 G1 29dof 版本机型,其他版本机型的例程均在 unitree_sdk2 仓库

核心类型与功能介绍

类型名称描述
DataBuffer多线程数据缓存工具类
ImuStateIMU 相关结构体
MotorCommand电机指令相关结构体
MotorState电机状态相关结构体
ModeG1 踝关节控制模式
G1JointIndex所有关节按名称排序索引
G1Example核心控制逻辑类

4.2 因时 DFX 灵巧手开发

G1搭载了 Inspire Robotics(RH56DFTP) 仿人五指灵巧手,该灵巧手具有6个自由度和12个运动关节,可以模拟人手实现复杂动作

控制方式

因时机械手官方 SDK 通过串口进行通讯,G1 提供一个 USB 转串口模块,用户可以将该 USB 插在 G1 开发计算单元(PC2)上进行通讯控制灵巧手

此时端口通常左手为 /dev/ttyUSB1,右手为 /dev/ttyUSB2

  1. 使用因时官方 SDK 控制:可以根据因时灵巧手官方通讯协议自行编写程序控制灵巧手
  2. 使用宇树灵巧手SDK控制:G1通信建立在 DDS 框架之上。为便于使用 unitree_sdk2 进行控制灵巧手,宇树提供将串口收发的数据转为 DDS 消息的示例程序(点击下载)

宇树SDK接口说明

用户向 "rt/inspire/cmd" 话题发送 "unitree_go::msg::dds::MotorCmds_" 消息控制灵巧手

从 "rt/inspire/state" 话题接受 "unitree_go::msg::dds::MotorStates_" 消息获取灵巧手状态

IDL数据格式

采用数组格式的电机数据,内部包含双手12个电机数据。具体 MotorCmd_.idl 和 MotorState_.idl 的格式见 底层服务接口

Note:当前灵巧手只支持关节控制,即在 idl 格式中只有参数 q 有意义。其他保留

# namespace unitree_go::msg::dds_# unitree_go::msg::dds_::MotorCmds_
struct MotorCmds_ 
{sequence<unitree_go::msg::dds_::MotorCmd_> cmds;
};# unitree_go::msg::dds_::MotorStates_
struct MotorCmds_ 
{sequence<unitree_go::msg::dds_::MotorState> states;
};

5 软件服务接口

G1 的软件接口服务与宇树其他产品 Go2、B2、H1 基本一致,支持订阅/发布和请求/响应两种模式

  • 订阅/发布:接收方订阅某个消息,发送方根据订阅列表向接收方发送消息,主要用于中高频或持续的数据交互
  • 请求/响应:问答模式,通过请求实现数据获取或操作。用于低频或功能切换时的数据交互

其中官方提供的 unitree_sdk2 对于请求相应部分进行了优化封装,实现了函数式调用

详细服务接口请查看子文档

5.1 DDS通信接口

unitree_sdk2 是在DDS上做了一层封装,支持 DDS 组件的 Qos 配置,对应用开发提供简单的封装接口,并实现了基于 DDS Topic 的 RPC 机制,适用于在 G1 内部进程间以及 G1 外部与内部的进程间通过发布/订阅和请求/响应两种方式完成不同场景下的数据通信

DDS 简介

DDS(全称 Data Distribution Service 数据分发服务),是一个中间件,由OMG发布的分布式通信规范,采用发布/订阅模型,提供多种QoS服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求

5.2 底层服务接口

底层通信提供了用户端 PC(PC2/外部 PC)与机器人之间的数据交互功能。底层通信采用 DDS 协议:

  • 订阅话题 rt/lowstate(类型: unitree_hg::msg::dds_::LowState_) 获取 G1 当前状态
  • 发布话题 rt/lowcmd(类型: unitree_hg::msg::dds_::LowCmd_) 控制全身关节电机(不含灵巧手)、电池等设备
  • 若使用 Dex3-1 力控灵巧手,需发布话题 rt/dex3/(left or right)/cmd(类型: unitree_hg::msg::dds_::HandCmd_) 控制灵巧手,并从 rt/dex3/(left or right)/state(类型: unitree_hg::msg::dds_::HandState_) 话题接受灵巧手状态

接口说明

采用 DDS通信接口 里介绍的方法订阅或发布话题。话题信息存储在由 IDL 定义的结构体中,常用结构体有:

结构体名称说明
HandCmd_Dex3-1 控制
HandState_Dex3-1 状态
IMUState_G1 IMU 状态
LowCmd_G1 底层控制
LowState_G1 底层状态
MotorCmd_G1 电机控制
MotorState_G1 电机状态
PressSensorState_Dex3-1 触觉状态

5.3 高层运动服务接口

高层运动服务接口的主要功能为机器人整机控制和上肢控制。整机控制可以控制机器人的模式切换与移动,提供 RPC 接口;上肢控制可以在运行机器人内置移动控制器的同时,单独控制上肢电机完成操作任务,提供 DDS 接口

Note:高层运动服务依赖于内置运控,进入调试模式后内置运控完全退出,高层运动服务失效。

RPC接口

用户可以创建 unitree::robot::g1::LocoClient 对象,通过成员函数发送请求,内置的高层运动服务响应请求,执行操作

#include <unitree/robot/g1/loco/g1_loco_client.hpp>
#include <unitree/robot/g1/loco/g1_loco_api.hpp>unitree::robot::g1::LocoClient client;

DDS 接口

DDS 接口支持上肢控制,仅能在锁定站立、运控 1 与运控 2 中使用

用户可以根据《DDS 通信接口》与底层服务《底层服务接口》,向 rt/arm_sdk 话题发送 LowCmd 类型的消息。参照《关节电机顺序》,为上肢设置电机指令

http://www.dtcms.com/a/270921.html

相关文章:

  • 6N70-ASEMI开关电源核心元件6N70
  • Go语言教程-环境搭建
  • [Vroom] 位置与矩阵 | 路由集成 | 抽象,解耦与通信
  • VScode SSH远程连接Ubuntu(通过SSH密钥对的方式)
  • LLM的表征做减法的是什么,自然语言是一个矩阵,怎么进行减法的
  • 爬虫-正则表达式
  • 【HarmonyOS6】获取华为用户信息
  • 出圈or出局?AI汽车“急速驶来”,市场淘汰赛一触即发
  • leetcode 每日一题 3439. 重新安排会议得到最多空余时间 I
  • 二刷 黑马点评 部署
  • 大模型MoE模型技术详解
  • 专题一_双指针_查找总价格为目标值的两个商品
  • 小程序主体变更全攻略:流程、资料与异常处理方案
  • WPF学习笔记(27)科学计算器
  • 李宏毅NLP-9-语音转换
  • 无人机报警器频段模块设计与运行要点
  • 小米路由器3C刷OpenWrt,更换系统/变砖恢复 指南
  • 在 Spring Boot 中如何使用 Assert 进行断言校验
  • 安卓设备信息查看器 - 功能介绍
  • 【bug修复积累】关于包装类型和基本数据类型的使用
  • 在Ubuntu上安装配置 LLaMA-Factory
  • Go 延迟调用 defer 用法详解
  • vscode 防止linux索引爆红
  • SQL Server通过存储过程实现HTML页面生成
  • Python爬取闲鱼价格趋势并可视化分析
  • Using Spring for Apache Pulsar:Message Production
  • 基于svga+uniapp的微信小程序动画组件开发指南
  • pytorch的详细安装教程
  • 百度文心一言开源ERNIE-4.5深度测评报告:技术架构解读与性能对比
  • “AI 曼哈顿计划”:科技竞赛还是人类挑战?