gui.txt
97-2-16
Mark Sibenac 412.268.7033
Atacama Desert Trek Robot

Files associated with this GUI:
	gui.x		NDDS structure declaration
	gui_mess.h	Message numbers and other definitions
	gui.txt		This file; description of GUI


This lists the messages and commands for an interface between a GUI
and the real-time computer. Also included are rough guidelines for the
GUI. I would like the GUI to run on a Solaris 2.5 box with a Sparc 5
processor. It might be nice if it could work from Linux on a Pentium
computer, but not necessary. Below, LED stands for Light Emitting
Diode and represents a binary value. It does not have to be a color or
b/w changing light or anything, as long as it shows a binary value.

The GUI can be a layered system of modules. The two top modules are
the drive-system and the pointing-system. The drive-system has some
buttons and fields to it, but the pointing-system does not. Each has
sub-windows for AMP, PID, and TRAJECTORY. There are also sub-windows
for DRIVE under the DRIVE-SYSTEM which is applicable to the 6 driving
motors, and GPS under the POINTING-SYSTEM which is to simulate GPS
readings and also display live readings if it is hooked up. Since
there are 8 motors total on the robot, there will be 8 AMP windows, 8
PID windows, and 8 Trajectory windows.

The fields should be able to be updated if asynchronus messages come
in from the real-time computer. The GUI should send out asynchronus
NDDS messages whenever a field or button is updated by the user.

When sending a command, the GUI fills the command_pkt
structure. command_num is a number that can be found in
gui_mess.h. motor_num is a number from 0-7 that can also be found in
gui_mess.h. The three other values in the structure may or may not be
filled. For the radio buttons, send the setting thru the nValue
member. 

For the slider bars in the GUI, I would like to be able to change the
limits easily, since I have not defined them yet. Please use some type
of const definition for those.

DRIVE-SYSTEM:

	Speed (cm/s) (float slider)
	Reset (button)
	State (radio buttons)
		GO   (servos on and moving at speed above)
		STOP (servos on)
		LIMP (servos off)
	Turning Angle (rads) (float slider)
	
	AMPx6: 0,1,2,3-Drive; 4,5-Steering
		Reset (button)
		Status (radio buttons)
			Enable
			Disable
		Fault (LED)
		Enabled (LED)
		Temperature (LED)
		Max Command (amperes) (float box)
		Position (long integer box)
		Angle (rads) (float box)

	PIDx6: 0,1,2,3-Drive; 4,5-Steering
		Kp (float box)
		Ki (float box)
		Kd (float box)
		Integral Limit (int box)
		Max Position Error (int box)
		
	TRAJECTORYx6: 0,1,2,3-Drive; 4,5-Steering
		Reset (button)
		Target Position (long int box)
		Jog (button)
		Jog amount (ticks) (int box)
		Acceleration (ticks/s^2) (int slider)
		Max Velocity (ticks/s) (int slider)
		Status (radio buttons)
			Enable
			Disable

	DRIVEx6: 0,1,2,3-Drive; 4,5-Steering
		State (Radio buttons)
			Inhibited
			Servoing
			OverCurrent
			OverTemp	
			Servo_Error
		Velocity (rads/sec) (float slider)
				


POINTING-SYSTEM:

	AMPx2: 6-Azimuth, 7-Elevation
		Reset (button)
		Status (radio buttons)
			Enable
			Disable
		Fault (LED)
		Enabled (LED)
		Temperature (LED)
		Max Command (amperes) (float box)
		Position (long integer box)
		Angle (rads) (float box)

	PIDx2: 6-Azimuth, 7-Elevation
		Kp (float box)
		Ki (float box)
		Kd (float box)
		Integral Limit (int box)
		Max Position Error (int box)
		
	TRAJECTORYx2: 6-Azimuth, 7-Elevation
		Reset (button)
		Target Position (long int box)
		Jog (button)
		Jog amount (ticks) (int box)
		Acceleration (ticks/s^2) (int slider)
		Max Velocity (ticks/s) (int slider)
		Status (radio buttons)
			Enable
			Disable

	GPS:
		Hilltop Location Lat (float box)
		Hilltop Location Long (float box)
		Hilltop Location Altitude (float box)
		Rover Location Lat (float box)
		Rover Location Long (float box)
		Rover Location Altitude (float box)
		

