0% found this document useful (0 votes)
26 views14 pages

Psas Rcs Capstone Final Presentation 2

The document summarizes a capstone project for a flight controller. A team of students worked on building a flight controller using Rust that could provide roll control and integrate with a physics simulation using JSBSim. They delivered a modular flight controller, test framework, and demo. Key challenges included learning new technologies, coordinating a distributed team, and integrating with hardware.

Uploaded by

bdrckm9wjm
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views14 pages

Psas Rcs Capstone Final Presentation 2

The document summarizes a capstone project for a flight controller. A team of students worked on building a flight controller using Rust that could provide roll control and integrate with a physics simulation using JSBSim. They delivered a modular flight controller, test framework, and demo. Key challenges included learning new technologies, coordinating a distributed team, and integrating with hardware.

Uploaded by

bdrckm9wjm
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

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 Roles
Person 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 Project
Step 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 Project
Why 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 Language
What 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 Process
Travis 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 References
Assumptions:

● 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 Delivered
Promised 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


Deliverables
Source 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 Schedule
The best laid plans of mice and men

Planned Process Actual Process Planned Schedule Actual Schedule

Feature driven Module driven 3 iteration plan for ● Extra development


development development implementation effort to learn
hardware
Pull request for changes Pull request + occasional ● Baseline work ● Refined behavior
one off commits to ● Testing on the prototype
master ● Stretch goals ● No time left for
stretch goals
Manual testing for each Integrated Travis CI for
pull request automated testing
Problems and Contingencies
Event 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 Ran on LED board instead, then borrowed the LED board
problematic 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?

You might also like