一、编译lsx10包
1.复制lsx10包到工作空间src中(作者使用雷达用于阿克曼小车,故放在阿克曼的工作区间里面)
2.运行终端并编译
运行以下命令安装依赖
sudo apt-get install libpcap-dev
然后返回工作空间的根目录并在该目录下打开一个终端,先执行
catkin_make -DCATKIN_WHITELIST_PACKAGES=lslidar_msgs
命令先编译msgs,然后执行
catkin_make -DCATKIN_WHITELIST_PACKAGES=lslidar_driver
编译driver功能包。
二、安装雷达驱动CH9102
1.链接:https://github.com/WCHSoftGroup/ch343ser_linux
点击右上角code,下载资源包并解压。
2.移除 cdc_acm 模块
运行 lsmod | grep cdc_acm 检查是否有加载 cdc_acm 模块,此模块一般为 Linux 自带模块,可用于注册相应 USB 设备驱动等。如果显示已加载到内核的模块有 cdc_acm,则运行 sudo rmmod cdc_acm 先将其 rmmod,如果未显示相应模块则无需 rmmod。
3.安装驱动
在 资源包的driver 路径下终端输入 make 根据文件夹内的编译规则对.c 文件进行 编译,会相应生成.ko 等文件:
完成编译后需要将模块载入:
sudo make load
模块载入后再将文件安装到指定位置:
sudo make install
为了方便后续系统启动会自动加载 ch343.ko,需要在/etc/modules 文件里加 入 ch343 在终端输入:
sudo gedit /etc/modules
新增 ch343 在最后一行后保存并退出重启系统(reboot),则系统会默认自动加载 ch343 驱动,重启后在终端输入命令查看是否自动加载:
lsmod | grep ch343
三、驱动 N10 雷达
1.将雷达连接至 Ubuntu 系统,在终端输入命令可查看设备已识别成 ttyCH343USB。(作者此截图已经是更改完后的串口号,如:ttyCH343USB0改名为wheeltec_lidar)
ll /dev | grep ttyCH343USB
2.配置 N10 ROS 驱动包
这里我用 vscode 打开 N10 的 ROS 包,方便查看文件目录结构和文件内容。我们打开
lsx10/lslidar_driver/launch 文件夹下的 lslidar_serial.launch 进行查看,这个 launch 文件也是我们之后要运行的启动雷达的文件。
用 lslidar_serial.launch 开启 N10 雷达前需要先确认雷达在 ubuntu 中的串口。 我们可以通过 ll /dev/|grep ttyCH343USB 命令查看。一般情况下串口名为 ttyCH343USB。这里我通过创建串口别名将其串口名重映射为 wheeltec_lidar 。
注意:修改两处“N10”和“wheeltec_lidar”。
<param name="lidar_name" value="N10"/> #雷达选择:M10 M10_P M10_PLUS M10_GPS N10 N10_P L10
<param name="serial_port" value="/dev/wheeltec_lidar"/> #雷达连接的串口
3.启动雷达
命令:
roslaunch lslidar_driver lslidar_serial.launch
4.查看雷达数据:
通过rostopic info /scan命令可以查看到scan话题的发布和订阅
(1)文本形式数据:(终端输入)
rostopic echo /scan
(2)点云图像形式:(通过rviz查看)
rviz
打开rviz后,更改Fixed Frame的值为下图中"frame_id"对应的值"laser"
点击Rviz左下角 Add,添加下图中的LaserScan,点击ok。
原神,启动!
四、报错
报错1:ch341在linux下安装驱动sudo make load失败:insmod: ERROR: could not insert module ch341.ko:
原因:系统安全设置导致签名不能通过验证
解决办法:
1.安装Mokutil。
sudo apt-get install mokutil
2.启动Mokutil。
sudo mokutil –disable-validation
3.设置密码八个零:00000000 (因为后面需要你输入八位密码的第几位)
4.终端输入reboot,重启进入mok manager界面,进入界面后找到Change Secure Boot state
输入密码,选择YES!!!最后选择reboot。
5.继续执行sudo make load。
报错2:[ WARN] [1721015337.793025908]: open_port /dev/wheeltec_lidar ERROR ! [lslidar_driver_node-2] process has finished cleanly log file: /home/liu/.ros/log/29da8f18-425d-11ef-b7b0-5f725174946a/lslidar_driver_node-2*.log
原因:按照提示发现在计算机/dev目录下,我们没有这个串口没有更为wheeltec_lidar串口,它依然叫做ttyCH343USB0,所以我们需要对它进行修改串口别名。
更新原因:雷达转接模块坏了,但下面的方法一在多设备多串口情况改串口别名可以使用
解决办法: 方法一:
确认N10 雷达在 ubuntu 中的串口,通过 ll /dev/|grep ttyCH343USB 命令查看,一般情况下串口名为ttyCH343USB0,这里我通过创建串口别名将其串口名重映射为 wheeltec_lidar 。
(1)通过以下命令查看ttyCH343USB0的KERNELS硬件端口号
udevadm info –attribute-walk –name=/dev/ttyCH343USB0
在第三个looking at下有一个KERNELS==“1-10.2.4”,记住它。
(2)在/etc/udev/rule.d 下产生相应的规则文件
首先,通过以下命令创建规则文件:
sudo gedit /etc/udev/rules.d/usb.rules
在打开的文本框里输入以下代码,保存退出:
KERNELS=="1-10.2.4", MODE:="0777", GROUP:="dialout", SYMLINK+="wheeltec_lidar"
通过以上两步,就把ttyCH343USB0取别名为 wheeltec_lidar ,以后在程序里直接访问 wheeltec_lidar ,就可以与这个设备通信了。
(3)运行以下命令使修改立即生效:
sudo udevadm trigger
结果:最后一行已经出现了我们需要的串口wheeltec_lidar。
继续启动雷达,执行命令: roslaunch lslidar_driver lslidar_serial.launch
显示ok,成功!
方法二:
给串口加权限
sudo chmod a+rw /dev/wheeltec_lidar
(个别人可能能行)
评论前必须登录!
注册