工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

火星探査車パーサヴィアランスのレプリカ製作方法を紹介します。現在火星を探査中の実機にインスパイアされ、このローバーを誰でも作れるよう設計しました。学生、メーカー、メカトロニクスやロボティクス愛好家など、この動画/記事の手順に従えば誰でも自分の火星探査車を作れます。

動画または以下の記事をご覧ください。

概要

このローバーの主な特徴を見てみましょう。ロッカーボギー懸架を採用し、凹凸のある地形でもスムーズに走行可能。車輪径の2倍までの障害物(岩など)を乗り越えながら、常に6輪すべてを地面に接地させられます。各車輪に独立したDCモーターを搭載し、前進/後進を駆動します。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

4隅の車輪には個別のステアリングサーボモーターを装備。効率的な操舵とカーブ走行時のタイヤスリップ防止のため、アッカーマンステアリングジオメトリを実装。これにより旋回半径に応じて各車輪の速度と角度を計算します。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

旋回時、内側のステアリング車輪は外側より大きな角度をとり、同時に内側車輪の速度を外側より遅くします。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

制御には安価な市販RC送信機を使用。ローバー側のRC受信機がコマンドを受信し、Arduinoボードへ送信。この火星探査車の頭脳はArduino MEGAボードで、すべてを簡単に接続するためにカスタムPCBを設計し、Arduino MEGAの上にシールドのように装着できるようにしました。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

カメラユニットにはFPVカメラを搭載。ステッピングモーターとサーボモーターで制御し、スマートフォンでリアルタイム映像を受信します。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

なお、多くのパーツは実機の外観再現のための非機能パーツです。ロボットアームは未実装ですが、将来の動画で追加予定です。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

それでは設計から電子部品配線、Arduinoプログラミングまで、製作プロセスを順を追って解説します。

DIY火星探査車 3Dモデル

この火星探査車は3DEXPERIENCE SOLIDWORKSで設計しました。これが今回の動画スポンサーです。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

3DEXPERIENCE SOLIDWORKSは、3DEXPERIENCEプラットフォームを通じてクラウド機能を提供するSOLIDWORKSバージョンです。すべてクラウド上で動作するため、チームメンバーが世界中どこからでも、いつでもデータやモデルにアクセス可能。プラットフォームには便利な生産性・データ管理アプリも多数含まれます。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

例えばProject Planningアプリでタスク管理、期限設定、進捗管理。3D MarkupアプリでノートPC、タブレット、スマホからモデルの閲覧・探索・メモ記入が可能。

ブラウザ上で動作するクラウドベース3Dモデラー「SOLIDWORKS xDesign」も別途提供され、SOLIDWORKSと併用も単独使用も可能。いつでもどこでも、あらゆるデバイスでモデリングできます。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

何より嬉しいニュースは、今年後半からメーカー向け3DEXPERIENCE SOLIDWORKSが年間$99で利用可能になること。教育コンテンツを支援してくれたSOLIDWORKSに感謝します。

SOLIDWORKSと3DEXPERIENCEプラットフォームがあなたに合うか知りたい方は、以下のリンクをご覧ください。

3DEXPERIENCEを無料体験(特別リンク):www.solidworks.com/HTMTryNow

3DEXPERIENCE SOLIDWORKS詳細:www.solidworks.com/HTMLearnMore

3DEXPERIENCE SOLIDWORKS for Makers:www.solidworks.com/htm

モデルに戻って設計プロセスを説明します。目標は実物のパーサヴィアランスに可能な限り近い外観にすること。NASA公式サイトに3Dモデルがあるので、それをダウンロードしてBlenderで開きました。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

正面、上面、側面の3ビュー画像を撮影し、SOLIDWORKSにインポート。車輪径を130mmに設定したかったので、画像をこの寸法に合わせてスケーリング。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ここから幅、長さ、高さ、車輪間距離、ロッカーボギー懸架の寸法など、すべての主要寸法を取得。

