Front End
The front end is the main interaction the user has while testing and operating the robot. Using the Front End, the user sends commands to the Body over the Frontend_Interface (Also see Software_Design). The Body contains the main control algorithms (e.g. waypoint navigation, obstacle avoidance etc.) and will send the appropriate motor commands etc. There are potentially many different front ends (Labview, JAUS, commandline, python, etc.). As they are developed they will be described below.
Remote Drive via Python
This Front End is a simple python script that uses "WASD" keyboard input to drive the robot. It turns the key-presses into large-granularity motor signals and then sends them to the Body over the Frontend_Interface. The current implementation of the body will simply send those commands over the Backend_Interface to the Backend.
The end result is this: When you press 'w', the Python sets both motors to full and sends a UDP packet over the front-end interface. The body receives this packet, reformats it and sends it over the backend interface to the motors. The motor driver receives this packet and sends a serial command to the s12 which sets the appropriate PWM.
Why have the body at all? Good question. In this example the body isn't really doing anything, it's just forwarding the packets. But in the future the body will do some processing on the information. For example if instead having to hold down the 'w' key, you wanted to press it once and have the robot go forward 1 meter. In this case, the front end (in this case the python script) would send a command like "fwd:1.0" and the body would receive this command and do the following: 1) set the motors to forward 2) read encoder values till it has reached one meter, and 3) stop the motors. It's all about abstraction
Python Front End
- User Interface
- Drawing a window
- Accepting Keyboard input
- Communication to Body
- UDP packets
- Configuration files
- common parameters changed in config files
Remote Control Example
- The front end takes "W A S D" keyboard inputs and then the robot will drive forward, or simple turning
Labview Front end Example
- Top.vi from Raslow IGVC 2006 was the main front end interface. See RAS IGVC 2006 paper for screenshots
- Labview is a great graphical user friendly front end however the speed and performance restricts code development and optimization for realtime robot operation
