Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Emmett6401/unitree_sdk2_python

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

unitree_sdk2_python

Python interface for unitree sdk2

Installation

Dependencies

  • Python >= 3.8
  • cyclonedds == 0.10.2
  • numpy
  • opencv-python

Install unitree_sdk2_python

pip install unitree_sdk2py

Installing from source

Execute the following commands in the terminal:

cd ~
sudo apt install python3-pip
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip3 install -e .

위에서 pip3 install -e . 는 다음과 같은 의미를 갖는다 -e 또는 --editable 옵션 – “개발 모드(Editable Mode)”로 설치하라는 의미이다. – 일반 설치는 소스 코드를 복사해 가상환경의 site-packages에 넣지만, editable 설치는 소스 디렉터리를 가리키는 링크만 생성한다. – 즉, 소스 파일을 수정하면 바로 변경 사항이 반영되므로 개발·디버깅이 편리하다.

. – 현재 디렉터리를 가리킨다. – 이 위치에 setup.py 또는 pyproject.toml 같은 패키지 메타데이터가 있어야 한다. – pip는 이 파일을 읽어 패키지 이름, 버전, 의존성 정보를 확인해 설치를 진행한다.

FAQ

1. Error when pip3 install -e .:
Could not locate cyclonedds. Try to set CYCLONEDDS_HOME or CMAKE_PREFIX_PATH

This error mentions that the cyclonedds path could not be found. First compile and install cyclonedds:

cd ~
git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x 
cd cyclonedds && mkdir build install && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=../install
cmake --build . --target install

Enter the unitree_sdk2_python directory, set CYCLONEDDS_HOME to the path of the cyclonedds you just compiled, and then install unitree_sdk2_python.

cd ~/unitree_sdk2_python
export CYCLONEDDS_HOME="~/cyclonedds/install"
pip3 install -e .

For details, see: https://pypi.org/project/cyclonedds/#installing-with-pre-built-binaries

Usage

The Python sdk2 interface maintains consistency with the unitree_sdk2 interface, achieving robot status acquisition and control through request-response or topic subscription/publishing. Example programs are located in the /example directory. Before running the examples, configure the robot's network connection as per the instructions in the document at https://support.unitree.com/home/en/developer/Quick_start.

DDS Communication

In the terminal, execute:

python3 ./example/helloworld/publisher.py

Open a new terminal and execute:

python3 ./example/helloworld/subscriber.py

You will see the data output in the terminal. The data structure transmitted between publisher.py and subscriber.py is defined in user_data.py, and users can define the required data structure as needed.

High-Level Status and Control

The high-level interface maintains consistency with unitree_sdk2 in terms of data structure and control methods. For detailed information, refer to https://support.unitree.com/home/en/developer/sports_services.

High-Level Status

Execute the following command in the terminal:

python3 ./example/high_level/read_highstate.py enp2s0

Replace enp2s0 with the name of the network interface to which the robot is connected,.

High-Level Control

Execute the following command in the terminal:

python3 ./example/high_level/sportmode_test.py enp2s0

Replace enp2s0 with the name of the network interface to which the robot is connected. This example program provides several test methods, and you can choose the required tests as follows:

test.StandUpDown() # Stand up and lie down
# test.VelocityMove() # Velocity control
# test.BalanceAttitude() # Attitude control
# test.TrajectoryFollow() # Trajectory tracking
# test.SpecialMotions() # Special motions

Low-Level Status and Control

The low-level interface maintains consistency with unitree_sdk2 in terms of data structure and control methods. For detailed information, refer to https://support.unitree.com/home/en/developer/Basic_services.

Low-Level Status

Execute the following command in the terminal:

python3 ./example/low_level/lowlevel_control.py enp2s0

Replace enp2s0 with the name of the network interface to which the robot is connected. The program will output the state of the right front leg hip joint, IMU, and battery voltage.

Low-Level Motor Control

First, use the app to turn off the high-level motion service (sport_mode) to prevent conflicting instructions. Execute the following command in the terminal:

python3 ./example/low_level/lowlevel_control.py enp2s0

Replace enp2s0 with the name of the network interface to which the robot is connected. The left hind leg hip joint will maintain a 0-degree position (for safety, set kp=10, kd=1), and the left hind leg calf joint will continuously output 1Nm of torque.

Wireless Controller Status

Execute the following command in the terminal:

python3 ./example/wireless_controller/wireless_controller.py enp2s0

Replace enp2s0 with the name of the network interface to which the robot is connected. The terminal will output the status of each key. For the definition and data structure of the remote control keys, refer to https://support.unitree.com/home/en/developer/Get_remote_control_status.

Front Camera

Use OpenCV to obtain the front camera (ensure to run on a system with a graphical interface, and press ESC to exit the program):

python3 ./example/front_camera/camera_opencv.py enp2s0

Replace enp2s0 with the name of the network interface to which the robot is connected.

Obstacle Avoidance Switch

python3 ./example/obstacles_avoid_switch/obstacles_avoid_switch.py enp2s0

Replace enp2s0 with the name of the network interface to which the robot is connected. The robot will cycle obstacle avoidance on and off. For details on the obstacle avoidance service, see https://support.unitree.com/home/en/developer/ObstaclesAvoidClient

Light and volume control

python3 ./example/vui_client/vui_client_example.py enp2s0

Replace enp2s0 with the name of the network interface to which the robot is connected.T he robot will cycle the volume and light brightness. The interface is detailed at https://support.unitree.com/home/en/developer/VuiClient

About

Python interface for unitree sdk2개로봇과 휴머노이드 로봇의 개발을 위해서

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%