YDLIDAR TG15をROS2 Humbleで動かしてみる
TG15は、YDLIDAR製で360°をスキャン可能な2Dの距離計です。本体内部が回転して周囲15 mまでの点群データを出力します。
この記事では、主に初めてLiDARセンサやROS2に触れる方向けにROS2のインストールからRvizでの点群表示までの操作について説明します。既にLiDARやROS2に親しまれている方には冗長な説明かと思いますが、適宜飛ばしながらお読みください。
6/21から7/4まで、YDLIDAR製品のスポットセールを実施いたします。またそれに合わせてブランド特設ページも作成しましたので、この機会にぜひ、ご検討ください。
目次
1. 計測してみる
2. ROS2 Humbleのインストール
3. LiDARセンサのパッケージをダウンロードする
4. テストプログラムの実行
5. プログラムの修正
6. パッケージのビルド・実行
1. 計測してみる
センサを動かしているところから紹介します。実際にスイッチサイエンスのオフィス内で点群を集めてみました。
まずはエントランスから
周囲の壁が白色ということもあってか、とても綺麗に点群が表示されています。他にも点群を取ってみます。
通路や壁、商品棚などが点群として表示されていることが分かります。
次に、TG15がどの程度の距離まで計測できるのか試してみます。仕様上は最大15 mまで測定できることになっていますが、実際はどうなのでしょうか。
まず、廊下の奥の壁から5 mおきに15 mまで養生テープで印をつけます。
それぞれの場所にセンサを持っていきます。まずは5 mから。
画像上側の一本線が廊下奥の壁です。さすがに5 mは余裕を感じます。
続いて10 m。
10 mも問題なさそうです。今度は15 m。仕様上の最高値ですが、どうでしょうか?
15 mでもちゃんと測れていそうです。ここからさらに1 mずつ下がってみます。
16 mでも検知できています。更に1 m下がって17 m。
ここでついに壁の検知ができなくなりました。
今回はテストプログラムをそのまま実行して結果を表示していますので、ご自身でフィルタをかけるなどすれば更に精度の高い結果を得ることができると思われます。
動作の様子を撮影した動画がこちらです。
2. ROS2 Humbleのインストール
ここからは、テストプログラムを実行するために踏んだ手順や環境の構築についてご説明します。
今回は、ロボットなどへの応用が容易なROS2で動作を行いました。
使用したソフトウェアのバージョンは下記の通りです。
ソフトウェアバージョン
OS | Ubuntu 22.04.2 LTS (Jammy) |
ROS | ROS2 Humble |
ROS2には複数のバージョンが存在し、それぞれで対応しているOSのバージョンが異なります。今回使用しているUbuntu 22.04に対応しているROS2のバージョンは「Humble Hawksbill(以下、Humble)」なので、「Humble」を使用しました。(修正しました、ご指摘いただいた方ありがとうございました)
はじめに、以下のコマンドをターミナルに入力し、aptリポジトリの追加、ROS2のGPGキーの取得とリポジトリのsource listへの追加を行います。
-----------------------------------------------------------------------------------------------
sudo apt update && sudo apt install curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
-----------------------------------------------------------------------------------------------
update、upgradeをします。
-----------------------------------------------------------------------------------------------
sudo apt update
sudo apt upgrade
-----------------------------------------------------------------------------------------------
次に、ROSとros-dev-tools(開発ツール)をインストールします。
-----------------------------------------------------------------------------------------------
sudo apt install ros-humble-desktop
sudo apt install ros-dev-tools
-----------------------------------------------------------------------------------------------
インストールが終わったら、sourceコマンドを用いて環境変数設定用のスクリプトに変更を反映します。
-----------------------------------------------------------------------------------------------
source /opt/ros/humble/setup.bash
-----------------------------------------------------------------------------------------------
これでROS2のインストールは完了です。
3. LiDARセンサのパッケージをダウンロードする
YDLIDAR公式のGitHubリポジトリから、git cloneコマンドでROS2向けセンサドライバをROS2のワークスペースに追加します。
-----------------------------------------------------------------------------------------------
git clone https://github.com/YDLIDAR/ydlidar_ros2_driver.git
-----------------------------------------------------------------------------------------------
次に、SDKを先程ダウンロードしたパッケージディレクトリの内部にYDLiDAR公式ページからダウンロードします。
公式ページURL:https://www.ydlidar.com/service_support/download.html
ダウンロードが終わったら、cmakeとpython3の開発環境をインストールします。これは、この後動かすLiDARのメインプログラムがC++、launcherのプログラムがpythonでそれぞれ記述されているためです。
-----------------------------------------------------------------------------------------------
sudo apt install cmake pkg-config
sudo apt-get install swig
sudo apt-get install python3-pip
git clone https://github.com/YDLIDAR/YDLidar-SDK.git
mkdir YDLidar-SDK/build
cd YDLidar-SDK/build
cmake ..
make
sudo make install
cd YDLidar-SDK
pip install .
-----------------------------------------------------------------------------------------------
以上のコマンドを実行すると、/YDLiDAR-SDK/build内にテストプログラムが生成されます。
TG15本体とUSBケーブルをUSBアダプターに接続します。今回はPCで動作させるので、USBケーブルをUSBアダプターの「Data」コネクタに接続します。
これらをPCに接続したら、LiDARセンサを接続するUSBポートに権限を付与します。以下のコマンドを入力してUSBデバイス名を確認します。
-----------------------------------------------------------------------------------------------
ls -la /dev/ttyUSB*
-----------------------------------------------------------------------------------------------
私の場合はtty/USB0だったので、このポートを指定して権限を付与します。
-----------------------------------------------------------------------------------------------
sudo chmod 777 /deb/tty/USB0
-----------------------------------------------------------------------------------------------
4. テストプログラムの実行
ここまで完了したら、/YDLiDAR-SDK/build内に生成されたテストプログラムを実行します。
-----------------------------------------------------------------------------------------------
cd YDLidar-SDK/build
./tri_test
-----------------------------------------------------------------------------------------------
テストプログラムが起動しました。LiDARセンサを接続しているポート番号を入力します。ここでは、1を入力します。
Baudrateを選択します。TG15のBaudrateは512000 bpsなので、6を入力します。
one-way scanは「no」を選択し、スキャン周波数は10 Hzとしました。
無事にセンサが動きました。
5. プログラムの修正
ROS2 Humbleでは、パッケージをビルドする前にプログラムの修正が必要になります。
ダウンロードしたパッケージディレクトリydlidar_ros2_driver内の/src/ydlidar_ros2_driver_node.cppにおいて、変数型を関数名と引数の間に置かないとエラーが発生してプログラムを実行できませんので、この箇所の修正が必要です。修正内容は、
修正前(例): node->declare_parameter("fixed_resolution");
修正後(例): node->declare_parameter<bool>("fixed_resolution");
上記のように、関数名と引数の間に型を書く、というものです。型キャストして引数を渡さないといけないのか何なのか、詳細はよくわかりませんが、これを変えるとうまくプログラムが動くようになります。ご存知の方がいらっしゃいましたらお教えくださいますと幸いです。
この変更を該当するすべての箇所について行います。
各変数の型は、パッケージディレクトリ直下にあるREADMEに記載されていますので、それを参考にして該当箇所に型を記述しました。(YDLiDAR公式のGithubでも同じものを見ることができます。)
URL: https://github.com/YDLIDAR/ydlidar_ros2_driver
同様に、設定ファイルとlaunchファイルについても修正が必要な箇所があります。
まず設定ファイル~/ydlidar_ros_driver/param/ydlidar.yamlについて、使用するセンサと条件に合わせて以下のように変更を加えます。
次に、launchファイル~/ydlidar_ros2_driver/launch/ydlidar_launch_view.pyに変更を加えます。変更点は以下の3つです。
・45行目のnode_namespace='/', をコメントアウトする
・40、41、48、49、53、54行目にあるnode_executableとnode_nameをexecutableとnameに変更する
・「LifecycleNode」を「Node」に変更する
これが終わったら~/ydlidar_ros2_driverへ戻って、変更を反映します。
-----------------------------------------------------------------------------------------------
source ~/ydlidar_ros2_driver/install/setup.bash
-----------------------------------------------------------------------------------------------
6. パッケージのビルド・実行
ここまでの作業が終わったら、いよいよパッケージをビルド、実行します。
-----------------------------------------------------------------------------------------------
colcon build
ros2 launch ydlidar_ros2_driver ydlidar_launch_view.py
-----------------------------------------------------------------------------------------------
LiDARセンサが動作を始めました。
LiDARセンサが動作を始めると、Rvizのウィンドウが開きます。
RvizのDisplaysにある、LaserScan>Topic>Reliability PolicyをBest Effortに変更すると、点群が表示されるようになります。
以上、YDLIDAR TG15のROS2 Humbleによる動作についてご紹介いたしました。このTG15を含むYDLIDAR製品は、6/21から7/4までスポットセールを実施いたします。ぜひこの機会にYDLIDARのLiDARセンサの導入をご検討ください。最後までお読みいただき、ありがとうございました。