© 2015 Drone Japan All Rights Reserved.

ArduPilot開発のための実機を作る(Navio2前編)

February 26, 2017

ArduPilotに新しい機能を実装してシミュレーターで動作検証しているけど、そろそろ実機で検証したい!というニーズもあると思います。

 

この記事では、Navio2を用いて実機を作る手順を https://docs.emlid.com/navio2/ (英語)に基づいて組み立てるときの気を付けるべきポイントを説明していきます。

 

【注意事項】

  • パーツリンクは参考のために張っているので動作保証は一切しません。リンク先はHobbyKingです。

  • 一部、やり方を変えている部分がありますのでご注意ください。

  • 筆者は小型のドローンが好きです。

 

【更新履歴】

  • 2018.05.01 ファームウェアダウンロードURL修正

  • 2017.05.08 モーター回転向き表記の修正

  • 2017.03.12 apt-get upgradeの実行禁止

  • 2017.03.03 誤記修正

  • 2017.02.26 ラズベリーパイへのリモートログインについて

 

 

■ 前提条件と作業の流れ

この記事では、Navio2を使用してクアッドコプターの組み立てを前提としています。

  1. ハードウェアセットアップ

  2. ラズベリーパイセットアップ

  3. ArduPilotセットアップ

  4. MissionPlannerに接続して設定・キャリブレーション(この記事に含まず、後編でまとめます)

 

 

■ 作業開始

作業するにあたって、半田ごて、半田線、半田吸い取り線、ニッパー、ストリッパー、ピンセットなどの工具、ラズベリーパイの設定にUSB - MicroUSBケーブル、HDMIケーブル(オス - オス)、USBキーボード、HDMI対応ディスプレイがある前提としています。ぜひ、ご準備ください。

 

 

■ ハードウェアセットアップ

まずはこれから作っていくドローンのイメージを掴んでもらうために完成したドローンの写真をみてください。小さいのが好きなので結果的に270㎜(対角モーター距離)、総重量590gになりました。余分な線を取ったり、余計なパーツを取ればもう少し軽くすることができると思います。

 

左から順に「前向き」「後ろ向き」「重さ」の写真です。

 

 

■ 配線イメージ

配線イメージは下の図の通りです。シンプルな配線です。バッテリーから入ってきた電気をフライトコントローラーとESCに配っています。今回は私が作ったドローンにはテレメトリー送信機(黒いアンテナがついてるもの)は付いていません。

 

 

 

■ モーターとESCを接続、モーター回転方向

ESCの黒い線が3本出ている方と、モーターから出ている3本の線を接続します。購入したパーツの説明書をみて結線してください。

 

よくあるのは、モーターの回転方向を間違えてしまうことです。例えば、下図だとモーターとESCが向かう線をそれぞれ結線していますが、実際には回転方向を変えるにはどれか2本クロスさせる必要があります。クアッドコプターの場合は、前向きと後ろ向きにそれぞれ内側に渦巻くような回転をさせる必要があります。

 

 

結線は上図のようになります。モーター配置で回転方向が決定しますので、正しい回転方向になるように結線してあげてください。

 

もしも、回転方向を間違えてしまった場合は、焦らず繋がっている3本の線のうち2本を半田で外してから入れ替えて再結線してください。上図を参考にしてください。ただし、これもお使いのESCとモーターの仕様をよく確認してくださいね。

 

【注意事項】

BEC付きESCを2個以上接続してはいけません。公式ページより”Only one ESC power wire (central) should be connected to Navio2 servo rail, otherwise BECs built in ESCs will heat each other.”と書いてあるためです。

私も実際この注意事項を見逃したおかげでうまくいきませんでした。なので私は、写真のようにVCC線(赤色の線)をカットして対応しました。4つのESCすべての赤い線をカットしてあります。

 

 

 

■ 配電盤にESC、バッテリプラグを付ける

上の配線イメージではバッテリーから4つのESCが並列で繋がっていますが、実際には配電盤(PDB)と呼ばれるボードを使った方がいいでしょう。配電盤は入力電圧範囲、出力電圧、接続可能なESCの個数、電流などを確認して、使用するバッテリー、モーターに合っているものを選んでください。

 

ESCから出ている赤色と黒色の線をPDBの + と - のパットに半田付けしてください。赤を +黒を - に。PDBを固定する向きとモーターの配置を考慮して一番近いパットにつけてください。この時、フレームにあとでどのように固定するかを考えて余った線をカットしておくとコンパクト(軽量化にも貢献)になります。

 

 

Navio2についてくるバッテリープラグはXT60です。PDBのバッテリーを接続する部分に受け側(オス)のXT60プラグを線でつけてください。上記完成イメージの後ろ向きを見ると奥のPDB(写真では見えないですが)からプラグが出ていて、Navio2付属のプラグに接続しています。

 

これであとESCから出ている残っている線はNavio2本体に接続するものだけになっているはずです。

 

 

■ フライトコントローラーの組み立て

Navio2は以下のラズベリーパイで動作します。組み立てもすごく簡単です。以下の図を参考にして組み立ててください。

  • Raspberry Pi 3 Model B

  • Raspberry Pi 2 Model B

 

