この前最近話題のドンキーカーをみて久しぶりにBeagleBoneを引っ張り出してきてArduPilotをインストールしてみたんだけど、WiFiのテレメトリでは距離が心もとないというか一旦切れると再接続がなかなかされなくてちょっと…カメラも付けたかったんだけどな…
テレメトリで悩むのは結局技適対応しているのがXbeeとTWELITEぐらいしかなさそうなところ。ESP32にDroneBridgeというのも気になるけど。Ardupilot用に技適対応テレメトリモジュールも出ているようだけど中身Xbeeとかなんじゃないかなとか思ったり(スペック的に)。Xbeeだとプログラマブルモジュールは安く手に入りそうなんだけど、テレメトリ用途だとめっちゃ扱いにくそうだし、ノーマルタイプはちょっとお高い…
ということでTWELITE(トワイライト)を試してみることに。最近TWELITE UARTっていうUART接続に特化したボードが出たっぽい。2mWのBLUEだと地上だと飛びにくいということで10mWのTWELITE RED UARTにしてみた。
TWELITE UARTは元々App_uartが入っていてそのままUART通信用に使えるので、インタラクティブモードで設定してみた。デフォルトではボーレートが115200になっていた。TWELITE UARTはBPSピンが出ていないのでボーレート変更時は注意が必要かも。せめてディップスイッチをつけてほしかったなぁ…
ArduPilotのMAVLink v2ではパケット長がTWELITEが一回に遅れる最大の80を大きく超えたりすることもある可変長なのでデフォルト設定のTWELITEでは少しきつそうだった。単純にボーレートをあわせただけだと通信が結構遅いのでいろいろ試してみた。
ArduPilotのMAVLink v2ではパケット長がTWELITEが一回に遅れる最大の80を大きく超えたりすることもある可変長なのでデフォルト設定のTWELITEでは少しきつそうだった。単純にボーレートをあわせただけだと通信が結構遅いのでいろいろ試してみた。
いろいろ試した結果
・ボーレート 115200bps → 57600bps
・無入力タイムアウト 100ms → 10ms ・オプションビット 00000100 → 00014000
・無入力タイムアウト 100ms → 10ms ・オプションビット 00000100 → 00014000
にすると結構いい感じ。
オプションビットはデフォルトでは区切り文字が設定されているんだけどそれを無効にして、ボーレートをBPSピンが関係ないようにしたのと(TWILITE UARTではこの方法以外でボーレート変更できない)、重複チェッカーの条件を緩くした(これは100ms以下で通信するときに設定してくださいって書いてあった)
無入力タイムアウトと重複チェッカーの条件緩和がかなり効いてそう。MissionPlannerから接続するときのパラメータ取得が純正状態より格段に早い。
設定方法はTWELITE STAGEをダウンロードしてきて実行して適当なUSB→TTL変換アダプタにTWELITEを繋いで実行する。
インタラクティブモードに入ったら"b"を押して"57600"と入力してエンター
"m"を押して"D"と入力してエンター
"k"を押して"0xfd,0,10"と入力してエンター
"o"を押して"00014000"と入力してエンター
あとは"S"を入力してセーブできたら完成。
Baudrateを57600に変更してしまったので次回インタラクティブモードに入るときは
TWELITE STAGEの設定→インタラクティブモードで
Bのボーレートを"57600"に変更しないと接続できなくなるので注意。なので2枚一気に書き換えてしまったほうが良い。
あとは片方をArduPilotに接続するだけ。今回はBeagleBoneを使用したのでUT1に接続して使用した。Serial1はデフォルトでMAVLink2の57600bpsだったのでそのまま繋がるはず。
この設定でパラメータ取得が格段に早くなった。これならWPもTWELITE経由で普通に送受信できる。あとはRCバギーに乗せてArduRoverを設定するだけかな。
0 件のコメント:
コメントを投稿