谷歌cartographer+EAI激光雷达F4建图实现

本文档介绍了如何使用谷歌cartographer算法配合EAI激光雷达F4在Ubuntu环境下进行实验室建图。首先,详细阐述了激光雷达的调试过程,包括创建工作空间、编译ROS驱动、设置环境变量和设备别名,以及在rviz中验证扫描结果。接着,讲述了安装cartographer及其配置,修改了相应的launch文件和lua配置文件以适应仅使用激光雷达的情况。最后,给出了运行建图的步骤,尽管在实际操作中遇到一些障碍,但最终成功实现了建图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天在做谷歌cartographer算法实现,前两天实现了谷歌cartographer室内建图的实现,不过所建之图是基于谷歌提供的博物馆的数据,我们只是将数据包下载之后复现而已,并不是我们自己实验室或者周围的地图,由上一篇博客点击打开链接实现的建图我们可以看到,在没有里程计等其他传感器的协助之下,仅仅依靠激光测距仪和算法就完成了效果甚至优于其他多传感器结合的2D地图,如此优秀的开源我们当然希望能用在我们自己的机器人或者传感器上,而不是仅仅做一下仿真。于是拿实验室的EAI的激光雷达F4来进行实验室建图。网上的教程有基于rplidar,北洋雷达,hokuyo UTM-30LX实现的,但没有找到F4的相关教程。于是自己经过摸索实现了其建图。仅供大家参考,不对之处还望指正。

系统要求:Ubuntu16.04(kinetic)或者Ubuntu14.04(indigo)都行

硬件要求:EAI激光雷达F4以及与电脑相连数据线,笔记本一台。

1.激光雷达的调试

使用命令在当home目录下创建 flashgo_ws 工作空间,并将 F4 资料包内的 ROS 驱动包 flashgo 复制到 flashgo_ws/src 目录下,切换到 flashgo_ws 工作空间下并重新进行编译。

$ mkdir -p ~/flashgo_ws/src
$ cd ~/flashgo_ws
$ catkin_make_isolated --install --use-ninja 

编译时用ninja报错会好一点。也可以使用catkin_make.

编译完成后,添加 flashgo 环境变量到~/.bashrc 文件中,并使其生效。

echo "source ~/flashgo_ws/devel_isolated/setup.zsh " >&g
### 使用 ROS2 进行激光雷达和 IMU 的 在构基于激光雷达 (LiDAR) 和惯性测量单元 (IMU) 的地过程中,ROS2 提供了一套完整的工具链来支持这一过程。通过集成 Cartographer 软件库,可以实现高精度的地。 #### 安装依赖项 为了使Cartographer能够在ROS2环境中正常工作,需安装必要的软件包以及设置环境变量[^1]: ```bash sudo apt-get install ros-humble-cartographer-ros ros-humble-tf2-sensor-msgs source /opt/ros/humble/setup.bash ``` #### 配置硬件接口 对于EAI激光雷达F4设备而言,确保已正确配置驱动程序并能稳定输出扫描数据至`/scan`话题下;而对于IMU,则应确认其能够发布标准的sensor_msgs/msg/Imu消息到指定的话题中去。 #### 发布静态变换关系 由于SLAM算法通常假设存在固定的坐标系转换关系,因此需要利用tf2_ros中的static_transform_publisher节点定义base_link与其他部件间的相对位置姿态信息: ```python import os from launch import LaunchDescription from launch.actions import ExecuteProcess def generate_launch_description(): return LaunchDescription([ ExecuteProcess( cmd=['ros2', 'run', 'tf2_ros', 'static_transform_publisher', '--frame-id', 'map', '--child-frame-id', 'odom'], output='screen' ), ExecuteProcess( cmd=['ros2', 'run', 'tf2_ros', 'static_transform_publisher', '-0.1', '0', '-0.2', '0', '0', '0', 'base_link', 'laser_frame'], output='screen' ) ]) ``` 此脚本设置了两个重要的坐标帧之间的转换:一个是全局参考框架(map)到里程计(odom),另一个是从机器人底盘(base_link)到激光雷达(laser_frame)[^2]。 #### 启动Cartographer SLAM流程 最后一步就是启动实际执行同步定位与制(SLAM)的任务了。这可以通过加载预设参数文件(.lua格式), 并调用cartographer_node完成初始化操作: ```yaml use_sim_time: false robot_type: "turtlebot3" publish_period_sec: 1.0 pose_publish_period: 0.5 constraints: max_gravity_score: 0.98 min_num_points_per_voxel: 1 max_range: 10. min_range: 0.1 missing_data_ray_length_penalty: 0.1 ... ``` 上述YAML片段展示了部分关键配置选项,具体数值可能依据实际情况调整优化。 #### 执行命令 最终运行如下指令以开启整个系统的工作流: ```bash ros2 launch cartographer_ros my_carto.launch.py ``` 其中my_carto.launch.py包含了之前提到过的所有组件和服务的组合逻辑。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值