GithubHelp home page GithubHelp logo

autobot-racing's People

Contributors

agoeckner avatar bhuemann avatar zachpurdue avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

autobot-racing's Issues

run the control and guidance algorithms using data passed from the computer vision system

Tasks

  • Integrate control and guidance algorithms with the rest of the Autobot Racing system.
  • Pass output of control systems to the vehicle transmitters.
  • Test the complete integrated system with one vehicle.
  • Test the complete integrated system with multiple vehicles.

Acceptance Criteria

  • The full Autobot Racing system and the ControlSim simulator should use the same control/guidance algorithm codebase.
  • Given a single vehicle test, the vehicle should successfully navigate the track.
  • Given a multiple vehicle test, the vehicles should all successfully navigate the track, barring any collisions between vehicles due to a lack of overtaking capabilities in the guidance system.
  • Given the complete integrated system, delay from computer vision vehicle identification to control system output must be negligible.

Assigned To: Anthony Goeckner
Workload: 10 hours

determine outline of track using computer vision

Tasks:

  • Use OpenCV “contour” feature to determine the layout of the track.
  • From the edges of the contour, generate a simpler polygon with a minimal number of vertices.
  • Determine the navigable areas visible to the camera by finding both the inner and the outer boundaries of the track.
  • Test the system in a variety of lighting conditions and track configurations.

Acceptance Criteria:

  • Given a track with an inner and an outer boundary, the computer vision system will determine the navigable area.
  • Given any reasonable indoor lighting environment (incandescent or fluorescent), the track will be accurately identified.
  • Computer vision will only be used to identify the track during system initialization, at which time the layout will be stored for future use.

Assigned To: Zach Perry
Workload: 25 hours

perform component-level and overall integration testing of the completed system

Tasks:

  • Test integration between each individual pair of components.

    1. CV -> Kalman Filter
    2. Kalman Filter -> Navigation, Guidance, Control
    3. Navigation, Guidance, Control -> Network
    4. Network -> Pi
    5. Pi -> Transmitter
  • Perform overall integration testing of the entire system.

  • This involves racing vehicles around the track in normal operating conditions.

Acceptance Criteria:

  • All individual component integrations are tested successfully.
  • Overall integration testing is performed successfully.
  • The overall integration test is only considered a success if all component integration tests are successful.
  • The overall integration test must be successful.

Assigned To: Anthony Goeckner, Ben Huemann, Zach Perry, Harold Smith
Workload: 20 hours (5 per person)

create a message queue for each thread to allow communication

Tasks:

  • Create message queue for main thread
  • Create message queue for OpenCV thread
  • Test that complete messages are received in a timely fashion.

Acceptance Criteria

  • Given a well formed message when sent then the message should be received at the destination
  • Given a well formed message when sent then the message should be received in a desired time
  • Given a high volume of data traffic through the message-passing system, all messages will be delivered reliably and in a timely fashion

Assigned to: Harold Smith
Workload: 10 hours

communication system between the PC and multiple Raspberry Pis

Tasks:

  • Create messages data type that is robust in format to allow for easy modification
  • Create a way to allow PC to communicate to all Raspberry Pis
  • Create a way to allow PC to communicate to individual Raspberry Pis
  • Create a way to allow for Raspberry Pis to communicate with the PC
  • Test message passing of each function for correctness
  • Test message passing of each function for desired timing

Acceptance Criteria

  • Given data on the PC when sent as a message to all Raspberry Pis then the same message will be received on every pi
  • Given data on the PC when sent as a message to individual Raspberry Pis then the same message will be received only on that pi
  • Given a reply on the Raspberry Pi when sent as a message to the PC then the same message will be received on the PC

Assigned to: Ben Huemann
Workload: 12 hours

create a basic simulation program to model control system behavior.

Tasks

  • Display simulated position and orientation of vehicle.
  • Display desired course of vehicle.
  • Display actual course of vehicle.
  • Display a simulated course or navigable area.
  • Test simulation program with a variety to control algorithms to determine correct operation.

Acceptance Criteria

  • Given a simulation, the position and orientation of the vehicle are accurately displayed.
  • Given a simulation, the desired course of the vehicle is accurately displayed.
  • Given a simulation, the actual course of the vehicle is accurately displayed.
  • Given a simulation, the navigable area of the track is accurately displayed.

