# ROS室内机器人系统
**北京航空航天大学计算机学院-智能机器人环境感知与路径规划课程项目-暨第三十届冯如杯科技竞赛参赛项目**
* [系统简介](#系统简介)
* [系统安装](#系统安装)
* [仿真环境](#仿真环境)
- [机器人建模](#机器人建模)
- [运行环境](#运行环境)
* [定位建图](#定位建图)
* [自动定位建图](#自动定位建图)
* [手动建图](#手动建图)
* [室内导航](#室内导航)
* [定点导航](#定点导航)
* [固定线路巡航(传回摄像机数据)](#固定线路巡航传回摄像机数据)
* [算法切换-添加新的导航算法](#算法切换-添加新的导航算法)
* [局部路径规划参数分析](#局部路径规划参数分析)
* [全局路径规划算法分析](#全局路径规划算法分析)
## 系统简介
系统实现了基于 `SLAM` 的室内机器人在陌生环境中自主定位建图、定点导航以及图像数据的传输。可以应用在酒店、商场、医院、博物馆、学校教学楼实验楼等室内场所,实现为人们实体引领导航、探索目标、配送物品、提供无接触服务等等场景。
系统依赖 `ROS` 框架,通过其通信机制实现了对机器人的控制、调用传感器数据等功能,版本为 `ROS-Kinetic` ,其运行的环境为 `Ubuntu16.04LTS` 。系统实现所用的机器人是 `Turtlebot2` ,采用其固有的 `Kuboki` 底盘,搭载 `Kinect2` 深度相机以及 `Rplidar` 二维激光雷达。
系统原本计划在搭载传感器的机器人真机上,放置在实际室内环境中测试和完善,但受疫情影响,项目组无法返回实验室得到真机,因此基于 `Gazebo7` 搭建了简单的仿真环境。
## 系统安装
系统开发、运行及仿真的环境为 `Ubuntu16.04LTS` ,请注意虚拟机也许会面临未知的兼容性问题,显卡的性能也会影响图形化和 `3D` 仿真的运行,因此建议使用安装 `Ubuntu16.04LTS` 的真机以及性能不至于过低的显卡来安装和运行系统。
`ROS-Kinetic` 、基本仿真和测试软件以及 `Turtlebot2` 机器人支持代码的安装和简单测试见如下链接的教程:
https://blog.csdn.net/JeremyZhao1998/article/details/104468680
基本软件安装和测试成功后即可建立 `catkin` 工作空间,并克隆本项目代码并编译,注意最后一条 source 的操作**是每次更新 `catkin_ws` 的内容后必须的操作**,若要省去该操作可以将该命令添加到 `~/.bashrc` 文件末尾,这样每次打开终端都会先执行该操作确保内容更新可以被系统识别:
```shell
# 建立catkin工作空间
cd ~
mkdir catkin_ws
cd catkin_ws
# 克隆项目代码
git clone https://github.com/JeremyZhao1998/IndoorRobot.git
# 编译工作空间的代码并刷新环境
catkin_make
source devel/setup.bash
```
## 仿真环境
系统原本计划在搭载传感器的机器人真机上,放置在实际室内环境中测试和完善,但受疫情影响,项目组无法返回实验室得到真机,因此基于 `Gazebo7` 搭建了简单的仿真环境。
### 机器人建模
系统在仿真环境中,在 `turtlebot2` 机器人官方模型的基础上加装了 `hokuyo` 雷达。激光雷达相比 `Kinect` 相机具有扫描范围更大、速度更快的优点,可以更专注于建图与障碍物检测功能,提高运行效率。通过以下的步骤替换系统中的文件,实现仿真环境中 `turtlebot2+Kinect+hokuyo` 协同工作。
```shell
# 进入root权限(需要输入密码)
sudo -i
# 进入turtlebot_gazebo包,替换turtlebot_world.launch文件
roscd turtlebot_gazebo
cd launch/includes
rm turtlebot_world.launch
cp ~/catkin_ws/robot_remould/turtlebot_world.launch ./
# 进入turtlebot_description包,添加kobuki_hexagons_hokuyo.urdf.xacro文件
roscd turtlebot_description/
cd robots
cp ~/catkin_ws/robot_remould/kobuki_hexagons_hokuyo.urdf.xacro ./
# 在turtlebot_description包中替换整个urdf文件夹
cd ..
rm -r urdf
cp -r ~/catkin_ws/robot_remould/urdf ./
# 在meshes/sensors文件夹中添加hokuyo.dae文件
cp ~/catkin_ws/robot_remould/hokuyo.dae ./meshes/sensors/hokuyo.dae
```
替换文件后,需要添加环境变量。打开 `~/.bashrc` 文件,在末尾添加以下指令:
```shell
export TURTLEBOT_BASE=kobuki
export TURTLEBOT_STACKS=heagons
export TURTLEBOT_3D_SENSOR=hokuyo
export TURTLEBOT_GAZEBO_WORLD_FILE=/home/zhao/catkin_ws/gazebo_worlds/square_hall.world
```
完成上述工作后,按照下一节内容打开仿真环境后会发现机器人拥有 `kinect` 相机和 `hokuyo` 雷达两个传感器:
![04](images/04.png)
### 运行环境
使用如下命令启用我们已经搭建好的仿真环境:
```shell
roslaunch turtlebot_gazebo turtlebot_world.launch
```
![01](images/01.png)
上述命令的省却了 `map_file` 参数参数,默认值设置为了我们搭建的上图的世界文件。该参数是可以修改的,后跟仿真世界文件(.world文件)的完整路径,例如下面的指令。除了上述世界外系统还在 `gazebo_worlds` 文件夹下提供了其他示例世界 。用户也可搭建自己的仿真世界,使用如下指令进入一个空的仿真世界:
```shell
roslaunch turtlebot_gazebo turtlebot_world.launch map_file:=~/catkin_ws/gazebo_worlds/empty.world
```
然后向仿真环境中插入物品,创造属于自己的仿真世界。随后要打开自己的仿真世界,只需要使用上面同样的指令,最后一项改为自己的世界文件即可。
## 定位建图
### 自动定位建图
系统安装了 `RRT` 算法的自动探索建图功能,仿真机器人利用激光雷达进行自动的探索建立二维地图。使用方法如下:
```shell
roslaunch rrt_exploration_tutorials single_simulated_square_hall.launch
roslaunch rrt_exploration single.launch
```
![02](images/02.png)
该命令会同时启动仿真界面和 `Rviz` 控制器,在 `Rviz` 界面左上方单击 `2D Nav Goal` 选择导航点,或者使用 `Publish Points` 指定五个导航点,机器人会自动运动到该点并在沿途使用激光雷达建立地图。
当地图建立足够完善时,可以使用以下命令保存地图,其中最后一个参数是想要保存的地图路径和名称:
```shell
rosrun map_server map_saver -f /home/<username>/maps/my_map
```
### 手动建图
除了推荐的自动探索建图外,用户还可以选择手动控制机器人运动建图,该方法的优势在于运行更稳定,可以人工控制机器人扫描每一个死角,并且同样可以远程操作。在此仅演示使用激光雷达的,效率更高的 `hector_slam` 算法。分别在两个终端启用 `Gazebo` 仿真以及 `hector_slam` 算法:
```shell
roslaunch turtlebot_gazebo turtlebot_world.launch map_file:=~/catkin_ws/gazebo_worlds/square_hall.world
```
```shell
roslaunch rplidar_ros hector_mapping_demo.launch
```
分别启动 `Gazebo` 仿真以及 `hector_slam` 算法后,仿真世界里的激光雷达已经开始扫描数据,此时需要启动机器人控制,手动控制机器人运动以探索地图:
```shell
roslaunch turtlebot_teleop keyboard_teleop.launch
```
![03](images/03.png)
当地图建立足够完善时,可以使用以下命令保存地图,其中最后一个参数是想要保存的地图路径和名称:
```shell
rosrun map_server map_saver -f /home/<username>/maps/my_map
```
## 室内导航
### 定点导航
系统提供了多种导航(全局路径规划)算法可供用户选择,根据不同的地形条件选用不同的算法。分别在三个终端使用以下三条命令启动仿真界面、路径规划节点以及 `Rviz` 控制器:
```shell
roslaunch turtlebot_gazebo turtleb
没有合适的资源?快使用搜索试试~ 我知道了~
基于ROS的室内机器人系统仿真智能机器人环境感知与路径规划课程项目暨第三十届冯如杯科技竞赛参赛项目.zip
共635个文件
h:157个
cpp:131个
xml:65个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 2 浏览量
2024-04-30
21:00:59
上传
评论
收藏 5.38MB ZIP 举报
温馨提示
系统实现了基于 SLAM 的室内机器人在陌生环境中自主定位建图、定点导航以及图像数据的传输。可以应用在酒店、商场、医院、博物馆、学校教学楼实验楼等室内场所,实现为人们实体引领导航、探索目标、配送物品、提供无接触服务等等场景。 系统依赖 ROS 框架,通过其通信机制实现了对机器人的控制、调用传感器数据等功能,版本为 ROS-Kinetic ,其运行的环境为 Ubuntu16.04LTS 。系统实现所用的机器人是 Turtlebot2 ,采用其固有的 Kuboki 底盘,搭载 Kinect2 深度相机以及 Rplidar 二维激光雷达。 系统原本计划在搭载传感器的机器人真机上,放置在实际室内环境中测试和完善,但受疫情影响,项目组无法返回实验室得到真机,因此基于 Gazebo7 搭建了简单的仿真环境。
资源推荐
资源详情
资源评论
收起资源包目录
基于ROS的室内机器人系统仿真智能机器人环境感知与路径规划课程项目暨第三十届冯如杯科技竞赛参赛项目.zip (635个子文件)
.rosinstall.bak 76B
testmap.bmp 374B
pf.c 18KB
pf_kdtree.c 13KB
pf_vector.c 6KB
eig3.c 6KB
pf_pdf.c 5KB
map_store.c 5KB
pf_draw.c 4KB
map_draw.c 4KB
map_range.c 3KB
map.c 2KB
AMCL.cfg 6KB
BaseLocalPlanner.cfg 4KB
MoveBase.cfg 3KB
DWAPlanner.cfg 3KB
GlobalPlanner.cfg 2KB
Costmap2D.cfg 2KB
ObstaclePlugin.cfg 1KB
VoxelPlugin.cfg 1KB
InflationPlugin.cfg 628B
LocalPlannerLimits.cfg 319B
GenericPlugin.cfg 283B
rplidar_driver.cpp 71KB
amcl_node.cpp 51KB
move_base.cpp 47KB
trajectory_planner.cpp 36KB
module_tests.cpp 36KB
navfn.cpp 29KB
net_socket.cpp 25KB
trajectory_planner_ros.cpp 25KB
net_socket.cpp 24KB
net_socket.cpp 24KB
point_grid.cpp 23KB
pathSplineSmoother.cpp 22KB
obstacle_layer.cpp 22KB
odom_estimation_node.cpp 20KB
HectorMappingRos.cpp 20KB
geotiff_writer.cpp 19KB
costmap_2d_ros.cpp 19KB
rrt_planner.cpp 18KB
RAstar_ros.cpp 18KB
odom_estimation.cpp 17KB
planner_core.cpp 16KB
navfn_ros.cpp 16KB
voxel_layer.cpp 16KB
dwa_planner.cpp 16KB
Dstar.cpp 15KB
inflation_tests.cpp 15KB
amcl_laser.cpp 14KB
costmap_2d.cpp 14KB
node.cpp 14KB
inflation_layer.cpp 13KB
dstar_global_planner.cpp 12KB
amcl_odom.cpp 12KB
dwa_planner_ros.cpp 11KB
net_serial.cpp 11KB
static_tests.cpp 11KB
footprint.cpp 11KB
static_layer.cpp 11KB
simple_trajectory_generator.cpp 11KB
map_grid.cpp 11KB
goal_functions.cpp 11KB
geotiff_node.cpp 11KB
latched_stop_rotate_controller.cpp 11KB
voxel_grid_model.cpp 10KB
fake_localization.cpp 10KB
gradient_path.cpp 10KB
observation_buffer.cpp 10KB
hector_map_server.cpp 10KB
hector_trajectory_server.cpp 10KB
map_to_image_node.cpp 9KB
move_slow_and_clear.cpp 9KB
net_serial.cpp 9KB
main.cpp 9KB
obstacle_tests.cpp 8KB
net_serial.cpp 8KB
footprint_helper.cpp 8KB
utest.cpp 8KB
dijkstra.cpp 8KB
navtest.cpp 8KB
voxel_grid.cpp 8KB
costmap_2d_cloud.cpp 7KB
pose_and_orientation_to_imu_node.cpp 7KB
carrot_planner.cpp 6KB
map_saver.cpp 6KB
local_rrt_detector.cpp 6KB
rotate_recovery.cpp 6KB
costmap_tester.cpp 6KB
map_grid_test.cpp 6KB
test_robot_pose_ekf.cpp 6KB
layered_costmap.cpp 6KB
footprint_tests.cpp 6KB
clear_costmap_recovery.cpp 6KB
costmap_2d_publisher.cpp 6KB
map_cspace.cpp 6KB
global_rrt_detector.cpp 6KB
oscillation_cost_function.cpp 6KB
simple_scored_sampling_planner.cpp 6KB
image_loader.cpp 5KB
共 635 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
FL1768317420
- 粉丝: 4087
- 资源: 4617
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功