Skip to content

BrainCoTech/unitree-g1-brainco-hand

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

unitree-g1-brainco-hand

English Version | 中文版

强脑灵巧手Revo2适配宇树G1(Edu标准版23自由度)教程及简单动作示例。

代码库说明

最新版本

更新 2025.11.13 : 更新宇树G1进阶版(29自由度)

更新 2025.09.03 : 修复了做第一个动作时立即deactivate手臂异常运动的问题

历史版本

v1.0.0 - 仅支持 G1-23DOF 可在 Releases 页面 中下载。

brainco_ws

G1手臂IK计算基于宇树官方示例Unitree/xr_teleoperate。双臂双手控制基于ROS2。

  • Main control smach_action.py
  • State machine transition client keyboard_call.py
  • G1自由度在 brainco_ws\src\control_py\config\smach_config.yaml 里修改

ros2_stark_ws

本例中使用的灵巧手SDK与原版SDK区别: 强脑灵巧手与宇树G1通过双485串口通信,即单ROS节点中左右手分别通过/dev/ttyUSB0/dev/ttyUSB1串口同时传输信息。

灵巧手适配教程

视频演示(待添加)

机器人启动

  1. 宇树G1开机,具体可参照宇树文档中心|操作指南。接电时,灵巧手手背指示灯亮起,手指自动复位。
  2. 等待(约1分钟)宇树G1进入零力矩模式,具体表现为随意活动关节无阻力。
  3. 使用遥控器,按照说明按下对应按钮,使机器人依次进入阻尼模式锁定站立模式。(注意:手臂开发不进入运动模式)

远程连接

参考宇树文档中心|快速开发

  1. 首次连接使用网线连接G1和计算机,将计算机以太网IP设置为与宇树G1同网段 192.168.123.XXX,如:
IP          192.168.123.222
Subnet      255.255.255.0
Gateway     192.168.1.1
DNS         192.168.1.1
  1. 打开VSCode,安装拓展Remote SSH,点击New Remote,输入

输入密码(默认123)。连接成功后打开文件夹/home/unitree/访问所需文件。

  1. 打开新的终端,输入1(即选择ROS环境为Foxy),按下回车。如需重新选择,可以输入source ~/.bashrc

  2. 配置WIFI:宇树文档中心|常见问题 → Jetson Orin Nx WIFI 配置方法 → STA模式 → nmcli配置WIFI方式

如果网络<SSID>或密码包含特殊字符、中文或空格,需使用双引号,如

nmcli device wifi connect "我的WiFi" password "mypass@123!"

如果报错Not authorized则加sudo

  1. 固定远程IP地址:
# 查看 wlan0 网络详细信息
nmcli device show wlan0

# 确认选择的IP是否被占用
nmap -sn 192.168.13.60
# 显示`Host seems down`则未被占用

# 如固定IP为 192.168.13.60
sudo nmcli connection modify <SSID> ipv4.method manual \
    ipv4.addresses 192.168.13.60/23 \
    ipv4.gateway 192.168.13.1 \
    ipv4.dns "192.168.13.1 8.8.8.8"

# 断开网络后重新连接
sudo nmcli connection down <SSID> && sudo nmcli connection up <SSID>

安装环境依赖

  1. 安装Miniconda。进入Miniconda官网,选择系统:Linux,选择系统架构ARM64,按照官方提供的命令安装。
  2. 创建conda环境,环境名为g1brainco,使用python3.8
conda create -n g1brainco python=3.8
conda activate g1brainco
  1. 在新建的conda环境下安装依赖
# 用于手臂运动控制
conda install pinocchio -c conda-forge
pip install meshcat
pip install transitions
# 用于conda环境下编译ROS2
pip install rospkg
pip install -U colcon-common-extensions
# 其他依赖
pip install matplotlib
pip install empy==3.3.2
pip install lark-parser

安装宇树ROS

  1. 参考宇树文档中心|ROS2通信例程,安装并编译unitree_ros2

  2. 打开~/unitree_ros2/setup.sh,修改"enp3s0""eth0"

export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces>
                            <NetworkInterface name="eth0" priority="default" multicast="default" />
                        </Interfaces></General></Domain></CycloneDDS>'

安装强脑灵巧手SDK

  1. 下载本仓库到G1
  • 方法1:
cd ~
git clone https://github.com/BrainCoTech/unitree-g1-brainco-hand.git
  • 方法2:
    下载到本地后上传
scp -r unitree-g1-brainco-hand [email protected]:/home/unitree/
  1. 设置可执行权限
cd ~/unitree-g1-brainco-hand/brainco_ws 
chmod +x ./launch/launch_trans.sh
chmod +x ./launch/launch_robot.sh

下载宇树G1模型

g1-description

打开brainco_ws\src\control_py\control_py\action_pkg\robot_control.py, 修改arm_urdf_path路径。

配置灵巧手

打开ros2_stark_ws/src/ros2_stark_controller/config/params_v2_double.yaml,根据灵巧手配置修改参数,通常使用默认参数。

  • port_l, port_r: 左右手串口,分别对应USB-485板的485_A, 485_B信号端口
  • baudrate: 波特率
  • slave_id_l, slave_id_r: 左手默认0x7e右手默认0x7f

编译

# 激活 conda 环境
conda activate g1brainco
# 编译 brainco_ws
cd ~/unitree-g1-brainco-hand/brainco_ws 
python -m colcon build    
# 编译 ros2_stark_ws
cd ~/unitree-g1-brainco-hand/ros2_stark_ws
python -m colcon build          

测试运行

同时开启两个终端

终端1: 启动主控制节点和灵巧手节点

conda activate g1brainco                    # 激活conda环境
cd ~/unitree-g1-brainco-hand/brainco_ws     # 进入工作空间      
./launch/launch_robot.sh                    # 运行 launch 文件

检查输出信息:

  • 左右手 PortBaudrateslave_id 都正确

  • 串口已打开 "serial port opened"

  • 正在等待关节控制命令 "Waiting for joint cmd ..." 如果未出现上述信息,可能是config文件参数不正确

  • IK初始化结束 "IK initialization done."

  • 当显示 "Request 'configure' to start" 则可以发送状态转换请求

终端2: 启动状态转换 client 节点

conda activate g1brainco                    # 激活conda环境
cd ~/unitree-g1-brainco-hand/brainco_ws     # 进入工作空间      
./launch/launch_trans.sh                    # 运行 launch 文件

请求状态切换

终端2会提示当前状态、可使用的转换和对应的动作。输入字符(串) + 回车转换状态。进入active状态后,在字母后加lr单独控制左/右手,不加则默认双手。

statemachine

FAQ

FAQ 中文 or FAQ English version