これらの寸法と使用予定のDCモーター、サーボに基づき、3Dプリント容易で組み立てやすく、かつ実機に近い外観となるようパーツを設計。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ロッカーボギー懸架にはφ20mm丸アルミプロファイル、ベースフレームには20mm Tスロットアルミプロファイルを使用。

3DモデルはThangsで検索、ダウンロード、ブラウザ探索可能です:

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

3Dプリント用STLファイル:

火星探査車レプリカパーツの3Dプリント

パーツの3Dプリントには、古いCreality CR-10と新しいCR-10 V3を使用。柔軟素材で車輪をプリントする場合、CR-10 V3のようなダイレクトエクストルーダー搭載機が必須です。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

両機とも比較的安価ながら高品質なプリントが可能。興味があれば以下リンクからチェック:

  • Creality CR-10…… Amazon / Banggood
  • Creality CR-10 V3…… Amazon / Banggood / AliExpress

関連記事:初心者・メーカー向けベスト予算オシロスコープ【2021年更新版】

プリント時はスライサーソフトの「水平展開(Horizontal Expansion)」機能を使用することが重要。私は-0.1mmを設定しました。これはプリント時のフィラメント膨張を補正する機能です。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

これを使わないと、例えばφ20mmの穴が実寸約19.8mmになり、組み立て不能になります。

すべての3Dプリントパーツがこちら:

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

正直、プリント量はかなり多いですが、このユニークな外観を得るには唯一の方法。機能パーツのみプリントすれば時間を半分に短縮可能です。

DIY火星探査車 パーツリスト

このDIY火星探査車の組み立てに必要なコンポーネントリストです。電子部品リストは後述の回路図セクションにあります。

  • Tスロットアルミプロファイル 20x20mm ………..Amazon / Banggood / AliExpress
  • Tスロットプロファイル コーナーブラケット ………..… Amazon / Banggood / AliExpress
  • アルミ丸パイプ 20mm ………………. Amazon / AliExpress
  • ロッドエンドジョイント 8mm …………………………….. Amazon / Banggood / AliExpress
  • 8 x ベアリング 608RS – 8x22x7mm ……..…… Amazon / Banggood / AliExpress
  • 8 x ベアリング 626RS – 6x19x6mm ………….… Amazon / Banggood / AliExpress
  • 5 x ベアリング 625RS – 5x16x5mm …………… Amazon / Banggood / AliExpress
  • M3ボルト 各種長さ ………………………… Amazon / Banggood / AliExpress
  • 4 x サーボホーン …………………………………………. Amazon / Banggood / AliExpress

M4、M5、M6ボルトも各種長さが必要。完成したボルト・ナットリストは後述。金物店での調達も可能です。

ローバーの組み立て

アルミプロファイルの準備から開始。金属用手ノコでカットします。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ベース用Tスロットプロファイル10本、ロッカーボギー懸架用丸プロファイル8本を以下の寸法で用意。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

Tスロットプロファイルフレームの組み立てには、専用コーナーブラケットとボルト・ナットを使用。トップとボトムフレーム完成後、サイドにロッカージョイント3Dプリントパーツ、前後に3Dプリントブラケットを取り付け、M3ボルトとTスロットナットで固定。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ロッカージョイントにはM5ボルトとナットを使用。フロントプロファイルからロッカージョイントまでの距離は134mm。

ロッカーボギー懸架の組み立て

ロッカーボギー懸架のメインベアリングを圧入。ロッカージョイントシャフトをベースにM8ボルトで取り付けます。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

シャフトにM8ナット用スロットがあり、ここでベースに固定。シャフト穴は7.5mmでボルトとタイトフィット。ボルト自体がローバー重量の一部を負担するため、3Dプリントシャフトを補強する構造です。これは全体で最も応力がかかる部分であり、プリント方向が強度を左右します。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

最初、サポート不要な向きでプリントしたら失敗しました。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

