自作移動ロボットのハードウェア構成


はじめに

 前回の記事冒頭でも言及した通り、図1に示す移動ロボットを自作して遊んでいます。今回は、この機体のハードウェア構成を雑に紹介します。たまにソフトウェアの話も混ざっていますが気にしないでください。

 

図1 自作移動ロボット

 

全体構造

 図1を見ると分かる通り、3段のアクリル板に各部品をねじ止めした構造です。アクリル板同士は六角スペーサで固定しています。アクリル板の形状とねじ穴の配置は、Fusion360で設計しています。

 

電装部品の構成

 自作移動ロボットには、自律走行・SLAM・センサフュージョン等をして遊ぶために、様々な電装部品を搭載しています。図2に接続構成の概要を示します。

 

図2 電装部品接続構成の概要

 

 電装部品の核となるのは、Minisforum社製のミニPCであるUN305Cです。このPCにUbuntu22.04をインストールした上で、ROS 2 Humbleの環境を構築しています。USB PD給電で動作可能であること、低消費電力の割に性能の良いi3-N305プロセッサを搭載していることから選定しました。

 また、GNSS・LiDAR・6軸(加速度と角速度)・地磁気・気圧の各センサを搭載しています。GNSSとLiDARは既製品のモジュールをUSBケーブルでミニPCに接続しています。残りのセンサは自作のセンサ基板に搭載した上で、USBケーブルでミニPCに接続しています。どのセンサとも、ミニPCへUSBシリアル通信を用いてデータを送信し、ミニPC上で受信ノードを走らせROSトピックをpublishしています。

 走行のためのアクチュエータとしては、2個のエンコーダ付きギアモータを搭載しています。自作のモータ制御基板がミニPCから回転数指令を受け取り、既製品のモータドライバに対して電圧指令をPWM信号にて送信する構成です。モータ制御基板も、ミニPCへUSBシリアル通信を用いてモータ角度・角速度等のデータを送信し、ミニPC上で受信ノードを走らせROSトピックをpublishしています。

 

下段アクリル板の構成

 ここからは、3枚ある各アクリル板ごとに紹介していきます。図3に、下段アクリル板に搭載した部品を示します。

 まず、足回りから紹介します。左右1つずつの動輪と1つの自在キャスターから構成された、差動二輪方式を採用しています。以前は受動輪としてボールキャスターを使用していましたが、屋外を走行すると異物が挟まりやすかったため、自在キャスターに変更しました。

 また、以前はタイヤとして、後述するエンコーダ付きギアモータと同じPololu製の物を使用していました。しかし、幅が小さくちょっとした隙間にはまり込んでしまうため、3Dプリントの自作タイヤに変更しました。白色部はレジン、黒色部はTPUで製作しています。

 

図3 下段アクリル板と部品

 

 タイヤの取り付け方法にも少しこだわっています。イモネジは緩みやすいので使いたくありません。図4の様に、端面にねじ穴が開いているセットカラーをモータ軸に取り付けた上で、ねじ穴に3Dプリントタイヤを固定しています。

 エンコーダ付きギアモータには、Pololu製の"100:1 Metal Gearmotor 37Dx73L mm 12V with 64 CPR Encoder (Helical Pinion)"を使用しています。ギア比は約100:1で、四逓倍した上で1回転64パルスのエンコーダが付属しています。よって、出力軸において約0.055°の分解能で角度を計測できます。

図4 エンコーダ付きギアモータと3Dプリントタイヤ

 

 モバイルバッテリーとミニPCも下段アクリル板に搭載しています。重量が大きいこれらの部品を下部に搭載することで、低重心化を図っています。

 

中段アクリル板の構成

 中段には、図5の様に、主に基板と上段に載せる必要がないセンサ類を搭載しています。

 

