Académique Documents
Professionnel Documents
Culture Documents
Hector SLAM
2
BITS Pilani, Pilani Campus
In order to build a map, we must
know our position
5
BITS Pilani, Pilani Campus
In order to reduce its uncertainty, the robot must observe features
whose location is relatively well known
The observation is called loop closure detection
6
BITS Pilani, Pilani Campus
Lizi robot
Equipped with Hokuyo-URG-04lx-UG01 laser scanner
200 area scanning range with 4m depth
IMU, Compass, GPS, RGB-D Camera and Ultrasonic
range sensors
7
BITS Pilani, Pilani Campus
Heterogeneous Cooperating Team of Robots
Developed by S. Kohlbrecher, J. Meyer, O. von Stryk
and U. Klingauf.
Combines scan matching approach using a LIDAR
with a 3D estimation system based on inertial
sensing.
8
BITS Pilani, Pilani Campus
9
BITS Pilani, Pilani Campus
2D SLAM: Gmapping (Laser based SLAM)
Works only for planar environments
Relies heavily on odometry
3D SLAM: SLAM6D
Involves 3D reconstruction therefore not
applicable for online use
Visual SLAM: RGB-D (uses RGB-D cameras)
Computationally expensive
Not having enough depth information
10
BITS Pilani, Pilani Campus
Map generated by RGB-D SLAM
11
BITS Pilani, Pilani Campus
Challenge:
Given a partial knowledge of the world (incomplete map)
where should the robot move next to increase this
knowledge and improve the map
The exploration strategy is based on the frontier
exploration technique developed by Yamauchi in "A
Frontier-Based Approach for Autonomous Exploration
Consists of two parts:
Planner
Controller
12
BITS Pilani, Pilani Campus
Generates goals as well as associated paths
Two challenges:
How do we select a target?
What path do we choose?
Inputs:
Current robot state
Current map
Outputs:
Goal states
Trajectory to goal states
13
BITS Pilani, Pilani Campus
14
BITS Pilani, Pilani Campus
Our exploration strategy: In order to get new information, go
to a frontier
A frontier is a cell in the occupancy grid that is marked as free
but has a neighboring cell that is marked as unknown.
15
BITS Pilani, Pilani Campus
//Procedure doExploration();
global map;
global current_pose;
16
BITS Pilani, Pilani Campus
//Procedure findFrontiers();
Vector allFrontiers;
For(all cells in occupancy grid){
if(isFrontier(cell)){
allFrontiers.push_back(cell);
}
}
17
BITS Pilani, Pilani Campus
//Procedure isFrontier(point);
18
BITS Pilani, Pilani Campus
//Procedure buildDistanceTransform(current_pose, goals);
cur_point = current_pose;
vector plan;
While(!is_goal[cur_point]){
getAdjacentPoints(cur_point);
int maxDelta = 0;
for(point in adjacentPoints){
if(isFree(adjacentPoints[i])){
thisDelta = transform_grid[currentPoint] - transform_grid[adjacentPoints[i]];
if(thisDelta > maxDelta){
maxDelta = thisDelta;
nextPoint = adjacentPoints[i];
}
}
plan.push_back(cur_point);
cur_point = nextPoint;
}
20
BITS Pilani, Pilani Campus
A ROS node which responsible for generating and
limiting the twist messages which are sent to the
robot once the planner has finished its work.
11
BITS Pilani, Pilani Campus
Input:
Current robot pose
Path given by exploration planner
Output:
List of velocity commands
11
BITS Pilani, Pilani Campus
Running autonomous exploration in Lab environment
BITS Pilani, Pilani Campus
Running autonomous exploration in Lab environment