【注意事項】

GPIOピンに挿すときすごく硬いのでピンを折らないように気を付けてください。

 

 

■ 受信機接続

Navio2の受信機接続ピンが1つだけなので、SBUS対応の受信機が必要になります。私が使っているのはFUTABAのT10Jの送受信機をつかっています。受信機を接続する線は3本(赤色:+、黒色:-、オレンジ色など:信号)一体になっています。下図のようにNavio2を前向きにして、一番左側のピンに上から信号、 + 、 - の順番になるように差し込みます。

 

 

 

■ GPS接続

付属のGPSを下の図のように接続します。実際にフレームに固定する時は可能な限り上の方に配置しましょう。

 

 

 

■ ESCの接続

ArduPilotのモーター配置についてはこちらのページを参照してください。X型クアッドコプターは「〆の字」を書くように配置します。なので、最後にESCから出ている線を、Navio2を前向きにして、右上を1、左下を2、左上を3、右下を4のピンに挿してください。受信機接続と同じ要領で上側が信号線になるようにしてください。

 

 

 

■ 電源プラグの接続

下の写真のように付属の電源プラグの6本細い線がでている端子をNavio2のPower端子に接続してください。XT60メス側をPDBから出ているオス側に接続しておきます。残っているオス端子はバッテリーに接続する用です。

 

 

【注意事項】

端子の向きに気を付けてください。結構きつくくっつくので取る時に断線などに気を付けながら慎重に取ってください。

 

 

■ フレーム組み立て

すべての動作が確認できてから、最後にフレームにパーツを固定していってください。余っている線をくるくる巻いたり、束ねたりなどしてきれいに組み立てましょう。今回フレームはRoboCat(270㎜)を使いました。ラズベリーパイがぴったり収まっちゃうところが気に入りました。

 

RoboCatの組み立てについてはYouTube動画を見ていただいた方が分かりやすいと思います。

 

フレームについて好みがあったり、指定があるので組み立てについては割愛します。

 

 

■ 気圧センサーをUVから守る

写真のようにスポンジなどで気圧センサーを覆ってあげてください。

 

 

 

■ 振動軽減のために

今回私は使用していませんが、フライトコントローラダウンピングプラットフォームなる振動軽減装置があります。これを使ってフライトコントローラー(ラズベリーパイ + Navio2)を固定しておくと余計な振動が伝わるのを抑えてくれると思います。私は今回は手持ちのハネナイトシートを使ったのですが若干振動が見られるのでプラットフォームを買おうかと考えています。

ラズベリーパイセットアップ


 

■ SDカードにOSイメージを書き込む

提供されるOSにGUI(グラフィカル機能)がないがないためコマンド操作が必要になります。

  • OSのイメージはバージョンアップの可能性があるので直接公式ページからダウンロード

  • リンク先のページ上部にある"Emlid Raspbian Image"の部分をクリック(※ 解凍しない)

  • SD書き込みツール"Etcher"(Mac / Win / Linux対応)をダウンロードしてインストール

  • SDカードをPCに挿す

  • Etcherを起動し、ダウンロードしたOSのファイルを選択、書き込み先デバイスを選択

  • 間違っていないことを確認し書き込みを開始

  • 書き込みが完了したらSDカードをラズベリーパイに装着

Etcherの使い方は非常にシンプルです。不安な方は、YouTube動画で確認してください。

 

 

■ ラズベリーパイ設定準備

  • HDMIケーブルでラズベリーパイとディスプレイを接続

  • USBキーボードをラズベリーパイのUSBポートに接続

  • USB-MicroUSBケーブルのUSBをパソコン側、MicroUSBをラズベリーパイのMicroUSBポートに接続

  • ラズベリーパイが起動したら、ユーザ名”pi”、パスワード”raspberry”でログイン

パソコンの電源が入っていればラズベリーパイが起動し、ディスプレイに表示されます。

 

 

■ ラズベリーパイをWi-Fiに接続

有線LANに接続してもいいのですが、後の操作を考えると無線設定しておいた方が便利です。

事前に接続するWi-FiのSSIDとアクセスキーを確認してください。ここでは例として、SSIDを”drone“、パスワードを”techblog1234“として説明します。必ずご自身の環境に合わせて、SSIDとパスワードの部分を変えてください。

 

ラズベリーパイにログインができた状態で次のコマンドを実行すれば一発で設定が完了します。

 

 

 

 

 

 

ラズベリーパイを再起動してください。

 

 

 

再起動後、ログインしてIPアドレスが取得できていることを確認してください。

 

 

【注意事項】

まだHDMIケーブル、USBキーボードでつなげっぱなしにしておいてください。

 

【問題点】

このやり方は問題点があります。ほとんどのWi-FiルータがDHCPに則って自動でIPアドレスを割り振る設定だと思います。これだとIPアドレスが固定されないのでリモートログイン時にアクセス先がわかりません。

 

 

 

 

↓↓解決しました 2017/2/26更新分↓↓

 

