ME/CS 132a, Winter 2012, Lab 1
Exercise #0: Linux Primer (skip this if you had prior experience)
If you have not used Linux (or any UNIX-like OS) before, go to http://imss.caltech.edu/cms.php?op=wiki&wiki_op=view&id=324 to learn the basics of command line operations. It is important to go through this since we will heavily rely on the command line for the labs.
Exercise #1: Running Player/Stage Remotely
In order to run Player/Stage remotely, you'll need to access the course server using the login information provided by the TA. You'll need to have X-forwarding enabled. This is pretty straight-forward if you're running UNIX-like systems. See below for special notes on how to run using Windows.
- Server address: tokyo.cds.caltech.edu
- Connection type: SSH
- We will use the dollar sign "$" as the command line prompt. You shouldn't include this as part of the commands below.
Logging into the Player/Stage remote server (Linux/Mac OS X)
- Open a terminal window (that is X-friendly).
- Connect to robotics via SSH:
$ ssh -X email@example.com
and enter the password (where username needs to be replaced with the one received from the TA).
- The "-X" enables X11 forwarding, which is how you'll get the Stage windows and such to appear on your local machine.
- If this is your first login, be sure to change your password by running:
Logging into the Player/Stage remote server (Windows)
- Change directory to the appropriate path that contains the player configuration file:
$ cd part1/me132_tutorial_player/configs
- Start up Player, using the test config file:
$ player simple.cfg -p <your_RPIN>
- your_RPIN is your robot port ID number which you were already assigned.
- You should see the Stage simulator and a simulated robot wandering around.
Exercise #2: Running Player/Stage with Your Own Client Code (Controller)
In Exercise #1, we have seen the simulated robot wander around, but now let's make it move in a controlled fashion by inserting our own controller (referred to as the client code).
- Follow the instructions as in Exercise #1, but this time use another config file:
$ player lab0014.cfg -p <your_RPIN>
- Open another terminal window. Connect to the server, and change to the directory containing the tutorial client code, e.g.:
$ cd part1/me132_tutorial_player
- Compile the C++ code to generate the binaries (i.e. executables). You only need to do this once, unless you change the source C++ code (.cc files):
- Run the following to start the client program. Take me132_tutorial_0 as an example:
$ ./me132_tutorial_0 -p <your_RPIN>
- You should see the robot moving in a circle in the Stage simulator.
- The reason that "./" (meaning "the current directory") is put before the executable is that Linux does not automatically look for the file in the current directory (unlike in Windows), so we need to explicitly tell its location.
Exercise #3: Controlling the Robot Using Player and Client Code
IMPORTANT: Read this before you come to the lab session.
In Exercise #2, we have made the robot move in a controlled fashion by inserting our client code. Now let us learn how to control a real robot using the same client code. You will only be able to do the following during the lab session, but it can save you a lot of precious lab time if you read this beforehand:
- When you are in the lab, connect to the lab wireless network arena.
- SSH to the laptop and copy your code/binaries to the laptop. This is similar to connecting to the course server, but with a different username and remote address:
- Username: me132
- IP address: 10.0.126.13 (laptop #1, aka honolulu), 10.0.126.14 (laptop #2, aka hilo)
- Go to the configs directory. Use pioneer2.cfg or pioneer2_laser.cfg (when there is a laser scanner onboard) as the config file to run Player:
$ cd ~/configs
$ player pioneer2.cfg
$ player pioneer2_laser.cfg
Both config files will be given during the lab session. Note we do not give a RPIN during the lab session. Instead, we use the default one for convenience, since there won't be any other active users.
- Open another terminal window. Connect to the laptop, and start your own client program as in Exercise #2. You should see the robot move in your desired fashion. For me132_tutorial_0 to me132_tutorial_2, run them as before, but without the RPIN (to be consistent with Step 2). For me132_tutorial_3, you need to run it with one additional parameter, the camera ID, which will be given during the lab session:
$ ./me132_tutorial_3 <camera_id>
You will also need to copy the corresponding camera calibration file to the directory where me132_tutorial_3 is located:
$ cp ~/bb2_cal/<camera_id>.cal .