# 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仿真环境中的小车沿着轨迹前进。
至此,项目复刻完成。