From e7ee1dabe73177f6a85a8af86aa29c2a2cfec05c Mon Sep 17 00:00:00 2001 From: Corwin Perren Date: Fri, 1 Dec 2017 21:23:18 -0800 Subject: [PATCH] Adding an initial version of the document for compile testing --- .../design_document/0_design_document.tex | 135 ++++++++++++++++++ .../design_document/1_introduction.tex | 45 ++++++ .../design_document/2_references.tex | 2 + .../design_document/3_glossary.tex | 17 +++ .../4_design_considerations.tex | 61 ++++++++ .../design_document/5_component_design.tex | 38 +++++ .../design_document/5_component_design_1.tex | 26 ++++ .../design_document/5_component_design_2.tex | 17 +++ .../design_document/5_component_design_3.tex | 33 +++++ .../design_document/5_component_design_4.tex | 15 ++ .../design_document/5_component_design_5.tex | 12 ++ .../design_document/5_component_design_6.tex | 15 ++ .../design_document/5_component_design_7.tex | 15 ++ .../design_document/5_component_design_8.tex | 16 +++ .../design_document/5_component_design_9.tex | 15 ++ .../6_user_interface_design.tex | 89 ++++++++++++ .../design_document/7_conclusion.tex | 3 + .../design_document/backup_content.tex | 16 +++ .../design_document/bibliography.bib | 5 + .../figures/OSURCLogoOrange.png | Bin 0 -> 13297 bytes ...egon_State_College_of_Engineering_Logo.jpg | Bin 0 -> 46455 bytes .../figures/left_screen_svg.png | Bin 0 -> 20537 bytes .../figures/right_screen_svg.png | Bin 0 -> 20580 bytes 23 files changed, 575 insertions(+) create mode 100644 cs_capstone_documents/design_document/0_design_document.tex create mode 100644 cs_capstone_documents/design_document/1_introduction.tex create mode 100644 cs_capstone_documents/design_document/2_references.tex create mode 100644 cs_capstone_documents/design_document/3_glossary.tex create mode 100644 cs_capstone_documents/design_document/4_design_considerations.tex create mode 100644 cs_capstone_documents/design_document/5_component_design.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_1.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_2.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_3.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_4.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_5.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_6.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_7.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_8.tex create mode 100644 cs_capstone_documents/design_document/5_component_design_9.tex create mode 100644 cs_capstone_documents/design_document/6_user_interface_design.tex create mode 100644 cs_capstone_documents/design_document/7_conclusion.tex create mode 100644 cs_capstone_documents/design_document/backup_content.tex create mode 100644 cs_capstone_documents/design_document/bibliography.bib create mode 100644 cs_capstone_documents/design_document/figures/OSURCLogoOrange.png create mode 100644 cs_capstone_documents/design_document/figures/Oregon_State_College_of_Engineering_Logo.jpg create mode 100644 cs_capstone_documents/design_document/figures/left_screen_svg.png create mode 100644 cs_capstone_documents/design_document/figures/right_screen_svg.png diff --git a/cs_capstone_documents/design_document/0_design_document.tex b/cs_capstone_documents/design_document/0_design_document.tex new file mode 100644 index 0000000..e73a7fb --- /dev/null +++ b/cs_capstone_documents/design_document/0_design_document.tex @@ -0,0 +1,135 @@ +\documentclass[onecolumn, draftclsnofoot, 10pt, compsoc]{IEEEtran} +\usepackage{graphicx} +\graphicspath{{./figures/}} + +\usepackage{url} +\usepackage{setspace} +\usepackage{multicol} +\usepackage{pdflscape} +\usepackage{pdfpages} +\usepackage{caption} + +\usepackage{geometry} +\geometry{textheight=9.5in, textwidth=7in} + +\renewcommand\refname{} + +\usepackage[numbers]{natbib} +\bibliographystyle{IEEEtranN} + +% \overfullrule=2in + +% 1. Fill in these details +\def \CapstoneTeamName{ Ground Station Software Team} +\def \CapstoneTeamNumber{ 30} +\def \GroupMemberOne{ Kenneth Steinfeldt} +\def \GroupMemberTwo{ Christopher Pham} +\def \GroupMemberThree{ Corwin Perren} +\def \CapstoneProjectName{ OSU Robotics Club\\Mars Rover Ground Station} +\def \CapstoneSponsorCompany{ OSU Robotics Club} +\def \CapstoneSponsorPerson{ Nick McComb} + + +% 2. Uncomment the appropriate line below so that the document type works +\def \DocType{ %Problem Statement + %Requirements Document + %Technology Review + Design Document + %Progress Report + } + +\newcommand{\NameSigPair}[1]{ + \par + \makebox[2.75in][r]{#1} + \hfill + \makebox[3.25in]{ + \makebox[2.25in]{\hrulefill} + \hfill + \makebox[.75in]{\hrulefill} + } + \par\vspace{-12pt} + \textit{ + \tiny\noindent + \makebox[2.75in]{} + \hfill + \makebox[3.25in]{ + \makebox[2.25in][r]{Signature} + \hfill + \makebox[.75in][r]{Date} + } + } +} +% 3. If the document is not to be signed, uncomment the command below +\renewcommand{\NameSigPair}[1]{#1} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} +\begin{titlepage} + \pagenumbering{gobble} + \begin{singlespace} + % 4. If you have a logo, use this includegraphics command to put it on the coversheet. + \begin{minipage}{7in} + \centering + \hspace*{-.7in} + $\vcenter{\hbox{\includegraphics[height=4cm]{Oregon_State_College_of_Engineering_Logo}}}$ + \hspace*{.2in} + $\vcenter{\hbox{\includegraphics[height=2.5cm]{OSURCLogoOrange}}}$ + \end{minipage} + + \par\vspace{.35in} + \centering + \scshape{ + \huge CS Capstone \DocType \par + {\large\today}\par + \vspace{.5in} + \textbf{\Huge\CapstoneProjectName}\par + \vfill + {\large Prepared for}\par + \Huge \CapstoneSponsorCompany\par + \vspace{5pt} + {\Large\NameSigPair{\CapstoneSponsorPerson}\par} + {\large Prepared by }\par + Group\CapstoneTeamNumber\par + % 5. comment out the line below this one if you do not wish to name your team + \CapstoneTeamName\par + \vspace{5pt} + {\Large + \NameSigPair{\GroupMemberOne}\par + \NameSigPair{\GroupMemberTwo}\par + \NameSigPair{\GroupMemberThree}\par + } + \vspace{20pt} + \begin{abstract} + % 6. Fill in your abstract + This document describes the design of the Mars Rover Ground Control software for the purpose of conveying design decisions and information to the project's stakeholders. + The Software Design Description (SDD) supplies a clear picture of the software's future implementation and provides the development group with a clear roadmap. + + \end{abstract} + } + \end{singlespace} +\end{titlepage} +\newpage +\pagenumbering{arabic} +\tableofcontents +\clearpage + +% Major requirements per website: +% - Each member writes up three pieces they will be owning/managing +% - Full document still needs an intro and conclusion +% - This is a HOW document (finally). Can contain info like: +% -- APIs +% -- Time-line +% -- Testing Information +% - Document must follow IEEE Std 10-16-2009 structure +% - Each component design pieces must be at least 500 words +% - Full doc must be at least 1500 words (literally impossible to NOT hit XD) +% - Must use IEEEtran numbered citations +\section{Introduction}\input{1_introduction} +\section{References}\input{2_references} +\section{Glossary}\input{3_glossary} +\section{Design Considerations}\input{4_design_considerations} +\section{Component Design}\input{5_component_design} +\section{User Interface Design}\input{6_user_interface_design} +\section{Conclusion}\input{7_conclusion} + +\end{document} \ No newline at end of file diff --git a/cs_capstone_documents/design_document/1_introduction.tex b/cs_capstone_documents/design_document/1_introduction.tex new file mode 100644 index 0000000..7450afc --- /dev/null +++ b/cs_capstone_documents/design_document/1_introduction.tex @@ -0,0 +1,45 @@ +\subsection{Purpose} +The purpose of this software design document is to cover the design for the Oregon State University Mars Rover Team's ground station software. +It will cover the details about how the software will function, how we will implement that functionality, and the reasoning behind design decision choices that were made. +The ground station software for the Mars Rover project is the single point of contact between the team-built competition Rover and the users operating or viewing the rover. + + +\subsection{Scope} +This project will consist of a software package running from a remote control base station in order to remotely operate a competition-ready robot built by the Oregon State Robotics Club's Mars Rover team. +The project must be completed by May 31st 2018 in order to be ready for the University Rover Challenge taking place in Hanksville, Utah. +The controlling software must be able to do at minimum, the following: + +\begin{itemize} +\item Provide the capability to remotely drive the Rover via joysticks connected to the ground station computer. +\item Allow for viewing of up to three video feeds from the Rover, and be able to change what video streams are viewed. +\item Via a user input device, allow for manipulation of the Rover arm. +\item Provide visual feedback about the state of the joint positions of the arm as it is being moved. +\item Show the user a map of the competition area, allowing the user to zoom, view the Rover's location, and place navigation and landmark way-points. +\item Allow the user to add way-points and then place the Rover in autonomous mode, wherein the Rover will drive under its own control along the way-points provided. +\item Upon completion of an autonomous path, provide an easy to read notification that the navigation is complete. +\item Provide a myriad of status information about the Rover's current condition including, but not limited to, the following: + \begin{itemize} + \item Connection statuses + \item Rover Sub-system connection statuses + \item On-board sensor readings + \item Battery charge level + \item System Errors + \end{itemize} +\item Include documentation allowing for easy reuse of the software for future Rover competition years. +\end{itemize} + +Additionally, the client has requested a document be written providing a starting guide on how to re-use the finalized software package for future Rover teams to ease development in future years. + + +\subsection{Context} +Each year the Mars Rover software team writes ground station software from scratch in order to meet the changing requirements of both the Rover itself and competition rule changes. +As this software is the main point of contact between the users and the Rover, the success of the team during competition often hinges on how well this software performs. +In the past, lack of modularity and abstraction has made re-use of the ground station code near impossible. + + +\subsection{Summary} +This rest of this document will provide the details about how our team will implement the ground station software for the Mars Rover team. +We will start by covering design considerations such as the environment our software will be running in, as well as the specific concerns of our stakeholder. +Immediately following will be a breakdown of the individual software components we will be writing. +These will include descriptions of what, how, and why we will be writing each component the way we are. +The document ends with a visual breakdown of the software UI, and rationale for why each component looks the way it does. \ No newline at end of file diff --git a/cs_capstone_documents/design_document/2_references.tex b/cs_capstone_documents/design_document/2_references.tex new file mode 100644 index 0000000..47d8408 --- /dev/null +++ b/cs_capstone_documents/design_document/2_references.tex @@ -0,0 +1,2 @@ +\vspace{-2em} +\bibliography{bibliography} \ No newline at end of file diff --git a/cs_capstone_documents/design_document/3_glossary.tex b/cs_capstone_documents/design_document/3_glossary.tex new file mode 100644 index 0000000..ff33ae6 --- /dev/null +++ b/cs_capstone_documents/design_document/3_glossary.tex @@ -0,0 +1,17 @@ +\subsection{Acronyms and Abbreviations} +\begin{itemize} +\item ROS - Robot Operating System +\item GPS - Global Positioning Satellite +\item OSU - Oregon State University +\item OSURC - Oregon State University Robics Club +\item NASA - The National Aeronautics and Space Administration +\end{itemize} + + +\subsection{Definitions} +\begin{itemize} +\item Ubuntu - A popular open source Linux distrobution based on the classic Debian distrobution. +\item Rover - A robotic, remote controlled vehicle designed and built by OSURC to compete in the NASA Mars Rover Competition held in Hanksville, Utah. +\item QT - An open source application framework developed by the QT Company. +\item Python - A popular scripting language known for it's easy readibility and rapid deployment abilities. +\end{itemize} \ No newline at end of file diff --git a/cs_capstone_documents/design_document/4_design_considerations.tex b/cs_capstone_documents/design_document/4_design_considerations.tex new file mode 100644 index 0000000..6d33d00 --- /dev/null +++ b/cs_capstone_documents/design_document/4_design_considerations.tex @@ -0,0 +1,61 @@ +\subsection{Assumptions} +From the descriptions and restrictions provided by the client, there are a few things that we need to assume to assure that the software is working correctly. +The software is going to assume that the software/OS on the rover is going to be ROS Kinetic on Ubuntu 16.04. +The rover will have all of its components working correctly such as GPS and drive systems. +The rover needs to correctly interact with the data that is provided by the station. +The rover needs to be connected to the correct network as the rover. + + +\subsection{General Constraints} +\begin{itemize} +\item \textit{Time Frame:} The software must be completed on or before May 31st, 2018. +\item \textit{URC Requirements:} The software must not violate any rules provided by the competition host. \cite{urc_competition_rules} +\end{itemize} + + +\subsection{System Environment} +\begin{itemize} +\item Hardware + \begin{itemize} + \item 1 x Intel NUC + \item 2 x 24" 1080p Monitors + \item 1 x Keyboard + \item 1 x Mouse + \item 1-2 x USB Joystick + \item 1 x SpaceMouse Pro + \item 1 x Ubiquiti Rocket M2 Wireless Router + \end{itemize} +\item Software / OS / Libraries + \begin{itemize} + \item Ubuntu 16.04 LTS + \item ROS Kinetic + \item Python 2.7 + \item Additional Python Libraries + \begin{itemize} + \item PyQt5 + \item inputs + \item PyGame + \item spnav + \item cv2 + \item Pillow + \item qimage2ndarray + \end{itemize} + \end{itemize} +\end{itemize} + + +\subsection{Stakeholder Concerns} +\subsubsection{Reliability} +The ground control software must be as reliable as possible. +The rover operator must be able to complete all competition tasks. +If unable to do so, the software cannot be considered a success. +\subsubsection{Robustness} +The Mars Rover Competition requires that the rover operate successfully in a variety of environments. +For example, it is expected that as the rover advances through the course, range and obstacles will negatively effect the latency and bandwidth of the wireless Ethernet connection used to communicate with the rover. +In the above example, the rover must be able to downgrade the video feed in order to accommodate the lower communication abilities of the rover. +\subsubsection{Rapid Prototyping} +In order to fulfill the necessary reliability and robustness requirements of the client, the team must be able to rapidly prototype the software. +Rapid prototyping allows the team to maximize testing time. +\subsubsection{Documentation} +The client has requested that documentation be a primary concern of the project. +The ground control software will be used as a foundation for future rover competitions, therefore it is important that the software is easy to use and the code is easy to understand. \ No newline at end of file diff --git a/cs_capstone_documents/design_document/5_component_design.tex b/cs_capstone_documents/design_document/5_component_design.tex new file mode 100644 index 0000000..352457c --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design.tex @@ -0,0 +1,38 @@ +% \subsection{Graphical Interfacing System} +% Not so sure about this section..... Needs to be molded into what the rest look like +% \subsubsection{Overview} +% The Graphical Interfacing System is of particular importance to this project. +% Information from the rover must be quickly, efficiently, and accurately displayed to the user. +% The rover will generage large amounts of information in real time that is vital to the success of the operator during the competition. +% Furthermore, options must be presented to the user that alow rover functionality to be modified on the fly. +% Without quick and accurate feedback, the operator will be unable to successfully compete in the challenge. +% \subsubsection{Design Concerns} +% The GUI is what the user uses to abstract the underlying software package into a black box for ease of use. +% The GUI will show values and display video from the rover. +% The GUI will not allow the user to go through the package while in use. +% \subsubsection{Design Elements} +% The GUI will use a framework called Qt, which is named for the company by the same name. +% This system will take care of any video streams that the rover may have. +% The GUI will also visually display values of sensors that are on the rover. +% The GUI will show any status using indicators to show any errors for new information for the user to see. +% The GUI will also translate any information that is hard to visualize data into real life representations of sensors like the IMU. +% All of these can be done mostly the GUI itself, and other things will be run with OpenGL code or embedded programs like some ROS packages. +% \subsubsection{Design Rationale} +% Without a system that simplifies use of the software, the re-usability of the software decreases and does not meet requirements. +% The GUI also feeds information to the team that is necessary for competition. + +\input{5_component_design_1.tex} +\input{5_component_design_2.tex} +\input{5_component_design_3.tex} +\input{5_component_design_4.tex} +\input{5_component_design_5.tex} +\input{5_component_design_6.tex} +\input{5_component_design_7.tex} +\input{5_component_design_8.tex} +\input{5_component_design_9.tex} + + + + + + diff --git a/cs_capstone_documents/design_document/5_component_design_1.tex b/cs_capstone_documents/design_document/5_component_design_1.tex new file mode 100644 index 0000000..ba326ec --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_1.tex @@ -0,0 +1,26 @@ +\subsection{Human Interface Device Integration - NOT AT WORD COUNT 398/500} +\subsubsection{Overview} +During use of this ground station software, the user will need to be able to interact with a joystick and SpaceNav mouse to control ground station software elements, to drive the Rover, and to manipulate the Rover arm. +The systems that integrate with these HID devices will be some of the most active parts of the ground station software. + +\subsubsection{Design Concerns} +\begin{itemize} +\item \textit{Control Latency:} Latency for these control inputs must be kept to a minimum to ensure that the Rover responds quickly to control commands and that motion is fluid. +\item \textit{Reliability:} As these control inputs can directly control the Rover, the code must be reliable, robust, and be able to recover from errors such as a disconnect and reconnect of a joystick. +\item \textit{Flexibility:} It is hard to determine the best possible control scheme for the Rover via these control inputs until the team has had a chance to physically drive the robot, so having the flexibility to easily change the control structure is important. +Additionally, these input devices may change completely if they are determined to be inadequate in real-world tests later on. +\end{itemize} + +\subsubsection{Design Elements} +\begin{itemize} +\item The HID integrators will use the "inputs" or "pygame" libraries for joysticks or the "spnav" library for the SpaceNav mouse. +\item Each integrator will be housed within a QThread class that will monitor the state of the HID devices and poll the devices for changes. +\item Upon a device change, the class will broadcast the updates using QSignals so that other parts of the program may use the data. +\item Upon an HID failure, such as on accidental disconnect, the class will attempt to reconnect and broadcast an error state until it is resolved. +\end{itemize} + +\subsubsection{Design Rationale} +One of the main goals of this project is to be able to rapidly prototype the software so the Rover team can spend more time testing, and less time waiting for code to be written. +By using off the shelf libraries for reading in joystick and SpaceNav mouse input, our team's development time can be better put to use making the control systems robust and handling error cases. +As these are commonly used and tested libraries, there is also a high likelihood that their implementations are more reliable and documented than if our design team were to try and implement equivalent libraries/classes. +The use of QT's QSignals will also help us in this regard by minimizing the design time needed to write custom inter-thread communication protocols. \ No newline at end of file diff --git a/cs_capstone_documents/design_document/5_component_design_2.tex b/cs_capstone_documents/design_document/5_component_design_2.tex new file mode 100644 index 0000000..3246224 --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_2.tex @@ -0,0 +1,17 @@ +\subsection{Drive Coordinator - NOT AT WORD COUNT XXX/500} +\subsubsection{Overview} +This sub-system will handle taking in raw joystick/s control information, and transforming them into usable drive control commands. +This will also handling the interpretation of button presses on the joystick to control GUI functions, or for example, artificially limiting the Rover max speed via the current state of the joystick throttle lever. + +\subsubsection{Design Concerns} +\begin{itemize} +\item \textit{:} REPLACE + +\end{itemize} + +\subsubsection{Design Elements} +\begin{itemize} +\item REPLACE +\end{itemize} + +\subsubsection{Design Rationale} diff --git a/cs_capstone_documents/design_document/5_component_design_3.tex b/cs_capstone_documents/design_document/5_component_design_3.tex new file mode 100644 index 0000000..cf9a48d --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_3.tex @@ -0,0 +1,33 @@ +\subsection{Mapping System - NOT AT WORD COUNT 410/500} +\subsubsection{Overview} +The mapping sub-system will handle the storing and loading of maps of the competition area as well as plotting important landmarks as provided by the user. + +\subsubsection{Design Concerns} +\begin{itemize} +\item \textit{Offline Use:} As this software will primarily be used in environments where there are no Internet connections, the mapping sub-system will need to be able to store local maps of the desired competition areas in advance. +\item \textit{Zoom Options:} During competition, the user may desire to zoom in or out on any particular area. +The software will have to accommodate this by either digitally zooming into an the desired area, or by loading newer high-resolution images at a adjusted zoom level. +\item \textit{Location Services:} The mapping system must accurately show where the rover is on the map so that the operator is able to keep track of it. +Furthermore the mapping must also allow the setting of waypoints. +These waypoints allow the operator to set a location that the rover will travel to once set. +\item \textit{Reliability:} The mapping system will be one of the most used aspects of the ground station software as it will be used for properly navigating the Rover to competition way-points. +If the mapping system fails, it may be near impossible for the user to determine where the Rover should be driven. +\item \textit{Responsiveness:} Outside of the drive and video sub-systems, the mapping system will be one of the most frequently updated and used features on the ground station software. +In order for it to be useful to the user the map updates must be fast and responsive so that the user is not spending valuable competition time waiting for the map to load. +\end{itemize} + +\subsubsection{Design Elements} +\begin{itemize} +\item The mapping system will load satellite imagery of the desired area via the Google Maps API. +\item The Google Maps tiles will be cached so they can be used offline. +\item Individual image tiles will be stitched together into one large image to be shown in the GUI using either OpenCV or Pillow. +\item The map will have icons and/or numbers overlaid on the map image corresponding to the Rover location, navigation way-points, and landmark way-points. +\item The aforementioned markers will be accurate on the map based on their GPS positions. +\item The map will show a trail of the Rover's previous driving path that fades away over time. +\item The map will have a faint grid showing latitudinal and longitudinal divisions. +\end{itemize} + +\subsubsection{Design Rationale} +The choice of the Google Maps API allows us to use the most up-to-date and readily available maps of the competition area easily. +OpenCV and Pillow are both fast and well-documented frameworks for dealing with image data, and are especially good at fast image stitching. +The other design aspects of the mapping system should make the map view easy and intuitive to use, meaning less training will be necessary before a user will understand it. \ No newline at end of file diff --git a/cs_capstone_documents/design_document/5_component_design_4.tex b/cs_capstone_documents/design_document/5_component_design_4.tex new file mode 100644 index 0000000..4797329 --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_4.tex @@ -0,0 +1,15 @@ +\subsection{Way-points Coordinator - NOT AT WORD COUNT XXX/500} +\subsubsection{Overview} + +\subsubsection{Design Concerns} +\begin{itemize} +\item \textit{REPLACE:} REPLACE + +\end{itemize} + +\subsubsection{Design Elements} +\begin{itemize} +\item REPLACE +\end{itemize} + +\subsubsection{Design Rationale} diff --git a/cs_capstone_documents/design_document/5_component_design_5.tex b/cs_capstone_documents/design_document/5_component_design_5.tex new file mode 100644 index 0000000..e243417 --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_5.tex @@ -0,0 +1,12 @@ +\subsection{Arm Visualizer - OF COURSE NOT AT WORD COUNT X/500} +\subsubsection{Overview} +The ground control software will allow for the visualization of rover arm movement, allowing the operator to see the actuation of the rover arm while controling it. + +\subsubsection{Design Concerns} +Talk about what this section needs to do, establish it's boundaries from a system development standpoint. + +\subsubsection{Design Elements} +Talk about what the system will encompass, from a programming standpoint. + +\subsubsection{Design Rationale} +Talk about why the system should be designed the way described. diff --git a/cs_capstone_documents/design_document/5_component_design_6.tex b/cs_capstone_documents/design_document/5_component_design_6.tex new file mode 100644 index 0000000..2bd6a73 --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_6.tex @@ -0,0 +1,15 @@ +\subsection{Arm Coordinator - NOT AT WORD COUNT XXX/500} +\subsubsection{Overview} + +\subsubsection{Design Concerns} +\begin{itemize} +\item \textit{REPLACE:} REPLACE + +\end{itemize} + +\subsubsection{Design Elements} +\begin{itemize} +\item REPLACE +\end{itemize} + +\subsubsection{Design Rationale} diff --git a/cs_capstone_documents/design_document/5_component_design_7.tex b/cs_capstone_documents/design_document/5_component_design_7.tex new file mode 100644 index 0000000..ee42449 --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_7.tex @@ -0,0 +1,15 @@ +\subsection{Video Coordinator - NOT AT WORD COUNT XXX/500} +\subsubsection{Overview} + +\subsubsection{Design Concerns} +\begin{itemize} +\item \textit{REPLACE:} REPLACE + +\end{itemize} + +\subsubsection{Design Elements} +\begin{itemize} +\item REPLACE +\end{itemize} + +\subsubsection{Design Rationale} diff --git a/cs_capstone_documents/design_document/5_component_design_8.tex b/cs_capstone_documents/design_document/5_component_design_8.tex new file mode 100644 index 0000000..c03f87c --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_8.tex @@ -0,0 +1,16 @@ +\subsection{Statuses Coordinator - NOT AT WORD COUNT XXX/500} +\subsubsection{Overview} +Includes compass and speed stuff..... + +\subsubsection{Design Concerns} +\begin{itemize} +\item \textit{REPLACE:} REPLACE + +\end{itemize} + +\subsubsection{Design Elements} +\begin{itemize} +\item REPLACE +\end{itemize} + +\subsubsection{Design Rationale} diff --git a/cs_capstone_documents/design_document/5_component_design_9.tex b/cs_capstone_documents/design_document/5_component_design_9.tex new file mode 100644 index 0000000..273e5a3 --- /dev/null +++ b/cs_capstone_documents/design_document/5_component_design_9.tex @@ -0,0 +1,15 @@ +\subsection{Logging / Recording Coordinator - NOT AT WORD COUNT XXX/500} +\subsubsection{Overview} + +\subsubsection{Design Concerns} +\begin{itemize} +\item \textit{REPLACE:} REPLACE + +\end{itemize} + +\subsubsection{Design Elements} +\begin{itemize} +\item REPLACE +\end{itemize} + +\subsubsection{Design Rationale} diff --git a/cs_capstone_documents/design_document/6_user_interface_design.tex b/cs_capstone_documents/design_document/6_user_interface_design.tex new file mode 100644 index 0000000..6fb1f24 --- /dev/null +++ b/cs_capstone_documents/design_document/6_user_interface_design.tex @@ -0,0 +1,89 @@ +\subsection{Left Screen} +\subsubsection{Mock-up} +\vspace{1em} +\begin{minipage}{\linewidth} + \begin{center} + \includegraphics[width=0.75\linewidth]{left_screen_svg} + \captionof{figure}{Left Screen Mock-up} + \end{center} +\end{minipage} + +\subsection{Zones} +\subsubsection{1: System Statuses / Sensor Readings} +This section will display all status and sensor data both from the Rover and about the ground station itself. +This includes items such as radio signal strength, GPS accuracy, and whether they Ground Station has connection to the drive joystick/s and SpaceNav mouse. + +\subsubsection{2: Map Display} +The map display will display a satellite view of the competition areas with navigation and land-mark way-points, the Rover, and the Rover movement trail overlaid. + +\subsubsection{3: Recording / Logging / Settings} +This section will be tabbed group that by default will show the controls for starting ROS bag recordings, but will also have a tab for live logs and a third tab for settings to adjusting items such as what map is being shown. + +\subsubsection{4: Way-point Entry / Autonomy Controls} +This block will also for manual entry of GPS coordinates, as are provided by the competition at the beginning of some events. +The user will be able to chose whether the entry is being added as a navigation or landmark way-point as well as using the entry fields to edit the way-points from pre-entered points. + + +\subsubsection{5: Navigation Way-points Listing} +This area will list, in order, the navigation way-points that the system is currently set to follow, both for manual driving and for the autonomy portion. + +\subsubsection{6: Landmark Way-points Listing} +This will list, in the order they were added, the landmark way-points that the user has entered to make important points on the competition field. + +\subsection{Layout Rationale} +This display shows most of the information regarding the Rover that does not need to be viewed while the Rover is being actively driven, or while the arm is being moved. +When the software starts and is first connecting to the Rover, the user will spend some time studying system statuses, entering way-points, changing settings, and checking logs if needed. +Once they're done with these initial checks and entries, most of the rest of the control experience will take place on the right hand monitor. +In the case that the user wants to quickly glance at the map while they are driving, the map will come in to view easily as it's as close to the right hand monitor as it can be. +As the logging and setting views will hopefully not need to be viewed very often, combining them onto a tabbed GUI element helps reduce used space while still leaving them accessible when needed. + + +\subsection{Right Screen} +\subsubsection{Mock-up} +\vspace{1em} +\begin{minipage}{\linewidth} + \begin{center} + \includegraphics[width=0.75\linewidth]{right_screen_svg} + \captionof{figure}{Right Screen Mock-up} + \end{center} +\end{minipage} + +\subsection{Zones} +\subsubsection{1: Arm Visualization} +This visualization area will show the joint positions of the Rover arm when the arm is attached. +In its simplest form, the visualization will be a simple line drawn in a reference frame, that adjusts its position as the arm is moved. +For this version, each joint would have its own visualization box. +If there is enough time, our team will attempt to integrate with RVIZ, the ROS visualization package, to show a 3D view of the arm moving. +If the RVIZ solution does not seem feasible and there is still extra time, we may alternatively try to implement a custom OpenGL view of the arm. + +\subsubsection{2: Primary Video Display} +This will show the stream from the camera on the Rover is currently selected as the primary video stream. + + +\subsubsection{3: Heading Compass} +This heading compass will dynamically rotate to match the current heading of the Rover. +It will also mark on the compass edge the currently active way-point, making it easy for the user driving the Rover to determine which direction they need to turn to line up with a way-point marker. + + +\subsubsection{4: Speed and Speed Limit Display} +This area will show the current Rover speed is meters per second as is reported by the Rover GPS. +Additionally, it will also show the current speed limit of the Rover from zero to one hundred percent as has been limited by the user via the joystick throttle lever. + + +\subsubsection{5: Secondary Video Display} +This area will show the stream from the camera on th Rover that is currently selected as the secondary video stream. +This stream has the capability to be disabled and show a placeholder image if the team needs to save on radio bandwidth. + + +\subsubsection{6: Tertiary Video Display} +This area will show the stream from the camera on th Rover that is currently selected as the tertiary video stream. +This stream has the capability to be disabled and show a placeholder image if the team needs to save on radio bandwidth. + + +\subsection{Layout Rationale} +This screen will be showing the most commonly looked at data for the user driving the Rover. +During a normal competition, the user will start by entering way-points to drive the Rover to, and then switch to the joystick and SpaceNav mouse. +Once they start driving, the user will be heavily focused on monitoring video data to make sure they don not run the Rover into anything. +While driving to the way-points to get to an end location, the user will be able to easily see the compass indicator, with a marker for the direction they should be heading. +After arriving at an ending way-point, the user can then seamlessly transition to moving the Rover arm (for competition challenges where this is the case) and watching the visualization update on the same screen as the video of the arm moving. +By laying out these particular elements on this screen, the user will be less likely to have to look at the left screen except when the Rover is not moving. \ No newline at end of file diff --git a/cs_capstone_documents/design_document/7_conclusion.tex b/cs_capstone_documents/design_document/7_conclusion.tex new file mode 100644 index 0000000..2fde638 --- /dev/null +++ b/cs_capstone_documents/design_document/7_conclusion.tex @@ -0,0 +1,3 @@ +Throughout this document, we have covered the design considerations, component design, and GUI design for the Mars Rover ground station software that our team will be implementing. +By following the design guidelines laid out in this document over the next five months, we are confident that our team will be able to accomplish the desired state of the Mars Rover ground station software. +In doing so, not only will we be providing a useful and robust front-end to the Mars Rover for the competition next June, but also hopefully a base to work off of for many years into the future. \ No newline at end of file diff --git a/cs_capstone_documents/design_document/backup_content.tex b/cs_capstone_documents/design_document/backup_content.tex new file mode 100644 index 0000000..43ecdaf --- /dev/null +++ b/cs_capstone_documents/design_document/backup_content.tex @@ -0,0 +1,16 @@ +% chris pham mapping section +\subsection{Mapping System} +\subsubsection{Design Concerns} +The mapping system that will be included in our GUI will be displaying a map of the terrain and location of our rover. +The mapping must allow for a way-point like system that can be used as guiding points. +The way-points need to be added by clicking on a map, or entering in a GPS location in the software. +The way-points need to be editable, and deletable. +The rover needs to be able to take the way-points on the software and then translate them into actual locations. +\subsubsection{Design Elements} +The system will be based around rvis, a package in ROS, that can display an image on a screen. +The system takes in an image and a GPS location and then the package will return an image and line path of the rover. +The system gets the package off of Github and then compiles it on the system. +The system might need extra logic that is not present in rvis and can be written in Python or C to make the package work. +\subsubsection{Design Rationale} +Talk about why the system should be designed the way described + diff --git a/cs_capstone_documents/design_document/bibliography.bib b/cs_capstone_documents/design_document/bibliography.bib new file mode 100644 index 0000000..f4550c9 --- /dev/null +++ b/cs_capstone_documents/design_document/bibliography.bib @@ -0,0 +1,5 @@ +@online{ + urc_competition_rules, + title="University Rover Challenge Rules 2018", + url="http://urc.marssociety.org/files/University%20Rover%20Challenge%20Rules%202018.pdf" +} \ No newline at end of file diff --git a/cs_capstone_documents/design_document/figures/OSURCLogoOrange.png b/cs_capstone_documents/design_document/figures/OSURCLogoOrange.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa6b92c33c81b8f6ce6fd701892da8e36e9c50b GIT binary patch literal 13297 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 H8wdXn<#co( literal 0 HcmV?d00001 diff --git a/cs_capstone_documents/design_document/figures/Oregon_State_College_of_Engineering_Logo.jpg b/cs_capstone_documents/design_document/figures/Oregon_State_College_of_Engineering_Logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a96c00d9d35ea6f60b9ff96fec0c63a0ea7bcbb8 GIT binary patch literal 46455 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 literal 0 HcmV?d00001 diff --git a/cs_capstone_documents/design_document/figures/left_screen_svg.png b/cs_capstone_documents/design_document/figures/left_screen_svg.png new file mode 100644 index 0000000000000000000000000000000000000000..816cab5a9f52d18b2120c409ffd52cfd3fc5ebb4 GIT binary patch literal 20537 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

{pFEn{r2geHOqb!>^J*HWhw-I>0gLz<;2SynzKA Z_PxQ2`h5`m@*e;U^{!vZzwG$%{{Z(zsYn0- literal 0 HcmV?d00001 diff --git a/cs_capstone_documents/design_document/figures/right_screen_svg.png b/cs_capstone_documents/design_document/figures/right_screen_svg.png new file mode 100644 index 0000000000000000000000000000000000000000..5dce2d9cbfc3c90998cbd5597ba05475fda8115e GIT binary patch literal 20580 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