1.5.1 单线激光雷达使用

单线激光雷达的品牌型号琳琅满目,其中思岚A1激光雷达是一款性价比较高的单线激光雷达,本节将以此款为例介绍单线激光雷达的基本使用。

思岚A1激光雷达基本使用流程如下:

  1. 硬件准备;
  2. 软件安装;
  3. 启动并测试;

1.硬件准备

首先,在物理层面我们需要将激光雷达连接到机器人的控制系统。具体操作如下:

(1). 将开发套装中提供的信号连接排线分别与思岚A1模组及USB适配器 进行连接。思岚A1模组的对应接口插座位于模组的底部。

(2). 将USB适配器通过Micro-USB线缆与控制系统连接。如果控制系统已经启动,在USB线缆连接后,可以观测到思岚A1 底部的电源指示灯点亮,并且思岚A1开始转动。

然后,还需要保证上位机已经按照本教程第1.3.1节内容进行了USB端口设置(如果是使用底盘自带的上位机,那么已经默认进行了配置),上位机可以识别并操作外接的USB设备。

2.软件安装

注意:如果是使用底盘自带的上位机,该部分操作都已经默认实现。

进入工作空间的src目录,下载相关雷达驱动包,下载命令如下:

git clone https://github.com/Slamtec/sllidar_ros2.git

返回工作空间,调用colcon build编译即可。

另外,构建成功后,就可以使用雷达驱动包了,但是为了更方便的使用雷达,可以为雷达端口映射一个固定别名,相关的脚本无需自己编写,在下载好的功能包sllidar_ros2的scripts目录下已经提供了,终端下进入工作空间,执行如下指令:

cd src/sllidar_ros2/scripts #进入脚本所属目录
sudo cp rplidar.rules /etc/udev/rules.d
sudo service udev reload
sudo service udev restart

操作完毕之后,重新插拔USB设备,雷达的端口,将被映射到固定的别名:rplidar,该别名也可以通过修改rplidar.rules自行配置。执行完毕,可以通过如下指令查看映射结果:

ll /dev | grep ttyUSB

将输入如下结果:

3.启动并测试

(1)准备launch文件

在功能包的launch目录下,已经内置了不同类型的launch文件,在此我们使用sllidar_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.actions import LogInfo
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node


def generate_launch_description():
    serial_port = LaunchConfiguration('serial_port', default='/dev/ttyUSB0')
    serial_baudrate = LaunchConfiguration('serial_baudrate', default='115200') #for A1/A2 is 115200
    frame_id = LaunchConfiguration('frame_id', default='laser')
    inverted = LaunchConfiguration('inverted', default='false')
    angle_compensate = LaunchConfiguration('angle_compensate', default='true')

    return LaunchDescription([

        DeclareLaunchArgument(
            'serial_port',
            default_value=serial_port,
            description='Specifying usb port to connected lidar'),

        DeclareLaunchArgument(
            'serial_baudrate',
            default_value=serial_baudrate,
            description='Specifying usb port baudrate to connected lidar'),

        DeclareLaunchArgument(
            'frame_id',
            default_value=frame_id,
            description='Specifying frame_id of lidar'),

        DeclareLaunchArgument(
            'inverted',
            default_value=inverted,
            description='Specifying whether or not to invert scan data'),

        DeclareLaunchArgument(
            'angle_compensate',
            default_value=angle_compensate,
            description='Specifying whether or not to enable angle_compensate of scan data'),


        Node(
            package='sllidar_ros2',
            node_executable='sllidar_node',
            node_name='sllidar_node',
            parameters=[{'serial_port': serial_port, 
                         'serial_baudrate': serial_baudrate, 
                         'frame_id': frame_id,
                         'inverted': inverted, 
                         'angle_compensate': angle_compensate}],
            output='screen'),
    ])

由于我们已经为雷达映射了固定别名,所以可以将代码:

serial_port = LaunchConfiguration('serial_port', default='/dev/ttyUSB0')

修改为:

serial_port = LaunchConfiguration('serial_port', default='/dev/rplidar')

除此之外,参数frame_id也是一个较为重要的参数,大家需要根据具体需要动态修改,在此我们使用默认值即可。

(2)执行launch文件

终端工作空间下输入命令:

ros2 launch sllidar_ros2 sllidar_launch.py

执行成功后,将启动雷达驱动。

(3)查看结果

启动 rviz2,将FixedFrame设置为laser,添加LaserScan插件,并将插件的topic设置为/scan。在rviz2中将显示雷达扫描到的障碍物数据。

results matching ""

    No results matching ""