えいあーるれいの技術日記

技術系を中心にした日記です

接近物体を大雑把に検出するプログラム(Foxy + URG)

 2輪駆動足回りの開発記録(4月13日〜5月13日の1ヶ月間) - えいあーるれいの技術日記の4月29日の進捗の詳説です。

 見て分かる通り、接近物体が大体どの位置にあるのかを把握するだけのプログラムです。Lidarを用いた演習にも使えると思っています。

 リポジトリはこちら

github.com

 ここではリポジトリの内容について簡単に解説します。

プログラムの構成

 このシステムは主に次の3つのノードで構成されています。

  • UST-20LX (10LX) を起動するノード
  • 物体との位置と距離を定義ファイル(warning_level.h)に基づいて判断して危険度と位置を発信するノード
  • 受信した危険度と位置をもとにGUI表示を行うノード

 危険度と位置はInt32MultiArrayで送受信を行います。

dist_lidar.cpp(LaserScan->Int32MultiArray)の概要

 UST-20LXから受信したLaserScanを変換する作業ですが、細かく解説するよりも次の図を見たほうが分かりやすいと思います。

f:id:Ray_ar:20210515155629p:plain

 前方に3方向の位置判定があり、距離によって3種類の判定(無反応合わせて合計4種類)があります。1つの領域につきオブジェクトの個数に関わらず、最短の値が参照されて危険度となります。

 この情報をもとに前進時の衝突可能性判定に使おうと思います。Int32MultiArrayなので、3方向だと物足りない場合は5段階にも7段階にでもできます。

依存関係

 このプログラムを動かすときに必要な環境を記載します。

  • ROS2 Foxy
  • URG-Node (HOKUYO UST-10LX / UST-20LX)
  • OpenCV4 (For GUI)

インストール

$ sudo apt install ros-foxy-urg-node
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/src
$ git clone https://github.com/Ar-Ray-code/dist_lidar.git
$ source /opt/ros/foxy/setup.bash
$ cd ~/ros2_ws
$ colcon build --symlink-install

実行

$ source /opt/ros/foxy/setup.bash
$ source ~/ros2_ws/install/local_setup.bash
$ ros launch dist_lidar dist_lidar_example.launch.py