A. Kleiner, Albert-Ludwigs-Universität Freiburg Building Augmented Elevation Maps with a Tarantula...
-
date post
20-Dec-2015 -
Category
Documents
-
view
218 -
download
1
Transcript of A. Kleiner, Albert-Ludwigs-Universität Freiburg Building Augmented Elevation Maps with a Tarantula...
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Building Augmented Elevation Maps with a Tarantula RobotRescue Robotics Camp - Rome 2006
Motivation PART I: Rescue Robots Freiburg
Please have a look to the other talks of mine under: http://www.informatik.uni-freiburg.de/~kleiner/talks.html
PART II: Details on the practical Module Structure IPC Elevation maps
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 2
Details on the practicalIntroduction
The goal of this year's tutorial is to enable the Tarantula platform for building elevation maps from rough terrain, as typically found within disaster areas.
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 3
Details on the practicalProvided Hardware & Software
All experiments will be carried out on a Tarantula robot „Lurker“, equipped with: Inertial Measurement Unit (IMU) 2 Laser Range Finders (LRFs), one pointing parallel to the ground, and one with a freely adjustable
pitch angle (e.g. pointing downwards or upwards). The Robot software is organized by modules (executables) communicating via Inter
Process Communication (Simmons and James, 2001) Based on this communication framework, we provide the following binary modules:
SCAN:SCAN: a module for sending 2D and 3D scans from both sensors INERTIA:INERTIA: a module sending the three Euler angles yaw, roll and pitch from the IMU JOYSTICK:JOYSTICK: a module sending velocity commands from a joystick WEBCAM:WEBCAM: a module sending data from the connected cameras CONTROLLER:CONTROLLER: a module for controlling the robot, e.g. to set the translational and rotational
velocity ROBOGUI:ROBOGUI: a module for teleoperating the robot LOC:LOC: a localization module that sends the robot's global pose (x, y, ), estimated from LRF readings
and Odometry RECORDER:RECORDER: a module for recording log files READER:READER: a module for playing log files
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 4
Sensors
Actions
SLAM
Sensors
Exploration( Frontier Cell-based)
Other Robots
RoboGUI
ControllerVictim
detection
IncidenceCommander
HUMAN
System overviewInter Process Communication (IPC)
Behaviors( A* Planning &
Climbing behaviors)
Detected!
Map
Targets
Commands
Commands
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 5
Details on the practicalExisting Module Structure
SCAN
INERTIA
JOYSTICK
WEBCAM
ROBOGUI
RECORDER / READER
LOC
CONTROLLER
ROBOT
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 6
Details on the practicalNew modules (this year’s assignment)
ELEVATION MAPPER:ELEVATION MAPPER: A module for estimating height values of an elevation map by a Kalman Filter-based integration of data from the modules INERTIA, SCAN and LOC
HEIGHT ESTIMATOR:HEIGHT ESTIMATOR: A module for estimating the robot's current height by a Kalman Filter-based integration of data from INERTA and LOC
ELEVATION VIEWER:ELEVATION VIEWER: A module for displaying the elevation map computed by the ELEVATION MAPPER and the robot's pose calculated by the modules HEIGHT ESTIMATOR and LOC
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 7
SCAN
LOC
ELEVATIONMAPPER
ELEVATIONVIEWER
HEIGHTESTIMATOR
INERTIA
Details on the practicalNew modules structure (this year’s assignment)
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 8
Inter Process Communication (IPC): Developed by Reid Simmons at the Carnegie Mellon University (Simmons
and James, 2001) Platform-independent package for distributed network based message
passing Facilities for both publish/subscribe and client/server type communications It can efficiently pass complicated data structures between different machines IPC can run in either centralized-routed mode or direct point-to-point mode With centralized routing, message traffic can be logged Tools available for visualizing and analyzing the message traffic
Details on the practicalIPC Communication
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 9
Communication between two modules within three steps: Define your data structure, e.g.:
#define RESCUE_TILTED_RANGES_NAME "rescue_tilted_ranges"#define RESCUE_TILTED_RANGES_FMT "{int, int, <double:2>,<double:2>," ROBOT_BASE_FMT "}"
typedef struct {int id; // ID of this scanint nranges; // Number of rangesdouble *ranges; // Rangedouble *angles; // Angle (in deg)robot_base_message robot; // Def. see above
} rescue_tilted_ranges_message;
Publish data on the sender side:ComPublishToRobot(RESCUE_TILTED_RANGES_NAME, &msg);
Receive data on the receiver side with a message handler:void HeightMapper::update(const rescue_tilted_ranges_message & msg){
...}DEFINE_CLASS_HANDLER(msgHandlerTiltedRanges, HeightMapper, rescue_tilted_ranges_message);ComSubscribeToRobot(RESCUE_TILTED_RANGES_NAME, HeightMapper::msgHandlerTiltedRanges, this);
Details on the practicalIPC Communication
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 10
Base message, defining the sender ID and timestamp#define ROBOT_BASE_NAME "robot_base"#define ROBOT_BASE_FMT "{int,{long,long}}"typedef struct {
int id;timeval ts;
} robot_base_message;
Global pose calculated by the LOC module#define RESCUE_KALMAN_POSE_NAME "rescue_kalman_pose"#define RESCUE_KALMAN_POSE_FMT "{int, double, double, double, double, double, [double:3,3]," ROBOT_BASE_FMT "}"typedef struct{
int type; // see RESCUE_POSITION_TYPEdouble posX; // in mmdouble posZ; // in mmdouble posTh; // in DEGdouble transVel; // in mm/sdouble rotVel; // in DEG/secdouble sigma[3][3];
robot_base_message robot;}rescue_kalman_pose_message;
…
Details on the practicalModule interface
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 11
Details on the practicalElevation Map representation
n
m
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 12
Details on the practicalKalman Filter Update
Kalman update of height h and variance σ2 from observation z:
Problem with vertical structures:
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 13
Details on the practicalKalman Filter Update
Solution: Data fusion depending on Mahalanobis distance:
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 14
Details on the practical Calculation of z,σz
2
dx
zd
z`
α
Linearization with Taylor expansion:
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 15
Details on the practical Variance update from robot motion
T=k T=t
Problem: Localization error grows incrementally with length of robot trajectory
Solution: Update variance according to traveled distance
t
I(t)
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 16
Details on the practical Map filtering with a convolution kernel
Problem: “Mixed pixels” and “surface holes”
Solution: Map filtering with a convolution kernel
½ ½
½
½ ¼¼
¼¼
1
A. Kleiner, Albert-Ludwigs-Universität Freiburg
Rescue Robotics and the RoboCup Rescue Challenge 17
And what about map augmentation?That’s Raymond’s job!