Giter VIP home page Giter VIP logo

embedded_code's People

Contributors

mccauleyma avatar nwdepatie avatar peyton-mckee avatar rydzynskip avatar

Stargazers

 avatar  avatar  avatar

embedded_code's Issues

Implement Efficiency Mode

This is gonna involve taking the current drive state of the car and translating that to a set of IO behavior to increase the range of the car.

Things to do:

  • Potentiometers on the wheel PCB should control the radiator and accumulator fan speeds
  • Will need to broadcast a fan speed to shepherd that needs to be interpreted by shepherd
  • Paddles change maximum torque (automatically derate the torque calculated based on the broadcasted current limit)
  • Implement regen!

Create functions/class solely for pedal hardware abstraction

Right now, pedal hardware abstraction and torque calculations happen in one big class in two big functions. Goal of this issue is to create a class and functions solely for pedal hardware abstraction, and then a higher level class for torque calculations and logic handling

Switch class names to CamelCase

Idk why I made them capitalized originally, I think I figured that saying something like bigButton = BigButton() would be confusing but it is a bit stupid

Implement Performance Mode

We want to utilize the drive state of the MPU to control a set of IO behaviors to increase the performance of the car

Things to do:

  • Traction control (if motor spins fast while we are giving constant torque, reduce torque, this will probably be PID loop style)
  • "Maximum torque at all times," potentially optimizing the current limit to torque calcs to be more aggressive

Integrate PDU into MPU

The implementation of this will consist of:

  1. Consolidating functionality of the board (currently Brakelight, Pump relay, and Radiator Fan PWM) into a single class
  2. Implement a CAN message filling system similar to that of the motor controller's integration (bitfield union) to increase readability

Motor Torque but not spinning

If we are supplying torque to the motor but the motor isn't spinning, this means that something has gone wrong and we might snap the diff or something. For this, we have to consider edge cases like going up a hill so that the car doesn't automatically shut off, so we might want to be gracious with any thresholding we do. I think that some calc was already done and is in the codebase, but the logic was just a bit fucked

Investigate XBee binary encoding

In order to decrease the size of messages, we should send XBee data in a binary format. This can be done using bitfield structures and the Serial.write() function. An issue to solve will be how to reliably distinguish between messages using some sort of start/stop bit pattern that can't be seen throughout the rest of the message.

Add time-filtering for messages in TCU

Add the ability to only log messages at certain time intervals, and not every time they are received. Would involve some sort of top level mapping of message ID to a timer, and only logging the message if the timer has expired.

Make TCU logging parameters configurable via EEPROM

Add EEPROM support for all TCU constants. This involves reading EEPROM values on startup and adding support for dynamically configuring them through a CAN or XBee message. Some parameters will most likely only be able to be changed on startup (baud rates), while others can be updated dynamically (loggable IDs).

This may be a useful feature across parts of the car, so designing it with this in mind is a plus.

Implement Pit Lane and Reverse Mode

These both are gonna be really similar, so I'm grouping them together

Things to do:

  • Speed limiter and torque limiter (these are separate things, speed limiting will be motor feedback based)
  • Maybe toggling IO to test components in pit lane mode?
  • Speed and torque limiting is especially important in reverse

Migrate Docs to Confluence

Now that we have confluence, we should move high-level documentation to confluence, and keep only what is needed for env setup/building/implementation in the README's

Better Naming Conventions

Switch UPPERCASE class names to CamelCase (Idk why I did uppercase to begin with)

Get rid of p_variable for function declaration (I originally thought of it as "passed variable" p, but it means pointer)

Eliminate All Blocking Code

Kinda of a redundant ticket but still important
This ticket entails combing through all code in the MPU AND NERduino codebase to make sure that there is not blocking code

NERduino:

  • Check sensor communication to ensure we never just wait forever/include a timeout

MPU:

  • Make sure there are no blocking debounces
  • Specifically, I think there is something in the motor controller logic that needs to be handled

Create functions/class solely for driverio hardware abstraction

Right now, DriverIO hardware abstraction and logic handling happens in the same class in some very large functions. Goal of this ticket is is to create a class and functions solely for hardware abstraction, then create a new class that utilizes that hardware abstraction to encapsulate logic and hardware.

Create functions/class solely for GPIO hardware abstraction

Right now, GPIO hardware abstraction and logic handling happen in one big class. Goal of this ticket is to create functions solely for abstracting hardware, and then encapsulate any logic within a class.
Not sure if this is really needed, but we'll see

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.