科力雷达Lidar使用指南

本文涉及的产品
资源编排,不限时长
简介: 本文是科力2D激光雷达Lidar的使用指南,包括了雷达的安装、编译、IP配置、上位机软件使用、ROS节点运行、参数配置、官方文档和软件资源链接,以及雷达通讯建立失败等问题的解决方案。适用于Ubuntu20.04(x86) PC和Ubuntu20.04(Arm) Nvidia Orin环境。

科力2D Lidar使用指南

作者: Herman Ye @Galbot @Auromix
版本: V1.0
测试环境: Ubuntu20.04(x86) PC 以及 Ubuntu20.04(Arm) Nvidia Orin
更新日期: 2023/11/11
注1: 本文内容中的硬件由 @Galbot 提供支持。
注2: @Auromix 是一个机器人爱好者开源组织。
注3: 本文在更新日期经过测试,确认有效。
注4: 本文中直接引用科力官方文档的部分内容,版权为科力所有。

Quickstart Guide

1.安装及编译

# Go to your workspace src
cd ~/galbot_ws/src
# Download latest package (Warning@HermanYe: bugs exist.)
git clone https://gitee.com/keli_tech31/sdkeli_ls_udp.git
# Set permissions for directory
sudo chmod 775 -R sdkeli_ls_udp
# Install dependencies
cd ~/galbot_ws
rosdep install --ignore-src --from-path src --rosdistro noetic -y
# Build rm_msgs and galbot_ros_interfaces(Info@HermanYe: Only if you use galbot_ros and realman arm)
catkin_make --pkg rm_msgs
catkin_make --pkg galbot_ros_interfaces
# Build the workspace
catkin_make

2.IP配置

雷达设备的默认网络信息为:

Device Address Netmask Gateway
Keli Lidar 192.168.0.1 255.255.255.0 192.168.1.1

若不修改IP,则只需要将本机的以太网连接信息更改为和雷达同一网段

Device Address Netmask Gateway
My computer 192.168.0.233 255.255.255.0 192.168.1.1

通过ping进行测试

ping 192.168.0.10

使用上位机修改雷达IP

修改雷达IP到需要使用的网段,此处设定雷达IP为192.168.1.25 ,上位机在software_and_docs文件夹中,上位机软件的压缩包解压密码为keili2021

  • 运行帮助软件,并通过以太网扫描设备、建立连接,效果如图:
    在这里插入图片描述
    通过以太网扫描->选中IP为192.168.0.10的设备,调整设备网络参数->IP地址->更改为192.168.1.25或其他需要的值->随后在设备网络参数修改中点击网络配置->完成配置后断电重启Lidar->通过以太网连接看是否有数据返回

注意: 本机的静态IP设置也需要随之更改。

在这里插入图片描述

设置本机IP

此时Lidar和本机的IP设置应当如下

Device Address Netmask Gateway
Keli Lidar 192.168.1.25(此前修改后的IP值) 255.255.255.0 192.168.1.1
My computer 192.168.1.233(192.168.1.xxx均可) 255.255.255.0 192.168.1.1

测试ping正常

通过ping进行测试,应该返回如下结果:

ping 192.168.1.25
PING 192.168.1.25 (192.168.1.25) 56(84) bytes of data.
64 bytes from 192.168.1.25: icmp_seq=1 ttl=128 time=0.138 ms
64 bytes from 192.168.1.25: icmp_seq=2 ttl=128 time=0.122 ms
64 bytes from 192.168.1.25: icmp_seq=3 ttl=128 time=0.183 ms
64 bytes from 192.168.1.25: icmp_seq=4 ttl=128 time=0.188 ms

修改Launch文件中的IP设置

# Go to your workspace src
cd ~/galbot_ws/src
# Edit config
sudo nano sudo nano /sdkeli_ls_udp/launch/sdkeli_ls1207de_udp_with_1_lidar.launch

将IP相关行修改为:

      <param name="hostname" type="string" value="192.168.1.25" />

4.运行

运行雷达节点

# Terminal 1
roslaunch sdkeli_ls_udp sdkeli_ls1207de_udp_with_1_lidar.launch

查看雷达消息的可视化

# Terminal 2
rviz

在这里插入图片描述

在这里插入图片描述

其他有用信息

雷达参数配置

# Go to your workspace src
cd ~/galbot_ws/src
# Edit config
sudo nano /sdkeli_ls_udp/cfg/SDKeliLs.cfg

注意: 修改后需重新编译

官方相关文档原文和上位机软件

上位机软件的压缩包解压密码为keili2021

# Go to your workspace src
cd ~/galbot_ws/src
# Check readme and software
cd sdkeli_ls_udp/software_and_docs
ls

ROS消息及其格式

