Skip to content

Quality Assurance Research Questions

Franz Miltz edited this page Sep 16, 2021 · 1 revision

Split BBBs

At the moment, we are using a single BBB to do all our computations. Therefore, all the components on the pod have to be connected to the same board. This leads to problems on the hardware side, because the cables need to be longer which leads to more interference. If we could split the work between different BBBs and have them communicate through ethernet or similar, we would solve a few problems.

To assess whether this would be feasible, a lot of research needs to be done.

Ideas:

  • distributed system, simulating multi core - difficult from a technical point of view
  • different BBBs for different tasks - requires lots of communication with hardware

Stop using concurrency

The current system relies heavily on concurrency. This has several drawbacks:

  • BBB is single core, thus no performance gain
  • yielding processing time to OS to do scheduling between threads
  • fewer runtime guarantees
  • more complicated than it needs to be; problem for new members

Ideas:

  • single main loop interleaving all modules' main loops - assumes that all subsystems take approximately the same time
  • single main loop that runs call from a priority queue - still lots of potential to fuck up by blocking; also potentially complicated from a technical point of view

Change the programming language

C++ allows us to do a lot of things and a lot of things we don't need. This is a problem, especially because many of our new members come from different languages, like Java and C. Using a language with a more standardised way of doing things may help streamline the code and avoid bug right away.

Ideas:

  • C - too low level, makes coding too difficult
  • Java, Python, Haskell, Go, ... - too slow; garbage collected
  • Rust - best shot, may be too difficult to pick up
Clone this wiki locally