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上图为正常运行效果。

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值