初めに
Go2 R&Dがついに日本上陸しました。
SDKもGo1の時から大幅アップデートしています。
本記事では、Go2 SDKのexampleの概略についてご案内します。
環境
環境は、次のようなものを想定しています。
- 機種: Go2 R&D(Edu), R&D+(Edu+)(AIR/PROではないもの)
- 実行コンピュータ:ubuntu20
※本記事は23/12/28時点でのものです。SDKは予期せぬタイミングでアップデートされることがございます。
https://github.com/unitreerobotics/unitree_sdk2/
1.環境設定
Go2の背中のOrinもしくは、LANケーブルで接続した外部PCで環境設定します。
具体的な設定方法については下記の記事をご覧ください:
- Docking StationでのSDK or ROS2を使う(作成予定)
- 外部PCでのSDK or ROS2を使う(作成予定)
2.SDKを使ってみる
2-1. SDKのフォルダ構成
SDKのフォルダ構成としては、exampleフォルダ内にサンプルコードが含まれており、それぞれ以下のような対応関係になります。
2-2. それぞれのexampleの概要
example名 | Robotが動くか | High or Low | 備考 | 参考リンク |
---|---|---|---|---|
test_publisher | 動かない | – | DDSトピックの送信サンプル | DDS_services |
test_subscriber | 動かない | – | DDSトピックの受信サンプル | DDS_services |
high_follow_sin | 動く | High Level | Path追従 | sports_services |
sportmode_test | 動く | High Level | Path追従(他の動きの実装もあり) | High_motion_control |
low_level | 動く | Low Level | Low Levelの例 | Basic_services |
wireless | 動く | – | JoystickコントロールをJoystickを使わずに行う(DDSトピックrt/wirelesscontrollerの配信) | Get_remote_control_status |
advanced_gamepad | 動かない | – | Joystickコントローラーの数値の読み取り(DDSトピックrt/wirelesscontrollerの受信) | Get_remote_control_status |
state_machine_example | 動かない | – | $ ./state_machine_example –param ../example/state_machine/params/ で使用可能。RobotのSTATESを、joystickに応じて変更する。その他Robotの状態の読み取り等 | Basic_services |
test_jsonize | 動かない | – | Jsonの使い方サンプル | |
robot_state_client_example | 動く | High Level | ロボットの状態の取得 | RobotStateClient |
sport_client_example | 動く | High Level | 速度指定でのシンプルなHigh Level制御。関節ロック状態だと動かないため、joystick操作したら動くような状態になっていることを確認してから行う。前方方向に0.5m/sで進み続ける。ctrl+cで止める | DDS_communication sports_services |
video_client_example | 動かない | High Level | 内部ヘッドカメラ画像の取得/保存 | Multimedia_Services |
vui_client_example | 動かない | High Level | 内部ヘッドライトへの指令 | VuiClient Light_control |
2-3. SDKの概説
sdkが一新され、Go1に比べて機能が充実しています。
特にGo1まででは実装されなかった、SDKを用いた頭部LEDの指令やカメラ画像の取得、path追従が可能になっています。またexampleにはありませんが、lidarの情報取得も行えるようになりました。(LiDAR_service)
Go1と同じようなイメージで使いたい場合は、sport_client_exampleがそれに当たります。IMUの情報などRobotの状態の受信については、Go1の時にはあったHighStateというものはなくなりSportModeState(rt/sportmodestate)もしくはLowState(rt/lowstate)から取得可能です。
特にインクルードファイルgo2/sport/sport_client.hppや、公式ドキュメントsports_servicesを参考にしてください。
おわりに
Go2のSDKのexampleを一通り見てきました。
この記事が少しでも役に立てたのなら幸いです。