Assigned To: Anthony Goeckner
Workload: 3 hours

determine a start and finish line on the racetrack

Tasks:

  • Create a virtual or physical line across the track
  • Map the coordinates of the line in with the track boundaries
  • Use OpenCV to outline the start line on the camera feed
  • Test the creation of a start/finish line.
  • Test recognition and mapping of start line

Acceptance Criteria:

  • Given a start line, OpenCV will be able to detect and map the line
  • Given a start line, the Camera feed will display, if virtual, the line on the camera feed
  • Given a start line the a track and a start line, the two are differentiated by the computer vision system

Assigned To: Harold Smith
Workload: 10 hours

begin creation of a computer vision system

Tasks

  • Map a coordinate system onto the image given by the camera.
  • Test recognizing individual vehicles.
  • Determine the orientation of each vehicle.
  • Test recognizing the outline of the course.

Acceptance Criteria

  • Given multiple vehicles in view of the camera, each can be uniquely identified.
  • Given a moving vehicle, it can be identified as accurately as a vehicle sitting still.
  • Given the computer vision system and a standard web-camera, a high image sampling rate can be achieved.
  • Given an image containing vehicles, each vehicle can be precisely located on the internal coordinate system.

Assigned To: Anthony Goeckner
Workload: 20 hours

write a GPIO-based driver to control the vehicle transmitters

Tasks:

  • Determine GPIO pins needed and initialize them
  • Retrieve messages from communication socket
  • Send to message data to control function
  • Create three separate controlling functions
  • Speed(float)
  • Set appropriate pin to digital potentiometer to control Speed of RC car
  • Turn(char)
  • Set appropriate pin to turn the car left, center, or right
  • Test speed function
  • Test turn function

Acceptance Criteria

  • Given message is received, then data is sent to the appropriate function
  • Given the speed function is called, the RC car will change its speed according to data passed to it
  • Given the turn function is called, the vehicle will turn its wheels

Assigned to: Ben Huemann & Zach Perry
Workload: 5 hours each, 10 total

add power on/off functionality to RC controller

Tasks:

  • Initialize GPIO pins used to send power to controller
  • Wire up RC controller to GPIO pins
  • Power up controller in RCDriver initialization subroutine
  • Power down controller in RCDriver deinitialization subroutine
  • Test GPIO sends power to controller
  • Test controller is initialized after digital potentiometer

Acceptance Criteria:

  • Given GPIO is set to HIGH, the controller should power on
  • Given GPIO is set to LOW, the controller should power off
  • Given RCDriver is initialized, digital potentiometer should be set before controller is powered on

Assigned To: Ben Huemann
Workload: 15 hours

determine the heading of each vehicle on the track

Tasks

  • Use the vehicle target to determine the vehicle’s heading.
  • Pass vehicle headings through a Kalman filter. This filter will first be implemented in another user story.
  • Store a set number of previous vehicle headings, for use with later control systems.
  • Test the system using a variety of vehicles at different locations on the track and pointed at different headings.

Acceptance Criteria

  • Given a single vehicle in view of the camera, its position is accurately recorded.
  • Given multiple vehicles in view of the camera, the position of each is accurately recorded.
  • Given a moving vehicle, its position is updated with a high degree of accuracy.
  • Given the computer vision system and a standard web-camera, a high image sampling rate can be achieved, allowing for a high-fidelity recording of the vehicle position over time.

Assigned To: Anthony Goeckner
Workload: 5 hours

control the entire system using a PC or web-based interface.

Tasks

  • Pick the library to use for developing the UI
  • Draw out rough outline of desired UI and necessary components
  • Begin coding the UI
  • Test the functionality of each component in the UI

Acceptance Criteria

  • A rough sketch of the main UI was drawn including all of the necessary components
  • Half, or more, of the desired components were implemented
  • Given a UI component when a user uses the component then the component will give the desired functionality

Assigned to: Harold Smith
Workload: 20+ hours

change the speed control from discrete to continuous

Tasks:

  • Use a continuous instead of a discrete throttle setting.
  • Change the speed parameter from an int to a float in the networking code.
  • Test to make sure that no functionality or control has been lost.

