View
5
Download
0
Category
Preview:
Citation preview
PSAS RCS Capstone Final Presentation
Team: Brian Breniser - Chris Liebert - Paul Lee - Harrison Bailey -
Cort Alexander - Sohail Nayani - Tyler Alway
Sponsor: Jamey Sharp and Theo Bailey from PSAS
Tasks and Team RolesPerson Planned Role Actual Role
Brian Breniser Lead & embedded architect Lead & Unit tester & prototype tester
Chris Liebert Scheduler & test library architect Scheduler & test library architect
Paul Lee Requirements guru & telemetry data architect Requirements guru & telemetry data architect &
prototype tester
Harrison Bailey DevOps / backup engineer & main logic architect DevOps / Backup engineer & main logic architect
Cort Alexander Backup lead & control module architect Backup lead & control module architect
Sohail Nayani JSBSim specialist & test library architect JSBSim specialist / test mode
Tyler Alway Risk management & sensor module architect Risk management & sensor module architect &
prototype tester
The ProjectStep 1: Build a Flight controller, starting with roll control:
● Software used to control and monitor the aircraft
● Keeps the rocket stable in flight and provide roll control
Step 2: Make it testable
● Use JSBSim to test the physics of a rocket
● Plug it into the flight controller
The ProjectWhy is this required?
● Transferring from fin based controller to cold gas jet based controller, allowing
aircraft to be controlled in thin atmosphere
● Want to improve testability for existing design
https://www.youtube.com/watch?v=YUP2_m3gPiM&ab_channel=PSAS https://www.youtube.com/watch?v=dbsLPdYd2Ec&ab_channel=PSAS
The LanguageWhat is Rust?
● New open-source language sponsored by Mozilla
● Strongly statically typed, compiled, cross-platform language
Advantages
● Memory safe WITHOUT garbage collection
● Move semantics
● Comparable speeds to C, C++
● LLVM backend which allows for powerful optimization
Gotchas
● New and changing language
● Library support exists but is not refined
Build ProcessTravis CI / Github - Continuous Integration
● Automatically try to build and run tests
● Provides EMail and Github notifications
CMake / Cargo Build Integration
● Generates build configuration / Makefile
● Used cmake-rs to launch CMake from Cargo
Assumptions, Constraints, and ReferencesAssumptions:
● Flight controller runs on Linux with hardware, but we should compile/test
without hardware
Constraints
● Written in Rust, tested using JSBSim
● Compiled with 32 bit architecture
References
● Prior PSAS work
● JSBSim documentation
Product Features Promised vs DeliveredPromised Delivered
Receive sensor data Determine response and send control signals Yes
Written in Rust - Linux compatible and 32 bit Yes
Modular to add and remove hardware Yes
Flight mode and Test mode compile separately Yes
Utilize JSBSim for physics simulation Yes
Simulate sensors and actuators in JSBSim Yes
Runs on LED prototype Yes
Run on Satellite reaction wheel No
DeliverablesSource code
● In a repository on Github, all open source using GPL2 license
● PSAS group will fork the Github repository into their own project directory
Flight Controller
● Common components
● I2C and GPIO integration software
Test framework
● JSBSim framework and glue code between Rust and C++
Demo
https://www.youtube.com/playlist?list=PL8UKBDaWZPifD2Dj1vvfJeWF5F92Efrez
Process and ScheduleThe best laid plans of mice and men
Planned Process Actual Process Planned Schedule Actual Schedule
Feature driven
development
Module driven
development
3 iteration plan for
implementation
● Baseline work
● Testing
● Stretch goals
● Extra development
effort to learn
hardware
● Refined behavior
on the prototype
● No time left for
stretch goals
Pull request for changes Pull request + occasional
one off commits to
master
Manual testing for each
pull request
Integrated Travis CI for
automated testing
Problems and ContingenciesEvent Mitigation
Didn’t expect compiling to 32 bit Used built in rust methods to cross-compile
Didn’t meet iteration schedule Dropped stretch goals but finished core work
Running on cold gas jet prototype was
problematic
Ran on LED board instead, then borrowed the LED board
from PSAS so we could test anytime we needed, it was also
safer to test repeatedly on the LED board
JSBSim was a blocker the whole time Rearranged so more people worked on the testing team
Lessons Learned● Co-location or active online communication is helpful for good development
● Rust is still new and changing (we went through 3 version in this project)
● Some libraries are not cross platform
● Flight controllers are awesome, but complicated
● JSBSim is awesome, but complicated
● … and has lackluster documentation
● Git is your frenemy
● Continuous Integration is your friend
● You can compile C++ inside of Rust using cmake + Cargo
● We learned how to use C++ libraries in Rust using a C ABI
● The more prototyping, the better
Questions?
Recommended