2023-06-7 Meeting notes
MAVLink is a communication protocol commonly used in UAVs (Unmanned Aerial Vehicles) between ground and drone
GUI is a Graphical User Interface
TCP ports let you exchange data between two devices with network communication
Mission Planner
Mission Planner is the ground control station that WARG uses that we are trying to replace with custom IMACS. IMACS focuses on making UI better for the pilot.
Mission planner allows for mock missions which allows for sending MAVLink messages (real MAVLink messages with mocked information) to a TCP port that the GUI can read from. This allows for testing GUI
To set up Mission Planner, go to Mission Planner Simulated Ardupilot. Going to “Simulation”, select “Multirouter” and “stable”, then choose “Mavlink” as the serial output with TCP Host 14550.
IMACS Project
We are trying to create a desktop application GUI using the Flutter framework and Dart programming language. Flutter compiles to a lot of platforms so we can use the browser to preview GUI while developing.
Mission Planner will be used to send messages to a TCP port. We will read raw data from the TCP port with Dart and parse the data using the dart_mavlink library into readable messages.
Eventually, the GUI will be reading from a serial port (a port on the computer that accepts data through USB or some other wired connection) instead of a TCP port.
Flutter streams allow for asynchronous programming in Flutter applications. We will split up pieces of information parsed by the dart_mavlink library into different sections of the GUI.
System Architecture Diagram
Development
Working with GitHub, we are planning to have two development branches feeding into a main branch: one for the frontend GUI testing with MAVLink, and one for integrating with EFS/Mech hardware by reading a message from a serial port.
Assigning tasks
Check out tasks assigned on Asana for the Autonomy team.
Helpful Links
MAVLink Developer Guide
Dart MAVLink Source Code
Information on Flutter Streams (this is kind of like threading)
Listening to TCP Sockets in Dart