Swarm Robot Quickstart Guide
This guide was written as a quickstart guide for the Swarm Robots Project, but contains general information about programming e-pucks.
Checklist
In order to run the system, you will need:
- e-puck robots, with XBee extension boards and configured radios.
- Bluetooth adapter on your computer.
- Compiled .hex file found in e-puck code project
- Tiny Bootloader
- Compiled program for Machine Vision Localization System.
- You may also want to use one or more of the Analysis Tools such as the real-time display.
Items needed to edit the e-puck code
If you want to edit the e-puck code, you will need the following:
- Microchip MPLAB (for editing code, not needed to run)
- Microchip C compiler for dsPICs (for editing code, not needed to run)
- Code for e-pucks
Programming the e-pucks
You will need to get the compiled .hex file for the e-puck, and then load it onto the PIC with Tiny Bootloader over the bluetooth radio. The compiled .hex file can be found here: File:Swarm epucks code.zip.
Connecting to the e-puck
To program the e-puck, you first need to connect to the e-puck. Go to the Control Panel, and open Bluetooth Devices, and go to Devices>Add.... Turn on the e-puck, check My device is set up and ready to be found, then click next. When the computer has found the e-puck, select it (the ID of the epuck is a four-digit number found on a sticker on top of the bluetooth chip on the e-puck). When the prompt asks you for a passkey, enter the 4-digit ID number. The computer should then reserve a COM (serial) port to communicate with this particular e-puck. The computer will set up different COM ports for different e-pucks; this is normal. Go back to Bluetooth Devices in the Control Panel, and select the COM Ports tab, and see port is assigned Outgoing to the e-puck. This is the COM port you will use to program this particular e-puck when using Tiny Bootloader. If you're using a USB bluetooth dongle, if you unplug it and replug it into a different USB port, or use a different dongle, you may need to reconnect to the e-pucks.
Programming the e-puck
A bootloader is a type of program that is loaded onto a microcontroller which allows one to re-program the microcontroller in the field without having to use an special flash programmer (the programmer is still needed to load the bootloader onto the microcontroller in the first place). The Bootloader has two components: a programmer that runs on your computer, and a program that runs on the e-puck's PIC. When the PIC is turned on, bootloader will check to see if someone is attempting to re-program the PIC; if yes, the bootloader will overwrite its old program with the new program; if not, or if it times out while waiting for the new data stream, it will simply run the current program.
To program the e-puck, start the Tiny Bootloader program on your computer. (Although you can also use a flash programmer such as the ICD2 to program the e-puck, it will take much longer and can't be done wirelessly.) Click on Browse and select the .hex file that you want to load. The .hex file is the compiled code from Microchip's C compiler. Under Comm, use 115200 for the baud rate, and type in the outgoing COM port assigned to this e-puck (e.g. COM10, COM11, etc.). Turn on the e-puck, and click on the Write Flash button. The blue bar underneath the button should start counting down. Now, hit the blue reset button on the e-puck, before the blue bar reaches zero and times out. If the e-puck is successfully connected, an orange LED on the e-puck will turn on, and the bootloader will start to program the PIC on the e-puck.
Troubleshooting
- If Tiny Bootloader cannot connect to the COM port, make sure your e-puck is on, and that you've selected the correct COM port assigned to the e-puck (the ID of the e-puck is on a sticker on top of the bluetooth chip on the e-puck's PCB.
- If Tiny Bootloader can connect to the e-puck but cannot find the PIC, it may be that someone has overwritten the bootloader with another program. See the section below Re-loading the Bootloader to see how to restore the bootloader with the ICD2 programmer and MPLAB.
Re-loading the Bootloader
The e-pucks require that a special bootloader program be loaded on it if you want to program the e-puck over a bluetooth radio.
You can download the .hex file you need at http://www.e-puck.org. On the website, go to Download>Software>Library and download the zip file. Extract the archive, and navigate to e-puck-lib\tool\bootloader\epuck_side. The file tinybld_ds6014A_7.37Mhz_115200uart1_8xPLL_with_LEDs.hex is the one we will use.
You will need Microchip's MPLAB and ICD2 to program in the bootloader on the PIC. After opening MPLAB, select to Programmer>Select Programmer>ICD2. Then, go to File>Import> and navigate to tinybld_ds6014A_7.37Mhz_115200uart1_8xPLL_with_LEDs.hex. Then, connect to the ICD and program the PIC.
Starting the Vision System
The vision system is needed to track the position of the robots and send out commands. You can get the compiled program here (no source code): File:Vision localization.zip
- Connect an XBee radio with ID 0 to the computer. The ID must be 0 so that the robots can tell that the packet is from the computer and not another robot.
- Follow the directions on the Machine Vision Localization page to set up and calibrate the system.
- Make sure the robots are in the field of view of the vision system.
- Let the system run for a few seconds so that the robot's positions will be updated.
- Select the GUI window and hit 'c' to enter the command mode.
- Select the console window and enter the goal statistics that you want using the goal command. You can skip this step if you want to use the default [100 300 160000 40000 40000] goal statistics. Send the command 2 or three times in case one or more of the robots doesn't get the message.
- Use the wake command (wake 0) to start the robots.
- Exit the console by typing exit. The system should now be running.
Try moving the swarm to another configuration:
- press 'c' at the GUI window.
- enter the command goal 0 -100 -200 120000 0 120000
- type exit and hit enter.
Using the Real-Time Display
See Swarm_Robot_Project_Documentation#Real-time_Display