図5 中段アクリル板と部品

 

 センサ基板には、図6の様に6軸センサ・地磁気センサ・気圧センサを搭載し、マイコンとしてSTM32F446REを搭載しています。加速度・角速度・地磁気センサを用いてロボットの姿勢角を計算し、ミニPCへ送信することがこの基板の主な役割です。なお地磁気センサは、前回の記事で紹介したアルゴリズムを用いた初期姿勢角の算出のみに用いています。その後は、加速度・角速度センサ値のみを用いたカルマンフィルタで姿勢角を計算しています。

 STM32F446REは動作クロック180 MHz、FLASHは512 KB、RAMは128 KBとそれなりにリッチなマイコンであるため、数値計算ライブラリEigenを用いてカルマンフィルタを実装しても、Releaseモードでビルドすれば問題なく更新周期0.01秒で計算できています。

 気圧センサは、気圧高度・GNSS高度・ピッチ角と車輪速を組み合わせて高度を算出すると面白いかなと思って搭載していますが、まだ活用できていません。

 

図6 センサ基板

 

 図7に示すモータ制御基板は、エンコーダ付きギアモータの回転数制御と、そのデータをミニPCへ送信することが主な役割です。回転数制御の機能は、ミニPCから指令を受け取るモードと、図8に示すコントローラーから指令を受け取るモードの2モードを備えています。

 コントローラーとモータ制御基板の双方には2.4 GHz帯無線マイコンであるTWE-LITEを搭載しており、ラジコン操作を可能としています。手動走行したい場合に、この機能を用いています。

 

図7 モータ制御基板

 

図8 コントローラー

 

上段アクリル板の構成

 上段には、図6の様に2D LiDARとGNSSセンサを搭載しています。GNSSアンテナの高さは、2D LiDARがスキャンする面より低くなっており、全周をスキャンできるようにしています。

 

図9 上段アクリル板と部品

 

 2D LiDARにはYDLIDAR X4 PROを使用しています。約1万円と比較的安価に購入でき、公式にROS 2ドライバが配布されていたことが採用理由です。家の中でROS 2のslam_toolboxを使って遊ぶには十分な性能です。ただし、回転部の軸と重心がかなりずれているようで、振動が発生する点が難点です。

 

 GNSSセンサには、Ublox社のNEO-F9PとNEO-D9Cを用いています。この2つのチップは組み合わせて用いることで、いわゆる「日本版GPS」みちびきのセンチメータ級測位補強サービスCLASを活用可能です。オープンスカイの環境であれば、誤差数センチメートル以内の測位結果が得られます。

 2つを組み合わせて使用することを前提として設計されている、ジオセンス社のモジュールを購入して搭載しています。合計で5万円しますが、CLAS対応GNSSモジュールの中では安価と思います。

ZED-F9P RTKシステム開発用ボード F9PX1 : ジオセンス ヤフー店 - 通販 - Yahoo!ショッピング

みちびき CLAS L6受信用 NEO-D9C開発ボード D9CX1 : ジオセンス ヤフー店 - 通販 - Yahoo!ショッピング

 

 なお、2モジュールを組み合わせた上でCLASを使用する設定済み、かつアンテナも付属したセットが販売されています。価格は高くなりますが、手間は省けます。私は安いばら売りの方を買い、CLAS使用設定に手間取り1日かかりました。

 

store.shopping.yahoo.co.jp

 

 GNSSアンテナは、GPSに加えてCLAS使用に必要なみちびきの周波数帯を受信可能な物を搭載しています。アンテナの下にはグランドプレーンと呼ばれる金属板を配置しています。これは反射波の影響を低減し、測位精度低下を防ぐものです。もう少し大きい方が良いと思われますが、車体からはみ出すので今のサイズとしています。

 

自作部品の発注先

 センサ基板・モータ制御基板ともElecrowへ発注しています。部品実装サービスもありますが、使ったことはなく手はんだしています。

 アクリル板と3Dプリント部品も、主にElecrowへ発注しています。ただしタイヤだけは、TPUフィラメントの取り扱いがあるJLCPCBへ発注しました。

 

おわりに

 移動ロボットの自作は楽しいので、皆さんもぜひやってみてください。次回の記事では、このロボットに実装している、GNSS測位データ・車輪速データ・姿勢角データを組み合わせたカルマンフィルタによる位置推定を紹介する予定です。