この場合主応力が層方向(弱い方向)にかかりますが、横向きにプリントすれば応力が壁面輪郭方向(強い方向)にかかるため、はるかに強固で破損しません。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ロッカーボギー懸架をホイールジョイントとモーターマウントとともにサブアセンブリとして組み立て、後でロッカーシャフトに取り付けます。

φ20mm丸プロファイルが通る穴はタイトフィット寸法なので、場合によってはヤスリやサンドペーパーで調整が必要です。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

丸プロファイルに精密な位置で穴あけするため、まずプロファイルに直線をマーキング。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

3Dプリントパーツを通してマーキングラインを穴に通し、両側の穴位置をマーキング。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

反対側も同様に。2.5mmドリルで穴あけ後、M3ボルトでタップを切ります。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

アルミはボルトより柔らかいため、ボルト自体でねじ切り可能。この方法で穴あけすれば、最終的にはすべてのパーツが正しい相対位置に配置されます。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ボギージョイントにも2個のベアリングとM8ボルトを使用。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ロッカーボギー懸架配置が完成したら、ステアリングホイールジョイントを組み立てます。ステアリングホイールジョイントパーツは2パーツをボルトで連結した構造です。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

サーボマウント部とDCモーターマウント部の接続(実際のジョイント)には、2個のベアリングとM6ボルトを使用。

ボルト頭部側にサーボホーンを取り付け、3Dプリント製カプラーとM3ボルトで連結。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

カプラーに六角スロットがあり、ここでサーボ動作をボルトに伝達。底側でもう一方のパーツをネジ込み固定。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

M6ナットで固定。これでステアリングホイールジョイント完成ですが、後で底側にもM6ナットを追加し、2つのナットを相互に締め付ける必要があることに気づきました。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

サーボからの動力はナットを介してDCモーターマウント部に伝達されるため、もう1つのナットでロックしないとジョイント全体が緩んでしまうからです。

もう片側のコーナージョイントも同じ手順。平らな面に置いたとき、3つのモーターマウントがすべてフラット(平行)なら正しく組み立てられています。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

反対側も同様。見た目は同じでも、実際はミラーパーツ(左右対称)です。

これらサブアセンブリをベースフレーム/シャーシのロッカージョイントシャフトに取り付けます。その前に、シャフトにねじ込みインサートを入れます。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ハンダごてで簡単に圧入でき、確実なネジ穴が得られます。M4ボルト4本で懸架サブアセンブリを固定。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

両側取り付け後、シャーシが自由に回転/倒れることに気づきます。ロッカーボギー懸架を機能させるには、ディファレンシャルが欠けています。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ディファレンシャルで両ロッカー同士とシャーシを連結。片側が上下すると反対側が逆方向に動き、ほぼ等しい接地圧を確保。シャーシのピッチ角は両ロッカーの平均になります。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ディファレンシャル組み立てに必要なパーツ:

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ディファレンシャルバーは長いため、3ピースに分割してボルト連結(小型3Dプリンターでもプリント可能)。バー中央で2個のベアリングとM8ボルトでピボット接続。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ディファレンシャルとロッカーの接続にはロッドエンドボールジョイント(M8)とM8ネジロッド(50mm)を使用。ネジロッドは片側M8ナット入り3Dプリントパーツ、もう片側ロッドエンドに接続。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

3Dプリント ディファレンシャルリンクとロッドエンドの距離を約20mmに調整し、シャーシが水平になるようにします。ディファレンシャルリンクとロッカーレバーの接続には2個のベアリングとM5ボルトを使用。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

反対側も同様に。これでロッカーボギー懸架完成。片側が上がれば反対側が下がり、常に全車輪が接地。シャーシは脚の動きの半分、つまり両ロッカーの平均ピッチ角だけ動きます。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

関連記事:Arduinoロボットアームとメカナムホイールプラットフォーム自動運転

火星探査車用モーターの組み立て

DCモーターを取り付けます。直径37mm、12V動作、ギアボックス出力50RPMのものを使用。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

後で気づきましたが、50RPMはこのローバーには少し速すぎます。20または10RPM版を推奨します。

