Help us understand the problem. What is going on with this article?

超音波距離センサとサーボでROSで使えるレンジスキャナを作ってみた

More than 3 years have passed since last update.


HC-SR04の超音波の距離センサ(ultrasonic sensor)をサーボで左右に振ってROSで使える平面のレンジスキャナを作ってみます。
一般的なスキャナはレーザーレンジファインダ(LRF)ですが、定番であるhokuyoのURGなどは個人で遊ぶには高価で手が届きません。。(誰かちょうだい!)

scanner

作ってはみたものの、超音波センサの特徴として点ではなく面で応答が返ってくるため、部屋の角などを正確に計測することはできませんでした。
何かの参考になればと思い、記録として残しておきます。

コードは https://github.com/atotto/ultrasonic_scanner に置いておきました。

前提

  • ROSがセットアップ済みであること
    • 本記事ではubuntu 16.04、ROS kinetic (ros-kinetic-desktop-full)を利用
  • arduinoが使えること

材料

  • HC-SR04
  • サーボ
  • HC-04をサーボに取り付けるためのマウント
    • HC-SR04とサーボ、マウントがセットになったのがあります→ amazon
  • arduino (本記事ではUNO)

作り方

  1. HC-SR04をサーボに対して直角に取り付ける
  2. 図の通りに配線する fritzing
  3. スケッチをarduinoにアップロードする

動作確認

$ cd <your_catkin_ws>/src
$ git clone https://github.com/atotto/ultrasonic_scanner.git
$ cd ..
$ catkin_make
$ roslaunch ultrasonic_scanner ultrasonic_scanner_demo.launch

demo.rviz

注意:

  • /dev/ttyUSB0 にパーミッションがない場合は sudo chmod 666 /dev/ttyUSB0 を実施してください

解説

arduinoでサーボを-90〜90の間を2度ずつ振り、90点のデータをシリアルでホストPCへ送信します。
ホストPCでarduinoからシリアルで送られてくるデータをROSのLaserScanのデータへ変換します。
(arduinoでROSSerialを使いたかったのですが、kineticのためかうまく動かせませんでした)
LaserScanデータを/scanトピックでpublishし、rvizを使って視覚化します。

センサをサーボで左右に振るため、スキャンの方向をLaserScanのヘッダ情報を反転することで左右どちらからのスキャンデータでも活用できるようにしています。
1スキャンに4sec程度かかります。チューニング次第ではもう少し速くなるかも?

LaserScan型を利用し、/scanトピックでpublishしているので、ROS上からはURGと同じように利用できます。

なんで作ったの?

ROS勉強してみた→せっかくだし自分で移動ロボットを組んでみよう→平面スキャナないとSLAMできないやん→LRF高い…→子供いるし安全な超音波の距離センサええやん→イマココ

独り言

LRF、なんで安くならないの。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした