Difference between revisions of "F14: Team3-Self Driving Car"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Design & Implementation)
(Controller Communication Table)
 
(42 intermediate revisions by 2 users not shown)
Line 68: Line 68:
 
| 11/15/2014
 
| 11/15/2014
 
| Sensor Team task  
 
| Sensor Team task  
| Ongoing
+
|Completed
 
|
 
|
 
|-
 
|-
Line 177: Line 177:
 
  * Start working on CAN Periodic message structure
 
  * Start working on CAN Periodic message structure
 
|  
 
|  
* Ongoing
+
* Completed
| --/--/----
+
: RC car design and module assembly is completed. Need some fine tuning for connections. Message list is generated and periodic message implementation started.
 +
| 10/28/2014
 
|-
 
|-
 
! scope="row"| 5
 
! scope="row"| 5
Line 190: Line 191:
 
   all controllers and display the status of each controller
 
   all controllers and display the status of each controller
 
|  
 
|  
* Scheduled
+
* Completed
| --/--/----
+
: Periodic Message Setup done. Able to receive boot status. Need to work on display of status.
 +
| 11/03/2014
 
|-
 
|-
 
! scope="row"| 6
 
! scope="row"| 6
Line 203: Line 205:
 
   working with Sensors Controller team
 
   working with Sensors Controller team
 
|  
 
|  
* Scheduled
+
* Completed
| --/--/----
+
: Kill Switch implemented through Bridge controller. Head Lights implemented. LCD display of Status achieved.
 +
| 11/11/2014
 
|-
 
|-
 
! scope="row"| 7
 
! scope="row"| 7
Line 214: Line 217:
 
  * Develop Detection technique if controllers are reaching 'Error State'  
 
  * Develop Detection technique if controllers are reaching 'Error State'  
 
|  
 
|  
* Scheduled
+
* Completed
| --/--/----
+
: File Log implemented. Error State is partially implemented. Obstacle detection achieved. Needed refinement in Direction control logic. Need to implement reverse logic.
 +
| 11/18/2014
 
|-
 
|-
 
! scope="row"| 8
 
! scope="row"| 8
Line 229: Line 233:
 
    
 
    
 
|  
 
|  
* Scheduled
+
* Completed
 +
: Integration Started. Faced difficulty in synchronization.
 +
| 11/26/2014
 +
|-
 +
! scope="row"| 9
 +
| 11/25/2014
 +
| 12/02/2014
 +
|
 +
* Final Integration and testing Self_Drive Capability of the Car 
 +
|
 +
* Ongoing
 
| --/--/----
 
| --/--/----
 
 
|}
 
|}
  
Line 338: Line 351:
  
  
'''Motor Team Schedule'''
+
'''Motor Controller Team Schedule'''
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 352: Line 365:
 
| 9/30/2014
 
| 9/30/2014
 
| 10/7/2014
 
| 10/7/2014
| Study the motor controller concepts
+
|  
| Done
+
* Study SJOne board's motor controller concepts and PWM
 +
|  
 +
* Completed
 +
: Very simple code. Just two lines. Set the frequency. Set the duty cycle.
 
| 10/7/2014
 
| 10/7/2014
 
|-
 
|-
Line 359: Line 375:
 
| 10/7/2014
 
| 10/7/2014
 
| 10/14/2014
 
| 10/14/2014
| Set up the CAN transceiver
+
|  
| Done
+
* Open up RC Car's motor and servo connections
| 10/14/2014
+
* Study the Electronic Speed Control's functions
 +
|  
 +
* Completed
 +
: Motor and Servo operate on the same frequency
 +
: ESC needs calibration each time it is switched on. Need to find a solution for this.
 +
| 10/11/2014
 
|-
 
|-
 
! scope="row"| 3
 
! scope="row"| 3
 
| 10/14/2014
 
| 10/14/2014
 
| 10/21/2014
 
| 10/21/2014
| Interface the SJOne-board PWM with SERVO motor
+
|
| On going
+
* Define the duty cycles for proper motor and servo signals
| TBD
+
|  
 +
* Completed
 +
: Using trial and run, figured out the duty cycle for constant speed and turns
 +
| 10/19/2014
 
|-
 
|-
 
! scope="row"| 4
 
! scope="row"| 4
 
| 10/21/2014
 
| 10/21/2014
 
| 10/28/2014
 
| 10/28/2014
| Set up communication with other controllers
+
|
| On going
+
* Add CAN frame structure to the motor functions
| TBD
+
* Test for communication between motors and sensors for prototype demo
 +
* Define the Message List by working with other teams
 +
|  
 +
* Ongoing
 +
| --/--/----
 
|-
 
|-
 
! scope="row"| 5
 
! scope="row"| 5
 
| 10/28/2014
 
| 10/28/2014
| 11/4/2014
+
| 11/04/2014
| Testing
+
|
| Scheduled
+
* Start working on CAN Periodic message structure
| TBD
+
* Start looking for speed sensors
 +
|  
 +
* Scheduled
 +
| --/--/----
 
|-
 
|-
 
! scope="row"| 6
 
! scope="row"| 6
| 11/4/2014
+
| 11/04/2014
 +
| 11/11/2014
 +
|
 +
* Attach speed sensors to the motor
 +
* Test CAN communication between motor controller and other controllers
 +
|
 +
* Scheduled
 +
| --/--/----
 +
|-
 +
! scope="row"| 7
 
| 11/11/2014
 
| 11/11/2014
| Testing
+
| 11/18/2014
| Scheduled
+
|  
| TBD
+
* Work on speed sensors. Figure out the way to send sensor data to master controller.
 +
* Test for proper and accurate CAN communication
 +
|
 +
* Scheduled
 +
| --/--/----
 +
|-
 +
! scope="row"| 8
 +
| 11/18/2014
 +
| 11/25/2014
 +
|
 +
* Project Integration and testing basic self drive capability of the car
 +
* Check the functionality and behavior of the motor controller in all the known
 +
  contexts
 +
* Perform modifications (if any) to eliminate any bugs to make the motor work
 +
  seamlessly
 +
* Final Integration of car and testing there after
 +
 
 +
|
 +
* Scheduled
 +
| --/--/----
 +
 
 
|}
 
|}
  
Line 495: Line 555:
 
! scope="row"| 3
 
! scope="row"| 3
 
| 10/21/2014
 
| 10/21/2014
| 11/28/2014
+
| 10/28/2014
| Write CAN Subscription tasks for communication with Master controller.
+
| Implementing CAN structure with LCD tasks.
| Ongoing
+
| Completed
|
+
| 11/30/2014
 
|-
 
|-
 
! scope="row"| 4
 
! scope="row"| 4
Line 573: Line 633:
 
| 11/21/2014
 
| 11/21/2014
 
| Subscribe to all CAN messages and dump all of them via Bluetooth to Android App or web interface
 
| Subscribe to all CAN messages and dump all of them via Bluetooth to Android App or web interface
| On going
+
| Done
| TBD
+
| 11/24/2014
 
|-
 
|-
 
! scope="row"| 6
 
! scope="row"| 6
 +
| 10/14/2014
 +
| 11/21/2014
 +
| Ajax & Websocket server remote structure
 +
| Done
 +
| 11/01/2014
 +
|-
 +
! scope="row"| 7
 
| 10/14/2014
 
| 10/14/2014
 
| 11/21/2014
 
| 11/21/2014
 
| Be able to input GPS coordinates through either (or both) Android App and web interface and send through Bluetooth then CAN bus
 
| Be able to input GPS coordinates through either (or both) Android App and web interface and send through Bluetooth then CAN bus
| On going
+
| Done
| TBD
+
| 11/24/2014
 
|-
 
|-
! scope="row"| 7
+
! scope="row"| 8
 
| 10/21/2014
 
| 10/21/2014
 
| 11/24/2014
 
| 11/24/2014
 
| Android App and webpage GUI enhancements (Google Maps, Google Drive)
 
| Android App and webpage GUI enhancements (Google Maps, Google Drive)
| Scheduled
+
| Done
 +
| 11/24/2014
 +
|-
 +
! scope="row"| 9
 +
| 10/21/2014
 +
| 11/30/2014
 +
| Data visualization (status, compass, speed, location,....)
 +
| On going
 
| TBD
 
| TBD
 
|}
 
|}
Line 606: Line 680:
 
| Traxxas 37076 Rustler VXL
 
| Traxxas 37076 Rustler VXL
 
| 1
 
| 1
| $$$.$$
+
| $380.57
 
|-
 
|-
 
! scope="row"| 2
 
! scope="row"| 2
Line 754: Line 828:
 
| Any other value
 
| Any other value
 
| Invalid date rate
 
| Invalid date rate
 +
|}
 +
 +
 +
{| class="wikitable"
 +
|+ Master Controller Communication Table
 +
|-
 +
| Message Number
 +
| Purpose
 +
| Data Byte Pattern
 +
|-
 +
| 0x101
 +
| Request each Controller Boot Status
 +
|
 +
Byte[0]: Request command for Boot Info.
 +
|
 +
|-
 +
| 0x102
 +
| Request each Controller version info.
 +
|
 +
Byte[0]: Request command for Version Info.
 +
|
 +
|-
 +
| 0x103
 +
| Request GPS Controller for Satellite Time
 +
|
 +
Byte[0]: Request command for Time
 +
|
 +
|-
 +
| 0x104
 +
| Set Time on each Controller received from Satellite
 +
|
 +
Byte[0-3]: Time in HH:MM:SS
 +
|
 +
|-
 +
| 0x201
 +
| Receives Boot status from each Controller
 +
|
 +
Byte[0]: Boot Status Info.
 +
|
 +
|-
 +
| 0x202
 +
| Receives Version info. from each Controller
 +
|
 +
Byte[0-3]: Controller Version Info.
 +
|
 +
|-
 +
| 0x203
 +
| Receives the Time from GPS Controller
 +
|
 +
Byte[0-3]: Time in HH:MM:SS
 +
|
 +
|-
 +
| 0x301
 +
| Request destination co-ordinates from Communication_Bridge
 +
|
 +
Byte[0-7]: Displays "Waiting for Destination Location Input"
 +
|
 +
|-
 +
| 0x302
 +
| Set the destination GPS co-ordinates to GPS_Controller
 +
|
 +
Byte[0-3]: Latitude Co-ordinate
 +
Byte[4-7]: Longitude Co-ordinate
 +
|
 +
|-
 +
| 0x500
 +
| Display Boot Status on LCD
 +
|
 +
Byte[0]: Boot Status Response
 +
|
 +
|-
 +
| 0x501
 +
| Display Version Info. on LCD
 +
|
 +
Byte[0]: Version Info.
 +
|
 +
|-
 +
| 0x502
 +
| Display Controller Time on LCD
 +
|
 +
Byte[0-2]: Time in HH:MM:SS
 +
|
 +
|-
 +
| 0x503
 +
| Direction n Speed Control
 +
|
 +
Byte[0]: START/STOP/RIGHT/LEFT command
 +
|
 +
|-
 +
| 0x504
 +
| Display Motor speed on LCD
 +
|
 +
Byte[0]: Speed Value
 +
|
 +
|-
 +
| 0x505
 +
| Display Dist. to Destination and Heading Direction on LCD
 +
|
 +
Byte[0]: Distance to Destination
 +
Byte[1]: Heading Direction
 +
|
 +
|-
 +
|0x506
 +
|Display Sensor Values on LCD
 +
|
 +
Byte [0]: Front sensor value in inches
 +
Byte [1]: Front Left sensor value in inches
 +
Byte [2]: Front Right sensor value in inches
 +
Byte [3]: Back sensor value in inches
 +
|
 +
|-
 +
|0x507
 +
|Display Battery Status & Light Sensor Value on LCD
 +
|
 +
Byte[0]: Battery Status Value
 +
Byte[1]: Light Sensor Value
 +
|
 +
|-
 +
|}
 +
 +
{| class="wikitable"
 +
|+ Motor Controller Communication Table
 +
|-
 +
| Message Number
 +
| Purpose
 +
| Data layout
 +
|-
 +
| 0x508
 +
| Speed Sensor Data
 +
|
 +
byte [0] : Speed sensor value in rpm
 +
|-
 +
| 0x509
 +
| Vehicle Direction/Movement Data
 +
|
 +
byte [0] : Movement Control
 +
      0x1 : Forward
 +
      0x2 : Reverse
 +
      0x3 : Stop
 +
byte [1] : Steering Control
 +
      0x1 : Left
 +
      0x2 : Right
 +
      0x3 : Straight
 +
|-
 
|}
 
|}
  
Line 763: Line 981:
 
| Data layout
 
| Data layout
 
|-
 
|-
| 0x00
+
| 0x510
 
| Front/Back Range Sensor Data
 
| Front/Back Range Sensor Data
 
|
 
|
Line 770: Line 988:
 
  byte [2] : Front Right sensor value in inches
 
  byte [2] : Front Right sensor value in inches
 
  byte [3] : Back sensor value in inches
 
  byte [3] : Back sensor value in inches
byte [4] : Back Left sensor value in inches
 
byte [5] : Back Right sensor value in inches
 
 
|-  
 
|-  
| 0x01
+
| 0x511
| Accelerometer Sensor Data
+
| Light, Accelerometer and Battery Sensor Data
|
 
byte [0] : X axis Value
 
byte [1] : Y axis Value
 
byte [2] : Z axis Value
 
|-
 
| 0x02
 
| Light Sensor Data
 
 
|
 
|
 
  byte [0] : Light sensor value
 
  byte [0] : Light sensor value
|-
+
byte [1] : X axis Value
| 0x03
+
byte [2] : Y axis Value
| Battery Status Data
+
byte [3] : Z axis Value
|
+
  byte [4] : Battery status value
  byte [0] : Battery status value
+
|-
 
|}
 
|}
  
Line 798: Line 1,007:
 
| Data layout
 
| Data layout
 
|-
 
|-
| 0x00
+
| 0x518
| Subscribe to GPS data
+
| Set GPS Location
| byte [0] : Subscription rate in Hz (5, 10 acceptable)
+
|
 +
  byte [0 - 3] : Latitude - Float
 +
  byte [3 - 7] : Longitude - Float
 
|-
 
|-
| 0x01
 
| Subscribe to Compass data
 
| byte [0] : Subscription rate in Hz (5, 10, 20 acceptable)
 
 
|}
 
|}
  
 
{| class="wikitable"
 
{| class="wikitable"
|+ Communication Bridge Communication Table
+
|+ IO Communication Table
 
|-
 
|-
 
| Message Number
 
| Message Number
Line 814: Line 1,022:
 
| Data layout
 
| Data layout
 
|-
 
|-
| 0x00
+
| 0x520
| Remotely stop the car (remote kill switch)
+
| Subscribe to Sensor data
| N/A
+
| bytes [0-5] : Sensor Value in Inches
 
|-
 
|-
 
+
| 0x521
 +
| Subscribe to Motor data
 +
| bytes [0-2] : Vehicle Direction
 
|-
 
|-
| 0x01
+
| 0x522
| Response Destination GPS location
+
| Subscribe to Compass Data
|bytes [0-3] : latitude (float)
+
| bytes [0] : Compass Data in degrees
bytes [4-7] : longitude (float)
 
 
|-
 
|-
| 0x02
+
| 0x523
| Request Destination GPS location
+
| Subscribe to Battery Status
| N/A
+
| bytes [0] : Battery Status Value
 
|-
 
|-
 
|}
 
|}
  
 
{| class="wikitable"
 
{| class="wikitable"
|+ IO Communication Table
+
|+ Communication Bridge Communication Table
 
|-
 
|-
 
| Message Number
 
| Message Number
Line 838: Line 1,047:
 
| Data layout
 
| Data layout
 
|-
 
|-
| 0x00
+
| 0x528
| Subscribe to Sensor data
+
| Set Car Speed (Kill Switch) - temporary allow for other non-zero value for demo
| N/A
+
| byte[0] - speed value
 +
|-
 +
| 0x529
 +
| Destination GPS location
 +
|
 +
bytes [0-3] : latitude (float)
 +
bytes [4-7] : longitude (float)
 +
|-
 +
| 0x52A
 +
| Turn to degree
 +
|
 +
bytes [0-3] : degree(float)
 
|-
 
|-
 
+
| 0x52B
 +
| Way points longitude
 
|
 
|
|  
+
bytes [0-1] :total waypoints count
 +
bytes [2-3] :waypoint index
 +
bytes [4-7] : longitude(float)
 +
|-
 +
| 0x52C
 +
| Way points latitude
 
|
 
|
|  
+
bytes [0-1] :total waypoints count
 +
bytes [2-3] :waypoint index
 +
bytes [4-7] : latitude(float)
 +
|-
 +
| 0x52D
 +
| remote status (ie. Android connection status)
 
|
 
|
 +
bytes [0]=>
 +
0:disconnected(passive send)
 +
1:on disconnect(active)
 +
2:connected(passive)
 +
3:on connect(active)
 +
0xFF:error(active/passive)
 +
|-
 
|}
 
|}
 +
 
