Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Structure for Milestones 1 & 2

...

Drawio
mVer2
simple0
zoom1
inComment0
pageId2668101634
custContentId2693038188
diagramDisplayNameUntitled Diagram-1725287058635.drawio
lbox1
contentVer1
revision1
baseUrlhttps://uwarg-docs.atlassian.net/wiki
diagramNameUntitled Diagram-1725287058635.drawio
pCenter0
width602
links
tbstyle
height621.5

Its main components:

  • Managers - Where the flight control software lies, it has the actual source files and unit tests to enhance test-driven development. ZP separates the flight control software into four main managers, they are:

    • System Manager - Coordination of other three managers, decision-making, inter-manager communication

    • Attitude Manager - Software that defines how the aircraft fly(flight mode).

    • Telemetry Manager - In charge of the communication with ground station

    • Path Manager - Grant ZP the ability to fly in a given path

  • Drivers - the software that drives the sensors and actuators.

  • Board Files - contains the stm32 HAL library, FreeRTOS, and the main.cpp.

  • Model Configuration - select the hardware and software configuration of the aircraft.

  • Tools - the scripts and makefiles that support the executable compilation and unit test compilation.

...

  • Unintuitive to Flash the Code: To compile with the former code is easy, we only need to run the script. But flashing the code is a little cumbersome. The way we did it, is by making a dummy stm32 project and directing the elf file we compile in the stm32 setting

  • Difficult to Debug the Code: With the newer version of stm32 ide, it no longer supports opening directories that don’t belong to a stm32 project. And since our board files are inside the ZP, all other main folders don’t show up in the stm32 ide, causing difficulties in debugging with stm32 ide. Unit tests in this version of zp

  • Driver Dev Blocking Software Dev: No proper driver interface layer is defined for current drivers. That means the software doesn’t know what the driver interface function is supposed to look like before it is done. The software couldn’t mock the driver function since drivers are missing an abstraction layer.

  • Confusing to Manage: This is more of a leader’s(my) issue. I found that since basically, each people manage their task, and different people have different implementations in their code. It makes ZP a difficult project to manage. Sometimes, we don’t know what we want, or sometimes we don’t know where we are supposed to implement the functionality we want.

Strucuture of Milestone M3

...

Inc drawio
simple0
zoom1
inComment0
pageId2668101634
custContentId2692939795
diagramDisplayNamezp3.5_old_arch.drawio
lbox1
contentVer2
hiResPreview0
revision3
baseUrlhttps://uwarg-docs.atlassian.net/wiki
diagramNamezp3.5_old_arch.drawio
pCenter0
aspecthpOggl8i7B8Ydg86OKes 1
width832
linksauto
tbstyletop
isUpload1
height641.5

Its difference from the previous structure:

  • Board Files at the same level as the Software Package

    • The idea here is to compile Zeropilot Software as an external library, so it fits any board file we wish to flash

    • Isolates hardware and software by folder structure

  • Driver Interface and FreeRTOS Interface

  • Mock Drivers

  • Mock FreeRTOS

Q&A (or potential issue)