ME131 Lab 1

From Robotics Wiki

Jump to: navigation, search

Contents

Lab 1 - Odometry and Scanmatching

Objectives

  1. Implementing wheel odometry
  2. Implementing the Lu-Milios Scanmatching strategy for robot localization (part 1 of 2)
  3. 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.

    • Your algorithm can be written in C/C++ or MATLAB
    • To test your written algorithm, use these data files:
      • scan 1 <-- right click and Save As
      • scan 2 <-- right click and Save As
        • The format for the data files are as follows:
    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

DATE/TIME NAMES
29-April, 3:00
29-April, 3:45
29-April, 4:30

LAB 1 TIMES (cont)

DATE/TIME NAME
30-April, 3:00
30-April, 3:45
30-April, 4:30 Jeff Flanigan & Ben Flora

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>



ROBOT PORT ID #

PORT # NAME
6665 <DEFAULT>
6666 A. Liu
6667 K. Noertker
6668 B. Flora
6669 J. Flanigan
6670 G. Wagner
6671 J. Paulos
6672 A. Wu
6673 R. Paolini
6674 M. McDuff
6675 R. Kurdyumov
6676 P. Hebert
6677 D. Rukavina

ROBOT PORT ID #

PORT # NAME
6678 M. Smith
6679 T. Desautels
6680 J. Burt
6681 Karthik B.
6682 C. Peng
6683 L. Kunesh
6684 H. Man
6685 J. Edlund
6686 T. Roy
6687 D. Rizzo
6688 P. Trautman
6689
6690