=== Hardware Design ===
 
=== Hardware Design ===
  

Latest revision as of 12:35, 2 December 2014

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.

Self Driving Car

Abstract

Objectives & Introduction

Team Members & Responsibilities

  • Sensor Controller
    • Team 1: Deepak Yadav & Vinod Pangul
  • Motor Controller
    • Team 2: Naghma Anwar & Shiva Moballegh
  • I/O Unit
    • Team 3: Shreeram Gopalakrishnan & Sreeharsha Paturu Gangadhara
  • Communication Bridge & Android
    • Team 4: Johnny Yam, Kevin Beadle & Chia Pin Tseng
  • Geographical Controller
    • Team 5: Bhushan Gopala Reddy, Ryan Marlin & Rishikesh Nagare
  • Master Controller
    • Team 6: Shashank Tupkar, Bhargava Leepeng Chandra & Preeti Benake

Schedule

Team Schedule

Sl.No Start Date End Date Task Status Actual Completion Date
1 Order RC Car Completed on time
2 Order Other parts(Sensor/LCD/Motor Controller...) Completed
3 9/30/2014 11/25/2014 Master Controller Team task Ongoing
4 10/06/2014 11/15/2014 Sensor Team task Completed
5 Motor Controller Team task Ongoing
6 Geographical Controller Team task Ongoing
7 I/O Team task Ongoing
8 Communication Bridge + Android Team task Ongoing
9 Complete project integration  ???
10 Testing-1  ???
11 Testing-2  ???


Master Controller Team Schedule

Week No. Start Date Planned End Date Task Status Actual End Date
1 9/30/2014 10/7/2014
* Implement Basic CAN Hardware to communicate between 2 Controllers
  • Completed
We are able to send a message from Tx over CAN and perform a specific operation at the Rx.
10/7/2014
2 10/7/2014 10/14/2014
* Design CAN Acceptance Filter among different Controllers
* Define and Implement CAN Frame structure for proper communication
  establishment
  • Completed
Only messages with in range of acceptance filter are received, Decided on CAN frame structure using 11-bit frame.
10/11/2014
3 10/14/2014 10/21/2014
* Develop Inter-Controller Communication over CAN
* Test point-to-point and Broadcast message transmission
* Implement a Counter to count and display number of messages 
  • Completed
CAN Communication among multiple boards achieved, Point-to-Point & Broadcast modes are working, Able to display the count on 7-Seg Display on SJOne board.
10/19/2014
4 10/21/2014 10/28/2014
* Layout blueprint for Controller and Module positioning 
* Assemble the RC Car with all the controllers and Modules
* Define the Message List by working with other teams
* Start working on CAN Periodic message structure
  • Completed
RC car design and module assembly is completed. Need some fine tuning for connections. Message list is generated and periodic message implementation started.
10/28/2014
5 10/28/2014 11/04/2014
* Complete CAN Periodic message structure to transmit Broadcast
  messages over CAN and establish controlled communication among
  different controllers 
* Implement Start condition detection and Fetch boot status from
  all controllers and display the status of each controller
  • Completed
Periodic Message Setup done. Able to receive boot status. Need to work on display of status.
11/03/2014
6 11/04/2014 11/11/2014
* Design 'Kill Switch' in co-ordination with Motor Controller team
  and Bridge Controller team
* Develop a 'CAN Bus Crash' detection and reset CAN Bus methodology
* Design Automatic Head Light turn ON/OFF functionality by
  working with Sensors Controller team
  • Completed
Kill Switch implemented through Bridge controller. Head Lights implemented. LCD display of Status achieved.
11/11/2014
7 11/11/2014 11/18/2014
* Implement File Log saving to SD Card at periodic intervals
* Work on Restoring to last known Status if the system crashes while running
* Develop Detection technique if controllers are reaching 'Error State' 
  • Completed
File Log implemented. Error State is partially implemented. Obstacle detection achieved. Needed refinement in Direction control logic. Need to implement reverse logic.
11/18/2014
8 11/18/2014 11/25/2014
* Project Integration and testing Basic Self_Drive Capability of the Car
* Check the Functionality and behavior of all controllers in all the known 
  contexts
* Perform modifications (if any) to eliminate any bugs to make the car work
  seamlessly
