Ubuntu18.04鲁班猫ROS-melodic适配镭神智能C16多线激光雷达

前言

  本文记录在Ubuntu18.04-melodic中适配镭神智能C16多线雷达的过程,使用最近比较火的国产ROS开发板鲁班猫(LubanCat )进行适配。

准备硬件

一套镭神智能C16多线雷达套件(雷达主体、电源适配器、网线-用来通信)
一个ROS开发板鲁班猫,用于提供Ubuntu18.04-melodic系统环境

预期效果

将LslidarC16雷达连接鲁班猫主控,可通过rviz查看输出pointcloud点云,读取LaserScan点云数据。

硬件介绍

一、关于雷达

  镭神智能C16多线激光雷达,采用16条激光线,能达到20HZ的扫描频率,对应最高0.09度的角分辨率,精度±3cm,能够精确地检测物体的位置和形态。
在这里插入图片描述

二、关于鲁班猫

  鲁班猫(LubanCat)是野火科技推出的Linux、Android卡片电脑系列品牌。这个系列的板子便宜好用,操作系统适配度高,开源教材资料比较多,能学到挺多东西的。

三、16线雷达接线安装

  将LslidarC16雷达按照下面的接线方式进行连接,先给雷达接上电源,用网线的一端接入雷达接线盒,另一端接入鲁班猫,如图所示
在这里插入图片描述

安装示意图:
在这里插入图片描述

四、适配16线雷达SDK

镭神智能C16功能包:

git clone -b C16_V2.6/2.8/3.0 https://github.com/Lslidar/Lslidar_ROS1_driver.git

其他雷达的功能包可以在这里获取:
https://github.com/Lslidar/Lslidar_ROS1_driver
pointcloud _to _lasescan功能包:
https://github.com/ros-perception/pointcloud_to_laserscan.git
把对应的SDK下载到本地端,然后将文件放入工作空间内。

lslidar_driver功能包是16线雷达输出ROS消息数据的驱动功能包,输出16线雷达点云相关消息数据。
pointcloud _to _lasescan功能包是将pointcloud2点云消息数据转为laser_scan消息的功能包。

将llslidar_driver功能包和pointcloud_to_laserscan功能包到工作空间中,在工作空间目录下编译相关的功能包:

rosdep install--from-pathssrc--ignore-src-r-y#一键安装依赖
catkin_make 

五、16线雷达的网络配置

STEP1:配置网络

打开网络设置,找到有线的设备号eth0 (根据Device中的选项确定)
在这里插入图片描述

STEP2:固定有线ip

在IPV4设置中将模式改为Manual,输入固定的ip地址:192.168.1.102,子网掩码255.255.255.0,网关192.168.1.1,单击保存设置。保存好之后,就可以在机器人重启后自动连接到16线雷达。
在这里插入图片描述

STEP3:固定有线ip,查看静态ip是否固定成功

在终端输入ifconfig来查看静态ip是否固定成功:
ifconfig
在这里插入图片描述

六、16线雷达的参数说明及使用

下面是16线雷达的一些相关参数,大家可以根据需要进行配置:

