目录
前言
最近实验室有个项目,要跑一个视觉建图导航小车,配置为Autolabor底盘+TX2开发板+ZED2相机。
记录实验过程,写成博客,希望能为做类似课题的本科生和研究生提供些许帮助。
第一步,先跑跑仿真实验,了解一下流程,为之后实物运行做准备。
一、框架
整体框架组成:
- Gazebo仿真软件
- Turtlebot3机器人
- RTAB Map建图定位算法
- Move base路径规划算法
大致介绍下各个部分
- Gazebo是一款免费的机器人仿真软件,可对环境进行模拟,对传感器模型进行模拟。
- Turtlebot3是ROS官方的第三代Turtlebot开源机器人,既有机器人实物,也有gazebo仿真模型。
- RTAB Map是一个开源的实时定位和建图算法,它能告诉我们小车附近的环境,以及小车在环境中的某个位置。
- Move base是一个开源的路径规划算法,在已知地图和小车自身位置的前提下,动态地规划小车前进路线,避开静态和动态障碍物,到达指定地点。
二、实践
计算机环境:Ubuntu16.04、ROS-Kinetic
1、软件包安装
# Gazebo
sudo apt install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control
# Turtlebot3
sudo apt install ros-kinetic-turtlebot3-simulations ros-kinetic-turtlebot3-navigation
# RTAB map
sudo apt install ros-kinetic-rtabmap-ros
# Move base
sudo apt install ros-kinetic-move-base ros-kinetic-dwa-local-planner
2、代码运行
# 终端一:
export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_gazebo turtlebot3_world.launch
# 终端二:
export TURTLEBOT3_MODEL=waffle
roslaunch rtabmap_ros demo_turtlebot3_navigation.launch
这里的export TURTLEBOT3_MODEL=waffle是指定Turtlebot3机器人的类型为waffe。
Turtlebot3一共有三种机器人类型:burger、waffle、waffle_pi
运行终端一的程序,出现gazebo软件界面,其中并加载一个环境模型和机器人模型,机器人模型上有虚拟的激光雷达和深度相机:
运行终端二的程序,出现RTAB-Map界面和RVIZ界面。
RTAB-Map界面如下,可看到算法的建图效果:
RVIZ界面中可看到RTAB-map的建图和Move base的costmap。
在此界面上点击[2D Nav Goal]并在地图中选择一个目标点和方向,算法会自动进行路径规划并移动至指定位置和方向,效果如下:
3、遇到的问题
运行 roslaunch turtlebot3_gazebo turtlebot3_world.launch 时,
报错:
Error [parser.cc:581] Unable to find uri[model://sun]
Error [parser.cc:581] Unable to find uri[model://ground_plane]
原因:
少了两个gazebo模型文件:sun、ground_plane
解决办法:
下载gazebo模型,https://github.com/osrf/gazebo_models/archive/refs/heads/master.zip
这个zip有点大,解压出sun和ground_palne文件夹,然后拷贝至~/.gazobo/models文件夹:
(这里~/.gazobo/models文件夹就是gazebo默认的模型文件夹。)
ls ~/.gazebo/
# 如果没有models文件夹,自己创建一个。如果有,不用重新创建
mkdir -p ~/.gazebo/models
# 将sun、ground_plane文件夹复制到models/文件夹下
cp -r sun/ ~/.gazebo/models
cp -r ground_plane/ ~/.gazebo/models
复制模型过去后,再重新运行程序,就正常啦!