車輪をモーターに取り付けるためのシャフトカプラーを製作。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

M3インサートナット(カプラー固定用)とM4ナット(車輪固定用)を圧入。ナット圧入時は接着剤も併用するか、インサートナットを使用して確実に固定してください。

車輪は2パーツ構成。タイヤ部分は柔軟フィラメントでプリント(必須ではない)、リムは通常PLA。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

リムのスロットがタイヤにはまり込み、モーター動力を伝達。スロットに接着剤を少量追加してより確実に。M4ボルト4本で車輪をシャフトカプラー/DCモーターに固定。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ステアリングサーボモーターを取り付け。25kg·cmトルクのハイトルクデジタルサーボ、動作電圧4.8〜6.8Vを使用。M3ボルト4本で固定(サーボマウント3DプリントパーツのM3インサートナットにねじ込み)。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

カメラユニットの組み立て

カメラユニットを組み立てます。カメラパン(水平旋回)用にNEMA 17ステッピングモーターを使用しましたが、他のモータータイプでも変更可能です。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

モーター動力はM5ネジロッドで上部セクションへ伝達。モーター側は3Dプリント製シャフトカプラーで接続、反対側はベアリングと2個のナットで可動エレメントに固定。カメラチルト(垂直角度)用にはステアリング車輪と同じサーボを使用。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

カメラユニットの多くのパーツは非機能で、実機外観再現用です。組み立てには各種M3ボルトとインサートナットを使用。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

実際のFPVカメラも搭載。カメラユニットハウジングに取り付けるカスタムホルダーを製作。カメラは上部からアクセス可能で、スナップフィットカバーで閉じます。完成したカメラユニットの外観:

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

このカメラサブアセンブリをシャーシ前右コーナーに取り付け。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

ここで、残りの3Dプリントパーツ(実機外観再現用の非機能パーツ)を組み立てるか、先に電子部品を配線して動作確認するかの選択です。私は先にすべての3Dプリントパーツを組み立て、その後電子工作に進みました。

ローバー残り部分の組み立て

以下のパーツは実機外観再現用なので詳細な組み立て手順は割愛します。3Dモデルから接続方法を確認してください。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

細部までこだわって設計し、見た目の良さに努めました。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

これらのパーツも大型でプリントに時間がかかります。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

取り付けの様子:

ローバー中央の最後の2枚トップパネルはスナップフィット式。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

これらはフードの役割を果たし、電子部品がこのエリアにあるため簡単に取り外し可能。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

電子部品ホルダーは2つの3Dプリントパーツをボルト連結した構造で、シャーシのボトムフレームに取り付けます。

電子工作

各モーターに必要な配線長を測定。モーターには直接ハンダ付け(適切なコネクターがなかったため)、熱収縮チューブで絶縁。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

結束バンドで配線を整理・固定。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

サーボモーターにはサーボ延長ケーブルを使用し、電子部品コンパートメントまで延長。電子部品マウントパーツにスロットがあり、そこから配線を中央へ通します。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

全体的に配線は見えない部分を通すようにして、かなり綺麗にまとまりました。

関連記事:SCARAロボット | 自作Arduinoベースロボットの作り方

DIY火星探査車 回路図

回路図で全接続を確認しましょう。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

必要なコンポーネント:

  • DCモーター 12V 37mm …….……………….…
  • デジタルサーボ 25kg …………………………….
  • DRV8871 DCモータードライバー ……………….
  • ステッピングモーター – NEMA 17…………………
  • A4988ステッピングドライバー………………..…..…
  • Arduino MEGA…………………….…..………
  • DC-DCバックコンバーター …………………….
  • 3S LiPoバッテリー ………………………..………..
  • XT60コネクター ………………………………
  • FLYSKY RC送信機 …………………..
  • FPVカメラとビデオトランスミッター …. Amazon / Banggood / AliExpress
  • FPV受信機(お好みで)