Acceptance Criteria:

  • Given an equivalent throttle level, cars must respond the same with the new system as they did with the previous system.
  • All function calls must operate the same as before, error free.
  • Given a value between -1.0 and 1.0, the system must set the throttle to that percentage of its maximum forward and backward (negative) speeds.

Assigned To: Zach Perry
Workload: 5 hours

use a Kalman filter to normalize incoming data from computer vision

Tasks:

  • Determine a Kalman filter library to use.
  • Determine and populate all initialization vectors of Kalman filter object
  • Integrate filter input with position and heading data.
  • Integrate filter output with existing navigation, guidance, and control systems.
  • Test integration of the completed system.

Acceptance Criteria:

  • Given noisy input position/heading data, the Kalman filter outputs a steady, reliable estimation of the true position.
  • Given accurate input position/heading data, the Kalman filter output should not vary significantly.
  • Given real time input position/heading data, the Kalman filter should provide a continuous stream of normalized position data

Assigned To: Anthony Goeckner, Ben Huemann
Workload: 20 hours (10 per person)

Create track and set up w/ camera

Tasks:

  • Source track material
  • Create track layout
  • Mount camera to tripod
  • Place Tripod in track

Acceptance Criteria:

  • Given a track, the camera must be able to see the track without the tripod interfering with the track.
  • Given a track, the material must be laid in a way that allows the cars to handle well
  • Multiple track layouts must be provided to prove modularity and show that the tracks of the cars are not hard-coded or pre-determined

Assigned to: Zach Perry
Workload: 5+ hours

determine the number of laps each vehicle has travelled and display them in the UI

Tasks:

  • Initialize each new car’s statistical values
  • Track each individual car and detect car passing through start line
  • Update and store new statistical values for the individual car
  • Send updated values to the UI
  • Test lap counting capabilities with multiple cars.
  • Test lap counting when the car crosses different points of the start/finish line.

Acceptance Criteria:

  • Given a new car, the car will have statistical values initialized to zero or None
  • Given a car passing the start line, the counter for laps and lap times will be updated for the individual car
  • Given a car passing the start line, the updated values for the individual car will be sent to the UI
  • Given a set of updated values, the UI will update the values for the individual car in the “Leaderboard” frame

Assigned To: Harold Smith
Workload: 5 hours

improve the CV Vehicle recognition system so that it functions better in different lighting conditions

Tasks:

  • Perform testing in different lighting environments to determine computer vision failure modes.
  • Make adjustments to CV tuning parameters to compensate for different lighting conditions.
  • Research methods to automatically adjust CV parameter tuning based on environment.
  • Test adjustments to ensure that the computer vision system works reliably in environments commonly found in the Lawson Computer Science Building.

Acceptance Criteria:

  • Given multiple reasonable lighting environments (in LWSN), the computer vision system is robust enough to function in any of them.
  • Given a proper lighting environment, the computer vision system is able to capture and track moving vehicles in all locations on the track.
  • Given a proper lighting environment, the computer vision system tracks moving vehicles with minimal “drops”, or brief periods of time when vehicles cannot be detected.

Assigned To: Anthony Goeckner
Workload: 20 hours

determine the position of each vehicle on the track

Tasks

  • Cause the computer vision system to poll the camera at a set frequency and determine the location of each vehicle.
  • Pass vehicle locations through a Kalman filter. This filter will first be implemented in another user story.
  • Implement a function to determine if a vehicle is within the boundaries of the track.
  • Store a set number of previous vehicle positions, for use with later control systems.
  • Determine a system response when vehicle cannot be located.
  • Test the system using a variety of vehicles at different locations on the track.
  • Test the system response when a vehicle cannot be found.

Acceptance Criteria

  • Given a single vehicle in view of the camera, its position is accurately recorded.
  • Given multiple vehicles in view of the camera, the position of each is accurately recorded.
  • Given a moving vehicle, its position is updated with a high degree of accuracy.
  • Given the computer vision system and a standard web-camera, a high image sampling rate can be achieved, allowing for a high-fidelity recording of the vehicle position over time.

Assigned To: Anthony Goeckner
Workload: 5 hours

create a guidance system that allows for passing/overtaking behaviors

