W23 Task Status
- 1 Ardupilot Integration
- 1.1 New SM Repo
- 2 Zeropilot SW ZeroPilot 3.0 Architecture - ZeroPilot - WARG (atlassian.net)
- 3 Laminar OS
- 3.1 LOS Interfaces:
- 3.2 LOS Drivers
- 3.2.1 SD Card
- 3.2.2 Actuators (PWM +DShot)
- 3.2.3 Comms ?
- 3.2.4 NEOM8
- 3.2.5 Airspeed
- 3.2.6 VN300
- 3.2.7 Optical Flow (3901 - L0X or PX4FLOW)
- 3.2.8 Barometer
- 3.2.9 PPM Output
- 3.3 LOS Core
- 4 INFRA
Ardupilot Integration
New SM Repo
stripped down version of system manager that only talks to telemetry manager & LOS layers. This is designed to allow easy and simple Ardupilot integration.
los layer integration
Integration with Ardupilot
controller state decoding
ppm output in los
Zeropilot SW ZeroPilot 3.0 Architecture - ZeroPilot - WARG (atlassian.net)
System Manager System Manager
System Manager manages the highest level operations of the drone. SM is in charge of spawning and managing the TM, AM, and PM threads, facilitating inter-thread communications, determining the drone’s state of operation, some signal decoding, and handling of drone fatal failures.
Outstanding Tasks:
Further testing of RC to AM passthrough barebones version
Hardfault in communication to AM?
Uncomment and update code to integrate PM
Uncomment and update code to integrate TM
Determine TM input data format and conversion to PM format
Add use of global flag object for PM to RC input switching
Already created, should be easy to use
Improve fatal failure detection
Timeout
Path Manager PM Re Architecture For MVP
PM handles path generation and autonomous path following for the drone. After receiving the drone’s current position data and our target waypoints (defined using latitude and longitude) from SM, PM will calculate the required heading unit vector, magnitude, and speed depending on what state of flight we are in (Takeoff, Cruising, Landing). This information will then be sent to AM.
Outstanding Tasks
Integrate takeoff/landing + comms with SM into main branch
Bring on newer members
implement Waypoint following (using list of target waypoints to continuously calculate and update AM instructions )
Takeoff/Landing tuning
Waypoint following tuning
Attitude Manager Attitude Manager 3.0 - ZeroPilot - WARG (atlassian.net)
Attitude Manager manages the position of the aicrcraft in real time, using closed-loop controls algorithms for both fixed wing and multirotor aircraft. We receive position data from LOS_Pos and instructions either from PM or SM.
Generally, our flight modes include:
Manual (Acro) → the pilot controls the control surfaces directly, or controls the rate of angular acceleration
Stabilize (Horizon/Attitude) → the pilot inputs a desired angle, and the control algorithms attempt to maintain the desired angle in a global reference frame.
GPS (hold) → the pilot inputs desired translational motion, and the control algorithms attempt to maintain a position in a global reference frame.
In person only: Tuning
Outstanding tasks:
Fixed Wing Stabilize algorithm + tuning
Fixed Wing Manual tuning
Fixed Wing GPS algorithm + tuning
Quadcopter Stabilize tuning
Quadcopter GPS algorithm + tuning
Quadcopter Acro algorithm + tuning
Transition state algorithms + tuning
Newer / better PID Algorithms?
PID Auto-Tune?
Related SysInt material:
pid tuning rig from mechanical
having a working & wired drone from mech/ee
understanding how to safely operate a drone either on a rig or in the air
Telemetry Manager
Telemetry Manager (TM) manages the data flowing into and out of zp from the ground station and the onboard jetson. TM is in charge of encoding and decoding messages and passing them to system manager. This manager makes use of LOS Comms and LOS Telem. Code uses code generation to build C++ code using LCM message generation.
Completed tasks:
CRC checks
LCM message generation
Outstanding tasks:
Interfacing with LOS and SM To decode and encode data (I am working on this - Aadi)
Related tasks:
write LOS Comms
Write LOS Telem
Characterize RFD and develop driver for CV and EFS
Laminar OS
LaminarOS is the middleware interface between the application layer (ZeroPilot Software) drivers and board support package (STM32 HAL).
LOS Interfaces:
LOS_Link
LOS_Link handles the interface for communication between the RC receiver and ZeroPilot.
Outstanding Tasks:
merge LOS_Link into LaminarOS main repo
LOS_Actuators
LOS_Actuators handles the interface for all moving peripherals such as servo motors and communication with motor ESCs.
Outstanding Tasks:
verify DSHOT300
LOS_Comms
LOS_Comms handles the interface for all on-drone communication, specifically for communication with the Jetson Nano.
Outstanding Tasks:
all
LOS_Telem
LOS_Comms handles the interface for all on-drone communication, specifically for communication with the Jetson Nano.
Outstanding Tasks:
all
LOS_Pos
LOS_Pos handles the interface for the current attitude of the drone, providing GPS, IMU, as well as VectorNAV300 data to any application module that requires it.
Verify VectorNav300 driver
Integrate VectorNav300 with LOS_Pos
LOS_Log
LOS_Pos handles the interface for the current attitude of the drone, providing GPS, IMU, as well as VectorNAV300 data to any application module that requires it.
Outstanding Tasks:
integrate SD card driver with LOS_Log
LOS_?
LOS Drivers
SD Card
The SD card is for storing logs. The SD card driver will allow us to read from or write to an SD card.
Outstanding Tasks:
Porting the SD card driver to L5 (NUCLEO-L552EZ-Q board). This means modifying some configuration files so that the driver can run on L5.
Write another version of the SD card driver that uses SDMMC (supported on L5) instead of SPI to communicate with the SD card.
Actuators (PWM +DShot)
Drivers for PWM and DSHOT are for communication with motor ESCs.
Outstanding Tasks:
verify DSHOT300
Comms ?
NEOM8
Airspeed
VN300
VectorNav 300 (VN300 for short) is a Navigation System that has GPS, gyroscope, and accelerometer functionalities. We will mainly use it as a GPS.
Outstanding Tasks:
Getting the VN300 to communicate with the L5 (NUCLEO-L552EZ-Q board), then testing the current driver prototype.
Optical Flow (3901 - L0X or PX4FLOW)
Barometer
PPM Output
LOS Core
TBD
INFRA
SIL (simulator)
The simulator validates the design of the aircraft that will be flown at competition.
Initially, the simulator was based off a MATLAB/Simulink model but now the focus has been shifted onto using a program called SIMNET (http://www.simnet.aero ).
Outstanding tasks:
Model the competition aircraft in SIMNET
Test the autopilot in SIMNET with using Ardupilot and Mission Planner (or another GCS)
HIL
Tracking Antenna Tracking Antenna Project - ZeroPilot - WARG (atlassian.net)
To automatically turn our directional antenna to always point at the aircraft
We use the GPS position and altitude of the drone to calculate the target yaw and pitch for the antenna, then control motors to rotate the antenna towards the target location
Outstanding task:
Implement the GPS position → yaw and pitch algorithm in C++ (already done in matlab)
Drivers for imu, GPS, and motors
Tune PID for motors if needed
Related:
Mechanical design for tracking antenna
Devops
Devops is basically the development of things that make development easier. For example: writing bash scripts for building, docker files, CI/CD.
Note: Almost all devops tasks are “nice to haves” that should make our lives easier and be very useful in the long run, but they are not critical to the upcoming competition.
Outstanding Tasks
add .clang-tidy with certc and MISRA-c rules
Add .clang-format and .clang-tidy GitHub actions
Setup SSH on warg laptop to allow for remote development for users that dont have a Linux machine (I have ideas about this - Aadi)
Dockerfile for flashing (Im doing this currently - Aadi)
Get our dockers to work on windows and write necessary instructions to set them up
Create Dockerfiles and build scripts to build LOS on its own
Add GitHub actions to build LOS to LOS repo
Make an image for the efs laptop