Difference between revisions of "S20: Bucephalus"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Team Members & Responsibilities)
(Schedule)
Line 160: Line 160:
 
|
 
|
 
* Decide what to include on PCB board
 
* Decide what to include on PCB board
* Decide on PCB software
+
* Begin researching filtering algorithms for ultrasonic sensors
* Discuss PCB board layout design
+
* Read previous student's reports to decide on a compass module (CMPS14)
 
* Start learning Android app development
 
* Start learning Android app development
 
* Order GPS antenna
 
* Order GPS antenna
* Motor node is able to respond correctly based on sensor obstacle detection scenarios (correct LED's light up)
+
* Driver node is able to respond correctly based on sensor obstacle detection scenarios (correct LED's light up)
 
* Ultrasonic sensor values are converted to centimeters and transmit to driver node
 
* Ultrasonic sensor values are converted to centimeters and transmit to driver node
 
* Research ultrasonic sensor mounts
 
* Research ultrasonic sensor mounts
 
* Transmit CAN messages from sensor to driver node, and from driver to motor node
 
* Transmit CAN messages from sensor to driver node, and from driver to motor node
* Decide movement and steering directions based on all possible sensor obtacle detection scenarios
+
* Decide movement and steering directions based on all possible sensor obstacle detection scenarios
 +
* Begin research on PID implementation to control speed of RC car
 
* Add GPS node messages (longitude, latitude, heading) and bridge sensor node messages (destination latitude and longitude) to DBC file  
 
* Add GPS node messages (longitude, latitude, heading) and bridge sensor node messages (destination latitude and longitude) to DBC file  
* Geological node is able to parse an NMEA string to extract latitude and longitude coordinates
 
* Read previous student's reports to decide on a compass module
 
  
 
|
 
|
 
* Completed
 
* Completed
*
 
*
 
*
 
*
 
 
* Completed
 
* Completed
 
* Completed
 
* Completed
*
 
 
* Completed
 
* Completed
 
* Completed
 
* Completed
 
* Completed
 
* Completed
 
* Completed
 
* Completed
*  
+
* Completed
 +
* Completed
 +
* Completed
 +
* Completed
 +
* Completed
 
|-
 
|-
 
|-
 
|-
Line 194: Line 192:
 
|
 
|
 
* Finalize PCB layout and order PCB
 
* Finalize PCB layout and order PCB
* Finish basic Android app without Google maps API
+
* Start implementing a  basic Android app without Google maps API
* Design car state machine
+
* Geological node is able to transmit a heading message to the driver node
* Finish unit testing motors with LPC4078
+
* Bridge sensor node is able to transmit a destination latitude and longitude coordinates message to geological node
* Learn how to integrate Google maps API into Android app
 
* Discuss obstacle avoidance algorithm
 
* Discuss checkpoint algorithm
 
* Geological node is able to transmit latitude and longitude coordinates to driver node
 
* Geological node is able to parse an NMEA string to extract latitude and longitude coordinates
 
* Bridge sensor node is able to transmit a CAN message with destination latitude and longitude coordinates to driver node
 
 
* Order ultrasonic sensor mounts
 
* Order ultrasonic sensor mounts
* Order compass module
+
* Order a new compass module (CMPS14)
* Improve accuracy of ultrasonic sensor's raw ADC value to centimeters conversion
+
* Add PWM functionality to motor board code and test on DC and servo motors
 +
* Continue research on PID controller design and begin basic implementation
 +
* Finalize parts list and place orders for remaining unordered items
 +
* Design a block diagram for optimal ultrasonic sensor placement
  
 
|
 
|
 
*  
 
*  
 
*  
 
*  
*  
+
* Completed
*  
+
* Completed
*
 
*
 
*
 
 
*  
 
*  
 
*  
 
*  
Line 227: Line 219:
 
| 04/04/2020
 
| 04/04/2020
 
|
 
|
* Finish unit testing sensors with LPC4078
+
* Finish a basic implementation of filtering ultrasonic sensor's ADC data
* Test PCB with LPC4078
+
* Geological node is able to compute the destination heading (0-360 degrees) and send to driver node
* Work on GPS module integration
+
* Test existing motor board code on RC car's motors
* Integrate motors with LPC4078
+
* Bluetooth Module is able to receive data from Android app
* Finish unit testing sensors
+
* Complete rough draft of schedule and upload to Wiki page
* Finalize car block diagram
+
* Learn how to integrate Google maps API into Android app
* Finalize car state machine
+
* Geological node is able to parse the GPS NMEA string to extract latitude and longitude coordinates
 +
* Complete rough draft of DBC file messages and signals
 +
* Geological node is able to receive a current heading (0-360 degrees) from the compass module
 +
* Geological node is able to receive an NMEA string from the GPS
  
 
|
 
|
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 
|-
 
|-
 
|-
 
|-
Line 242: Line 247:
 
| 04/11/2020
 
| 04/11/2020
 
|
 
|
* Transmit GPS coordinates to LPC4078
+
* Finish ultrasonic filtering algorithm for ultrasonic sensor's ADC data
* Test GPS module integration with LPC4078
+
* Google maps API is full integrated into Android App
* Complete rough draft of DBC file messages and signals
+
* Bluetooth module is able to receive desitnation latitude and longitude coordinates from Android app
* Integrate PCB with LPC4078
+
* Integrate PCB onto RC car chassis
* Integrate sensors with LPC4078
+
* Design ultrasonic sensor shields to minimize sensor interferance with each other
* Integrate PCB board onto chassis
+
* Discuss checkpoint algorithm
 +
* Design car state machine
 +
* Complete motor board code controlling RC car's DC motor and servo motor
 +
* Finish wheel encoder implementation and integration
  
 
|
 
|
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 
|-
 
|-
 
|-
 
|-
Line 260: Line 277:
 
* Establish and test CAN communication between all boards
 
* Establish and test CAN communication between all boards
 
* Finalize Displaying sensor and compass data on Android app
 
* Finalize Displaying sensor and compass data on Android app
* Finish GPS module integration with LPC4078
+
* Finish GPS module integration with geographical controller
 +
* Finalize car block diagram
 +
* Finalize car state machine
 +
* Finish basic implementation of PID control and test on RC car
 +
* Complete basic implementation and unit testing of checkpoint algorithm
  
 
|
 
|
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 
|-
 
|-
 
|-
 
|-
Line 269: Line 299:
 
| 04/25/2020
 
| 04/25/2020
 
|
 
|
* Finish all unit testing code for each controller
+
* Finalize PID control implementation and test on car (indoor)
* Test obstacle avoidance algorithm (outdoor)
+
* Test obstacle avoidance algorithm on car (indoor)
* Test checkpoint algorithm (outdoor)
+
* Test checkpoint algorithm on car (indoor)
* Transmit destination coordinates from Android app
+
* LCD display is able to display car's speed, destination coordinates, and current heading data
 +
* Complete unit testing code for all modules
  
 
|
 
|
 +
*
 +
*
 +
*
 +
*
 +
*
 
|-
 
|-
 
|-
 
|-
Line 285: Line 321:
 
* Finalize checkpoint algorithm
 
* Finalize checkpoint algorithm
 
* Test drive from start to destination (indoor)
 
* Test drive from start to destination (indoor)
 +
* LCD display is fully integrated onto car chassis
  
 
|
 
|
 +
*
 +
*
 +
*
 +
*
 +
*
 
|-
 
|-
 
|-
 
|-
Line 295: Line 337:
 
* Test drive from start to destination (outdoor)
 
* Test drive from start to destination (outdoor)
 
* Finalize DBC file
 
* Finalize DBC file
* Complete Wiki report
+
* Upload rough draft version of report to Wiki page
 +
* Test PID control implementation (outdoor)
 +
* Test obstacle avoidance algorithm on car (outdoor)
 +
* Test checkpoint algorithm on car (outdoor)
  
 
|
 
|
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 
|-
 
|-
 
|-
 
|-
Line 303: Line 354:
 
| 05/10/2020
 
| 05/10/2020
 
| 05/16/2020
 
| 05/16/2020
 +
|
 +
* Upload final version of report to Wiki page
 +
* Push final code to GitLab
 +
* Test drive from start to destination (outdoor)
 +
* Finalize PID control implementaion based on feedback from last week's test drives
 +
* Finalize obstacle avoidance algorithm based on feedback from last week's test drives
 +
* Finalize checkpoint algorithm based on feedback from last week's test drives
 +
* Test PID control implementation (outoor)
 +
* Test obstacle avoidance algorithm on car (outdoor)
 +
* Test checkpoint algorithm on car (outdoor)
 +
 +
|
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
*
 +
|-
 +
|-
 +
! scope="row"| 14
 +
| 05/17/2020
 +
| 05/23/2020
 
|
 
|
 
* Demo
 
* Demo
 
* Push final code to GitLab
 
* Push final code to GitLab
 +
* Submit individual contributions feedback for all team members
 +
* Make final updates to Wiki report
  
 
|
 
|
 +
*
 +
*
 +
*
 +
 
|-
 
|-
 
|}
 
|}

