F17: Rolling Thunder

From Embedded Systems Learning Academy
Revision as of 10:13, 4 December 2017 by Proj user2 (talk | contribs) (Add geo_controller design and implementation content)

Jump to: navigation, search

Grading Criteria

  • How well is Software & Hardware Design described?
  • How well can this report be used to reproduce this project?
  • Code Quality
  • Overall Report Quality:
    • Software Block Diagrams
    • Hardware Block Diagrams
      Schematic Quality
    • Quality of technical challenges and solutions adopted.

Rolling Thunder

Abstract

This section should be a couple lines to describe what your project does.

Objectives & Introduction

Team Members & Responsibilities

  • Master Controller
    • Akil Khan
    • Jerry John
  • Geographical Controller
    • Abhilash Tuse
    • Vishal Shrivastava
  • Communication Bridge + Android Application
    • Akinfemi Akin-Aluko
    • Johnny Nigh
  • Motor and I/O Controller
    • Saurabh Ravindra Badenkal
    • Joshua Skow
  • Sensor Controller
    • Sona Bhasin
    • Thrishna Palissery
  • QA Team
    • Akil Khan
    • Saurabh Ravindra Badenkal

Legend

Color Component

Blue

Sensor Controller

Green

Motor/IO Controller

Red

Geographical Controller

Orange

Central Controller

Indigo

Communication Bridge + Android Application

Brown

QA

Schedule

Start Date End Date Task Status Date of Completion
1 09/20/2017 09/26/2017
  • Order components and distribute project modules.
  • Research on project requirements.
  • Research on different sensors to be used.
Completed 09/26/2017
2 09/27/2017 10/03/2017
  • Set up project Git and Wiki page.
  • Understand the hardware specifications of each component.
  • Study the datasheet of each component and the hardware interfacing.
  • Test the compatibility of each module.
Completed 10/03/2017
3 10/04/2017 10/10/2017
  • Establish a connection over Bluetooth between the Android app and the BRIDGE.
Completed 10/10/2017
10/10/2017 Wiki Schedule Completed 10/10/2017
4 10/11/2017 10/17/2017
  • Test ultrasonic sensors (Maxbotix and Parallax ping) and identify the suitable one for front and rear.
  • Verify basic commands to Traxxas motor, send basic commands (e.g. forward) to RC car from SJOne board.
  • Configure GPS device baud rate and interface it with SJOne board using UART.
  • Parse data received from GPS device to transmittable format.
  • Analyse the information required to communicate across the controllers.
  • Chalk out the Message IDs based on the priority of the messages and the data to be sent across nodes.
  • Understand DBC and implement the DBC file compatible with all the controllers.
  • Transfer data from the Android app to the BRIDGE.
Completed 10/17/2017
5 10/18/2017 10/24/2017
  • Implement sensor code and perform standalone testing.
  • Finish motor controller API. Test motor driving in different situations, begin to listen to CAN for controls.
  • Interface motor to the SJOne board and check for basic functionality.
  • Interface Compass module with SJOne board using I2C serial bus.
  • Interface Geo controller module with CAN Bus.
  • Establish communication across all the CAN controllers over CAN bus based on the DBC file.
  • Verify the power-up interactions and configurations between Master and the other controllers
  • Receive data in the Android app from the BRIDGE.
Completed 10/24/2017
10/24/2017 DBC File Completed 10/24/2017
10/24/2017 DEMO: CAN communication between controllers Completed 10/24/2017
6 10/25/2017 11/28/2017
  • Add an activity to the app for monitoring the CAN bus wirelessly.
In progress
7 11/01/2017 11/07/2017
  • Implement basic obstacle avoidance algorithm based on sensor data and test the same. Adjust sensor orientation based on testing.
  • Continue testing motor driver via commands from CAN bus.
  • Build in speed steps to reverse motor for reverse to work correctly.
  • Calibrate Compass Module. Develop code for GPS and Compass module communication over CAN.
  • Add an activity to the app for navigating the vehicle manually.
  • Send and recieve current location, destination and checkpoint coordinates to and from App and Geo module via BRIDGE.
Completed 11/07/2017
11/07/2017 DEMO: Motors driven by wheel feedback and sensors, Basic obstacle avoidance

Final Wiki Schedule

