Skip to content

Latest commit

 

History

History
123 lines (108 loc) · 3.74 KB

File metadata and controls

123 lines (108 loc) · 3.74 KB

DFX Inspire Hand service

Unitree LOGO

1. 📦 Introduction

Unitree Robot RH56DFX Inspire Hand Controller.

The user sends unitree_go::msg::dds::MotorCmds_ messages to the rt/inspire/cmd topic to control the dexterous hand, and receives unitree_go::msg::dds::MotorStates_ messages from the rt/inspire/state topic to obtain its status.

graph LR
A(user) --rt/inspire/cmd--> B(H1 or G1)
B --rt/inspire/state--> A
Loading

The IDL data is an array containing joint-level values for all 12 motors of both hands. Currently the dexterous hand only supports joint control, i.e. only the parameter q makes sense in the idl format. The others are reserved.

Id 0 1 2 3 4 5 6 7 8 9 10 11
Joint Right Hand Left Hand
pinky ring middle index thumb-bend thumb-rotation pinky ring middle index thumb-bend thumb-rotation

2. 🚀 Launch

unitree h1

sudo apt install libboost-all-dev libspdlog-dev
# Build project
mkdir build & cd build
cmake ..
make -j6
# Terminal 1. Run h1 inspire hand service
sudo ./inspire_h1 -s /dev/ttyUSB0
# Terminal 2. Run example
./hand_example

unitree g1

sudo apt install libboost-all-dev libspdlog-dev
# Build project
mkdir build & cd build
cmake ..
make -j6
# Terminal 1. Run g1 inspire hand service
# The serial port name is hard-coded; if it doesn’t match your setup, please edit it directly in the source.
sudo ./inspire_g1
# Terminal 2. Run example
./hand_example

FAQ

  1. Error when make -j6
    ...
    /usr/bin/ld: inspire_ctrl.cpp:(.text._Z14serialize_intoIN10unitree_go3msg4dds_12MotorStates_EN3org7eclipse10cyclonedds4core3cdr14xcdr_v2_streamEEbPvmRKT_b[_Z14serialize_intoIN10unitree_go3msg4dds_12MotorStates_EN3org7eclipse10cyclonedds4core3cdr14xcdr_v2_streamEEbPvmRKT_b]+0x2be): undefined reference to `org::eclipse::cyclonedds::core::cdr::xcdr_v2_stream::finish_member(org::eclipse::cyclonedds::core::cdr::entity_properties&, bool)'
    /usr/bin/ld: inspire_ctrl.cpp:(.text._Z14serialize_intoIN10unitree_go3msg4dds_12MotorStates_EN3org7eclipse10cyclonedds4core3cdr14xcdr_v2_streamEEbPvmRKT_b[_Z14serialize_intoIN10unitree_go3msg4dds_12MotorStates_EN3org7eclipse10cyclonedds4core3cdr14xcdr_v2_streamEEbPvmRKT_b]+0x2d9): undefined reference to `org::eclipse::cyclonedds::core::cdr::xcdr_v2_stream::finish_struct(org::eclipse::cyclonedds::core::cdr::entity_properties&)'
    
    please compile and install unitree_sdk2:
    cd ~
    git clone https://github.com/unitreerobotics/unitree_sdk2
    cd unitree_sdk2
    mkdir build & cd build
    cmake ..
    sudo make install
  2. Error when run sudo ./inspire_h1 -s /dev/ttyUSB0 or sudo ./inspire_g1
    --- Unitree Robotics --- 
    Inspire Hand Controller  
    Open serial port /dev/ttyUSB* failed
    For Unitree h1, use the -s parameter to change the serial port name.
    For Unitree g1, modify the serial port name directly in the source code.