【Unitree Go1】運動系SDKから電源を切る方法【unitree_legged_sdk】

初めに


unitree_legged_sdkを用いて、Go1のシャットダウンをする方法をご案内します。

 

環境


環境は、次のようなものを想定しています。

  • 機種: R&D(Edu), R&D+(Edu+)(Proではないもの)
  • unitree_legged_sdk: v3.5.1以上(本記事ではv3.8.6を使用)

 

1.運動系SDKの修正


まず、unitree_legged_sdkのexample_walk.cppを修正して、シャットダウンを行うプログラムを作成します。

ダウンロードしたunitree_legged_sdkフォルダから、example_walk.cppをコピーし、example_walk_edit.cppという名前で保存します。
※ 本記事ではunitree_legged_sdkのv3.8.6を使用しましたが、v3.5.1やv3.8.0でも同様の手順で実行できます。

次に、example_walk.cppの運動を記述しているif文の部分を削除します:

 

その後、シャットダウンさせるプログラムを記述します:

if (motiontime > 1000 && motiontime < 3000)
{
  cmd.mode = 5;
}
if (motiontime > 3000 && motiontime < 5000)
{
  cmd.mode = 7;
}
if(motiontime > 5000){
  cmd.bms.off = 0xA5;
}


※ シャットダウンする場合、モーターオフの状態にしてから行う必要があります。そのため、まず伏せさせた後、モーターオフにして、最後に電源を切るという構成にしています。

最後に、CMakeLists.txtを修正します:

 

これで、シャットダウンプログラムの作成が完了しました。
次は、実際にプログラムを実行してみましょう。

 

2.unitree_legged_sdkのコンパイル&実行


本記事ではnano(14)で行いますが、192.168.123.xxxのどこでも実行可能です。
作成したunitree_legged_sdkをnano(14)の適当な場所に置き、コンパイルします:

$ cd unitree_legged_sdk-go1
$ mkdir build
$ cd build
$ cmake ..
$ make

そして実行します:

$ ./example_walk_edit


Go1が伏せた後、電源が切れれば、成功です。

 

3.実行したプログラムの解説


運動系SDKでは、Go1を制御するためにHighCmdというデータセットを送信します。
このHighCmdには、シャットダウンを行うために使用するBmsCmdというデータセットが含まれています:

 

おわりに

unitree_legged_sdkを用いたGo1のシャットダウン方法を見てきました。
この記事が少しでも役に立てたのなら幸いです。

コメントを残す

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