ROS实践(四)机器人SLAM建图(gmapping)

目录

一、SLAM技术

二、常用工具和传感器

 三、相关功能包

1. gmapping建图功能包

2. map_server

四、SLAM 建图实验

1. 配置gmapping(launch文件)

2. 启动机器人仿真(含机器人以及传感器)

3. 运行gmapping节点

4. 启动rviz可视化工具

5. 保存地图文件


一、SLAM技术

         地图构建(Mapping)是机器人在运动过程中逐步建立和更新其所处环境的地图。

        (Simultaneous Localization and Mapping)即同时定位与地图构建,是一种概念,旨在让机器人从未知环境的未知地点出发,在运动过程中通过重复观测到的环境特征定位自身位置和姿态,再根据自身位置构建周围环境的增量式地图,从而达到同时定位和地图构建的目的。

        SLAM技术使用相机、激光雷达、惯性测量单元等传感器来收集环境信息,然后用算法将这些信息融合起来,以确定设备在未知环境中的位置,并构建一张环境地图。

二、常用工具和传感器

1. 激光雷达(LiDAR)

         通过发射激光束并测量返回时间来计算与障碍物的距离,能够提供高精度的2D或3D环境建模,广泛用于SLAM(同步定位与地图构建)、路径规划、避障、目标跟踪等。2D LiDAR常用于室内机器人,3D LiDAR适用于自动驾驶、无人机测绘等复杂环境,常见型号包括Velodyne VLP-16、Hokuyo UST-10LX等。

2. RGBD相机

        结合RGB和彩色图像和深度信息,提供环境的3D感知能力,可用于地图构建、目标识别、障碍物检测、人脸识别、手势控制等。常见的RGBD相机有Intel RealSense、Microsoft Kinect、Orbbec Astra等,广泛应用于机器人视觉、AR/VR、自动化检测等领域。

3. 超声波传感器

        通过发射超声波并测量回波时间计算与障碍物的距离,适用于短距离障碍物检测,常用于自动泊车、无人机避障、水下探测、工业自动化等领域。其成本低、体积小,但受噪声和材质影响较大,常见型号如HC-SR04、MaxBotix MB1040。

4. IMU(惯性测量单元)

         由加速度计、陀螺仪(有时包含磁力计)组成,用于测量机器人姿态、角速度、加速度等信息,常用于惯性导航、姿态估计、运动跟踪等。IMU可单独使用,也可与GPS、LiDAR、里程计融合以提高定位精度,常见型号有MPU6050、BNO055、VectorNav VN-100等。

5. 轮式里程计(Odometry)

        通过测量轮子的旋转角度计算机器人在平面上的运动轨迹,适用于短时间内的相对位置估计,但存在累积误差,因此常与IMU、LiDAR、视觉SLAM结合使用以提高定位精度,广泛应用于移动机器人、自主导航、AGV(自动导引车)等。

 三、相关功能包

1. gmapping建图功能包

  gmapping 是一种基于粒子滤波算法的 SLAM工具,它可以帮助机器人在未知环境中创建地图的同时定位自己。

        具体来说,gmapping 是 ROS 中实现激光SLAM的一个软件包,它结合了激光扫描器数据和机器人运动信息,实时生成并更新地图。常用在需要通过激光雷达进行建图的机器人系统中,尤其适用于移动机器人、无人车等场景。

  gmapping 包含了完成 SLAM所需的所有核心算法,它会自动利用激光扫描数据和机器人的运动信息来进行地图构建和位置估算。只要你正确配置了相关参数和话题,就可以通过启动 gmapping 节点来实现SLAM功能,而不必从头实现复杂的 SLAM 算法。

(1)下载

  gmapping 并不是 ROS 系统自带的核心组件,而是一个额外的 ROS 软件包。通常在使用 ROS 时,gmapping 需要单独安装并配置。

sudo apt-get install ros-<ros
### 使用ROS进行机器人小车SLAM #### 启动激光雷达 为了使机器人能够感知周围环境并构,首先需要启动激光雷达设备。这通常通过特定的驱动程序完成,在终端中输入命令来加载相应的节点[^1]。 ```bash roslaunch hokuyo_node hokuyo_test.launch ``` 此命令会激活 Hokuyo 激光扫描仪,并发布 `/scan` 主题上的距离测量数据流给其他订阅者使用。 #### 集成雷达传感器到模型 对于模拟环境中使用的虚拟小车而言,则需编辑其描述文件(通常是 `.xacro` 文件),加入雷达组件定义以及相应参数设置部分;之后调整 `launch` 文件确保这些改动生效[^2]。 ```xml <!-- 添加Laser Sensor --> <joint name="laser_joint" type="fixed"> <origin xyz="0.1 0 0.2" rpy="0 0 0"/> <parent link="base_link"/> <child link="hokuyo_link"/> </joint> <link name="hokuyo_link"> <!-- 描述Hokuyo Laser几何形状和其他属性 --> </link> <!-- 修改Launch File以包含新添加的内容 --> <include file="$(find my_robot)/launch/sensors.launch"/> ``` #### 执行激光 SLAM 流程 一旦硬件连接正常工作或仿真平台已准备好,就可以着手于执行实际的地过程: - 开启 SLAM 功能:利用预设好的 launch 文件一键开启整个流程。 ```bash roslaunch gmapping slam_gmapping_pr2.launch ``` 上述指令将会初始化 GMapping 节点以及其他必要的支持模块,如 TF 变换树维护器等。 - 小车自主探索未知区域的同时不断更新内部表示的地结构,直到覆盖所有可访问空间为止。 - 导航与避障功能允许车辆安全地穿梭其间而不发生碰撞事故。 #### 地保存及后续处理 当认为已经获得满意的拓扑关系表达形式后,可以将其持久化存储下来供日后重访之用: ```bash rosrun map_server map_saver -f ~/my_map ``` 该操作会在指定路径下生成两个文件——一个是二进制格式的地(`*.pgm`) ,另一个则是对应的 YAML 格式的元信息文档(`*.yaml`) [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值