Completed 11/07/2017
8 11/08/2017 11/14/2017
  • Filter sensor value readings if necessary and decide on incorporating the filter algorithm either in master controller or sensor controller based on performance testing
  • Begin work on LCD to show vehicle status (speed, fuel status, obstacles, distance to destination etc.) in an intuitive GUI.
  • Finish implementing speed control on motor (to make sure requested speed is met based on RPM read).
  • Fine tune motor reversing.
  • Integrate all modules with the Master to test the data flow.
  • Fine tune obstacle avoidance steering logic with rear sensor input and reversing.
  • Start incorporating Geo module information to master module steering logic.
  • Decide, implement and test data exchange between Geo module and BRIDGE.
  • Calculate and send simple bearing angle and destination status on CAN to figure out initial challenges.
  • Add Google Earth/Maps to the Android app for selecting the car's destination.
  • Send car location to app and check points received to Geo module.
  • Test each module individually
  • Verify the stringent requirement of Start-up Sync, Periodic heart-beat messages.
  • Start adding contents to the relevent sections of wiki.
In progress
9 11/15/2017 11/21/2017
  • Test obstacle avoidance algorithm and fine tune sensor readings
  • Test the LCD at run time for vehicle status and decide on improvements if any.
  • Stabilize navigation logic with multiple checkpoints, bearing angle and destination status info.
  • Identify and mitigate GPS locking, offset and other issues.
  • Assure correctness of compass calibration.
  • Determine if any more changes to DBC are required and lock it down.
  • Implement the steering logic with bearing angle and status provided by geo-module.
  • Consistently communicate current car location to App, get check points from App and relay them to Geo module.
  • Send additional vehicle status information from can bus to the app for display.
  • Field test and check for obvious issues in obstacle avoidance, navigation, maintaining speed (up/down hill).
  • Provide feed backs to each team on identified short comings.
  • Update wiki with details.
Not started
11/21/2017 DEMO: GPS driving Not started
10 11/22/2017 11/28/2017
  • Analyse areas lagging behind and redeploy team where additional resources are required.
  • Implement turning indicators, break lights and head light.
  • Improvise steering logic based on field tests under various conditions and locations.
  • Analyse field test results to re-calberate GPS offset values if required.
  • Complete the CAN information display activity of App (To help in field testing without the PCAN cable).
  • Test the accuracy of check-points from the Bluetooth controller, location data from the Geo-controller sensor and Navigation Algorithm.
  • Check overall robustness of the complete system.
  • Update wiki with details.
Not started
11

12 13

11/29/2017 12/19/2017
  • All hands on testing and final bug fixes.
  • Check for tuning or calibration of modules if required.
  • Complete end-to-end testing for various scenarios and conditions.
  • Creat the semester long project activity video and upload to YouTube.
  • Update and finalize wiki.
Not started
12/20/2017 DEMO: Final Project

SUBMISSION: Final Project Wiki

Not started

Parts List & Cost

Item # Description Distributor Qty Cost
1 SJOne Board Provided by Preet 5 $400
2 RC Car - Traxxas 1/10 Slash 2WD Amazon 1 $189.95
3 Bluetooth Bee BLE 4.0 Module ebay 1 $15
4 GPS Module Amazon 1 $28.99
5 Compass (CMPS11) Acroname 1 $45.95
6 Traxxas 6520 RPM Sensor Amazon 1 $10.82
7 Traxxas 2991 LiPo Battery and Charger Amazon 1 $199.95
8 Breadboard Jumper Wires Amazon 1 $6.99
9 MIFFLIN Acrylic Plexiglass Clear Plastic Sheet Amazon 1 $9.89
10 Printed Circuit Board Amazon 1 $16.83
11 PCB Mounting Feet Set Amazon 1 $11.99
12 Traxxas 6538 Telemetry Trigger Magnet Holder Amazon 1 $4.63
13 MB1240 XL-MaxSonar EZ4 Ultrasonic Sensor Amazon 2 $73.90
14 Parallax Ping Ultrasonic Range Sensor Amazon 2 $69.98
15 CAN Transceiver Microchip 10 Free
16 4D systems 32u LCD 4D Systems 1 $85.00
17 Miscellaneous Items 1 $100.00

Master Controller

Design & Implementation

The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.

Hardware Design

Discuss your hardware design here. Show detailed schematics, and the interface here.

Hardware Interface

In this section, you can describe how your hardware communicates, such as which BUSes used. You can discuss your driver implementation here, such that the Software Design section is isolated to talk about high level workings rather than inner working of your project.

Software Design

Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

Testing & Technical Challenges

Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.

