subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link
subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link
subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link
subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link
subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link
subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link
subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link
subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link

System Design

 

 

 

 


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