- examples - Test software for different components
- rodos - RODOS source code
- libs - Custom drivers and algorithms used in GRABSAT-I
- satellite - Libraries to handle GRABSAT-I mission
- visualizer - Simple attitude visualizer
- lsm9ds1 - LSM9DS1 IMU + magnetometer interface
- pid - Discrete PID controller
- motor - TB9051FTG interface for drive-brake (slow decay) operation
- madgwick - Implementation of Madgwick's filter
- rc_lpf - RC low-pass filter for smoothing angular velocity
- encoder - Encoder interface using STM32F4's encoder mode
-
ft90mr - Driver for FT90MR
$360^{\circ}$ servo motor - utils - Some general utility functions
- telecommand - Handles the telecommands from groundstation to GRABSAT-I
- satellite - Handles the missions and modes of operation of GRABSAT-I
- multimeter - Measures battery current and voltage
- satellite_config - Configuration file for satellite peripherals and control gains
- magnet - Interface to the electromagnet
- groundstation - Communication with groundstation
- telemetry - Handles telemetry to ground station
- control - Motor angular velocity control
- switch_board - Interface to enable/disable threads
- topics - Topics for inter-thread communications
- arm - Handles the timing for magnet and balance arms
make
- To compile and flash code to STM32arm-none-eabi-gcc
- Compiler for STM32openocd
- To flash the compiled .hex/.bin files to STM32
- Examples (e.g. hello_blinky.cpp)
make clean
followed bymake main=hello_blinky.cpp
to compile softwaremake flash
to flash software to STM32
- GRABSAT-1 software
make
to compile softwaremake flash
to flash software to STM32
- Attitude estimation
- Design and documentation of satellite
$\psi$ and$\omega$ control - Should thread classes be
extern
orstatic
(wrt. strange behavior ofdir_flag
ofArmThread
) ?
The software is developed and tesed using Linux computer.