System Design Document
Version 1.0
December 12, 2004
Table of Contents
1. System Design . 3
1.1 Introduction .. 3
1.2 User Interface .. ........ 3
1.3 Current System Architecture . 3
1.3.1 Overview . 3
1.3.2 The Applet . 4
1.3.3 The Middle Man 4
1.3.4 The Remote Control Server . 5
1.3.4.1 ARIA 5
1.3.4.2 Saphira 5
1.4 Proposed System Architecture . .. 4
1.4.1 Overview 5
1.4.2 Camera Control. ... 6
1.4.2.1 Zoom . .. 6
1.4.2.2 Pan .. 6
1.4.2.3 Tilt .. 6
1.4.3 Mapping . 7
1.4.3.1 Map class ... ... . 7
1.4.3.2 Robot class... .. 7
2. Languages . 7
3. Object Design 7
3.1 Introduction .. 7
3.2 Class Diagram .. 8
3.3 MapClass . . 8
3.3.1 Purpose .. 8
3.3.2 Data Members . 8
3.3.3 Methods . 9
3.4 RobotClass 10
3.4.1 Purpose .. 10
3.4.2 Data Members 10
3.4.3 Methods .. 10
3.5 CameraControlClass . 11
3.5.1 Purpose .. 11
3.5.2 Data Members . 11
3.5.3 Methods . 11
3.6 PanClass 12
3.6.1 Purpose .. 12
3.6.2 Methods . 12
3.7 TiltClass 12
3.7.1 Purpose .. 12
3.7.2 Methods . 12
3.8 ZoomClass 12
3.8.1 Purpose .. 12
3.8.2 Methods . 12
4. Conclusion .. 13
1. System Design
1.1 Introduction
The purpose of this system is to provide the department robot, Taz with intuitive camera controls, and a mapping feature. These features will be added to the current website. The new controls will allow users to control the front-mounted camera on Taz giving users the ability to zoom in and out, pan left and right, and tilt up and down. In addition there will be a map added to the website which will show the robot's specific location and orientation in the Engineering building.
1.2 User Interface
Our system will expand the user interface of the current system. In addition to the controls for movement of the robot which are already in place, three controls for camera movement will be added, and also a scaled map of the Engineering building that shows the position of the robot in the building. Users will be able to control the zoom and tilt features via slide bars. The pan feature will use and arc-dial to allow users to move the camera left and right. The side panes of the current website will remain the same, along with the general look of the website.
1.3 Current System Architecture
1.3.1 Overview
The current system architecture consists of three main subsystems, the Applet, the Middle Man, and the Remote Control Server. This system was developed by N.O.R.R.T., a senior project group from the fall 2001 semester. These three portions communicate with one another to provide the user interface, and control the robot. The proposed system will build on the current system, but it will not replace it. The current system architecture is shown in Figure 1 below.
Figure 1. Existing Architecture
1.3.2 The Applet
The Applet portion of the current system runs on a client machine. The Applet is the portion of the system that the users interact with that allows them to control the robot. The Applet uses a GUI which contains the movement controls for the robot. The movement controls are dynamic, meaning if a movement is not allowed at that instant, the control will be unavailable. Movement commands selected by the user are sent to the Middle Man via sockets. The Middle Man also sends information back to the Applet on which movements are currently available. The Applet also displays video feed from the robot's front-mounted camera. This feed allows users to see what is in front of the robot.
1.3.3 The Middle Man
The Middle Man runs on a web server, Roboti. It receives commands from the Applet via sockets. It processes these commands into RCP commands. It then relays the RCP commands to the Remote Control Server. The Middle Man also handles some security concerns by limiting the number of user connections.
1.3.4 The Remote Control Server
The Remote Control Server runs on the actual robot. It receives RCP commands from the Middle Man, and relays them to the robot. This part of the system also provides the robot's localization and navigation. It uses its laser sensors to pinpoint its location in relation to the Grid. This information is then used for navigation of the robot. The Remote Control Server also sends information to the Middle Man that will then be sent to the Applet to update the GUI as to what movements the robot can make. The Remote Control Server uses two APIs, ARIA and Saphira.
1.3.4.1 ARIA
ARIA (ActivMedia Robotics Interface Application) is an object oriented interface to ActivMedia robots. ARIA is usable in Linux and Win32, but the current system uses it in Linux. ARIA communicates via a client/server relationship, using a TCP/IP connection or a serial port. ARIA uses C++.
1.3.4.2 Saphira
Saphira is a robot control system used for graphically interfacing with the robot. This program shows the administrator where the robot thinks he is on a map that has been created by the robot, and also what the robot sees using its lasers.
1.4 Proposed System Architecture
1.4.1 Overview
Our system consists of two main parts, the camera controls, and the mapping feature. These systems will be added to the existing web interface. Our design is modular in that each subsystem will be developed individually, and then integrated. We will be writing our code in Java, and integrating it with the current applet. The modifications to the existing architecture are shown in Figure 2 below.
Figure 2. Proposed System Architecture
1.4.2 Camera Control
Our system will provide users with three basic camera controls; zooming, panning, and tilting. Describe how these controls will be implemented and coded
Zoom
This class is responsible for handling the zooming feature of the camera controls
1.4.2.2 Pan
The pan class is responsible for handling the panning feature of our system.
1.4.2.3 Tilt
The tilt class is responsible for handling the tilting feature of our system.
1.4.3 Mapping
The map is the portion of the system that solves the orientation problem. The mapping subsystem will allow users to visualize the robot's position in the Engineering Building . The robot will be represented on the map in the form of an arrow which points in the direction that the robot is facing. The map subsystem will consist of two classes Map, and Robot.
Map
The map class is holds the map image and is also responsible for drawing the picture of the map onto the applet canvas. It has the map dimensions, and scales the map to the proper size when the user zooms in and out.
Robot
The robot class holds the image of the robot icon. It keeps track of the robot's horizontal and vertical coordinates. It also is responsible for holding the angle at which the arrow icon representing the robot is pointing. This class draws the robot icon on to the applet also.
2. Languages
Our code will be written in Java. We will be using Java because the current applet is written in Java. To write the code, we will be using the Java editor Eclipse. We chose eclipse because it is open source, and it is easy to use.
Portions of the current system are written in C, and C++. Since we will not be changing these other portions we will be using C or C++
3. Object Design
3.1 Introduction
This section describes the classes contained in the system of our project. The classes are divided individually each containing a description of the purpose, a list of the data members, and a list of the methods contained in the class. These classes have been described in the proposed system architecture, but will now be broken down into implementation specifics. Figure 3 shows our class diagram.
Class Diagram
Figure 3 Class Diagram
Map Class
Purpose
The map class holds map image, and draws the image onto the canvas.
Data Members
private Robot rbt
The robot object
private Image mapImage
Holds the map image
private double mapHeight, mapWidth
Dimensions of the map
private double mapLeft, mapRight
The left and right edges of the map
private int zoomLevel
The level at which the map is zoomed
3.3.2.6 private int canvasHeight, canvasWidth
The dimensions of the applet canvas
Methods
public Map(Image newImage,int newCanvasWidth,int newCanvasHeight)
Initializing constructor
public void init() Initialize the variables public Point getRobotPosition() Return the position of the robot on the map public float getRobotAngle() Return the angle the robot is facing public int getZoomLevel() Return the level of zoom void plotRobot(float xPos, float yPos, float theta)
Plot the robot on the map
public void paint(Graphics gc)
Draw the canvas
public void zoomIn()
Zoom the map in on the robot
public void zoomOut()
Zoom the map out
Robot Class
Purpose
The robot class holds the robot image and information about its position and direction. It also moves the robot icon through the map
Data Members
private int vertexCount
The number of vertices on the robot polygon
int robotRadius
The radius of the robot image
private int[] xPts
The x coordinates of the vertices
private int[] ypts
The y coordinates of the vertices
private float robotCenterX
The robot center's x coordinate
private float robotCenterY
The robot center's y coordinate
private Polygon theRobot
The robot icon
private Color robotColor
The color of the robot icon
Methods
public Robot()
Initializing constructor
public Robot(float newCtrX,float newCtrY,float newTheta,int newRadius,Color newColor)
Constructor
public Polygon getTheRobot()
Returns the robot icon
public Color getRobotColor()
Returns the robot color
public int getRobotRadius()
Returns the robot radius
public float getYpos()
Returns the y coordinate of the robot's center
public float getXpos()
Returns the x coordinate of the robot's center
public void turnLeft()
Turns the robot icon left
public void turnRight()
Turns the robot icon right
public void setRadius(int newRadius)
Sets the radius of the robot icon
public void moveForward()
Moves the robot icon forward
Camera Control class
Purpose
Facilitate the movement of the front-mounted camera
Members
bool reverseAxis
Whether or not the axis is reverse
Methods
void ReCente()
Re-centers camera
PanControl
Purpose
Facilitate the panning control of the camera
Methods
PanLeft
Pan camera left
PanRight
Pan camera right
TiltConrol
Purpose
Facilitate the tilting control of the camera
Methods
TiltUp
Tilt camera upward
TiltDown
Tilt camera downward
ZoomControl
Purpose
Facilitate the zooming of the camera
Methods
ZoomIN
Zoom camera in
ZoomOut
Zoom camera out
Conclusion
The design we have come up with should adequately satisfy the requirements ser forth by our clients. Our clients requested that we enhance the existing roboti web interface to give users a sense of orientation as they navigate through the Engineering Building . To accomplish this we have devised two subsystems: a mapping feature to give the users a sense of orientation, and a camera controls subsystem which adds controls for tilting, panning, and zooming the camera on Taz. We will be coding in a modular fashion so that our code can be easily integrated into the current applet.
About Us |Contact Us | ©2004 Team Evolution