* Final Integration of car and testing there after
  
  • Completed
Integration Started. Faced difficulty in synchronization.
11/26/2014
9 11/25/2014 12/02/2014
* Final Integration and testing Self_Drive Capability of the Car   
  • Ongoing
--/--/----


Sensor Team Schedule

Sl.No Start Date End Date Task Status Actual Completion Date
1 10/6/2014 10/18/2014 Order Ultra Sonic Sensors Completed [Got two sensors (front and back), 2 more (front right & left) to order ->Completed.] 10/19/2014
2 10/9/2014 10/9/2014 Sensor Data Sheet review with the team Completed 10/9/2014
3 10/9/2014 10/16/2104 Sensor code development Completed (Implementing filter (HW/SW) to get more accurate data ->(Done). Add logic to get the rest of the three sensor(front right/left and back data)->(Done) (Note: Delayed due to the implementation of CAN structure and calibration of IR sensor) 10/21/2014
4 10/22/2014 10/25/2014 Sensor software testing Ongoing
5 10/25/2014 10/28/2014 Sensor real time testing Ongoing
6 10/13/2014 10/15/2014 Light sensor code Development Completed 10/14/2014
7 10/13/2014 10/15/2014 Accelerometer sensor code Development to detect tilt Completed 10/14/2014
8 10/15/2014 10/15/2014 Light Sensor and Accelerometer Testing Completed 10/15/2014
9 10/29/2014 10/31/2014 Battery status controller circuit Design Ongoing
10 11/01/2014 11/02/2014 Battery status-circuit Testing
11 11/03/2014 11/04/2014 Common Communication SW code implementation and testing
11 11/04/2014 11/09/2014 Complete Hardware testing-1
12 11/10/2014 11/15/2014 Complete Hardware testing-2


Motor Controller Team Schedule

Week No. Start Date Planned End Date Task Status Actual End Date
1 9/30/2014 10/7/2014
* Study SJOne board's motor controller concepts and PWM
  • Completed
Very simple code. Just two lines. Set the frequency. Set the duty cycle.
10/7/2014
2 10/7/2014 10/14/2014
* Open up RC Car's motor and servo connections 
* Study the Electronic Speed Control's functions
  • Completed
Motor and Servo operate on the same frequency
ESC needs calibration each time it is switched on. Need to find a solution for this.
10/11/2014
3 10/14/2014 10/21/2014
* Define the duty cycles for proper motor and servo signals 
  • Completed
Using trial and run, figured out the duty cycle for constant speed and turns
10/19/2014
4 10/21/2014 10/28/2014
* Add CAN frame structure to the motor functions 
* Test for communication between motors and sensors for prototype demo 
* Define the Message List by working with other teams
  • Ongoing
--/--/----
5 10/28/2014 11/04/2014
* Start working on CAN Periodic message structure
* Start looking for speed sensors
  • Scheduled
--/--/----
6 11/04/2014 11/11/2014
* Attach speed sensors to the motor
* Test CAN communication between motor controller and other controllers
  • Scheduled
--/--/----
7 11/11/2014 11/18/2014
* Work on speed sensors. Figure out the way to send sensor data to master controller. 
* Test for proper and accurate CAN communication 
  • Scheduled
--/--/----
8 11/18/2014 11/25/2014
* Project Integration and testing basic self drive capability of the car
* Check the functionality and behavior of the motor controller in all the known 
  contexts
* Perform modifications (if any) to eliminate any bugs to make the motor work
  seamlessly
* Final Integration of car and testing there after
  
  • Scheduled
--/--/----


Geographical Team Schedule

Sl.No Start Date End Date Task Status Actual Completion Date
1 10/4/2014 10/13/2014 Research and Order GPS module Received GPS module 10/7/2014
2 10/7/2014 10/18/2014 Interface GPS module with LPC1758 Finished 10/17/14
3 10/14/2014 10/18/2014 Receive Compass module from Preet Received 10/9/2014
4 10/18/2014 11/4/2014 Parse GPS data and setup constructs to send appropriate data Ongoing
5 10/14/2014 10/18/2014 Interface the Compass Module Finished 10/16/2014
6 10/25/2014 11/4/2014 Calibration of Compass Code completed. Need to test using the car --/--/----
7 11/4/2014 11/11/2014 Integrate GPS and Compass data Ongoing
8 10/25/2014 11/09/2014 Testing and mapping of GPS co-ordinates Ongoing
9 11/18/2014 11/25/2014 Final integration and testing

IO Team Schedule

Sl.No Start Date End Date Task Status Actual Completion Date
1 10/7/2014 10/13/2014 Research and Order LCD Display Ordered LCD Display 10/13/2014
2 10/14/2014 10/21/2014 Interfacing LCD Display with LPC1758 Completed 10/21/2014
3 10/21/2014 10/28/2014 Implementing CAN structure with LCD tasks. Completed 11/30/2014
4 10/28/2014 11/04/2014 Subscribe data from motor, sensor and GPS controller,display it on LCD. Ongoing
5 11/04/2014 11/11/2014 Setup hardware and write code for START, STOP and Headlight buttons. TBD
6 11/11/2014 11/18/2014 Testing and mounting hardware on car. TBD
7 11/18/2014 11/25/2014 Final Testing TBD


Communication Bridge & Android Team Schedule

Sl.No Start Date Planned End Date Task Status Actual End Date
1 9/30/2014 9/30/2014 Obtain Bluetooth Module (already had one) Done 9/30/2014
2 9/30/2014 10/14/2014 Develop Basic Android App with Bluetooth Sensor Communication Done 10/7/2014
3 10/11/2014 10/14/2014 Interface Bluetooth Module with SJSU Dev Board Done 10/11/2014
4 10/12/2014 10/19/2014 Be able to send bi-directional arbitrary messages between Android App and Dev Board via Bluetooth Done 10/14/2014
5 10/14/2014 11/21/2014 Subscribe to all CAN messages and dump all of them via Bluetooth to Android App or web interface Done 11/24/2014
6 10/14/2014 11/21/2014 Ajax & Websocket server remote structure Done 11/01/2014
7 10/14/2014 11/21/2014 Be able to input GPS coordinates through either (or both) Android App and web interface and send through Bluetooth then CAN bus Done 11/24/2014
8 10/21/2014 11/24/2014 Android App and webpage GUI enhancements (Google Maps, Google Drive) Done 11/24/2014
9 10/21/2014 11/30/2014 Data visualization (status, compass, speed, location,....) On going TBD

Parts List & Cost

Item# Part Desciption Vendor Part Number Qty Cost
1 RC Car Amazon.com Traxxas 37076 Rustler VXL 1 $380.57
2 CAN Transceiver Anchor & HSC 15 $75.00
3 Assembly Components Amazon & Anchor PCBs, Mechnical & Electical Components NA $90.13
4 Power Supply Pololu 6V Battery, 5V Regulator 1 $34.85
5 LCD Display New Haven NHD-0216B3Z-FL-GBW-V3-ND 1 $$$.$$
6 Sonar sensor Maxbotix LV-MaxSonar-EZ1 MB1010 2 $66.55
7 Sonar sensor Given by Preet LV-MaxSonar-EZ1 MB1010 1 Free
8 IR sensor Given by Preet Sharp-GP2Y0A21YK 1 Free
9 Compass Module Given by Preet HoneyWell: HMC 6352 1 Free
Total Cost $$$.$$

Design & Implementation

Controller Communication Table

Controllers
Controller ID Controller Type
0x01 Master Controller
0x02 Motor Controller
0x03 Sensor Controller
0x04 Geographical Controller
0x05 IO Controller
0x06 Bridge Controller
Common Communication Table
Message Number Purpose / Data layout
0x101 Get version and boot info
0x102 Get general info
0x103 Synchronize (set) time:
byte [0-3] : System time
0x201
byte [0-3] : Version Info
byte [4-7] : boot timestamp
0x202
byte [0-3] : Current time
byte [4]   : CPU usage %
Subscription Rate Info
Byte 0 Effect
0 Off
1 1Hz
5 5Hz
10 10Hz
20 20Hz
50 50Hz
Any other value Invalid date rate


Master Controller Communication Table
Message Number Purpose Data Byte Pattern
0x101 Request each Controller Boot Status
Byte[0]: Request command for Boot Info.
0x102 Request each Controller version info.
Byte[0]: Request command for Version Info.
0x103 Request GPS Controller for Satellite Time
Byte[0]: Request command for Time
0x104 Set Time on each Controller received from Satellite
Byte[0-3]: Time in HH:MM:SS
0x201 Receives Boot status from each Controller
Byte[0]: Boot Status Info.
0x202 Receives Version info. from each Controller
Byte[0-3]: Controller Version Info.
0x203 Receives the Time from GPS Controller
Byte[0-3]: Time in HH:MM:SS
0x301 Request destination co-ordinates from Communication_Bridge
Byte[0-7]: Displays "Waiting for Destination Location Input"
0x302 Set the destination GPS co-ordinates to GPS_Controller
Byte[0-3]: Latitude Co-ordinate
Byte[4-7]: Longitude Co-ordinate
0x500 Display Boot Status on LCD
Byte[0]: Boot Status Response
0x501 Display Version Info. on LCD
Byte[0]: Version Info.
0x502 Display Controller Time on LCD
Byte[0-2]: Time in HH:MM:SS
0x503 Direction n Speed Control
Byte[0]: START/STOP/RIGHT/LEFT command
0x504 Display Motor speed on LCD
Byte[0]: Speed Value
0x505 Display Dist. to Destination and Heading Direction on LCD
Byte[0]: Distance to Destination
Byte[1]: Heading Direction
0x506 Display Sensor Values on LCD
Byte [0]: Front sensor value in inches
Byte [1]: Front Left sensor value in inches
Byte [2]: Front Right sensor value in inches
Byte [3]: Back sensor value in inches
0x507 Display Battery Status & Light Sensor Value on LCD
Byte[0]: Battery Status Value
Byte[1]: Light Sensor Value
Motor Controller Communication Table
Message Number Purpose Data layout
0x508 Speed Sensor Data
byte [0] : Speed sensor value in rpm
0x509 Vehicle Direction/Movement Data
byte [0] : Movement Control
     0x1 : Forward
     0x2 : Reverse
     0x3 : Stop
byte [1] : Steering Control
     0x1 : Left
     0x2 : Right
     0x3 : Straight
Sensor Controller Communication Table
Message Number Purpose Data layout
0x510 Front/Back Range Sensor Data
byte [0] : Front sensor value in inches
byte [1] : Front Left sensor value in inches
byte [2] : Front Right sensor value in inches
byte [3] : Back sensor value in inches
0x511 Light, Accelerometer and Battery Sensor Data
byte [0] : Light sensor value
byte [1] : X axis Value
byte [2] : Y axis Value
byte [3] : Z axis Value 
byte [4] : Battery status value
GPS Controller Communication Table
Message Number Purpose Data layout
0x518 Set GPS Location
 byte [0 - 3] : Latitude - Float
 byte [3 - 7] : Longitude - Float
IO Communication Table
Message Number Purpose Data layout
0x520 Subscribe to Sensor data bytes [0-5] : Sensor Value in Inches
0x521 Subscribe to Motor data bytes [0-2] : Vehicle Direction
0x522 Subscribe to Compass Data bytes [0] : Compass Data in degrees
0x523 Subscribe to Battery Status bytes [0] : Battery Status Value
Communication Bridge Communication Table
Message Number Purpose Data layout
0x528 Set Car Speed (Kill Switch) - temporary allow for other non-zero value for demo byte[0] - speed value
0x529 Destination GPS location

bytes [0-3] : latitude (float) bytes [4-7] : longitude (float)

0x52A Turn to degree

bytes [0-3] : degree(float)

0x52B Way points longitude
bytes [0-1] :total waypoints count
bytes [2-3] :waypoint index
bytes [4-7] : longitude(float)
0x52C Way points latitude
bytes [0-1] :total waypoints count
bytes [2-3] :waypoint index
bytes [4-7] : latitude(float)
0x52D remote status (ie. Android connection status)
bytes [0]=>
0:disconnected(passive send)
1:on disconnect(active)
2:connected(passive)
3:on connect(active)
0xFF:error(active/passive)

Hardware Design

Hardware Interface

Software Design

Implementation

Testing & Technical Challenges

Conclusion

Project Video

Project Source Code

References

Acknowledgement

References Used

http://www.socialledge.com/sjsu/index.php?title=Self-driving_Car

http://www.nxp.com/documents/user_manual/UM10360.pdf

http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf

http://www.maxbotix.com/documents/MB1010_Datasheet.pdf

http://www.sharpsma.com/webfm_send/1208

https://www.sparkfun.com/datasheets/Components/HMC6352.pdf

Appendix