Include sub-sections that list out a problem and solution, such as:

<Bug/issue name>

Discuss the issue and resolution.

Sensor Controller

Design & Implementation

The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.

Hardware Design

Discuss your hardware design here. Show detailed schematics, and the interface here.

Hardware Interface

In this section, you can describe how your hardware communicates, such as which BUSes used. You can discuss your driver implementation here, such that the Software Design section is isolated to talk about high level workings rather than inner working of your project.

Software Design

Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

Testing & Technical Challenges

Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.

Include sub-sections that list out a problem and solution, such as:

<Bug/issue name>

Discuss the issue and resolution.

Motor & I/O Controller

Design & Implementation

The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.

Hardware Design

Discuss your hardware design here. Show detailed schematics, and the interface here.

Hardware Interface

In this section, you can describe how your hardware communicates, such as which BUSes used. You can discuss your driver implementation here, such that the Software Design section is isolated to talk about high level workings rather than inner working of your project.

Software Design

Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

Testing & Technical Challenges

Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.

Include sub-sections that list out a problem and solution, such as:

<Bug/issue name>

Discuss the issue and resolution.

Geographical Controller

Group Members

  • Abhilash Tuse
  • Vishal Shrivastava

Design & Implementation

The Geographical Controller is in place for navigation purpose. It has two essential parts, namely GPS and compass. It provides direction to the car, by calculating the heading angle and the distance between the coordinates, based on GPS and compass readings. To calculate heading angle, we need compass bearing angle and angle between the line joining the two coordinates and the true north (bearing angle for GPS).

Bearing angle calculation between the line joining the two coordinates and the true north

With the reference to the figure, the bearing angle for GPS is the angle between the line joining the two coordinates and the true north. To calculate it graphically, draw a vector pointing towards the destination coordinates from the start point coordinate and measure the angle between the vector and the true north. Use the below formula to calculate the angle mathematically.

 Bearing angle(α) = atan2(sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ)
 where,
       φ1 = Latitude of 1st Coordinate
       φ2 = Latitude of 2nd Coordinate
       λ1 = Longitude of 1st Coordinate
       λ2 = Longitude of 2nd Coordinate
       Δλ = λ2 - λ1

Heading angle calculation

The heading angle is the angle between the compass vector and the vector drawn for calculating GPS bearing angle.

 Heading angle(γ) = α – β
 where, 
       α = Angle between the line joining the two coordinates and the true north
       β = Angle between compass vector and the true north (Compass bearing angle)

If heading angle is positive the car turns right or else turns left.

Distance between the two coordinates calculation

The distance between the two coordinates can be calculated using the Haversine formula.

 a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
 c = 2 ⋅ atan2(√a, √(1−a))
 d = R ⋅ c
 where,
       φ1 = Latitude of 1st Coordinate
       φ2 = Latitude of 2nd Coordinate
       λ1 = Longitude of 1st Coordinate
       λ2 = Longitude of 2nd Coordinate
       Δφ = φ2 - φ1
       Δλ = λ2 - λ1
       d  = distance between the two coordinates
       R  = earth’s radius (mean radius = 6,371km)
 Note: All the angles should be in radians.

Hardware Design

Discuss your hardware design here. Show detailed schematics, and the interface here.

GPS Module

GPS Module













Compass Module

Compass Module
















Hardware Interface

In this section, you can describe how your hardware communicates, such as which BUSes used. You can discuss your driver implementation here, such that the Software Design section is isolated to talk about high level workings rather than inner working of your project.

Software Design

Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

Testing & Technical Challenges

Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.

Include sub-sections that list out a problem and solution, such as:

<Bug/issue name>

Discuss the issue and resolution.

Android and Communication Bridge Controller

Design & Implementation

The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.

Hardware Design

Discuss your hardware design here. Show detailed schematics, and the interface here.

Hardware Interface

In this section, you can describe how your hardware communicates, such as which BUSes used. You can discuss your driver implementation here, such that the Software Design section is isolated to talk about high level workings rather than inner working of your project.

Software Design

Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

Testing & Technical Challenges

Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.

Include sub-sections that list out a problem and solution, such as:

<Bug/issue name>

Discuss the issue and resolution.

Conclusion

Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?

Project Video

Upload a video of your project and post the link here.

Project Source Code

References

Acknowledgement

Any acknowledgement that you may wish to provide can be included here.

References Used

List any references used in project.

Appendix

You can list the references you used.