まえがき
X(Twitter)でArdupilotを用いたローバータイプの機体で草刈りをしている人を見かけたり、
個人的に、知り合いが家の傾きを気に病んでおり、床下の傾き調査をしたいという状況もあり...
手作りの小型のArduRoverを作成するってのは?
というわけで、作ってみることにしました!
(あと飛ばすタイプのドローンの練習になかなかいけなくてフラストレーション貯まってたのもある...)
機体作成
ベース車体
(余談)
Amazonで8年前に買ったもの...
当時はRaspberryPi3でラジコン作って遊んで、バラしてずっと家に放置されていたものを発掘(笑)
ESC
-
dm-esc001
- 電圧: 3.5-6v
- 連続電流: 1a、最大電流1.5a
- Pwm範囲: 1000〜2000us
ツインモーターギヤーボックスに採用されているモーターはFA-130モーター(ミニ四駆のデフォモーターとかでよくあるやつ。)
このモーターはこことここに諸元あり
- 動作電圧:1.5 -3.0v
- 定格負荷電流:0.66A
- 適正電圧・負荷時の消費電流 500mA
なので、ESCは与えた電圧で電気を送るので3vで送れば問題ないし、
ESCの電流未満のモーターの定格電流なのでESCはこれで燃えないと判断。
(余談)
4年前にこの機体を作る際、モーターも制御しなきゃいけないと思って買ったが、結局ブラシAIOを使ってしまったので未開封でずっと家に放置されていたものを発掘(笑)
電源回り
-
可変電圧レギュレータ
- ESCに電源を共有する。
- 出力電流:2A、ピーク3Aのため、モーターの消費電流500mAの2個分でも超えないため電力供給元として適すると判断
-
(Optional)APM電源モジュール
- FC・レギュレータへバッ直でも良いが、他にも機器を繋げたく、+-のパッドを大きくしたくて使用
- 電流電圧出力パッドがあるが、無理して使わなくてもバッテリーパッドから電流電圧をFCは出してくれる。。
ドローンパーツ
-
FC:Omnibus F4 Nano V6.1
- たまたま家に転がってたArdupilot対応FC。
- UARTの数が足りず、Wifiモジュールを付けるまでパッドが足りないと思うので、皆さんは他のFC使った方が良いと思う。。
-
GPS/Mag: GEPRC M10-DQ GPS
- CaveRTAさんのところでGet!!今回はこのパーツだけは最新式です!
組み立て
配線した写真です
-
APM電源モジュール
- → (●)FC
- → (▲)レギュレータ
-
(●)FC
- →レシーバー(UART)
- →GPS/Mag(UART+SCL/SDA)
- →MOTORパッドを(■)ESCの信号入力パッドへ
-
(▲)レギュレータ
- → (■)ESCの+-入力
-
(■)ESC+-出力
- → ツインモーターギヤーボックスの
FA-130モーター
- → ツインモーターギヤーボックスの
組み立ててなんやかんやした写真がこちらです
組みつけた板もタミヤ製のユニバーサルプレートです。
20*20mmのFCマウントホールを穴を使ってきれいに固定できました!
その他パーツは適当に結束バンドで止めました。
Ardupilotの設定
前記事でドローン作った時と大筋は変わりません。
むしろモーター少ないし飛ばないから異常が起きて墜落するとかないし安全です。
PC用設定ソフト
ファーム書き込み
- 初回は、
.hexファイルをbetaflightなどのファームフラッシャーで書き込む - アップデートは
.apjファイルをMission Plannerのファームウェアインストール Leg..のカスタムファームウェアの選択より選んで書き込む - ファームウェアはここで配布されている(ローバー用)。アップデート時に個別のFC向けのファームウェアファイルをダウンロードしてくる
- 今回はOmnibus F4 Nano V6.1を使っているので、対象ファームは
OmnibusNanoV6の名前の物を選んだ
(事前知識)フルパラメータで扱うSERIALの番号について
- 0:USB
- 1~:各UART
レシーバーの接続
- 予めBetaflightFCのパススルーなどでELRSを更新・プロポとレシーバーのバインドを済ませたレシーバーを使うと楽。
ELRSレシーバーをFCにつなげる
TX2/RX2にはんだ付けした場合、Mission Plannerでの設定手順は以下
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ ツリーを開く -
SERIAL2の項目のツリーを開き、SERIAL2_PROTOCOLの値を23にする(レシーバーを付けてFC・レシーバーの電源を入れた場合、自動で設定されているので確認のみで良い。違ったら23が設定されているポートは2などにし、レシーバーのシリアルポートに本値23を入れる) -
SERIAL2の項目のツリー内、SERIAL2_BAUDの値を115にする -
RCの項目のツリーを開き、RC_OPTIONSの値をクリック。ダイアログが立ち上がり、Use 420kbaud for ELRS protocolとSuppress CRSF mode/rate message for ELRS systemsを選択する(ほかのは選択を解除) -
RSSIの項目のツリーを開き、RSSI_TYPEの値を3にする
ラジオキャリブレーション(プロポからの信号範囲設定)
- プロポの電源を入れ、レシーバーの電源をいれバインドされている状態にする
- Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのメニューを選択 -
ラジオキャリブレーションのメニューを選択 -
ラジオキャリブレーションのボタンを押す - 表示メッセージに従い、スティックを動かしてキャリブレーションする
モードの選択スイッチの設定
モードの選択スイッチの割り当てを行う
| モード名 | 説明 |
|---|---|
| Hold | モーターを停止させるモード |
| Manual | スティック軸の値をそのまま出力して操縦するモード |
| Acro | 自己位置のフィードバックをしながら操縦するモード |
| Guided | 自律運転モード |
※レシーバーがバインドされ、Mission Planner上でプロポからの操作がFCで受け付けられていること
- プロポの電源を入れ、レシーバーの電源をいれバインドされている状態にする
- Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのメニューを選択 -
ラジオキャリブレーションのメニューを選択 - モード選択スイッチに割り当てたいチャンネル番号を、プロポのボタンを操作して特定する
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ ツリーを開く -
MODE_CHの値を割り当てたいチャンネル番号にする - Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのメニューを選択 -
フライトモードのメニューを選択 - フライトモード選択スイッチを操作し、操作に応じてプルダウンメニューのフォーカスが移ることを確認する
- 操作してフォーカスを移すことができるプルダウンより、割り当てたいフライトモードを選択する
Armスイッチ設定
アーム/ディスアームはスロットル0+ヨー右5秒/ヨー左2秒でも行えるが、プロポのスイッチに割り当てることもできる
- プロポの電源を入れ、レシーバーの電源をいれバインドされている状態にする
- Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのメニューを選択 -
ラジオキャリブレーションのメニューを選択 - アームスイッチに割り当てたいチャンネル番号を、プロポのボタンを操作して特定する
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ ツリーを開く -
RCn(nはアームスイッチに割り当てたいチャンネル番号)のツリーを開き、RCn_OPTIONの値を153にする
スロットル設定
ドローンと違い、スロットル中立が停止で、上げて前進・下げて後進である
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ リストを開く -
RC3_TRIMを1500にする
- RC3がスロットルである
- ドローン用プロポを(MODE2で)使っている人の場合は、プロポ側のモデル設定で、
- ピッチをRC3
- ロールをRC1
- になるようにした方が操作が直感的で使いやすいかも
(Option)バッテリーフェイルセーフ閾値の解除
電圧起因でのアーム不許可が嫌だったため、閾値を解除した。
やらなくてもよい
- Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのメニューを選択 -
フェイルセーフのメニューを選択 -
電池セクションの値を使用するバッテリーの電圧・容量に応じて調整する。 - モード設定は
Holdにすれば機体をその場に停止できる
(今回自分は、2S,3Sバッテリーを適当に使うので、上記設定はスキップした)
バッテリー電圧1次閾値を設定する
アーム許可閾値、2次閾値は解除する
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ リストを開く -
BAT_ARM_VOLTの値を0にする -
BAT_CAPACITYの値を使っているバッテリーの容量にする -
BAT_CRT_VOLTの値を0にする
必須ハードウェア-Accel Calibration
- Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのAccel Calibrationメニューを選択 -
Calibrate Accelボタンを押す - ちょっと待つとボタンの下にメッセージが出てくる
- メッセージに対応した姿勢にFCを傾け、
Calibrate Accelボタンの位置のボタンを再度押す - 次のメッセージが出てくるので、再度姿勢を変えてボタンを押す。最後まで繰り返す
- キャリブレーションが完了する
- 姿勢の説明図はここを参照
必須ハードウェア-Servo Output
- Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのServo Outputメニューを選択 - 右モーター・左モーターの設定を行う。
ThrottleLeft、ThrottleRightを設定する
公式ドキュメントではモーター1、3を対象にモーター左右を設定しているが、これはドローン用ESCレイアウトに従ったとき、後ろ2モーターを想定して言っている物と思われる
ドローン用ESCを気にせずモーターを1、2につなげた場合、Servo Outputの対象は当然1、2となる
ブラシモーターESC設定
今回はブラシモーターを使っているため、以下の設定を行う
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ ツリーを開く -
MOT_PWM_TYPEを0(Nomal)にする
オプションハードウェア-モーターテスト
- Mission Plannerの上部メニュー
初期設定をクリック -
オプションハードウェアのメニューを選択 -
モーターテストのメニューを選択 - スロットルを
30%くらいにする - モーターCDのテストボタンを押し、モーターの位置と回転方向を整える(今回は
Skid-Steer Rover形状のため、ABは使わない)
- 正解
| モーター | 位置 | 用途 |
|---|---|---|
| A | - | スロットル用(ステアリング+駆動輪の駆動輪の方) |
| B | ステアリング | ステアリング用(ステアリング+駆動輪のステアリングの方) |
| C | 左 | 2モーターの回転方向によるステアリングを行う機体の左モーターを前進させる |
| D | 右 | 2モーターの回転方向によるステアリングを行う機体の右モーターを前進させる |
- 位置が合わない場合
モーターのポートの割り当てを変更する(BetaFlightのリソースリマッピング相当)
必須ハードウェア-Servo Outputの1から4のFunction、ThrottleLeft、ThrottleRightのタブを選んで変更できる
- 回転方向が合わない場合
必須ハードウェア-Servo Outputの1から4のFunction、ThrottleLeft、ThrottleRightのReverseチェックボックスのon/offで回転方向を変更できる
デッドゾーンと回転方向
- Mission Plannerの上部メニュー
初期設定をクリック -
オプションハードウェアのメニューを選択 -
モーターテストのメニューを選択 - スロットルを正方向に増やし、何%でモーターが始動するか?何%でギリギリモーターが動かないかを調べる。動かない%をメモする
- スロットルを負方向に増やし、何%でモーターが始動するか?何%でギリギリモーターが動かないかを調べる。動かない%をメモする
スロットルデッドバンドから最低値を設定する
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ ツリーを開く -
MOT_THR_MINの値を動かない%に合わせるように上げる
スロットル開放で、機体がまっすぐ進むように調整する
調べた%にズレがある場合、左右をトリムする
- Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのメニューを選択 -
Servo Outputのメニューを選択 - 各モーターの
Trimの値をずらして調整する
必須ハードウェア-コンパス
コンパスのキャリブレーションを行う
機体を手で持って回転させるため、ノートパソコンなどでやるとよい
- Mission Plannerの上部メニュー
初期設定をクリック -
必須ハードウェアのメニューを選択 -
コンパスのメニューを選択 - コンパスモジュールがリストに出現していることを確認
- Onbord Mag Calibrationメニュー、
FitnessをRelaxedに -
Startボタンを押下、ダイアログを閉じ、Mag1のゲージを貯める - ゲージのため方はAccel Calibrationの6姿勢それぞれで機体を縦を軸に360度回転させる(DJI機のキャリブレーションをイメージする)
- (機体を組み立ててから行う必要がある。FCの加速度計とコンパスの方向を関連付けてキャリブレーションをしているため。)
その他パラメータ
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ ツリーを開く
-
MOT_SLEWRATE:モーター出力変化率の最大値。好みで増やす -
ARMING_CHECK:SET BITMASKでアーム時のチェック。Baro/Compass/INS/Parameter/Battery Levelがよいみたい(値:310)- が、自動航行より操縦重視であれば、やっぱりアームされないのが怖いので全OFFでいいかも(値:0)
走行!
- 機体の電源を入れ、平地に置く
- アームスイッチON
- スロットルを入力すると前後進
- ロールを入力すると左折・右折
- スロットル中立 & ロール入力でその場で回頭する
動いている様子の動画👇
プロポからの信号調整
スティック操作と逆に機体が動く場合
- Mission Plannerの上部メニュー
設定/調整をクリック -
フルパラメータ ツリーを開く
1.RCn(nはスティック操作のチャンネル)の項目のツリーを開き、RCn_REVERSEDの値を1にする
参考
- 配線概要(公式ドキュメント)
-
ArdupilotのRoverで作成可能な車両形態(公式ドキュメント)
- 今回作成したのは
Skid-Steer Rover
- 今回作成したのは
- ブラシモーターに関して(公式ドキュメント)
- モーター設定(公式ドキュメント)
- 基礎的なこと(DAYSCAPE様記事)
- 設定の画面例。イメージしやすかった(スプレッドナレッジ様動画)
-
FCのMOTORパッドはPMWポートである
- よって、ブラシレスESC・ブラシESCどちらもつなげればモーターを動かせる
- 参考になるかも①
- 参考になるかも②