话题为/keli_scan,类型为sensor_msgs/LaserScan

# sensor_msgs/LaserScan 
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities

包目录

# sdkeli_ls_udp package tree

├── cfg # 配置目录
│   └── SDKeliLs.cfg # 配置文件
├── CMakeLists.txt # CMake配置
├── include # 头文件目录
│   └── sdkeli_ls_udp
│       ├── parser_base.h
│       ├── sdkeli_ls1207de_parser.h
│       ├── sdkeli_ls_common.h
│       ├── sdkeli_ls_common_udp.h
│       ├── sdkeli_ls_constants.h
│       └── sdkeli_ls_sensor_frame.h
├── launch # 启动文件
│   ├── sdkeli_ls1207de_udp_nodelet_with_1_lidar.launch
│   ├── sdkeli_ls1207de_udp_nodelet_with_2_lidars.launch
│   ├── sdkeli_ls1207de_udp_with_1_lidar.launch
│   └── sdkeli_ls1207de_udp_with_2_lidars.launch
├── meshes # 模型文件
│   └── sdkeli_ls1207de.stl
├── package.xml # 包描述
├── plugins
│   └── sdkeli_ls1207de.xml
├── README.md # 不详细的readme
├── software_and_docs # 官方原文档及上位机软件
│   ├── 使用说明书-LS2测量型激光雷达(2021年8月版).pdf
│   ├── 科力激光扫描仪ROS包使用说明.doc
│    └── ···
├── src # 代码
│   ├── parser_base.cpp
│   ├── sdkeli_ls1207de.cpp
│   ├── sdkeli_ls1207de_nodelet.cpp
│   ├── sdkeli_ls1207de_parser.cpp
│   ├── sdkeli_ls_common.cpp
│   ├── sdkeli_ls_common_udp.cpp
│   ├── sdkeli_ls_sensor_frame.cpp
│   └── style_c1.bat
└── urdf # 机器人描述文件
    ├── sdkeli_ls1207de_2.urdf.xacro
    ├── sdkeli_ls1207de.urdf.xacro
    └── sdkeli_ls_udp.urdf.xacro

Troubleshooting

数值转换问题

Error

将较大的整数值(比如int)转换为较小的整数类型(比如char)时,编译器可能会发出警告,因为这可能导致数据丢失或溢出,此处涉及将整数值(如165和170)转换为字符类型(char)。

/home/hermanye20/galbot_ws/src/sdkeli_ls_udp/include/sdkeli_ls_udp/sdkeli_ls_constants.h:22:95: error: narrowing conversion of ‘165’ from ‘int’ to ‘char’ [-Wnarrowing]
/home/hermanye20/galbot_ws/src/sdkeli_ls_udp/include/sdkeli_ls_udp/sdkeli_ls_constants.h:22:95: error: narrowing conversion of ‘170’ from ‘int’ to ‘char’ [-Wnarrowing]
/home/hermanye20/galbot_ws/src/sdkeli_ls_udp/include/sdkeli_ls_udp/sdkeli_ls_constants.h:23:95: error: narrowing conversion of ‘250’ from ‘int’ to ‘char’ [-Wnarrowing]
   23 | const char CMD_START_STREAM_DATA[]           = {
   
   0xFA, 0x5A, 0xA5, 0xAA, 0x00, 0x02, 0x01, 0x01};
      |                                                                                               ^
