Unitree SDK & ROS パッケージ 3分でインストールメモ

# 犬ロボ Unitree Go1 の SDK & ROS パッケージ

現在、インストールはサクッといけます。
実機をスクリプトで動かしましょう♪

(2022/11/30 本日時点の v3.8.4 aliengo 用 ver ではなく v3.8.0 Go1 対応 ver を使うこ必要があることについてコメント頂きましたので、本文も一部修正)
https://qiita.com/devemin/items/1708176248a1928f3b88#comment-c7eb8f273e1798cc3b6a


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478524/a4d50efa-e4c3-ca0d-3acb-9f6eccb54564.png)

# 環境
Ubuntu 20.04 (64bit), PC
ROS Noetic インストール済
（ラズパイや Jetson でもいけるはず）

Unitree Go1
（スクリプトで動かせるのは EDU モデル以上のはず、私は pro モデルですけどね・・・　文末参照）

# インストールする SDK バージョン

- unitree_legged_sdk　  v3.8.0
    - https://github.com/unitreerobotics/unitree_legged_sdk
- unitree_ros_to_real　 v3.8.0
    - https://github.com/unitreerobotics/unitree_ros_to_real
- unitree_ros           v??? (2022/11/7 時点)
    - https://github.com/unitreerobotics/unitree_ros

# インストールコマンド

```diff_shell
sudo apt install libboost-all-dev cmake g++

cd ~/catkin_ws/src
git clone -b v3.8.0 https://github.com/unitreerobotics/unitree_legged_sdk.git
#最近更新された v3.8.4 はaliengo ロボット用のため、v3.8.0 指定
git clone https://github.com/unitreerobotics/unitree_ros_to_real.git

#lcm のインストール (2022/11/30 コメント頂きました)
sudo apt install liblcm-dev

cd ./unitree_legged_sdk/
mkdir build
cd build
cmake ../
make -j4

cd ~/catkin_ws/
source devel/setup.bash 
```

unitree_ros_to_real/unitree_legged_real/CMakeLists.txt の修正が必要
#これは環境により？必要ではなかった方も(2022/11/30 コメント頂きました)

```
gedit ./src/unitree_ros_to_real/unitree_legged_real/CMakeLists.txt &
```

21, 30 行目を修正 (legged_sdk の場所に相対パス合わせる)

```diff_shell
# 21行目
- link_directories(${CMAKE_SOURCE_DIR}/unitree_legged_sdk/lib/cpp/${ARCH})
+ link_directories(${CMAKE_SOURCE_DIR}/../../unitree_legged_sdk/lib/cpp/${ARCH})

# 30行目
-     ${CMAKE_SOURCE_DIR}/unitree_legged_sdk/include
+     ${CMAKE_SOURCE_DIR}/../../unitree_legged_sdk/include
```

引き続きビルド

```diff_shell
cd ~/catkin_ws/
catkin build

sudo apt-get install ros-noetic-controller-interface ros-noetic-gazebo-ros-control ros-noetic-joint-state-controller ros-noetic-effort-controllers ros-noetic-joint-trajectory-controller

cd src
git clone https://github.com/unitreerobotics/unitree_ros.git
cd ..
catkin build

source devel/setup.bash 
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478524/a762503f-f303-fddc-33d5-3e4220e4b9e7.png)

（参考）ディレクトリ配置
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478524/eb82c716-7645-dac8-02fa-7f20c34d899c.png)


以上！


# 実行例

```
roslaunch laikago_description laikago_rviz.launch
```

https://twitter.com/devemin/status/1589605120324820992

<blockquote class="twitter-tweet"><p lang="ca" dir="ltr">rosrun unitree_controller unitree_move_kinetic <a href="https://t.co/u0bJUVUwXq">pic.twitter.com/u0bJUVUwXq</a></p>&mdash; でべ (@devemin) <a href="https://twitter.com/devemin/status/1589607018343854080?ref_src=twsrc%5Etfw">November 7, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

```
roslaunch unitree_gazebo normal.launch rname:=go1 wname:=earth
```

https://twitter.com/devemin/status/1589605687117877248



```
rosrun unitree_controller unitree_servo
```
https://twitter.com/devemin/status/1589606557016535040

```
rosrun unitree_controller unitree_external_force
```

https://twitter.com/devemin/status/1589606775065833472


```
rosrun unitree_controller unitree_move_kinetic
```

https://twitter.com/devemin/status/1589607018343854080



# メモ

- unitree_legged_sdk/example_py/　が Python で動かすサンプル
- unitree_legged_sdk を Go1 pro モデルで動かすにはこちらの issue 参照
    - https://github.com/unitreerobotics/unitree_legged_sdk/issues/24#issuecomment-1088250949
    - (C++, Python とも  <b>cmd.levelFlag = 0 の追記で、Go1 pro モデルでもHigh-level SDK は動かせちゃったという裏技的なもの</b> (low-level は現状動かず)　なお、今後購入される場合の機体のバージョンアップでそこがどうなるかは不明なのでご注意)
- unitree_ros_to_real/unitree_legged_real/src/exe/twist_sub.cpp　がおそらく cmd_vel で動かすスクリプト
- 


# 関連記事

https://qiita.com/devemin/items/c31e106a6e3661db1b1e

https://qiita.com/devemin/items/baaa0d260a35e991ac39

https://qiita.com/devemin/items/de1a1390da8795a71a4f