初めに
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のシャットダウン方法を見てきました。
この記事が少しでも役に立てたのなら幸いです。