前提条件と環境準備
本手順では、Ubuntu 22.04 LTS上に構築済みの ROS2 Humble 環境に対し、YDLIDAR Tmini Pro LiDAR センサーのドライバーおよび SDK を組み込む方法を説明します。開発作業を開始する前に、以下の環境が整っていることを確認してください。
- オペレーティングシステム:Ubuntu 22.04
- ロボットミドルウェア:ROS2 Humble Hawksbill
- 開発ツールチェーン:Git、Python3、Pip
1. YDLidar-SDK のビルドとインストール
まず、ハードウェアレベルの通信プロトコルをサポートする SDK をコンパイルしてシステムに導入します。以下コマンドで依存パッケージをインストールし、ソースコードからビルドを行います。
sudo apt update
sudo apt install cmake pkg-config libusb-1.0-0-dev
sudo apt-get install python3-pip swig python3-setuptools
# ソース取得(ワークスペースを作成)
cd ~/workspace
mkdir -p sdk_build && cd sdk_build
# リポジトリクローン
git clone https://github.com/YDLIDAR/YDLidar-SDK.git
cd YDLidar-SDK
mkdir build && cd build
# CMake構成とコンパイル
cmake ..
make -j$(nproc)
# システムへのインストール
sudo make install
C++ コンパイル後は、Python ラッパーをインストールする必要があります。
cd ~/workspace/sdk_build/YDLidar-SDK
pip3 install .
インストール完了後に、Python インタラクティブモードにてモジュール読み込みテストを実行してください。エラーが発生せずインポートできれば正常です。
python3
>>> import ydlidar
>>> exit()
2. USB ポートアクセス権限の設定
LiDAR は通常シリアルポート経由で接続されます。現在のユーザーアカウントがシリアライズデバイス(dialout グループ)へアクセスできるよう設定します。
# ユーザーグループの追加
sudo usermod -aG dialout $USER
# 変更を有効化するためリブート(またはログアウト)してください
sudo reboot
再起動後、以下コマンドで所属グループを確認します。
id
出力結果に dialout が表示されていることを確認します。
3. SDK ハードウェア検証
ROS 側の実装を行う前に、純正 SDK コマンドラインツールで物理デバイスの検知状態を確認します。
cd ~/workspace/sdk_build/YDLidar-SDK/build
./tri_test
画面の指示に従い、デバイスパス(例:/dev/ttyUSB0)および通信速度を選択します。Tmini Pro では一般的に 230400 ボーレートを使用します。
4. ROS2 ドライバーの構築
WS データ構造に基づいて ROS2 パッケージを作成します。Humble ブランチを対象としているため、リポジトリのバージョン管理を適切に行う必要があります。
cd ~/workspace
mkdir -p ros_project/src
cd ros_project/src
# ROS2 ドライバーの取得
git clone -b humble https://github.com/YDLIDAR/ydlidar_ros2_driver.git
cd ../..
# 依存関係解決とビルド
colcon build --symlink-install
注意点: ビルド時にエラーが発生する場合は、driver パッケージのリポジトリブランチが不安定な場合があります。その際は再度チェックアウトし直します。
cd ~/workspace/ros_project/src/ydlidar_ros2_driver
git checkout humble
cd ../..
rm -rf build/ install/ log/
colcon build --symlink-install
5. ロボットパラメータ定義
センサー固有のプロパティ(フレームID、検出距離範囲など)を設定するためのファイルを用意します。
パラメータ設定:
ydlidar_ros2_driver/params ディレクトリ内で Tmini_spec.yaml ファイルを生成し、以下の内容を追加します。
ydlidar_ros2_driver_node:
ros__parameters:
port: /dev/ttyUSB0
frame_id: lidar_base_link
baudrate: 230400
lidar_type: 1
device_type: 0
sample_rate: 4
range_max: 16.0
range_min: 0.02
angle_max: 180.0
angle_min: -180.0
frequency: 6.0
# その他の設定項目は標準設定に従ってください
inverted: true
reversion: true
fixed_resolution: true
起動ファイル作成:
同様に launch ディレクトリに scan_launch.py を作成します。変数名や内部ロジック構造を一部変更しています。
#!/usr/bin/env python3
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
def generate_launch_description():
base_pkg_path = get_package_share_directory('ydlidar_ros2_driver')
param_config = DeclareLaunchArgument(
'config_path',
default_value=os.path.join(base_pkg_path, 'params', 'Tmini_spec.yaml'),
description='Load parameter configuration file'
)
return LaunchDescription([
param_config,
Node(
package='ydlidar_ros2_driver',
executable='ydlidar_ros2_driver_node',
name='sensor_node',
parameters=[LaunchConfiguration('config_path')]
),
Node(
package='tf2_ros',
executable='static_transform_publisher',
name='tf_sensor_pub',
arguments=['0', '0', '0.05', '0', '0', '0', 'base_link', 'lidar_base_link']
)
])
6. 開発環境の自動化設定
次回セッションから環境変数が自動ロードされるように設定を永続化します。
echo "source ~/workspace/ros_project/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
7. システム稼働と可視化
新しいターミナルを開き、定義した Launch ファイルを実行します。
cd ~/workspace/ros_project
ros2 launch ydlidar_ros2_driver scan_launch.py
同時に別のターミナルで Rviz2 を起動し、点群データの状態を確認できます。
rviz2 -d ~/workspace/ros_project/src/ydlidar_ros2_driver/config/ydlidar.rviz
Rviz 上で点クラウドが表示されれば、通信経路は確立されています。必要に応じて以下のコマンドで公開されているトピックを確認してください。
ros2 topic list | grep laser
ros2 topic echo /laser_scan