ROS2驱动ydlidar激光雷达(以及驱动时的各种坑)

工具

Ubuntu 20.04 ROS2 Foxy;
(2020 ROS暑期学校白嫖来的)ydlidar X2L激光雷达(实际上适用于所有ydlidar激光雷达);

按部就班官网操作

github:https://github.com/YDLIDAR/ydlidar_ros2_driver

接下来基本上都是照着官方操作走:

下载并处理官方驱动

从github上下载驱动功能包:

git clone https://github.com/YDLIDAR/ydlidar_ros2_driver.git ydlidar_ros2_ws/src/ydlidar_ros2_driver

工作空间名可以换成自己的工作空间,也可以下载下来之后把功能包手动复制到自己的工作空间。

编译功能包:

cd ydlidar_ros2_ws
colcon build --symlink-install

如果编译成功应该出现如下信息:(这里我忘截图了借的官方的图)
编译成功
可以跳过下一步骤;

若出现如下信息:编译错误那么就需要先安装 YDLIDAR/YDLidar-SDK.

安装YDLIDAR/YDLidar-SDK

sudo apt install cmake pkg-config
sudo apt install python swig
sudo apt install python3-pip

git clone https://github.com/YDLIDAR/YDLidar-SDK.git
cd YDLidar-SDK/build
cmake …
make
sudo make install

插上激光雷达,运行:

./ydlidar_test

雷达测试嗯?报错?
暂时先不管,好歹系统识别到雷达了,咱的目的也不是完成测试。我们继续。

环境配置

回到工作空间,重新编译功能包,然后设置路径:

. install/setup.bash

修改串口名:

chmod 0777 src/ydlidar_ros2_driver/startup/*
sudo sh src/ydlidar_ros2_driver/startup/initenv.sh

若运行 sudo sh src/ydlidar_ros2_driver/startup/initenv.sh 时出现如下报错,记得插上激光雷达:
报错1完成上述步骤之后,重新插拔雷达。

踩坑

又到了我们喜闻乐见的改Bug环节(乐)

运行launch文件进行测试:

ros2 launch ydlidar_ros2_driver ydlidar_launch.py

要是你运行完这行命令没有任何问题的话,恭喜你,可以关掉这篇文章了

但是通常咱会碰到如下一系列问题:

1

坑1
不把终端窗口最大化看的我眼睛疼…

回到正题,咱只看和我们有关系的那一行报错:

检查1
从出现咱的用户名那行开始,到中间那行结束,可以得知是 ydlidar_launch.py 出了问题,原因是:
RuntimeError: Passing both ‘node_namespace’ and ‘namespace’ parameters. Only use ‘namespace’.

简单翻译一下就是我们没有使用 node_namespace 这个参数。

我们打开 ydlidar_launch.py 看一看(只看报错的第38行):

    driver_node = LifecycleNode(package='ydlidar_ros2_driver',
                                node_executable='ydlidar_ros2_driver_node',
                                node_name='ydlidar_ros2_driver_node',
                                output='screen',
                                emulate_tty=True,
                                parameters=[parameter_file],
                                node_namespace='/',
                                )

果然有一个 node_namespace=’/’, 咱把这行注释掉或者删除,保存文件,再次运行launch文件。

2

坑2再次运行后,不出意外的话会出现如上报错。(好家伙…)

省略我痛苦的心路历程:
打开驱动功能包下的 details.md 和功能包下params文件夹内的 ydlidar.yaml 文件,将ydlidar.yaml文件中的参数照着details.md文件中对应雷达型号的参数进行修改即可。

如果你用的也是X2L,可以直接复制我的ydlidar.yaml文件:

ydlidar_ros2_driver_node:
  ros__parameters:
    port: /dev/ydlidar
    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: 64.0
    range_min: 0.10
    frequency: 8.0
    invalid_range_is_inf: false

修改完毕之后,再次运行launch文件:
正常

3

Rviz:

ros2 launch ydlidar_ros2_driver ydlidar_launch_view.py

按道理运行完这一行之后会遇到与坑1相同的报错,处理方法和1类似:打开 ydlidar_launch_view.py ,找到39行,注释或者删除对应的 node_namespace 参数即可。
rviz上图为正常运行效果。

### 使用 YDLIDAR 激光雷达进行 SLAM 建图 #### 准备工作 为了使用 YDLIDAR 激光雷达进行 SLAM 建图,需要准备如下硬件和软件环境: - **操作系统**: Ubuntu 20.04 LTS 推荐作为稳定的操作平台[^3]。 - **激光雷达设备**: 如 EAI 的 YDLIDAR-X4 或者其他兼容 ROS 的型号。 - **计算机配置**: 需要一台能够运行 ROS Noetic 和相关依赖包的电脑。 #### 安装必要的软件包 确保已经安装了 ROS Noetic 版本,并设置好对应的源。接着按照以下步骤来安装所需的库文件: ```bash sudo apt-get update sudo apt-get install ros-noetic-cartographer-ros ros-noetic-ydlidar-ros-driver ``` 对于 Cartographer 库的手动编译方式可参照特定指南完成克隆仓库、创建构建目录并执行 CMake 构建命令等一系列操作[^4]。 #### 启动激光雷达驱动节点 启动之前确认连接好了 USB 设备并且赋予读写权限给用户组。之后可以通过下面这条指令开启 YDLIDAR: ```bash roslaunch ydlidar lidar.launch ``` 这一步骤会加载默认参数并将话题发布出去供后续模块订阅使用[^2]。 #### 修改 TF 变换关系 为了让系统识别正确的坐标系转换,在配置文件中调整 `tracking_frame` 和 `published_frame` 参数为 `laser_frame` ,从而匹配实际使用的帧名。 #### 执行 SLAM 流程 当一切准备工作完成后就可以正式开始 SLAM 实验了。Cartographer 提供了一个方便快捷的方式来进行此过程——只需调用预先定义好的 launch 文件即可: ```bash roslaunch cartographer_ros demo_backpack_2d.launch \ bag_filename:=<your_bag_file> use_sim_time:=false \ load_state_filename:="" save_map_filename:="" ``` 注意替换 `<your_bag_file>` 成具体的路径地址;如果不涉及离线处理则留空该项。 以上就是利用 YDLIDAR 激光雷达示范性的 SLAM 工作流程介绍。希望这些信息能帮助理解整个过程中的要点和技术细节。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值