Navio2用のOSイメージでは、デフォルトでAvahi-daemonが動いています。これは上記の問題を解決してくれます。接続するラズベリーパイのIPアドレスが分からなくてもローカルで通用するドメイン名から解決できます。この記事を書いているのがWindows 10のマシンで、このやり方ができなったので問題点として挙げましたが、一部の方から指摘をいただいたので更新します。

 

ラズベリーパイ側はすべて設定済みの状態になっています。"navio.local"で解決できるような設定になっています。Macからは問題なくアクセスできましたが、Windows 10マシンがやっかいでした。いくつか試しましたが結局、アップルが提供しているBonjour Print Services (Windows)をインストールすることで解決できました。インストール時にプリンターの更新というオプションは外して問題ありませんでした。

 

これで、PuttyJPでもTeraTermからでもホスト名”navio.local”でリモートアクセスできます。

 

↑↑2017/2/26更新分↑↑

 

 

 

 

■ OSの更新

接続できていたら、次はアップデート作業をします。少し時間がかかります。途中で、Y / Nと聞いてくる部分があるので、Yと入力してエンターキーを押してください。

 

 

 

 

■ リモートアクセス"SSH"の設定(任意)

開発中はラズベリーパイにアクセスして作業したことが度々発生すると思います。その度にラズベリーパイをディスプレイに接続して、USBキーボードを接続してっていう作業がすごく面倒で手間になります。

 

それをしなくてもいいようにリモートアクセスでログインして作業ができるようにします。次のコマンドではviを使っていますが、nanoでも何でもいいです、使い慣れているエディタでSSHサーバの設定を編集します。

 

 

 

 

 

デフォルトでパスワードによるログインを無効にされています。恐らくセキュリティを考慮してのことだと思います。開発機としてはシンプルにパスワードにログインが便利なのでそれを有効にします。

 

以下の設定があることを確認してください。デフォルトではnoになっているかコメントアウトされています。

 

 

 

 

 

保存したら、ラズベリーパイを再起動してから別のPCからSSH接続ができるようになります。

ログインできない場合は、Wi-Fi接続設定の確認、SSHサーバの設定ファイルの確認をもう一度してください。

■ ArduPilotセットアップ

ラズベリーパイのセットアップもお疲れ様でした。ここからはいよいよフライトコントローラーソフトウェアのセットアップをしていきます。

 

ArduCopterのダウンロード

 

ラズベリーパイにログインして以下のコマンドでArduPilotのコプター用ソフトウェアをダウンロードしてください。ダウンロードしたら実行できるように権限を与えます。

 

 

 

 

ArduCopterの起動

起動する方法は2つあります。手動自動です。確認する程度であれば手動でいいです。実際にはラズベリーパイ起動とともに自動起動するように設定します。

 

【手動起動したい場合】

ここで指定している”192.168.1.2”の部分は、あとで設定するMissionPlanner(GCS)が起動しているほかのPCのIPアドレスです。

 

 

 

いろいろオプションがあります。まだ試してないので説明は省きますが参考までに。

Mapping between switches and serial ports (TCP or UDP can be used instead of serial ports):

  • -A – serial 0 (always console; default baud rate 115200)

  • -C – serial 1 (normally telemetry 1; default baud rate 57600)

  • -D – serial 2 (normally telemetry 2; default baud rate 57600)

  • -B – serial 3 (normally 1st GPS; default baud rate 38400)

  • -E – serial 4 (normally 2st GPS; default baud rate 38400)

  • -F – serial 5

【自動起動したい場合※推奨】

公式ページでは、/etc/rc.localファイルに書き込むような説明をしていますが、ここではSystemdに則ってサービスファイルを作成してやります。

手順1: /etc/systemd/system/ardupilot.service ファイルを作成してください。

 

 

 

私の実際の設定の画像です。パスが少し違うのは各自の環境に合わせて変えてください。

手順2: /home/pi/copter_start.sh ファイルを作成してください。
ファイルの内容は以下の通りです。もちろん、IPアドレスは各自の環境に合わせてください。
sudo nohup /home/pi/arducopter-quad -A udp:192.168.10.23:14550 > /home/pi/startup_log &

 

手順3: サービスを確認して有効にします。

 

 

 

手順4: 起動モードをmulti-userに変更します。

 

 

 

これで次回以降、ラズベリーパイの起動するとコプタープログラムも起動して飛ぶ!かと思いきや飛びません。まだ設定、キャリブレーションが終わっていないので…

 

1回の記事で飛ぶところまで行かずすみません。ちょっと記事が長くて疲れてきました。

次回、後編で設定・キャリブレーションのやり方を説明します。お楽しみに。

 

なお、間違いなどありましたら遠慮なくご指摘ください。オープンソースは皆さんの力で改善されるので。

著者紹介

 

 

川村剛(かわむらつよし)
ドローンソフトウェアエンジニア養成塾 第2期卒業生。

 

記事の誤りを見つけた方は下記のメールアドレスまでご連絡ください。
techblog@drone-j.com
(週末にメールを確認していますので、対応が遅くなること、休みの日にメールを返信させていただくこと、ご了承ください。)

Share on Facebook
Share on Twitter
Please reload

カテゴリー
Please reload

最新記事
Please reload

アーカイブ
Please reload

ソーシャルメディア
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square