# SLAMandGuide
**Repository Path**: Anthony_Bridge/SLAMandGuide
## Basic Information
- **Project Name**: SLAMandGuide
- **Description**: 使用Gmapping算法建图与A*路径规划算法导航的智能小车
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 12
- **Forks**: 1
- **Created**: 2025-02-05
- **Last Updated**: 2025-12-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 使用Gmapping算法建图与A*路径规划算法导航的智能小车
### B站视频
[【ROS】使用Gmapping算法建图与A*路径规划算法导航的智能小车,GUI界面显示](https://www.bilibili.com/video/BV1Xr421x7Jc/?vd_source=c46697e1d06be94cd5e10883ded86efe)
## 一、项目所需的基础环境
系统:Ubuntu20.04 x86
CPU:推荐等效性能 >= 8代Intel移动端i5处理器
GPU:推荐等效性能 >= GTX1050或等效性能 >= 12代Intel CPU核显
ROS:ros-noetic版本,Gazebo11
## 二、前置配置要求
电脑需要配置好Ubuntu20.04x86版本基础环境,完整安装ros-noetic版本,并配置好所需的基础开发环境
安装ROS推荐使用[鱼香ROS](https://fishros.org.cn/forum/topic/20/%E5%B0%8F%E9%B1%BC%E7%9A%84%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E7%B3%BB%E5%88%97)
若网址无法进入请搜索引擎搜索“鱼香ROS”
python环境:本项目中使用的python环境为ros-noetic自带python环境,python版本为3.8.10,其余版本理论上可以运行该项目,但未经测试。
项目需要opencv库,所使用的版本为4.2.0,其余版本未经测试。
## 三、下载源码
链接:https://pan.baidu.com/s/1IvqvtwroU3OqOVIVzPuYpQ?pwd=319x
提取码:319x
## 四、开始配置
打开一个终端,在其中依次运行:
```
sudo apt install ros-noetic-gmapping
sudo apt install ros-noetic-map-server
sudo apt install ros-noetic-navigation
```
将Resource文件夹下的models文件夹整体复制到~/.gazebo目录下,可以在Resource文件夹下打开终端运行:
```
cp -r models ~/.gazebo/
```
完成复制。注意.gazebo目录在系统主目录下,为一个隐藏文件夹,需要打开隐藏文件夹显示才能看到。
进入Resource文件夹下的conio.h文件夹,在conio.h文件夹下打开终端,依次运行:
```
sudo make
sudo make install
```
无报错则完成。
## 五、启动项目
### a.检查gazebo地图是否能加载
进入SLAMandGuide/src/robot_model/world目录下,打开终端,运行:
```
gazebo testWorld1.world
```
正常运行会出现一个仿真场景,如图所示:
如果出现报错,或者场景无法加载,请检查配置步骤中是否将models文件夹复制到~/.gazebo目录下,并百度报错原因尝试解决。
### b.编译
在SLAMandGuide文件夹下打开终端,运行:
```
catkin_make
```
一切正常的情况如图:
如果出现报错,请阅读报错原因并尝试百度解决
### c.Gmapping建图(程序源码中有建好的图,如果不想重新建图,可以直接到步骤e)
在SLAMandGuide文件夹下打开终端,运行:
```
source ./devel/setup.bash
```
然后运行:
```
roslaunch integrated_launch robotWithSceneGmappingKeyboard.launch
```
正常运行会打开gazebo和rviz,如图:
然后选中刚刚的终端,键盘控制程序运行在这个终端下,必须保持这个终端在前台才可以控制小车移动。如图所示。
小车控制逻辑如下:
```
数字8:前进
数字2:后退
数字4:左转
数字6:右转
数字5:停止
```
通过键盘控制,让小车跑完整个地图,地图的实时建图结果在rviz中显示,当rviz中显示的地图几乎没有空点的时候,建图完成,如下所示:
此时,不要关闭刚刚打开的终端,在SLAMandGuide文件夹下打开一个新的终端,运行:
```
source ./devel/setup.bash
```
然后运行:
```
roslaunch integrated_launch robotMapSave.launch
```
正常运行如图:
然后,在SLAMandGuide/src/integrated_launch/resources目录下能够看到生成了demo.pgm和demo.yaml两个文件,建图完成。关闭刚刚的两个终端。
### d.地图裁剪与资源生成
打开一个新终端,运行:
```
roscore
```
然后在SLAMandGuide文件夹下打开另外一个终端,运行:
```
source ./devel/setup.bash
```
然后运行:
```
rosrun integrated_launch cutPgm_testWorld.py
```
正常运行会显示一个裁剪后的地图,如图所示:
点击图片右上角的x关闭窗口。可以看到在SLAMandGuide/src/integrated_launch/resources目录下生成了testWorld1_100_100.png和testWorld1_1000_1000.png两个图像文件,分别是不同100*100像素和1000*1000像素的灰度地图图像。
关闭刚刚打开的两个终端。
### e.启动路径规划app
在SLAMandGuide文件夹下打开一个终端,运行:
```
source ./devel/setup.bash
```
然后运行:
```
roslaunch integrated_launch robotPathPlanningControlWithGui.launch
```
正常运行会启动gazebo显示仿真环境和一个路径规划界面,如图所示:
路径规划界面打开后,其中部分组件可能显示不正常,点击“开始/更新”按钮可以使其刷新到正常位置。
之后可以直接在路径规划界面左侧地图中选点,程序会自动进行路径规划并控制小车沿着轨迹前进。路径规划界面的输出显示可以看到路径规划是否完成,路径规划完成后,路径显示可能不正常,点击“开始/更新”按钮刷新。然后可以看到gazebo仿真环境中的小车沿着轨迹前进。
至此,项目复刻完成。