2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rover製作07 Ardupirotで距離センサーの設定をする

Last updated at Posted at 2022-09-12

環境

この記事は以下の環境で動いています。

項目
CPU Core i5-8250U
OS Windows10
MissionPlanner v1.3.80
項目
Board Pixhawk(v2.4.8)
Ardupilot Rover V4.2.3

概要

ardupilotでは距離センサーを外付けすることが出来ます。今回はその設定を行います。

07_distance.jpg

予備知識

ArdupilotのRangeFinder機能

Ardupilotでは10個まで距離センサーを接続できます。今回はanalog接続x1、I2C接続x2の合計3つの距離センサーを接続します。

センサー番号 種類 型番 IF 用途
RNGFND1 赤外線 GP2Y0A21YK analog 下向き(対地距離測定用)
RNGFND2 超音波 GY-US42V2 I2C 右後(障害物検知用)
RNGFND3 超音波 GY-US42V2 I2C 左後(障害物検知用)

I2C方式のセンサーは測距距離をそのまま値として返しますが、analog方式の物は電圧から距離に変換が必要です。今回は以下の様な反比例の式を用います。

距離の計算式
距離=\frac{距離係数}{計測電圧[V] - オフセット電圧}

自己位置での使い方

ROSなどでRoverの自己位置を考えるときは、タイヤが接地しているはずなので自己位置は2次元で考えて、高さは無視または固定とします。しかしArdupilotは元々はDrone用のファームウェアなので自己位置は常に3次元で考慮します。
高さ方向のセンサーがないと、Pixhawkが内蔵している加速度と気圧計の値から高さを推定するために、メートル単位で上下に揺れてしまいます。
この自己位置をROSに送ると都合が悪いために、下方向の対地センサーを入れることで、自己位置の高さを安定させます。

前提条件

以下の機器が必要です。

  • WindowsPC
    • MissionPlanner導入済み
  • Pixhawk
    • ardupilot roverインストール済み
    • WindowsPCのMissionPlannerで接続可能
    • 電源供給可能
  • 赤外線距離センサー(GP2Y0A21YK)x1
  • 超音波センサー(GY-US42V2)x2
  • I2Cエクステンダー
  • Arduino Uno

手順

赤外線距離センサーの接続ケーブルの作成

  • 以下のように両端がpicobladeとPHのコネクタのケーブルを作成する
Pixhawk GP2Y0A21YK
Picoblade PH
1 VCC 3 VCC
2 ADC IN (ADC3) 1 Vo
3 GND 2 GND
4 ADC IN (ADC4)
5 GND

DSC_1242.JPG

赤外線距離センサーの接続

  • PHコネクタを赤外線距離センサーに接続する
  • picoblade側をPixhawkの「ADC 3.3V」のコネクタに接続する。

赤外線距離センサーのパラメーター設定

  • WindowsPCでMissionPlannerを起動して、Ardupilotと接続する。
  • 以下のパラメーターを設定する。
パラメーター名 説明
RNGFND1_TYPE 1 analog入力で使う
RNGFND1_FUNCTION 2 Hyperbolic(電圧と距離が反比例)
RNGFND1_MAX_CM 200 計測最大距離(cm)
RNGFND1_MIN_CM 5 計測最小距離(cm)
RNGFND1_OFFSET 0.2 オフセット電圧
RNGFND1_ORIENT 25 取付方向:下
RNGFND1_PIN 14 ADC3ピン
RNGFND1_POS_X -0.2 取付位置(X)
RNGFND1_POS_Y 0.1 取付位置(Y)
RNGFND1_POS_Z 0.02 取付位置(Z)
RNGFND1_RMETRIC 0 出力は供給電圧に依存しない
RNGFND1_SCALING 0.2 距離係数

赤外線距離計の動作確認

  • 「フライト・データ」メニューを選択する
  • 画面下部の「チューニング」の左のチェックボックスにチェックをつける。
  • 画面上部に出現する「Tuning」ウィンドウをダブルクリックする。
    • 出てくるダイアログで「sonarrange」だけにチェックをつけて、ほかのチェックを外す。
  • グラフのプロットの数字を見て、測距値と対応するか確認する。単位は[m]になっている。

sonarrange.png

GY-US42V2のアドレス設定作業用ケーブルの作成

Arduino側 センサー側
プラグコンタクト PH
- 1 VCC
- 2 SCL
- 3 SDA
- 4 GND

GY-US42V2のアドレス設定

  • アドレス変更用スケッチをArduino Unoに書き込む
  • 上記のArduinoにGY-US42V2を接続する(1つずつ接続する)。
  • 以下の表のようにアドレスを書き込む
    • アドレスは0~127の7bitでの表記で記載している。
用途 センサー番号 アドレス
右後用 RNGFND2 112(デフォルト値)
左後用 RNGFND3 111

超音波距離センサーの接続

  • 2つの超音波距離センサー(右後用、左後用)をPixhawkのI2Cバスに、エクステンダー経由で接続する。

超音波距離センサーのパラメーター設定

  • WindowsPCでMissionPlannerを起動して、Ardupilotと接続する。
  • 以下のパラメーターを設定する。
パラメーター名 説明
RNGFND2_TYPE 2 MaxbotixI2C互換のI2C接続
RNGFND2_ADDR 112 センサーのアドレス
RNGFND2_ORIENT 3 取付方向:後方右
パラメーター名 説明
RNGFND3_TYPE 2 MaxbotixI2C互換のI2C接続
RNGFND3_ADDR 111 センサーのアドレス
RNGFND3_ORIENT 5 取付方向:後方左

超音波距離計の動作確認

  • 「フライト・データ」メニューを選択する
  • 画面下部の「チューニング」の左のチェックボックスにチェックをつける。
  • 画面上部に出現する「Tuning」ウィンドウをダブルクリックする。
    • 出てくるダイアログで「rangefinder2」、「rangefinder3」だけにチェックをつけて、ほかのチェックを外す。
  • グラフのプロットの数字を見て、測距値と対応するか確認する。単位は[m]になっている。

range123.png

参考

Ardupilot RangeFinder

目次ページへのリンク

ROS講座の目次へのリンク
ROS2講座の目次へのリンク

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?