ME131 Lab 1
From Robotics Wiki
Contents |
Lab 1 - Odometry and Scanmatching
Objectives
- Implementing wheel odometry
- Implementing the Lu-Milios Scanmatching strategy for robot localization (part 1 of 2)
- NOTE: this first lab will be mainly homework submissions with actual lab times scheduled for the second half (Lab 2)
Assignments
1. Implementing Odometry
- In class, we discussed an approach to determining robot odometry on a two-wheeled, non-holonomic robot, given a sequence of encoder ticks. Write a function that takes in the latest reading of encoder ticks and an associated timestamp, and computes an updated (x, y, and theta) for the robot.
[x_new, y_new, theta_new] = compute_odometry(num_left_ticks, num_right_ticks, timestamp)
- depending on the way in which your function is implemented, it is OK to also take in as additional arguments the number of left and right ticks from the previous timestep.
- Use the following data set to test your function:
- ticks <-- right click and Save As (data formatted as [ left_tick right_tick timestamp ]
- WHEEL_RADIUS (m): 0.055
- METERS_PER_TICK: 0.0000057
- WHEEL_BASE (m): 0.38
- Submit your function as well as a figured plot of the traversed path of the robot (you can assume it begins at 0,0,0).
2. Implementing Scanmatching
- Read the Lu-Milios paper on scan-matching: Image:Milios robot pose.pdf (<-- Lu-Milios Scanmatching Paper)
- In section 4 of the Lu-Milios paper, the authors discuss two approaches to the point correspondence problem: an iterative-closest-point rule and a matching-range-point rule. Choose one of the two rules to implement an iterative feature-correspondence function. The input to your algorithm should be two laser scans, a rotation and translation guess, and the output should be a correspondence matrix C (Nx1):
[ C ] = find_correspondence(scan1, scan2, w, T)
The correspondence matrix, C, should be defined in the following way:
C[i] = j
indicates that the i-th point of the 1st Scan matches the j-th point of the 2nd Scan. If no match exists, have j be -1. The remainder of the Lu-Milios algorithm will be completed in next week's lab.
x y theta r1 r2 r3 ... rN
(where x and y are in meters and theta is in radians; r1 is the range of the first laser scan pt and corresponds to a bearing of -90 deg and increments by +0.5 deg for each range measurement thereafter up to +90 deg, i.e. (r,phi):: (r2,-89.5 deg), (r3,-89.0 deg), etc) The (x,y,theta) values are the output from the odometry in Stage. You can use this as reference only, to see how accurate your correspondence function is.
- Submit your function as well as a figured plot, with both scans plotted in the same frame and lines adjoining matched points.
Scheduling
Next week, you will be completing the scan-matching algorithm and testing its advantages/disadvantages when compared against odometry. You need to schedule a slot to conduct your robot experiment next week on the testbed. Please send the TA an e-mail with your top three picks for lab times (jerma@caltech.edu).
Before you can test your algorithms on the robots, you have to demonstrate its functionality to the TA in Stage! You should NOT use your robot time to do code development or major debugging; otherwise be prepared to reschedule for another time slot or for a special appointment with the TA's.
LAB 1 TIMES
|
LAB 1 TIMES (cont)
|
RPIN Signups
Since (most) everyone is going to be using the Player/Stage remote server, we need to ensure that people aren't using conflicting ports (i.e. Player's default port is 6665, but only one person can use that at a time).
Note your assigned Robot Port ID Number, which will make sure everyone is always using a different port to connect to the remote server. Then, when connecting to the remote server, use the following syntax:
- $ player lab0014.cfg -p <your_RPIN>
