【Unitree Go1】外部PC上から無線で unitree_ros_to_real を実行する:ハイレベル制御

1. はじめに

Go1をROSを用いて運動制御するために、Unitree社はunitree_ros_to_real パッケージを公開しています。

Go1の運動制御には二種類あり、ハイレベル制御はデフォルトの歩行パターンを利用するもので、ローレベル制御はそれを利用せず各モーターの角度や角速度、トルクを制御するものです。本稿では、Go1に無線接続をし、外部PC上からunitree_ros_to_real のハイレベル制御を実行する方法をご案内します。

※ Go1内部にはデフォルトでROSが含まれていますが、外部のROSのノードを内部のROSネットワークに接続するなどして内部・外部のROSをまたいで通信しようとすると、Go1の設計上では煩雑になります。

一方で、unitree_ros_to_real を外部PCで実行する場合では、内部のRaspberry PiにUDP通信することでGo1を動かしています。

Github unitree_ros_to_real: https://github.com/unitreerobotics/unitree_ros_to_real

 

2. 環境

以下の環境にて、この手順が有効であることを確認しています。

  • 機種: R&D(Edu), R&D+(Edu+)
  • 外部PC: Linux Ubuntu 20.04 (amd64)
  • ROS: Noetic
  • unitree_legged_sdk: v3.8.6

 

3. 手段

3.1 GO1への無線接続

外部PCをGo1からデフォルトで出ているUnitree_Go〇〇〇〇〇〇A」というWi-Fiに接続し、パスワードを入力します。

$ ping 192.168.12.1

で、無線接続できていることを確認します。

3.2 パッケージのダウンロード

適宜にワークペース(ここではcatkin_ws)とソースディレクトリを作り、unitree_ros_to_real と依存パッケージのunitree_legged_sdk をクローンします。

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone https://github.com/unitreerobotics/unitree_ros_to_real
$ git clone https://github.com/unitreerobotics/unitree_legged_sdk
3.3 宛先のIPアドレスの変更

接続したWi-FiでUDP通信を行いハイレベル制御をするためには、以下のようにros_udp.cpp 内の宛先のIPアドレスを192.168.12.1に変更します。

変更後、ビルドします。

$ cd ~/catkin_ws
$ catkin_make

最後に、ワークスペースを有効化します。

$ source devel/setup.bash 

 

3.4 実行

(1) はじめにローンチファイルを実行

$ roslaunch unitree_legged_real real.launch ctrl_level:=highlevel

または、キーボードで操作したい場合は、

$ roslaunch unitree_legged_real keyboard_control.launch

を実行する。サンプルでは、”w”/”s”/”a”/”d” で前後左右に動く、”j”/”l” で左右に曲がる、”q” で終了となっています。

(2) プログラムの実行

unitree_ros_to_real には、サンプルのプログラムが複数含まれています。ハイレベル制御については、

$ rosrun unitree_legged_real example_walk

動作の様子:

 

  • ロボットからフィードバックを受け取る
$ rosrun unitree_legged_real state_sub

 

関連記事

【Unitree Go1】外部PC上でunitree_legged_sdkを実行する方法
【Unitree Go1】外部PC上から無線で unitree_ros_to_real を実行する:ローレベル制御

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です