ROS2 FoxyでURGを使う


ROS2 Foxyで北陽電機のLiDAR URG-04LX-UG01を使用する手順です。

URG-04LX-UG01
https://www.hokuyo-aut.co.jp/search/single.php?serial=17

urg_nodeのインストール

$ sudo apt update
$ sudo apt install ros-foxy-urg-node

実行

URGをUSBケーブルでPCに接続します。

ターミナルを開いて以下を実行し、デバイスに権限を付与

$ sudo chmod 777 /dev/ttyACM0

以下でurg_nodeを実行

$ ros2 run urg_node urg_node_driver --ros-args -p serial_port:=/dev/ttyACM0

別のターミナルで以下を実行し、/scanトピックが出ていればOK

$ ros2 topic echo /scan

データの可視化

別のターミナルを開いてrviz2を起動

$ rviz2

Fixed Framelaserに設定

左下のAddボタンをクリック
一覧からLaserScanを選択してOKをクリック

/scanの点が表示されれば成功

launchファイルから実行

設定をyamlファイルで記述してlaunchファイルから起動する方法

ワークスペース以下に適当にパッケージを作成

$ cd ~/ros2_ws/src
$ ros2 pkg create urg

設定ファイルとlaunchファイルを置くディレクトリを作成

$ cd urg
$ mkdir launch config

configディレクトリ以下に以下の設定ファイルを作成

urg.yaml
urg_node:
  ros__parameters:
    angle_max: 3.14
    angle_min: -3.14
    serial_port: /dev/ttyACM0
    serial_baud: 115200
    laser_frame_id: "laser"
    calibrate_time: false
    default_user_latency: 0.0
    diagnostics_tolerance: 0.05
    diagnostics_window_time: 5.0
    error_limit: 4
    get_detailed_status: false
    publish_intensity: false
    publish_multiecho: false
    cluster: 0
    skip: 1

launchディレクトリ以下にlaunchファイルを作成

urg_launch.py
import os

from ament_index_python.packages import get_package_share_directory

from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    ld = LaunchDescription()

    param_file = os.path.join(
            get_package_share_directory('urg'), 'config',
            'urg.yaml')
    print(param_file)
    hokuyo_node = Node(
        package='urg_node', node_executable='urg_node_driver', output='screen',
        parameters=[param_file]
        )

    ld.add_action(hokuyo_node)
    return ld

CMakeLists.txtに以下を記述

CMakeLists.txt
install(
  DIRECTORY launch config
  DESTINATION share/${PROJECT_NAME}
)

ビルドして実行

$ cd ~/ros2_ws
$ colcon build
$ source install/setup.bash
$ ros2 launch urg urg_launch.py

参考