Revision as of 04:00, 26 March 2020

Project Title

<Team Name>



Abstract

<2-3 sentence abstract>

Introduction

The project was divided into N modules:

  • Sensor ...
  • Motor..
  • ...
  • Android

Team Members & Responsibilities

<Team Picture>

Bucephalous GitLab - [1]


Schedule

Week# Start Date End Date Task Status
1 02/16/2020 02/22/2020
  • Setup a team Google Docs folder
  • Brainstorm RC car design options
  • Research past semester RC car projects for ideas and parts needed
  • Put together a rough draft parts list
  • Setup a team GitLab repository
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
2 02/23/2020 02/29/2020
  • Decide on and order chassis
  • Discuss possible GPS modules
  • Discuss schedule for meeting dates and work days (Tuesdays are for code review and syncing, Saturdays are work days)
  • Discuss bluetooth communication approach (1 phone on car, 1 phone in controller's hands)
  • Discuss vehicle's driving checkpoints (checkpoints calculated after point B is specified)
  • Discuss wiring on RC car (1 battery to power motors and 1 power bank for everything else)
  • Discuss GitLab workflow (mirror our repo with Preet's, 3 approvals to merge to "working master" branch, resolve conflicts on "working master" branch, then can merge to master branch)
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
3 03/01/2020 03/07/2020
  • Decide on sensors (4 ultrasonic sensors: 3 in front, 1 in back)
  • Decide on a GPS module (Adafruit ADA746)
  • Research GPS antennas
  • Decide on CAN transceivers (SN65HVD230 IC's)
  • Request 15 CAN transceiver samples from ti.com
  • Discuss tasks of all 4 board nodes (geographical, driver, motors, bridge controller/sensors)
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
4 03/08/2020 03/14/2020
  • Assemble car chassis and plan general layout
  • Delegate tasks for each 2 person teams
  • Create branches for all nodes and add motor and sensor messages to DBC file
  • Discuss and research possible GPS antennas
  • Design block diagrams for motor node, bridge controller/sensor node, and full car
  • Solve GitLab branches vs folders issue (1 branch per node, or 1 folder per node)
  • Order 4 + 1 extra ultrasonic sensors (MaxBotix MB1003-000 HRLV-MaxSonar-EZ0)
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
5 03/15/2020 03/21/2020
  • Decide what to include on PCB board
  • Begin researching filtering algorithms for ultrasonic sensors
  • Read previous student's reports to decide on a compass module (CMPS14)
  • Start learning Android app development
  • Order GPS antenna
  • Driver node is able to respond correctly based on sensor obstacle detection scenarios (correct LED's light up)
  • Ultrasonic sensor values are converted to centimeters and transmit to driver node
  • Research ultrasonic sensor mounts
  • Transmit CAN messages from sensor to driver node, and from driver to motor node
  • Decide movement and steering directions based on all possible sensor obstacle detection scenarios
  • Begin research on PID implementation to control speed of RC car
  • Add GPS node messages (longitude, latitude, heading) and bridge sensor node messages (destination latitude and longitude) to DBC file
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
6 03/22/2020 03/28/2020
  • Finalize PCB layout and order PCB
  • Start implementing a basic Android app without Google maps API
  • Geological node is able to transmit a heading message to the driver node
  • Bridge sensor node is able to transmit a destination latitude and longitude coordinates message to geological node
  • Order ultrasonic sensor mounts
  • Order a new compass module (CMPS14)
  • Add PWM functionality to motor board code and test on DC and servo motors
  • Continue research on PID controller design and begin basic implementation
  • Finalize parts list and place orders for remaining unordered items
  • Design a block diagram for optimal ultrasonic sensor placement
  • Completed
  • Completed
7 03/29/2020 04/04/2020
  • Finish a basic implementation of filtering ultrasonic sensor's ADC data
  • Geological node is able to compute the destination heading (0-360 degrees) and send to driver node
  • Test existing motor board code on RC car's motors
  • Bluetooth Module is able to receive data from Android app
  • Complete rough draft of schedule and upload to Wiki page
  • Learn how to integrate Google maps API into Android app
  • Geological node is able to parse the GPS NMEA string to extract latitude and longitude coordinates
  • Complete rough draft of DBC file messages and signals
  • Geological node is able to receive a current heading (0-360 degrees) from the compass module
  • Geological node is able to receive an NMEA string from the GPS
8 04/05/2020 04/11/2020
  • Finish ultrasonic filtering algorithm for ultrasonic sensor's ADC data
  • Google maps API is full integrated into Android App
  • Bluetooth module is able to receive desitnation latitude and longitude coordinates from Android app
  • Integrate PCB onto RC car chassis
  • Design ultrasonic sensor shields to minimize sensor interferance with each other
  • Discuss checkpoint algorithm
  • Design car state machine
  • Complete motor board code controlling RC car's DC motor and servo motor
  • Finish wheel encoder implementation and integration
9 04/12/2020 04/18/2020
  • Test obstacle avoidance algorithm (indoor)
  • Test checkpoint algorithm (indoor)
  • Establish and test CAN communication between all boards
  • Finalize Displaying sensor and compass data on Android app
  • Finish GPS module integration with geographical controller
  • Finalize car block diagram
  • Finalize car state machine
  • Finish basic implementation of PID control and test on RC car
  • Complete basic implementation and unit testing of checkpoint algorithm
10 04/19/2020 04/25/2020
  • Finalize PID control implementation and test on car (indoor)
  • Test obstacle avoidance algorithm on car (indoor)
  • Test checkpoint algorithm on car (indoor)
  • LCD display is able to display car's speed, destination coordinates, and current heading data
  • Complete unit testing code for all modules
11 04/26/2020 05/02/2020
  • Finalize destination coordinate transmission from Android app
  • Finalize obstacle avoidance algorithm
  • Finalize checkpoint algorithm
  • Test drive from start to destination (indoor)
  • LCD display is fully integrated onto car chassis
12 05/03/2020 05/09/2020
  • Test drive from start to destination (outdoor)
  • Finalize DBC file
  • Upload rough draft version of report to Wiki page
  • Test PID control implementation (outdoor)
  • Test obstacle avoidance algorithm on car (outdoor)
  • Test checkpoint algorithm on car (outdoor)
13 05/10/2020 05/16/2020
  • Upload final version of report to Wiki page
  • Push final code to GitLab
  • Test drive from start to destination (outdoor)
  • Finalize PID control implementaion based on feedback from last week's test drives
  • Finalize obstacle avoidance algorithm based on feedback from last week's test drives
  • Finalize checkpoint algorithm based on feedback from last week's test drives
  • Test PID control implementation (outoor)
  • Test obstacle avoidance algorithm on car (outdoor)
  • Test checkpoint algorithm on car (outdoor)
14 05/17/2020 05/23/2020
  • Demo
  • Push final code to GitLab
  • Submit individual contributions feedback for all team members
  • Make final updates to Wiki report


Parts List & Cost

Item# Part Desciption Vendor Qty Cost
1 RC Car Traxxas 1 $250.00
2 CAN Transceivers MCP2551-I/P Microchip [2] 8 Free Samples


Printed Circuit Board

<Picture and information, including links to your PCB>



CAN Communication

<Talk about your message IDs or communication strategy, such as periodic transmission, MIA management etc.>

Hardware Design

<Show your CAN bus hardware design>

DBC File

<Gitlab link to your DBC file> <You can optionally use an inline image>




Sensor ECU

<Picture and link to Gitlab>

Hardware Design

Software Design

<List the code modules that are being called periodically.>

Technical Challenges

< List of problems and their detailed resolutions>



Motor ECU

<Picture and link to Gitlab>

Hardware Design

Software Design

<List the code modules that are being called periodically.>

Technical Challenges

< List of problems and their detailed resolutions>



Geographical Controller

<Picture and link to Gitlab>

Hardware Design

Software Design

<List the code modules that are being called periodically.>

Technical Challenges

< List of problems and their detailed resolutions>





Communication Bridge Controller & LCD

<Picture and link to Gitlab>

Hardware Design

Software Design

<List the code modules that are being called periodically.>

Technical Challenges

< List of problems and their detailed resolutions>



Master Module

<Picture and link to Gitlab>

Hardware Design

Software Design

<List the code modules that are being called periodically.>

Technical Challenges

< List of problems and their detailed resolutions>



Mobile Application

<Picture and link to Gitlab>

Hardware Design

Software Design

<List the code modules that are being called periodically.>

Technical Challenges

< List of problems and their detailed resolutions>






Conclusion

<Organized summary of the project>

<What did you learn?>

Project Video

Project Source Code

Advise for Future Students

<Bullet points and discussion>

Acknowledgement

=== References ===