Excelでロビを動かしてみた その2
2024年8月13日


 前回はUSB接続されたロビに対してExcelのマクロでREMOTE.LOGにデータを直接書き込んでロビを動かしてみました。
 今回はExcelのマクロでロビのサーボを動かしてみます。
 ロビのUSB接続については前回の記事を参照してください。

 リモート接続でロビのサーボを動かすにはリモート接続プログラムをSTARTUP.BINに組み込む必要があります。  リモート接続プログラムはのロビ設定ファイルエディタ2で提供されています。



 まず「読込み」ボタンで標準のSTARTUP.BINを読込みます。
 「プログラム変更」ボタンでSTARTUP.BINにUSB接続対応にしてリモート接続プログラムを追加します。



 「リモート対応」のチェックを付けます。
 「Bluetooth」のチェックを外します。
 「リモート接続」のチェックを付けます。
 「OK」ボタンを押しますのチェックを付けます。



 このダイアログが表示されるので「はい」と「OK」を答えてください。
 これでボタンで先程読込んだSTARTUP.BINにUSB接続対応にしてリモート接続プログラムを追加されました。



 リモート接続プログラムはADDONフォルダーのSERVO.LOGというファイルのデータでサーボを動かします。
 目と口のLEDもこのファイルのデータで制御します。



 1バイト目はサーボを動かす時の速度(1秒=60)を指定します。
 上記の例では0x1e(10進で30)なので0.5秒で動かします。

 2バイト目はサーボを動かす時のトルク(パーセント)を指定します。
 上記の例では0x50(10進で80)なので最大トルクの80%で動かします。

 これに続くのはサーボの位置(角度)で各サーボに対して2バイトで指定します。
 ロビのプログラムでサーボを動かす場合は原点に対する角度を指定しますがここではサーボの絶対位置で指定します。

 ロビのサーボはID2〜ID21の20個なので40バイトで表します。
   サーボの位置は角度を1度に対して10で指定します。
 上記の例では下2桁は0x19(10進で25)上2桁は0x00なので2.5度の位置に動かします。
 マイナス値の場合、ID6(0x0a,0x0bバイト)は下2桁は0xecで上2桁は0xffなので0xecff(10進で-20)となり-2.0度となります。

   64バイト目(0x40)からLEDのデータを表し目のLEDはRGBの6バイトで表します。
 上記の例では0xff(10進で255)で左目LEDの色のR値となります。
 70バイト目(0x46)は右目LEDの色を表し上記の例では左目と同じデータです。

 76バイト目(0x4c)は口のLEDのデータを表し口のLEDは1色なのでR値(輝度)を2バイトで表します。
 上記の例では0x00なので消灯を表します。

   次のデータ(0x42)は0xc0(10進で192)、その次のデータ(0x44)なのでLEDの色はRGB(255,192,0)となります。

 0x00(10進で192)64バイト目からLEDのデータを表し目のLEDはRGBの6バイトで表します。





 リモート操作を行うExcelシートです。
 USB接続されたロビのSDカードドライブのドライブID(半角アルファベット大文字)を指定します。(赤丸)



 はじめてこのExcelシートを開くとセキュリティ警告が表示されるのでコンテンツの有効化をクリックしてください。

 「リモート操作開始」ボタンをクリックするとRemoteStartというマクロ関数が呼ばれてロビにリモート操作開始命令が送信されます。
 リモート操作開始命令を受信するとロビはリモート接続プログラムを開始して「OK」と言います。

 「リモート操作終了」ボタンをクリックするとRemoteEndというマクロ関数が呼ばれてリモートデータをクリアしてリモート接続プログラムを終了させます。

 「リモート操作送信」ボタンをクリックするとRemoteSendというマクロ関数が呼ばれてExcelシートのデータをリモートデータに書き込んでロビを動かします。
 目のLEDの色はそれぞれのセルの色を設定するとその色の制御データが設定されます。



 ツールバーの塗りつぶしツールで任意の色に設定できます。
 口のLEDの輝度は%(0〜100)で指定します。0を指定すると消灯、100を指定すると最大輝度で点灯します。
 LEDの場合も予め指定しておいて「リモート操作送信」ボタンでロビにデータが送信されます。

 このExcelシートでは上半身(含む腰)のサーボを動かす事ができます。
 リモート接続プログラムは下半身のサーボも動かせますが転倒を防ぐため下半身のサーボは動かせません。
 下半身のサーボデータは直立姿勢の原点データを送っています。
 ロビ2の場合は充電椅子姿勢や座り姿勢でも下半身のデータを送っても動きませんがロビ1の場合は必ず直立姿勢で動かしてください。(立ち上がろうとして転倒します)



 サーボを動かすのは0〜100の数値で指定します。(赤枠)
 50を指定すると原点位置となり50以上を指定するとサーボ項目に書かれている方向に動きます。
 送信するサーボデータはサーボに対する実際の角度のでExcelシートに書かれている原点値を読取り加算しています。
 Excelシートに書かれている可動範囲下限値と可動範囲上限値を読取りその範囲以上に動ないようになっています。
 「リモート操作送信」ボタンで実際に送信されるデータが右に表示されロビにデータが送信されます。

 Excelシートは下記のリンクからダウンロードできます。
  SendRemote.zip



 実際にExcelでロビを動かした動画です。

   

 目次に戻る