目次
Section 1
モーターとサーボの構成
今回はArdupilot Roverのステアリングサーボの調整とモーターテストを紹介したいと思います。
ステアリングサーボについては、最終的に走らせながら微調整を行う必要があると思いますが、ステアリングが動作する方向と範囲くらいは事前に設定しておいた方が良いと考え、このタイミングで一旦設定を行います。
今回のモーター回転方向確認については、次回ESCキャリブレーションを行う為の下準備という位置付けなのですが、今回の設定を完了する事で最低限走行可能な状態になるはずです。
Ardupilotの下記のドキュメントを参考に作業を進めていきます。
Motor and Servo Configuration
https://ardupilot.org/rover/docs/rover-motor-and-servo-configuration.html
Section 2
設定を進める上での注意点
これまではあまりRover全体を起動せずにPC-FC間の通信、給電で行える設定が多かったですが、今回は実際にサーボやモーターを動作させますので、Roverにバッテリーを接続し起動させます。
自分のローバーは各デバイスへの給電の都合上、電源を入れる順番に注意する必要があるようです。
PC-FC間をUSBで接続してからRoverをバッテリーで起動した場合、必ずコンパスエラーとなってしまいます。
ARMコマンドを受け付けませんし、それが直接の原因かわかりませんが、モーターテストもできません。
このコンパスエラーは、GPS・Compassセンサーが起動していない状態でArdupilotが先に起動し、GPS・Compassセンサーを認識できない事で発生しているようです。
後ほど紹介しますが、こういった場合にPre-arm Safety Checkの設定を変更して対応する方法もあります。
今回はRoverにバッテリーを接続し、ESCのスイッチで起動させて、その後FCとPCをUSBケーブルで接続する、という順番に変更する事でこのエラーが発生しない事が分かりましたので、起動する順番を工夫して対応しました。
Pixhawkなどのケースに入ったFCの多くは、USBからの給電だけでGPS・Compassセンサーも起動できるものが多い上に、FCユニット内にもCompassセンサーが入っているので、あまりこういったトラブルが起きにくいです。
また、基板型のFCでも最近のUSBタイプCで接続するモデルだと、USB接続のみで多くのデバイスに給電できるものもあります。
今回使用しているFCであるMATEKSYS F405-STDは少し古いもので、USBもmicroBと呼ばれるタイプです。
microBはUSB TypeCと比較すると給電能力がかなり低く、こういった症状が起きやすいと言えます。
もしmicroBを搭載したFCを使用する場合はデバイスの給電状況にも気を配る必要があります。
古い基板は不便さもあり、そういった意味では上級者向けと言えるかもしれませんが、以前マルチコプターで使用していて最近使用しなくなった基板をRoverや別のモデルに再利用する、という事もArdupilotの楽しみ方の1つかと思います。
特に古いパーツを使う場合は自分の使用しているパーツの癖を理解し、工夫して設定を進めてみましょう。
Section 3
ステアリングサーボの調整
サーボやモーターを実際に動かす調整を行う上で、車輪を浮かせる台を用意すると作業が楽です。
CC02のシャーシは前後のプロペラシャフトがシャーシ中央部で連結されている形状で、モーターを回すとプロペラシャフトが回りますので、台がプロペラシャフトに干渉しないよう工夫すると良いかと思います。
モーターとサーボの構成を確認するには、まずプロポを立ち上げ、次にRoverにバッテリーを接続し、ESCのスイッチで起動させて、その後FCとPCをUSBケーブルで接続します。
さらに①初期設定②Servo Output画面に移動します。
このServo Output画面で何番の出力にどの機能を割り当てるか設定できます。
まずサーボとモーターがしっかり設定されていないと始まらないので、今回の場合③で示したようにRC1にGroundSteering、RC3にThrottleが設定されていることを確認しました。
先程ご紹介したArdupilotのMotor and Servo Configurationドキュメントで、いくつかのステアリングタイプとESCについて補足説明があります。
使用しているパーツにより選択する項目が違うようですので、ご自身の構成に合わせて設定してください。
今回リアルカーモードを利用するので、スロットル操作だけで前進・後退という形ではないのですが、通常のRCカーの場合はスロットル操作だけで前進・後退どちらも対応するものと思いますので、動作を確認して適切な設定を行いましょう。
前回Ardupilot Roverの製作【10】モード設定で設定したHoldモードだとステアリングサーボは動作しませんので、プロポのモード切り替えスイッチを使用してManualモードに変更し、ステアリングを左右に切ってみます。
ここまでの設定や配線に問題がなければ、恐らく前輪がギュッギュッと動作してくれるものと思います。
ここでいくつか問題が確認できました。
まず、RC1のスティックがセンターの状態で前輪タイヤがやや左側に傾いており、このままだとステアリングを切らなくても曲がってきてしまいますので、修正が必要です。
さらにステアリングを切っていくと、どうやら左右が逆のようです。
①で示したところにReverceスイッチがありますので、ここでリバースをかけて修正します。
リバースがかかっているので、上記画面の状態でプロポのスティックとしては左側に最大限動かしている状態です。
写真では分かりづらいですが、左に最大限切った状態では、ステアリングが切れすぎて多少シャーシが歪んでいるようです。
右に切った場合は特に問題ないようでした。
記①Minと③Maxの数値を変更してサーボの可動範囲を調整し、②のTrimの数値でセンターを調整します。
サーボの可動範囲はシャーシが歪まない程度に、左右同じくらい切ることができると良いと思います。
センターはなるべくタイヤが真っ直ぐ向くようにしましょう。
RCカーの場合、こういったものは走らせながらプロポで調整するのが普通だと思うのですが、今回の最終目標は自動走行ですので、Mission Planner側で正しく調整が取れている必要があります。
ステアリングの微調整は実際に走らせながら追い込んだ方が良いので、ここでは大体見た目で良さそうな数値に設定しておけば良いと思います。
今回の組み合わせでは特に干渉するようなことはありませんでしたが、大きなタイヤをつけているとボディに干渉する可能性もありますので、念の為ボディもつけた状態で最終確認を行なっておくと安心です。
①で示した2番にはRCIN6を設定し、この信号でデフブレーキ強度をコントロールします。
プロポとしては側面にあるスライダーを割り当てているので、無段階で強度を変更できます。
②で示した4番にはRCIN7を割り当て、リアルカーモードの前進・後退切り替えを設定しました。
こちらはプロポとしては2ポジションスイッチに設定してあるのですが、通常状態で後退の設定になっていましたので、③でリバースをかけています。
デフブレーキ強度の設定とリアルカーモードは今回使用しているHOBBYWING QUICRUN1080 BRUSHED G2というESCの追加機能ですので、通常はついていない場合が多いと思いますが、この画面の設定で様々な機器や機能を動作させる事ができそうです。
Section 4
モーター回転方向の確認
次にモーターの回転方向を確認します。
①初期設定をクリックし、左側に羅列された項目の中から②オプションハードウェアをクリックします。
すると、さらに下に多くの項目が表示されるので、③のモーターテストをクリックするとモーターテスト画面が表示されます。
標準的なローバーの場合、④のTest motor Aがスロットルに当たるとのことです。
ローバー本体にエラーがなく、ARMできる状態であれば、恐らくTest motor Aボタンをクリックするとモーターが回転するものと思います。
もし特にエラーメッセージも出ないままモーターが回らない場合は、入力するスロットル信号が低すぎる可能性があります。
ESCにはデッドゾーンがあり、これはESCやモーターとの組み合わせによって異なりますが、もし回らない場合はTest motor Aボタンの上にあるスロットル%をデフォルトの5から少しあげて試してみると解決できる場合があります。
先程リアルカーモードの前進・後退の切り替えに対してリバースをかけましたが、これはモーターテストで実際に動作させて逆だということを確認してから変更しました。
モーターテストでモーターを動作させられるようになると、恐らくもうARMも可能なのではないかと思います。
自分はここで一旦ARMしてしまい、デフブレーキ強度とリアルカーモードの動作を確認しました。
上記画像はフライト・データの表示画面ですが、Servo Output画面のままでもARM操作は可能です。
ARM方法は、Ardupilot のRoverの作法にしたがって、Holdモードに設定した状態でRC1(基本的にはステアリング)を右に最大入力してしばらく保持します。
台の上で実際に走らせるような操作ができるという事は、当然既に走る事ができるという事です。
このタイミングで基本的な走行に必要なモーターとサーボの動作さえしっかり確認できれば、走らせながらの調整も可能となります。
モーターがしっかり回りますので、台が不安定であったり、機体が大きい場合など必要に応じて台を固定する、タイヤを外すなど、安全対策を行なってください。
ステアリングの調整とモーターの回転方向の確認を行ったので、さらに追加でオプション機能のリアルカーモードとデフブレーキ強度についても確認しておきます。
上記画像で赤い区画で示したようにRCIN7が1500以上の時、簡単に言うと自分の運用上では「OFF」の時に、青色の矢印で示したRCIN3のThrottleを1500以上に上げていくと、前進します。
逆に、2ポジションスイッチが「ON」の状態(RCIN7が1500未満)でThrottleを1500以上にあげていくと、後退します。
この部分の動作は一般的なESCと異なりますので、多くの場合参考にならないと思いますが、Servo Output画面で入力信号をモニターしながら実際にアクチュエーターの動作を確認する事で、調整や希望の動作になっていない場合の対応方法が理解しやすいものと思います。
次にデフブレーキ強度ですが、上記画像赤で示したRCIN6が高い値の時に走行状態からスロットルを1500に戻すと、タイヤがギュっと止まる事が確認できました。
RCIN6はプロポ側面のスライダースイッチに割り当ててあり、無段階に調整できる仕様にしています。
中間的なゾーンでの差はタイヤの目視では分かりづらいものの、RCIN6が最小の場合、スロットルを1500に戻した後も少しタイヤの回転が残る感じが確認できましたので、しっかりデフブレーキの強度調整も反映されているようです。
Section 5
ARMできない場合の対処
個人的にはマルチコプターであれ、ローバーであれ、ARMが出来ない、もしくはモーターテストでモーターが回らないという症状で、設定作業が先に進めなくなってしまう事が、Ardupilotを設定する上で大きな躓きポイントなのかなと思っています。
当然、配線や給電の問題、もしくはパーツの故障や初期不良をまず疑ってしまうものと思いますし、特に初めて組み立てている場合は各デバイスの接続や設定に自信が持てない状態だと思います。
Ardupilotのドキュメントには各設定のガイドが綺麗にまとまっていますが、原因がわからない状況下で、対応するドキュメントを発見する事は想像以上に難しいものです。
膨大な量の確認すべき項目が頭に浮かんで、ほとんど作り直すのと同じか、それ以上の作業量を想像して愕然とし、場合によっては諦めてしまう方もいるかも知れません。
ただ、モーターが回らないからといって闇雲に全て確認する必要は、ほとんどの場合ありません。
今回はどこに問題があるのかを考える上で、個人的に有効だと思っているポイントをご紹介します。
冒頭で記載した通り、今回の自分のローバーでは起動方法の順番によってエラーが出てしまう事がわかったのですが、この原因は簡単に気づく事が出来るものでした。
原因がわかれば対処方法も検討がつくものですし、すぐに分からなくても調べる事は可能となります。
当初、モーターテストで①のTest motor Aをクリックし、点線で示した「Command was denied by autopilot」メッセージが表示されて、モーターテストが拒否されてしまう状態だという事が分かりました。
その後、ARMをかけてもARMは出来ませんでした。
ローバーは初めてだったので、アームコマンドが間違っているのではないかと確認したり、スイッチにアーム機能を割り当てて試したりしてみたのですが、結果は同じで、やはり何か問題があるようです。
ここで参考になるのが、Mission Plannerの①フライト・データ画面です。
②で示したように「PreArm:Compass not healthy」というエラーが出ていますので、とにかくコンパスに何か問題があるらしい事はわかると思います。
機体側の電源を入れないとコンパスが起動しない事は知っていたので、自分は経験的に電源を入れる順番の問題かなと思い、そのまま解決できました。
さらに、③で示したメッセージタブをクリックすると表示されるメッセージも非常に参考になります。
FCが起動してからの動作が時系列で表示され、エラーも記載されていますので、何がどの順番で起きているのかを確認する事ができます。
問題が特定できたらインターネットなどで調査し、対応方法を検討しましょう。
今回出ていた「PreArm:Compass not healthy」というエラーですが、「PreArm:xx」エラーは特に設定時に障害となるケースが多いので、補足で説明します。
これはモーターなどアクチュエータを起動させる前に、ファームウェアが機体の健全性をチェックし、問題がある場合はアクチュエータを動作させないという役割を持つ「Pre-Arm Safety Checks」という機能によって、ARM操作が拒否された場合に表示されるエラーです。
Pre-Arm Safety Checksに関しましては、下記のArdupilotドキュメントで詳しく紹介されています。
Pre-Arm Safety Checks
https://ardupilot.org/copter/docs/common-prearm-safety-checks.html
他のファームウェアでも多かれ少なかれ似た機能が用意されている場合が多いですが、ArdupilotのPre-Arm Safety Checksはデフォルトで非常に厳しく設定されており、設定作業中は多少調整しないと途中で進めなくなってしまう場合が多いのではないかと思います。
Pre-Arm Safety Checksの設定はフルパラメーターから行うのが比較的分かりやすいものと思います。
①設定/調整、②フルパラメーターリストを表示して、③のように検索ボックスに「ARM」
と入力するとARMING_CHECKという項目が表示されますので、上記画面青くなっている値のマスをクリックすると④の区画で示した設定画面が表示されます。
デフォルトではAllにチェックが入っていますので、Allのチェックを外して必要な項目にチェックをつけ、パラメーター書き込みを行う事で反映されます。
ARMING_CHECKは、特に飛行する機体の場合は安全の為に1つ1つ内容を確認して設定を行い、運用前には再度確認を行う必要がある重要なものです。
しかし、今回のような小型のローバーの場合デフォルトのままだと非GPS環境では走らせる事ができないなど、この機能によって制限が生まれてしまう事も考えられます。
また、そもそもそのセンサーをつけるつもりがない、もしくはパーツが対応していない、などの特殊な場合も、構成としてはあり得るものと思います。
特にGPS lockなどは屋内で設定作業を行なっている時に障害となる場合が多いので、ARMに失敗して、エラー表示に「PreArm:xx」と表示されていたら、ARMING_CHECKが自分の希望通りの内容になっているかを確認しましょう。
もしARMING_CHECKが希望通りに設定されている場合でも、ARMING_CHECKをクリアできない原因は何か考える事で、問題を具体的に特定できるものと思います。
自分の場合、アクチュエータをテストする段階からARMING_CHECKの設定をチェックし、必要に応じて度々変更するという形で進めています。
少し補足が長くなってしまいましたが、今回は実際に動作する為の重要な設定であり、エラーで躓きやすい部分かなと思いましたので、補足説明も加えました。
今回ご紹介したように、Mission Planner上でエラーとなっている場合、多くの人が経験するエラーについてはインターネットにも情報がでているケースが多いので、調べれば解決出来るものも多いと思います。
では逆に、Mission Planner上では動いている事になっているのに、実際には動かない場合。
この場合は配線やハンダ作業のミス、パーツの故障などが原因である可能性もありますので、インターネット上で情報を集めるよりも先に、まずは目の前の機体をチェックするのが良いかと思います。
初めてArdupilotを利用する場合でも比較的安心して取り組めるのは、やはりメーカーやArdupilotドキュメントでデバイス個々の接続や設定方法がしっかり紹介されているデバイスを選んで構成する方法です。
特にHolybroは現行のPixhawkシリーズの製造メーカーであり、X500、S500に代表される組み立てキットなどの製品も出しているので、それらのキットに関するドキュメントが参考に出来ますし、ほとんどがコネクタ接続できるので、ハンダや配線ミスも起こりづらく、特に初めての場合は都合が良いと思います。
また、Pixhawkシリーズは拡張性が高いので、Ardupilot初心者から上級者まで利用可能という点も魅力です。
ただ、古い基板にArdupilotを入れて基板が再び活躍する姿を見るのも、なかなか楽しいものですし、Pixhawkシリーズのユニット型FCを使用するよりも圧倒的に軽量・コンパクト・低コストで構成できるという事もありますので、どちらにも良さがあると言えます。
ArdupilotはPX4と比較して対応しているFCの種類が多い点も大きな特徴だと思いますので、さまざまな開発のアプローチであったり、ホビーとしての楽しみ方があって良いものと思います。
今回はモーターとサーボの構成をご紹介しました。
次回はESCキャリブレーションの作業を紹介したいと思います。