dポイントプレゼントキャンペーン実施中!

arduinoでの電子工作入門者です。

ある一点から方向と距離を検出することが目的で、
要件としまして、
・距離のレンジ 3cm~2mの測定
・角度のレンジが120度以上の測定
(測定の対象物はセンサが検出できるものに合わせて考える)
が可能な距離と方向のセンサというか方法を探しています。

調べてみると、超音波距離センサが割と高い精度で直線距離?を測定できるようですが、
測定できる角度が15度程度な様で方向が判定できない様なので、手が出せません。

角度を変えて、10個位配置すれば可能だと思われますが、手法としてかっこ悪い気がしていて。。

そもそも方向が判定できるものがどのようなセンサかわかりません。
焦電型赤外線センサは角度のレンジが広い様ですが、動きを検出することが目的になっているようで、距離や方向は検出できないのでしょうか?

ソフトウェアで対応する方向性は苦ではないのですが、
CCDカメラモジュールで画像解析のライブラリ等を使用する様な方法を考えたほうがいいのでしょうか?

よろしくお願いいたします。

質問者からの補足コメント

  • 測定精度は+-5mm程度以下で考えています。

      補足日時:2015/10/06 10:47
  • 回答があまり得られないようですので、
    精度や条件の面は満たせなくても構わないとします。

    実際に距離や方向の測定を行った経験がある方の、
    単純な意見でもいいですので、お願いいたします。

      補足日時:2015/10/09 08:49

A 回答 (2件)

ANo.1へのコメントについてです。



> あくまで2Dの範疇で考えているのですが、

 それじゃ不可能。なぜなら、方向と距離が測れるということは、すなわち3次元的位置の測定になってる、ってことだからです。

 光を使って距離を測る方法は大きく分けて、干渉計、TOF(Time Of Flight)、三角測量。赤外線を使うのは、センサに可視光をカットするフィルタを取り付けて、環境光の影響を受けないようにするためです。
 干渉計は、レーザ光線を2つに分けて、離れた所にある被写体からの反射と、計測装置内での反射光とを再び合体して干渉させ、計測装置内での光源から反射物までの距離が被写体と光源の距離と同じになるようにする。大掛かりな装置です。方向は測れない。
 TOFは光が往復する時間を測定します。光速は1nsecで0.3mですから、5mmの精度を出すには10psecぐらいの時間分解能(パルスレーザと高速応答センサ)を必要とする。方向は測れない。
 三角測量は、距離と方向、つまり3次元的位置が測れる。同じものを一定の距離(基線長)だけ離れた2つ以上の方向から同時に見て、どっちに見えるかの角度を測るわけで、「同じもの」であることを保証するのに工夫が必要。また、基線長が長いほど遠距離にあるものの奥行き方向の座標が正確に出せるが、あまり近いものは測れない。ラインセンサ3個を使うものでは、特殊なLEDを点滅させて、その光を3方向から見る。ラインセンサは1次元センサだけれども空間分解能が非常に高い。カメラを2個使うものでは、それぞれのカメラのすぐ近くに赤外線パルス光源を置いて、再帰性反射材でコーティングされた球からの反射光を見る。カメラに写る像の中での球の中心位置を1ピクセルの1/10ぐらいの精度で決定しなくてはならないため、対象物にLEDをつけるのでは精度が不足。

> 赤外線センサを2〜3つ使用する方法の原理はKinectと同じ様な方法でしょうか?

 KINECTは上記のどれとも違って、プロジェクタを使って沢山の赤外線ビームを対象物へ投影する。対象物上から格子状に並んだ反射光が出るのを、プロジェクタのレンズから一定距離だけ離れた位置にある赤外線カメラで撮影する。反射点の距離によって、反射光の位置がわずかに異なることを使って、各反射点までの大雑把な距離を測定するものです。対象物が充分に大きい事が前提。カメラとプロジェクタが離れすぎると、あるいは、対象物が近過ぎると、どの反射点がどのビームに対応しているかがわからなくなるので、測定不能。5mmの精度はとても出ないでしょ。

 超音波センサは、何からの反射音を測っているのかがはっきりしないのが弱点。対象物が或る程度の大きさであって、かつ、他に反射物がない、という状況でないと使えない。このため、発射する超音波をビーム状に絞る必要があり、広い角度範囲を測るには適さない。また、距離が大きくなると、気温・気圧・風などによる音速の変化の影響を受ける。方向は測れない。

 磁気センサは、対象物に3個のコイルを取り付ける。これとは別に、交流磁場を発生するコイルを固定しておく。そして、対象物のコイルに流れる誘導電流から、対象物の3次元的位置を測る。磁性体が近くにあると、当然大きな誤差が出る。測れるのはせいぜい数十センチの範囲であり、遠距離ではまず使えない。

 あとは、アームの関節に角度エンコーダを仕込んだ機械式位置計測かな。アームの先端に対象物を取り付けて、対象物の3次元的位置を測る。アームの機械精度で性能が決まります。
    • good
    • 0
この回答へのお礼

回答内の言葉を調べると色々ためになります。

三角測量のものが部品として手に入れやすいように思えました。

方法を工夫して組み合わせれたら、精度を上げることもできるような気がしました。
困難は多そうですが、色々と試してみます。
ありがとうございました。

お礼日時:2015/10/14 08:17

3cm〜2mって、ずいぶん欲張ったレンジを要求しているな。


 赤外線カメラ2台、あるいは赤外線ラインセンサ3台を精密に調整した数百万する光学式位置計測装置(たとえばNorthern Digital社)を使うと±0.5mm程度の精度が出る。振動や自重によるひずみの影響をなくす頑丈な筐体を持ち、かつ、光学系による像の歪みを数億はする3次元位置出し装置で測定して補正してある。ゴンとぶつけたりすると「今の衝撃で誤差が生じたおそれがあるから工場に返送しろ」というエラーメッセージが出る。そういうレベルだが、測定レンジはたとえば数十cm〜3mといったところだし、120度なんてとてもカバーできず、せいぜい数十度の範囲だったと思う。
 (測定レンジをもっと狭くしたとしても、手作りで±5mmの精度を出すのはかなり大変だと思われ、もちろんArduinoじゃ話にもならんだろう。)
 どんな環境でどんなものを測るのか、ということをはっきり特定し、用途に応じた設計を考えないとな。測定対象がどのぐらいの速度で動くかによって、要求される時間分解能も違う。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほどです。
精度はざっくり理想を想像したものでして、無理なことはわかりました。

Arduinoと個人で購入可能な電子部品で試してみて、
一番可能性がある方法に妥協していって、何がネックなのかを知りたいのです。

あくまで2Dの範疇で考えているのですが、
赤外線センサを2~3つ使用する方法の原理はKinectと同じ様な方法でしょうか?

お礼日時:2015/10/12 11:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!