Skip to content

Architecture

Konnor Andrews edited this page Mar 3, 2018 · 6 revisions

This project is split into separate applications that communicate with each other. The exact configuration of applications is different for each submarine/robot. However, the generic layout is as follows.

Communication Diagram

                                    +--------------------------+
                                    |Web Browser               |
                                    |                          |
                         +----------+   Web App (JavaScript)   |
                         |          |                          |
                         | +--------+                          |
                         | |        +--------------+-----------+
+------+    +------+     | |                       |
|Camera|    |Camera|     | |                       |
+-----++    +---+--+     | |                       |
      |         |        | |     +----------------------------------+
     ++---------+-----+  | |     |Raspberry PI     |                |
     |Raspberry PI    +--+ |     |                 |                |
     |                |    |     |  +--------------+-------------+  |
     |  Vision (C++)  |    |     |  |                            |  |
     |                +-------+  |  |     Agent (Javascript)     |  |
     +----------------+    |  |  |  |                            |  |
                           |  |  |  +--------------+-------------+  |
     +----------------+    |  |  |                 |                |
     |Raspberry PI    +----+  |  |  +--------------+-------------+  |
     |                |       +-----+                            |  |
     |  Vision (C++)  |          |  |        System (C++)        |  |
     |                +-------------+                            |  |       +------+
     ++---------+-----+          |  +----+------------------+----+  |   +---+Sensor|
      |         |                |       |                  |       |   |   +------+
+-----++    +---+--+             +----------------------------------+   |
|Camera|    |Camera|                     |                  |           |    +-----+
+------+    +------+        +------------+-------+   +------+-----------+-+  |Motor|
                            |Arduino             |   |Arduino             +--------+
                            |                    |   |                    |
              +----------+  |  Controller (C++)  |   |  Controller (C++)  |  +-----+
              |Hydrophone+--+                    |   |                    +--+Motor|
              +----------+  ++-------+---------+-+   +----+-------+------++  +-----+
                             |       |         |          |       |      |
                  +----------+  +----+-----+  ++-----+  +-+-+  +--+--+  ++----+
                  |Hydrophone|  |Hydrophone|  |Sensor|  |IMU|  |Motor|  |Motor|
                  +----------+  +----------+  +------+  +---+  +-----+  +-----+

Applications

Each application is very minimal, and are built from the components found in the util libraries.

System

The system application provides a group of subsystems that describe the parts of a robot. Each subsystem (e.g. arm, wheels, camera) is represented as an object with methods that represent all the actions that can be performed by the subsystem. Some subsystems allow low-level control of hardware. Others allow only high-level control. However, most subsystems are a mix of both.

Agent

The agent application uses the interface provided by the system application to accomplish tasks. The app acts like a video game AI. Using high-level information (e.g. positions of objects in 3D space), the agent app can plan actions for movement subsystems to perform (e.g. move to position in 3D space).

Vision

The vision application uses camera inputs to recognize objects and position. Vision processing is computationally expensive, therefore a separate device is usually used to host the application. The app provides the system application with information concerning objects being tracked and position information. Video frames are rarely sent from the vision app to the system app.

Controller

The controller application implements low-level hardware control. Capable of connecting to almost any electronic device for sensing or movement, the controller app provides the system app information and control over the physical world. The app can also provide signal processing for devices that require it.

Web App

In development and testing, the web app acts like an agent app. It has access to the system app, and provides controlling and monitoring to the operator. However, the web app is not used when in autonomous mode.

Clone this wiki locally