16-735 Robot Motion Planning
Fall 2007
State Estimation & Path Planning for Scarab Rover
![]() | ![]() |
| Figure 1: Scarab rover | Figure 2: GPS antenna on Scarab |
Overview
State Estimation
Path Planning
State Estimation
Linear Kalman Filter using GPS and IMU data
We implemented a linear kalman filter in the typical manner:![]() | ![]() | |
| "Predict" | "Correct" |
| x | = | 18x1 state vector: [x,y,z,θroll,θpitch,θyaw,dx,dy,dz,dθroll,dθpitch,dθyaw,d2x,d2y,d2z,d2θroll,d2θpitch,d2θyaw]T |
| u | = | Control input |
| (assumed to be zero here, so any motion is a perturbation) | ||
| A,B | = | Process model |
| (to simplify unknown complex model, assumed to be axis-independent constant velocity and constant acceleration kinematics for point-object) | ||
| P | = | Estimate error covariance |
| Q | = | Process noise covariance |
| (estimated empirically from data and hand-optimized) | ||
| z | = | 9x1 measurement vector: [x,y,z,dθroll,dθpitch,dθyaw,d2x,d2y,d2z]T |
| R | = | Measurement noise covariance |
| (estimated empirically from data and hand-optimized) | ||
| H | = | Sensor model |
| (a matrix with ones in the appropriate locations) | ||
| K | = | Kalman gain |
"Half" Kalman Filter using optic flow and IMU data
Because Scarab is designed to be a prototype for a lunar mission into deep craters, for which absolute fixes using as GPS or star-tracking will not be available, we are interested in computing odometry during motion using only locally-available information. The method currently under evaluation uses a quad-lens optic flow sensor shown in figures 3 and 4 to estimate ground speed. This was chosen over wheel-based odometry due to the frequent occurrence of slip in the targeted environments.![]() | ![]() | |
| Figure 3: Optic flow sensor | Figure 4: Optical sensor on Scarab |
![]() | and | ![]() |
Results
We collected data from a particularly challenging traverse in which Scarab followed a circular path leading through a crater. At one point during this run, it reached a pitch angle of upward of 30 degrees.
![]() | ![]() | |
| Figure 5: Entering crater | Figure 6: Exiting crater |
LKF with GPS and IMU data
The results of our LKF are compared to the filter built into the commercial INS/GPS system used on Scarab. The built-in filter path is taken as ground truth as it has access to more data and runs at a higher frequency than our filter, though we acknowledge that it too is imperfect. Click on the following figure for a visualization.![]() |
| Figure 7: LKF crater results |
Optical Odometry
The optical sensor was attached during this traverse, and integrating the velocity it provided the following results. Click on the following figure for a visualization.![]() |
| Figure 8: Optical sensor crater results |
Additional exciting results have become available, from a 10+ hour 1km traverse that took place after the class presentation. The path traced around the Robot City LTV Steel site test area is here overlaid on an overhead view provided by Google Earth.
![]() |
| Figure 9: Optical sensor 1km results |
Path Planning
Our original intentions were to write a path planner for an Ackermann-steered vehicle and feed its output to the drive-by-wire system to the Kodi vehicle, a robot housed in the FRC. This would be integrated with our state estimation component by using a real-time Kalman filter to estimate the robot's position during execution. Unfortunately, contention for the vehicle and adverse weather conditions by the time we were ready to test prevented us from carrying this out. Instead, we here show results from a simulated environment.The planner is an A* planner operating in the space of commands to an Ackermann-steered vehicle. Specifically, at each state/timestep, the planner must select between any of several steering angles that are nearby offsets from the current one (for realism, we impose a maximum slew rate, that is, the maximum rate at which the steering wheel can turn). This is then integrated forward for one timestep in simulation to determine the state that would follow if this command were given. The objective is to determine a path through the 2-D world that does not intersect any obstacles.
To make this more interesting, we have included the notion of a limited worldview requiring replanning. Initially, the robot does not know of any obstacles, and the path it finds to the goal is a straight line (possibly intersecting many obstacles). A virtual sensor range is specified so that as the robot follows this path, it may discover any obstacles lying within this radius. If during execution it discovers that a collision is soon imminent, it stops, replans using the updated map, and recommences execution. Click on the following figure for a visualization of this process.
![]() |
| Figure 10: Simulation of A* planner for Ackermann vehicle |
This particular example demonstrates this replanning on several occasions, after which the robot is finally able to reach the goal.
Conclusions
In this project, we explored both probabilistic state estimation and path planning. We demonstrated a functioning LKF implemented on a real robot and achieved significant results in odometric pose estimation on the same robot. We also demonstrated a dynamically-replanning path planner for a mildly-complex vehicle, though not on a real robot as we had wished.