Tasks

  • Create a new version of the wall-following guidance system that allows for variable distance from the wall.
  • Determine distance from one point on track to another. (Not the straight-line or Euclidean distance)
  • Increase or decrease the vehicle’s distance from the wall when it is within a set track distance of the next car in front of it and its speed is faster than the car in front.
  • Test the system using the ControlSim application developed in Sprint 1.
  • Test the system using the real vehicles and track, if possible.

Acceptance Criteria

  • Given an overtake situation where vehicle A is gaining on vehicle B, the distance from the wall of vehicle A is appropriately adjusted for passing.
  • Given an overtake situation when the slower vehicle is on the inside of the track, the overtaking vehicle’s distance from the wall will be increased.
  • Given an overtake situation when the slower vehicle is on the outside of the track, the overtaking vehicle’s distance from the wall will be decreased.

Assigned To: Anthony Goeckner
Workload: 20 hours

control the entire system using a PC or web-based interface.

Tasks

  • Implement API for control and guidance algorithms
  • Implement Camera feed from OpenCV
  • Implement Car Statistics Labels
  • Implement Stop button pop up window
  • Test the functionality of API
  • Test the functionality of Camera feed
  • Test the functionality of Car Statistics pop up window

Acceptance Criteria

  • Given a Camera Feed the UI will display the feed live
  • Given control and guidance algorithms, the user will be able to select the desired algorithm when adding or editing a car
  • Given a set of cars driving on the track, the statistics label will display performance information for each car
  • Given the stop button click event, a pop up window will appear notifying the user to put the cars back in start position

Assigned to: Harold Smith
Workload: 20 hours

add functionality to start, stop, and pause a race

Tasks:

  • Write functions to connect the currently existing buttons.
  • Write a start function to start a new race.
  • Write a stop function to permanently stop a race.
  • Write a pause function to temporarily stop a race.
  • Write a resume function to resume a paused race.
  • Test the start/stop/pause/resume functionality and buttons under various race conditions.

Acceptance Criteria:

  • Clicking the “Start Race” button must start the race, causing cars to begin to move.
  • Clicking the “Pause Race” button should temporarily stop a race. This stops the cars but the cars should resume from their current positions once the resume button is clicked.
  • Clicking the “Resume Race” button should restart a previously paused race. Cars should continue from their paused positions, and the race will continue as normal.
  • Clicking the “Stop Race” button must immediately halt the race, stopping the cars. This ends the race permanently, and cars must be reset before a new race can begin.

Assigned To: Zach Perry
Workload: 10 hours

implement acceleration in straight sections of the track

Tasks:

  • Change the guidance algorithms to increase speed of the cars when in a straight section.
  • Change the guidance algorithms to return the cars to a normal speed and slow down at the end of a corner.
  • Change the guidance algorithms to prevent on-track collisions and offs due to increased speed.
  • Test new guidance algorithms.

Acceptance Criteria:

  • Given a car enters a straight section of track, it should accelerate out of the previous corner before slowing down for the next corner.
  • Given the cars are moving around the track, the cars should not crash or go off course.
  • Given the cars are moving around the track, the cars should not accelerate into a car in front of them.

Assigned To: Zach Perry
Workload: 10 hours

model a basic control system for autonomous driving

Tasks

  • Create a basic proportional controller to maintain correct heading.
  • Create ability to induce error in simulated inputs.
  • Apply simulated inputs to control system to determine response.
  • Test output of control system for expected responses.

Acceptance Criteria

  • Given some simulated error, control system is able to maintain a desirable course.
  • Given a small amount of error, the control system will display a minimal amount of overshoot.
  • Given a modeled control system, the output is easily comprehensible.

Assigned To: Anthony Goeckner
Workload: 7 hours

implement Integral portion of PID controller

Tasks

  • Research possible ways that the integral portion of a PID controller is implemented.
  • Implement the Integral calculation and add to the existing proportional calculation.
  • Test PID controller with computer vision input.

Acceptance Criteria

  • Given some error, control system is able to maintain a desirable course.
  • Given some error and a correction for that error, the control system will display a minimal amount of overshoot.
  • Given input, normalized output should be better tuned than the just the stand-alone proportional mode.

Assigned to: Anthony Goeckner, Ben Huemann
Workload: 20 hours (10 per person)

create better vehicle tags and enclosures for the control boards

