TurtleBot3(Burger)で超音波センサーを使ってみる


TurtleBot3のシミュレーション環境で超音波測距センサーHC-SR04を使ってみます。

安価ですが障害物回避用などの距離測定によく使われるセンサーです。

表示用のcollada形式ファイル(hc-sr04.dae)は以下からダウンロードできます。

hc-sr04.zip

 

 

 

 

 

 

 

 

 

 

解凍後、以下のフォルダーにコピーしておきます。

/opt/ros/melodic/share/turtlebot3_description/meshes/sensors

 


シミュレーション環境でセンサーを使えるようにする

 

turtlebot3_burger.urdf.xacroファイルを読み書きできるようにしておき、開きます。

 

以下を追加

originのz値:高さは10cm以上を取らないと、有効な値を取得できないようです。

 

 

turtlebot3_burger.gazebo.xacroファイルを読み書きできるようにしておき、開きます。

 

以下を追加

HC-SR04はFoV(Field of View)超音波センサー(Ultrasonic / Ultrasound Sensor)なのでgazebo_ros_range(libgazebo_ros_range.so)Plugin を使ってみます。

音波を可視化する場合は、以下の<visualize>タグでtrueを設定

各パラメータの値は、すみません、出典を忘れてしまいました(ros.orgのどこかにあるはず)。

 

 


 

このターミナルではBurgerモデルを使うので、MODELを指定します。

青いパーツがセンサー

音波を可視化しています。

 

 

別ターミナル開いて、以下のコマンドでセンサーの値が配信されていることを確認

 

別ターミナルを開いて、以下のコマンドでBot3を移動して
障害物に接近すると距離に応じてセンサーのrange値が変化するのを確認します。

以下の3つの位置ではrangeの値が異なるのが分かります。

 


センサーの測定値を取得するためのPythonコードを作成します。

依存パッケージは、rospy、geometry_msgs、sensor_msgsの3つ。

topic のtype を確認

rostopic type /sensor/sonar_front
sensor_msgs/Range

rostopic type /cmd_vel
geometry_msgs/Twist

 

gazebo起動

 

別のターミナルでpython3 コンソールを開いて以下のコードを実行します。

sensor_valueに測定結果(m)

Twistのlinearが並進方向の速度(m/秒)、angularが軸回りの回転速度(rad/秒)

こんな感じ (夏場になると出てくる昆虫みたいです)

Bot3はごく単純なルールで動き回っていて、ターミナルにはHC-SR04と障害物との距離を表示しています。

途中で障害物を出し入れしてみます。

 


 

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*