ROS2 Galactic에서 YDLIDAR 사용

11712 단어 ROS2galacticYDLidarROS

개요



YDLIDAR의 ROS2 패키지를 사용하여 Galactic에서 YDLIDAR를 이동하는 방법에 대한 메모

운영 환경



OS: ubuntu20.04.3LTS
YDLIDAR : YDLiDAR X2
ROS2 : Galactic

YDLidar SDK 설치



이 리포지토리에서 YDLidar-SDK를 복제하여 설치
$ cd 
$ git clone https://github.com/YDLIDAR/YDLidar-SDK
$ cd YDLidar-SDK/build
$ cmake ..
$ make
$ sudo make install

YDLIDAR ROS2 Driver 설치



작업 공간 만들기
$ cd
$ mkdir -p ~/ydlidar_ros2_ws/src

ROS2 패키지 설치
$ cd ~/ydlidar_ros2_ws/src
$ git clone https://github.com/YDLIDAR/ydlidar_ros2_driver
$ cd ~/ydlidar_ros2_ws
$ colcon build --symlink-install

설정 파일 ydlidar.yaml 수정


ydlidar_ros2_driver/params 에 있는 ydlidar.yaml 를 사용하는 YDLiDAR 에 맞게 변경한다.

다음은 YDLiDAR X2의 예

ydlidar.yaml
ydlidar_ros2_driver_node:
  ros__parameters:
    port: /dev/ttyUSB0
    frame_id: laser_frame
    ignore_array: ""
    baudrate: 115200
    lidar_type: 1
    device_type: 0
    sample_rate: 3
    abnormal_check_count: 4
    resolution_fixed: true
    reversion: false
    inverted: true
    auto_reconnect: true
    isSingleChannel: true
    intensity: false
    support_motor_dtr: true
    angle_max: 180.0
    angle_min: -180.0
    range_max: 12.0
    range_min: 0.1
    frequency: 10.0
    invalid_range_is_inf: false

파라미터는 YDLiDAR의 ROS 패키지에 있는 launch 파일의 rosparam의 값을 참조했다

launch 파일 변경



Python launch 파일을 Galactic에서 작동하도록 변경합니다.

변경점
· node_namespace = '/', 코멘트 아웃
node_executable , node_name 를 각각 executable , name 로 변경
· ydlidar_ros2_driver 시작 LifecycleNodeNode로 변경

ydlidar_launch_view.py
#!/usr/bin/python3
from ament_index_python.packages import get_package_share_directory

from launch import LaunchDescription
from launch_ros.actions import LifecycleNode
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch.actions import LogInfo

import lifecycle_msgs.msg
import os

def generate_launch_description():
    share_dir = get_package_share_directory('ydlidar_ros2_driver')
    rviz_config_file = os.path.join(share_dir, 'config','ydlidar.rviz')
    parameter_file = LaunchConfiguration('params_file')
    node_name = 'ydlidar_ros2_driver_node'

    params_declare = DeclareLaunchArgument('params_file',
                                           default_value=os.path.join(
                                               share_dir, 'params', 'ydlidar.yaml'),
                                           description='FPath to the ROS2 parameters file to use.')

    driver_node = Node(package='ydlidar_ros2_driver',
                                executable='ydlidar_ros2_driver_node',
                                name='ydlidar_ros2_driver_node',
                                output='screen',
                                emulate_tty=True,
                                parameters=[parameter_file],
                                #node_namespace='/',
                                )
    tf2_node = Node(package='tf2_ros',
                    executable='static_transform_publisher',
                    name='static_tf_pub_laser',
                    arguments=['0', '0', '0.02','0', '0', '0', '1','base_link','laser_frame'],
                    )
    rviz2_node = Node(package='rviz2',
                    executable='rviz2',
                    name='rviz2',
                    arguments=['-d', rviz_config_file],
                    )

    return LaunchDescription([
        params_declare,
        driver_node,
        tf2_node,
        rviz2_node,
    ])

실행



YDLiDAR을 PC에 연결하여 실행 권한 부여
$ sudo chmod 777 /dev/ttyUSB0

rviz2에 표시하는 launch 실행
$ source ~/ydlidar_ros2_ws/install/setup.bash
$ ros2 launch ydlidar_ros2_driver ydlidar_launch_view.py

그대로는 점 구름이 표시되지 않으므로 rviz2의 LaserScan, Topic의 Reliability Policy 항목을 System Default에서 Best Effort로 변경



rviz2에 점군이 표시된다.



참고

좋은 웹페이지 즐겨찾기