Tasks:

  • Create new vehicle tags with different identification colors
  • Create enclosures for the control boards
  • Test that vehicle tags are correctly identified by the existing computer vision system.
  • Test that vehicle tags are durable and do not shift position or orientation while driving.

Acceptance Criteria:

  • Tags must be durable.
  • Tags must be visible to the CV system.
  • They must reflect light evenly.
  • They must each be individually colored for each car.
  • Control enclosures must protect the boards while in storage and use.

Assigned To: Zach Perry
Workload: 10 hours

run a multithreaded system

Tasks:

  • Create main thread for UI and Framework
  • Create thread for OpenCV
  • Set locks on any shared values to maintain concurrency
  • Test threads to ensure they run concurrently
  • Test that threads run concurrently without errors

Acceptance Criteria

  • Given a thread for UI and Framework, the thread functions as normal
  • Given a thread for OpenCV, the thread functions as normal
  • Given a function or variable accessed by multiple threads, a lock will be set on the function or variable to ensure concurrency between threads

Assigned to: Harold Smith
Workload: 10 hours

connect each Raspberry Pi to a RC transceiver

Tasks:

  • Take apart each remote
  • Measure & record voltages/resistance of the buttons, potentiometer, and power connections
  • Desolder and remove buttons, potentiometer, and power wires from circuit board
  • Solder new wires to striped buttons, potentiometer, power nodes so that the PI gains control of the transceiver
  • Choose GPIO pins and connect the new wires to the pins
  • Test conductivity between all new leads soldered to wires

Acceptance Criteria

  • When the PI sends power to the power pins, the LED on the transceiver should light up signifying it is receiving power
  • When the PI sends power to either the left/right buttons, the wheels on the RC car should turn accordingly
  • When the varying current is sent to the potentiometer nodes, the car should accelerate, stop, or reverse according to current draw

Assigned to: Ben Huemann & Zach Perry
Workload: 5 hours each, 10 total

research ways to interface the RF transmitters and the Raspberry Pis

Tasks:

  • Investigate hardware used in RC remote
  • Test unmodified remote for current functionality
  • Test feasibility of electrical connection
  • Create plan of action to connect Pis to remotes
  • Modify hardware to allow Pi to operate RC cars via software
  • Create basic software driver to control remotes via software.

Acceptance Criteria

  • Successfully attempt to connect Raspberry Pi with RC controller
  • Given a Raspberry Pi, when connecting to an RC remote, the Raspberry Pi should have no hardware connection errors
  • Given a software-controlled remote, the software should be capable of performing all operations originally available on the remote.

Assigned to: Zach Perry
Workload: 10+ hours

ensure the computer vision software is able to easily identify individual cars and the track boundaries

Tasks:

  • Test computer vision against multiple cars (without track)
  • Test computer vision against track (without cars)
  • Test computer vision against cars and track

Acceptance Criteria:

  • Given cars are tested independently, when tested for computer vision functionality the cars will be uniquely identified along with their orientation.
  • Given track is tested independently, when testing for computer vision functionality the track should be identified along with its boundaries
  • Given cars are overlaid on top of the track when testing for computer vision functionality, both should be identified independently

Assigned to: Ben Huemann
Workload: 10 hours

efficient message passing system

Tasks

  • Create message passing functions for communication between classes
  • Test message passing of each function for correctness
  • Test message passing of each function for desired timing

Acceptance Criteria

  • Given every class when trying to communicate between classes then each class should have the functionality to pass messages to one another
  • Given a well formed message when sent then the message should be received at the destination with complete correction
  • Given a well formed message when sent then the message should be received in a desired time
  • Given a high volume of data traffic through the message-passing system, all messages will be delivered reliably and in a timely fashion.

Assigned To: Harold Smith
Workload: 7+ hours

provide an API allowing researchers to perform control-systems research on autonomous vehicles.

Tasks:

  • Create APIs for use by researchers to allow the use of researcher-designed control systems.
  • Test the associated APIs.

Acceptance Criteria:

  • An API is created which allows for multiple control systems to be used simultaneously, each on a different vehicle.
  • The framework provides an interface to the camera to allow for computer vision.
  • Given a certain specification for the structure of a control system, a researcher can create a control system that will interact successfully with the framework.

Assigned To: Harold Smith + Ben Huemann
Workload: 16 hours

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.