<launch>
  <arg name="device_ip" default="192.168.1.200" />
  <arg name="msop_port" default="2368"/>
  <arg name="difop_port" default="2369"/>
  <arg name="use_gps_ts" default="false" />
  <!--pcl_type切换点云类型  --false:点云类型为xyzirt --true:点云类型为xyzi-->
  <arg name="pcl_type" default="false" />
  <!--c16表示机械式16线雷达;c32表示机械式32线雷达 -->
  <arg name="lidar_type" default="c32"/>
 <!--包长1206或1212 -->
  <arg name="packet_size" default="1206"/>
    <!--c16_2表示16线垂直角度分辨率为2度的雷达,c16_1表示16线垂直角度分辨率为1.33度的雷达 -->
  <arg name="c16_type" default="c16_2"/>

   <!--c32_2表示32线垂直角度分辨率为1度的雷达,c32_1表示32线垂直角度分辨率为0.33度的雷达 -->
  <arg name="c32_type" default="c32_2"/>

   <!--3表示32线fpga为2.7\2.8\3.0的版本的雷达,2表示32线fpga为2.6的版本的雷达-->
  <arg name = "c32_fpga_type" default="3"/>


  <node pkg="lslidar_driver" type="lslidar_driver_node" name="lslidar_driver_node" output="screen">
    <!--param name="pcap" value="$(find lslidar_driver)/pcap/xxx.pcap" /-->
    <param name="device_ip" value="$(arg device_ip)" />
    <param name="msop_port" value="$(arg msop_port)" />
    <param name="difop_port" value="$(arg difop_port)"/>
    <param name="lidar_type" value="$(arg lidar_type)"/>
     <param name="packet_size" value="$(arg packet_size)"/>
     <param name="pcl_type" value="$(arg pcl_type)"/>
    <param name="c16_type" value="$(arg c16_type)"/>
    <param name="c32_type" value="$(arg c32_type)"/>
    <param name="c32_fpga_type" value="$(arg c32_fpga_type)"/>
    <param name="add_multicast" value="false"/>
    <param name="group_ip" value="224.1.1.2"/>
    <param name="use_gps_ts" value="$(arg use_gps_ts)"/>
    <param name="min_range" value="0.15"/>
    <param name="max_range" value="150.0"/>
    <param name="horizontal_angle_resolution" value="0.2"/>
    <param name="frame_id" value="laser"/>
    <param name="distance_unit" value="0.4"/>
    <param name="angle_disable_min" value="0"/>
    <param name="angle_disable_max" value="0"/>
    <param name="packet_rate" value="1700.0"/>
    <param name="scan_num" value="16"/>
    <param name="publish_scan" value="false"/>
    <param name="pointcloud_topic" value="point_cloud_raw"/>
    <param name="coordinate_opt" value="false"/>
  </node>

  <!-- <node pkg="rviz" type="rviz" name="rviz" args="-d $(find lslidar_driver)/rviz_cfg/lslidar.rviz"/> -->
 
 <!--node pkg="tf" type="static_transform_publisher" name="laser_link_to_world" args="0 0 0 0 0 0 world laser_link 100" /-->
  
</launch>

七、启动雷达

在16线雷达使用过程中,为了方便利用雷达的点云消息,需要使用pointcloud_to_laserscan功能包来将点云数据转换到2D平面的laser_scan消息,同时要打开lslidar_ros功能包的start.launch文件,和pointcloud_to_laserscan功能包的pointcloud_scan.launch文件。

roslaunch  lslidar_driver  lslidar_c16.launch 
roslaunch  pointcloud_to_laserscan  pointcloud_scan.launch

打开RVIZ,添加相应的组件就可以看到可视化的数据了。

rosrun rviz rviz

点云可视化:
在这里插入图片描述

注意:使用pointcloud_to_laserscan功能包时,相关参数同样需要在launch文件中进行配置。

话题名称描述
/scan点云数据转laser_scan (丢失intensities强度信息)
/scan_raw16线雷达某个通道的laser_scan
/point_cloud_raw16线雷达点云数据
在Python中,如果你想要创建一个开机自启动文件(通常称为服务或者是守护进程),可以使用`pywin32`库(Windows平台)或`systemd`(Linux平台)。这里我会给出两个平台的基本示例: **对于Windows(使用pywin32)**: ```python import servicemanager import win32serviceutil from your_module import YourClass # 需要导入你的鲁班4程序类 class MyService(scic Service): _svc_name_ = "YourServiceName" # 服务名 _svc_display_name_ = "鲁班4服务" # 显示名称 _svc_description_ = "鲁班4的自动启动服务" def __init__(self, args): self.hWaitStop = None super().__init__() def SvcDoRun(self): # 创建并运行你的鲁班4实例 service_instance = YourClass() service_instance.run_service() def SvcStop(self): pass # 可能需要停止鲁班4实例的操作 if __name__ == '__main__': if not servicemanager.IsServiceInstalled('YourServiceName'): win32serviceutil.InstallService( 'YourServiceName', '鲁班4服务', r'd:\path\to\your_script.py') # 替换为你的脚本路径 print("Service installed.") else: win32serviceutil.StartService('YourServiceName') print("Service started.") ``` 记得替换`YourClass`、`YourServiceName`和`r'd:\path\to\your_script.py'`为你实际的类名和服务名称以及脚本路径。 **对于Linux(使用systemd)**: 首先,你需要在/etc/systemd/system目录下创建一个服务单元文件(例如:your_service.service),内容如下: ```ini [Unit] Description=鲁班4服务 [Service] ExecStart=/usr/bin/python /path/to/your_script.py # 替换为你的脚本路径 Restart=always User=your_username # 如果不是root用户,填写用户名 [Install] WantedBy=multi-user.target ``` 然后,你可以通过命令行运行`sudo systemctl daemon-reload && sudo systemctl start your_service`来启用服务。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Errorbot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值