Code Monkey home page Code Monkey logo

rmts-software's People

Contributors

reilleya avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

roguextech

rmts-software's Issues

Configurable thrust threshold

The user should be able to set the percentage of max thrust that is used to determine when a firing begins and ends.

Split sensor profiles

Load cells and pressure transducers should be treated separately in the code so you can pair different sensors without having to add all combinations as profiles.

On "setup fire" allow users to disconnect, or some sort of workflow to go back and revise firing parameters

If a user hits "Connect" and does not have transducer set, things sort of get locked up in the workflow. Also, at this point the user cannot edit the firing parameters on the right side. Both scenarios involve exiting the sw.

This could be addressed by several options:

  • a text comment that one needs to set these things before connecting
  • pop up that says you need to set transducer and firing data if you try to hit connect and haven't
  • a "disconnect" button that allows you to go back and set stuff
  • splitting the firing page into two panels, one for "Firing setup" and then a "Firing"

Just some thoughts.

Sensor calibration workflow

There should be a workflow that allows the user to gather calibration data for a sensor. The flow should look like:

  1. Select a COM port to connect to. The software should ensure that the device is sending setup packets.
  2. Select which sensor (load cell or pressure transducer) to calibrate.
  3. Open an interface that shows a graph with the current regression. Have a box where the user can enter the current "real" value. Grab the average of the last ~5 sensor packets and plot the resulting point on the graph. The user should be able to view the data points on the graph alongside the regression as well as view and delete them in a table. They should be able to click "cancel" to exit and discard the results, or confirm to save them.

About page

There should be an about page with the standard safety disclaimer and thanks for Peter and Shreeyam. This might also be a good spot for a way to connect to an RMTS board and display version info.

Don't allow time to go backwards

I can probably filter out faulty radio packets that manage to pass the checksum based on the fact that time only increases as sequence ID goes up.

Display thrust coefficient

For tests with both pressure and force data the thrust coefficient should be calculated and graphed, with an average displayed.

Export raw CSV

Add a button to the results screen that allows the export of the raw data as a CSV.

File versioning

Every file generated and consumed by the application should have an attached version number to allow for migrations. Just copy the system from oM.

OSX fixes

Move log file to appdirs directory, and figure out how to load resources properly so the logo on the start screen is displayed.

Revise fire button behavior

Holding the fire button down should send a constant stream of fire packets. Pressing it should send significantly more than it does currently, maybe 50.

Propellant characterization tool

The propellant characterization menu should allow you to load data from multiple firings and perform a regression on their data to output the ballistic coefficient and exponent along with a plot of c* for different pressures to judge combustion completeness. The user will likely need to enter additional information to go along with each file, like propellant web thickness.

Add a central logger

There should be a logger that handles both file logging and displaying certain levels of output in popups to inform the user. It should make sure the log files don't exceed a certain size and all that good stuff.

Handle error packets in calibration setup

Right now the only sign that the device has errors is the data age going up, which is impossible to distinguish from the board not being on. The error display from the fireWidget should be extracted and made usable here as well.

Add additional interlock to firing

It could be a good idea to require the user to hold a modifier button down to enable the fire button in addition to the text box used currently.

Better support for single-transducer tests

Right now if you run a test with only a pressure transducer you have to switch to "Raw" mode because the flat-line force data coming in will get trimmed to nothing. There should be a "None" option in each transducer dropdown that disables anything related to that transducer later in the UI. If load cell is set to "None' then trimming should be based on pressure data instead.

Error handling

The application should have a page where it displays the contents of error packets from the board so the user can resolve the issues. There should be detailed explanations of what the errors are and how they can be fixed.

Add additional validation to results packets

The ADS1219 only returns values in the 0x0 - 0x7FFFFF range for positive inputs. As we only expect it to have to read positive values, packets with force or pressure outside of this range can be discarded.

Allow users to update transducers for saved firings

If a firing is completed with the wrong transducer selected the user currently has to manually edit the file, which isn't great. There should be a button that allows a user to change the transducer calibrations used for processing a file.

Grid lines

There should be a checkbox somewhere that allows users to turn on grid lines on the graph widget.

Show maximum reading possible with a transducer

Based on the max value the ADC/amp can read and the calibration for a transducer we can calculate what physical reading the system will max out at and display it so the user can avoid disappointment.

Try to guess the proper serial device

There isn't much that can be done to guess which COM port is the correct one on windows, but on Mac OS and Linux the application should pick the first option that doesn't contain the string bluetooth as that is often the first option alphabetically but never correct.

Opening firing page when motor has already fired

If the RMTS board is already sending results when the firing widget connects, the firing object will send the application to the results page without any indication of the reason. Skipping automatically to the results page makes sense when the user has just pressed stop button but not as much here, so I should figure out the right way to direct the user to the "receive results" workflow instead, maybe by having the firing complain when it gets a result packet before sending a firing packet.

Process raw data menu

The "Process Raw Data" menu should be wired up so a user can view raw data in the SD card format. This will require tweaks to the start screen because it is currently set up so the sensor profile dropdown is associated with the "Wireless connection" option when it is also required for viewing raw data.

PNG export feature

Add a button for exporting a PNG of the graph along with some stats, like the TRA puts out for certified motors.

Indicate that results are coming in when stop button is pressed

The user is left in the dark when the stop button is pressed if they are looking at the logs as it can take a few seconds for the first graph to appear. There should be some indication that results are arriving before the transition to the results screen so they know things are working.

Backup propellant and configuration files before overwriting

The software currently overwrites the propellant and configuration files with defaults if the loaded file fails validation. This is usually the correct behavior as a file that fails validation isn't useful most of the time, but bugs in file validation or normal development could lead to this happening when it shouldn't. Users shouldn't lose their calibrations when this happens, so if the file exists when it goes to write the defaults it should move it to ___.yaml.back or something

Fix issues with very long firings

First, it seems like the logic for handling time rollovers is only used for reading from MFL files, not when receiving results directly from a board. Verify that this is the case and fix it if so. Also, Harry sent me an extremely long data file (6+ minutes) and it seems like the time data got messed up when it went past about 2 minutes. This might be an error in the rollover logic.

Limit max igniter on time

This is both friendlier to the board and more correct, because the firing time in the packet maxes out at a value.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.