/home/hermanye20/galbot_ws/src/sdkeli_ls_udp/include/sdkeli_ls_udp/sdkeli_ls_constants.h:23:95: error: narrowing conversion of ‘165’ from ‘int’ to ‘char’ [-Wnarrowing]
/home/hermanye20/galbot_ws/src/sdkeli_ls_udp/include/sdkeli_ls_udp/sdkeli_ls_constants.h:23:95: error: narrowing conversion of ‘170’ from ‘int’ to ‘char’ [-Wnarrowing]
make[2]: *** [sdkeli_ls_udp/CMakeFiles/sdkeli_ls_udp_lib.dir/build.make:76: sdkeli_ls_udp/CMakeFiles/sdkeli_ls_udp_lib.dir/src/sdkeli_ls_common.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:8194: sdkeli_ls_udp/CMakeFiles/sdkeli_ls_udp_lib.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
Invoking "make -j32 -l32" failed

solution

不要使用官方最新repo的代码,存在问题。尝试使用商用稳定版本。

雷达通讯建立失败问题

Error

在启动雷达节点是出现连接失败,硬件LED灯未显示6表示未建立网络通信


[ INFO] [1699696621.075139454]: sending data to '192.168.0.10' (IP : 192.168.0.10) (PORT : 2112)
[ WARN] [1699696626.079184014]: GetDataGram timeout for 5s
[ERROR] [1699696626.079250132]: SDKELI_LS - Read Error when getting datagram: 1
[ERROR] [1699696626.079360133]: close socket and CloseDevice
[ INFO] [1699696626.079401922]: sdkeli_ls_udp drvier exiting.

[ INFO] [1699696626.262384635]: sending data to '192.168.0.10' (IP : 192.168.0.10) (PORT : 2112)
^C[sdkeli_ls1207de-2] killing on exit
[robot_state_publisher-1] killing on exit
[ WARN] [1699696629.064359551]: GetDataGram timeout for 5s
[ERROR] [1699696629.064417953]: SDKELI_LS - Read Error when getting datagram: 1
[ERROR] [1699696629.064533220]: close socket and CloseDevice
[ INFO] [1699696629.064574961]: sdkeli_ls_udp drvier exiting.

^Cshutting down processing monitor...
... shutting down processing monitor complete
done

solution

通过win环境下上位机帮助软件修改设备IP

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
5月前
|
机器学习/深度学习 算法 计算机视觉
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A路径规划+单目测距与测速+行人车辆计数等)
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A路径规划+单目测距与测速+行人车辆计数等)
93 2
|
数据采集 数据可视化 Ubuntu
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 使用方法
该功能包提供了一个手动校准Livox雷达和相机之间外参的方法,已经在Mid-40,Horizon和Tele-15上进行了验证。其中包含了计算相机内参,获得标定数据,优化计算外参和雷达相机融合应用相关的代码。本方案中使用了标定板角点作为标定目标物,由于Livox雷达非重复性扫描的特点,点云的密度较大,比较易于找到雷达点云中角点的准确位置。相机雷达的标定和融合也可以得到不错的结果。
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 使用方法
|
2月前
|
传感器 存储 数据可视化
MATLAB - 激光雷达 - 相机联合标定(Lidar-Camera Calibration)(二)
MATLAB - 激光雷达 - 相机联合标定(Lidar-Camera Calibration)(二)
194 1
|
2月前
|
传感器 数据可视化 自动驾驶
MATLAB - 激光雷达 - 相机联合标定(Lidar-Camera Calibration)(一)
MATLAB - 激光雷达 - 相机联合标定(Lidar-Camera Calibration)
163 1
|
5月前
|
机器学习/深度学习 编解码 算法
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)-2
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)-2
|
5月前
|
机器学习/深度学习 监控 算法
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)-1
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)-1
|
5月前
|
传感器 开发工具 C#
[3D&Halcon] SmartRay激光3D传感器Halcon采集
[3D&Halcon] SmartRay激光3D传感器Halcon采集
76 0
|
机器学习/深度学习 传感器 算法
【红外图像】利用红外图像处理技术对不同制冷剂充装的制冷系统进行性能评估(Matlab代码实现)
【红外图像】利用红外图像处理技术对不同制冷剂充装的制冷系统进行性能评估(Matlab代码实现)
|
传感器 机器学习/深度学习 编解码
激光雷达与视觉联合标定综述!(系统介绍/标定板选择/在线离线标定等)
由于2D识别的成功,论文引入了一个大型基准,称为OMNI3D,重新审视了3D目标检测的任务。OMNI3D对现有数据集进行了重新利用和组合,生成了234k张图像,标注了300多万个实例和97个类别。由于相机内参的变化以及场景和目标类型的丰富多样性,这种规模的3D检测具有挑战性。论文提出了一个名为Cube R-CNN的模型,旨在通过统一的方法在摄像机和场景类型之间进行泛化。结果表明,在更大的OMNI3D和现有基准上,Cube R-CNN优于先前的工作。最后,论文证明了OMNI3D是一个强大的3D目标识别数据集,表明它提高了单个数据集的性能,并可以通过预训练加速对新的较小数据集的学习。
激光雷达与视觉联合标定综述!(系统介绍/标定板选择/在线离线标定等)
|
传感器 人工智能 算法
Feat-Calibr | 一款实用的开源激光雷达到车体外参的标定工具
对于拥有惯导的自动驾驶车辆而言,激光雷达到惯导/车体(以下简称激光雷达外参自标定)的方法对后续的感知、定位等下游应用具有非常重要的意义。对于这一问题,最容易想到的办法是同时跑激光里程计与惯导的里程计,并使用手眼标定的方法寻找这外参。这个方法最主要的问题是标定精度受制于激光雷达里程计的精度,对于当前量产的固态激光雷达而言,受制于有限的FOV,测距精度较差,抖动,以及多变的标定场景等问题,难以适配鲁棒且高精度的激光里程计用于外参标定。
Feat-Calibr | 一款实用的开源激光雷达到车体外参的标定工具