6個のDCモーター駆動にはDRV8871 DCモータードライバー6個を使用。PWM制御対応、ピーク電流3.6Aまで対応。DCモーターは12V動作、定格電流1A、ストール電流3A。電源は3S LiPoバッテリー(約12V)。

サーボは4.8〜6.8V必要なので、DC-DCコンバーターで12Vから6Vに降圧。コンバーターは約8A対応品が必要(使用サーボはハイトルクでストール電流約2A)。カメラユニットステッピングモーター駆動にはA4988またはDRV8825ステッピングドライバーを使用。2個の抵抗で簡易電圧分割器を作り、バッテリー電圧を監視。

RC受信機はバックコンバーターからの6Vで駆動。FPVカメラとビデオトランスミッターはバッテリーから直接12Vで駆動。

カスタムPCB

電子部品を整理するため、このDIY火星探査車用カスタムPCBを設計。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

このPCBはArduino MEGAシールドとして機能し、Arduino MEGAの上に直接装着可能。モータードライバーのほか、3.3Vレギュレーター、NRF24L01専用接続(将来的にこのモジュールで制御する場合用)、DHT22センサー接続、コンパス、I2C、シリアル通信、12V/5V/3.3V/GND接続も搭載。ローバー機能拡張を見据えた将来対応設計です。

PCB発注はPCBWay。Gerberファイルをアップロード、PCBプロパティ選択、リーズナブルな価格で発注可能。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

デフォルトプロパティから変更したのはPCB色のみ(Arduinoボードに合わせて青色)。Gerberファイルは以下からダウンロード可能、またはPCBWayプロジェクト共有コミュニティから直接発注も可能。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

DIY火星探査車PCB用Gerberファイルダウンロード:

数日でPCB到着。品質は素晴らしく、設計通り完璧。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

PCB実装はラベル通りで簡単。底面のArduino MEGA接続用ピンヘッダーからハンダ付け開始、その後上面側。すべての接続にピンヘッダーを使用(後で変更しやすいため)。3.3Vレギュレーターと未使用Arduinoピンは今回ハンダ付けせず。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

PCB実装完了後、Arduinoボルト2本で電子部品マウントパーツに固定し、PCBを装着。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

各モーターをドライバーに接続し、PCBの所定位置に装着。サーボは対応するサーボピンへ、ステッピングドライバー用にはジャンパー1本で1/8ステップ分解能を選択。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

無線通信にはFLYSKY RC送信機/受信機を使用。安価で良好な動作。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

受信機をArduinoに接続するにはサーボ延長ケーブルを使用(VCC、GND、Signalの3線)。受信機とArduinoはI-BUSとシリアルポートで通信。受信機から送信機へデータを送る場合(バッテリー電圧監視など)、受信機のセンサーI-BUSを別のArduinoシリアルポートに接続。

バックコンバーターはボルト2本で固定。LiPoバッテリーはゴムバンド2本で固定(充電時に簡単取り外し可能)。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

電源スイッチはローバー後右パネルに配置。この配線には20ゲージワイヤーを使用(ローバー全稼働時は数アンペア流れる可能性あり)。接続間違いだと発火の危険があるため、ダブルチェック必須。

最後にFPVカメラを12V電源に接続、ビデオ信号線をビデオトランスミッターに接続(これも12V駆動)。これで電子工作完了。

Arduino駆動の火星探査車パーサヴィアランス レプリカ自作ガイド

カバーパネルを戻せばDIY火星探査車のハードウェア完成。実はまだ「魂」を入れる、つまりArduinoプログラミングが残っています。

DIY火星探査車 プログラミング – Arduinoコード

このDIY火星探査車プロジェクトのArduinoコードはこちらからダウンロード:

コード概要

IBusBMライブラリでRC送信機からのデータを読み取ります。

// Reading the data comming from the RC Transmitter IBus.loop(); ch0 = IBus.readChannel(0); ch1 = IBus.readChannel(1); ch2 = IBus.readChannel(2); ch3 = IBus.readChannel(3); ch6 = IBus.readChannel(6);

これらの値を右旋回半径、左旋回半径、ローバー速度(0〜100%)に変換。

// Convertign the incoming data // Steering right if (ch0 > 1515) { r = map(ch0, 1515, 2000, 1400, 600); // turining radius from 1400mm to 600mm } // Steering left else if (ch0 < 1485) { r = map(ch0, 1485, 1000, 1400, 600); // turining radius from 600mm to 1400mm } // Rover speed in % from 0 to 100 s = map(ch2, 1000, 2000, 0, 100); // rover speed from 0% to 100%

旋回半径「r」を使ってステアリング車輪角度と車輪速度を計算。

void calculateMotorsSpeed() { // if no steering, all wheels speed is the same - straight move if (ch0 > 1485 && ch0 < 1515) { speed1 = speed2 = speed3 = s; } // when steering, wheels speed depend on the turning radius value else { // Outer wheels, furthest wheels from turning point, have max speed // Due to the rover geometry, all three outer wheels should rotate almost with the same speed. They differe only 1% so we asume they are the same. speed1 = s; // Inner front and back wheels are closer to the turing point and have lower speeds compared to the outer speeds speed2 = s * sqrt(pow(d3, 2) + pow((r - d1), 2)) / (r + d4); // Inner middle wheel is closest to the turning point, has the lowest speed speed3 = s * (r - d4) / (r + d4); } // speed value from 0 to 100% to PWM value from 0 to 255 speed1PWM = map(round(speed1), 0, 100, 0, 255); speed2PWM = map(round(speed2), 0, 100, 0, 255); speed3PWM = map(round(speed3), 0, 100, 0, 255); } void calculateServoAngle() { // Calculate the angle for each servo for the input turning radius "r" thetaInnerFront = round((atan((d3 / (r + d1)))) * 180 / PI); thetaInnerBack = round((atan((d2 / (r + d1)))) * 180 / PI); thetaOuterFront = round((atan((d3 / (r - d1)))) * 180 / PI); thetaOuterBack = round((atan((d2 / (r - d1)))) * 180 / PI); }

前述の通り、アッカーマンステアリングジオメトリで計算。これらの値でサーボを制御しますが、ServoEasingライブラリを使用して滑らかな動作を実現。

// Servo motors servoW1.startEaseTo(97 - thetaOuterFront); servoW3.startEaseTo(97 + thetaOuterBack); servoW4.startEaseTo(94 - thetaInnerFront); servoW6.startEaseTo(96 + thetaInnerBack);

DCモーター制御にはanalogWrite()でPWM信号をドライバーに送信。

// Motor Wheel 1 - Left Front analogWrite(motorW1_IN1, speed2PWM); // PWM value digitalWrite(motorW1_IN2, LOW); // Forward

コード自体は複雑ではありません。ローバー自体に複雑な機能がないためです。今後、GPSナビゲーション、各種センサー、ロボットアーム、土壌採取機構などを追加予定です。

このプロジェクトを楽しんでいただけたら幸いです。質問はコメント欄で、Arduinoプロジェクト集もご覧ください。


製造プロセス

  1. Windows IoT Core搭載RoverをRaspberry Pi 2で構築 - 初心者から上級者まで
  2. Arduinoオーディオ周波数検出器 – 高感度サウンドモジュールで最大音量ピークの周波数を測定
  3. Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
  4. ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
  5. SparkFun 7セグメントディスプレイで作る信頼性の高いArduinoカウントダウンタイマー
  6. Arduinoで自作RCポルシェカー:ステップバイステップガイド
  7. Arduino UNOで作る信頼性の高いスマートエネルギーモニター – ステップバイステップガイド
  8. Arduinoで作るポータブルRFIDドアロック - ステップバイステップガイド
  9. Arduino NanoとTCS3200センサーによる物体の色検出
  10. DIY Arduino身長測定デバイス:正確で簡単に作れる
  11. Arduino Nanoパルス誘導式金属探知機:DIYキット&ガイド