F16: Titans

From Embedded Systems Learning Academy
Revision as of 06:22, 25 October 2016 by Proj user12 (talk | contribs) (DBC File Implementation)

Jump to: navigation, search

Project Title

Autonomous Navigating RC Car

Abstract

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

Objectives & Introduction

Show list of your objectives. This section includes the high level details of your project. You can write about the various sensors or peripherals you used to get your project completed.

Track Progress in KanBan

Team Members & Responsibilities

  • Master Controller
    • Haroldo Filho
    • Urvashi Agrawal
  • Motor Controller & I/O Module
  • GPS/Compass Module
    • Yang Thao
    • Daamanmeet Paul
  • Sensors
    • Kayalvizhi Rajagopal
  • Communication Bridge/Android App
    • Parth Pachchigar
    • Purvil Kamdar

Project Schedule

Week# Start Date End Date Task Status
1 09/13/2016 09/20/2016 Order Components and work distribution Completed
2 09/21/2016 09/27/2016 Set up git and wiki page Completed
3 09/28/2016 10/04/2016 Receive Components and distribute to group members Completed
4 10/05/2016 10/11/2016 Agree on control system architecture, assign CAN node priorities and decide on communication paradigm between Master and Nodes. Prep for prototype. Completed
5 10/12/2016 10/17/2016 Testing week for all nodes. Goal is for each node to have a basic interface to their sensors and actuators in place, where they are able to read data and manipulate control signals. For instance: sensors node should be reading distance, motors node should be able to generate motor speed control signals. Modify the necessary parts in the CAN.dbc file. Completed
6 10/18/2016 10/24/2016 Interface all nodes over Canbus and coordinate order and status message transfers between Master and Nodes. Completed
7 10/25/2016 10/31/2016 Integrate all hardware to the RC car, including power supplies from batteries. Test self powered prototype with the goal of controlling forward, reverse, left and right from the phone app. Test & fix basic integration bugs. In Process
8 11/1/2016 11/7/2016 Continue with hardware/software development & integration and complete first prototype of the collision avoidance feature. Not Started
9 11/8/2016 11/14/2016 Integrate GPS coordinates from Android app into Master Node for autonomous feature. Not Started
10 11/15/2016 11/21/2016 Integrate all nodes into one. Start testing car's autonomous driving capabilities with path following from GPS waypoints from Android app. Not Started
11 11/22/2016 11/28/2016 Autonomous driving should be working by now. Focus on improving car's performance. Tweak all nodes to better performance, and fix last minutes bugs. Not Started
12 11/29/2016 Presentation date Final touches to improve overall vehicle's robustness. Self-fixing nodes, reduce/eliminate unexpected behaviors and crashes. Not Started

Parts List & Cost

Item# Part Desciption Vendor Qty Cost
1 RC Car - Traxxas 1/10 Slash 2WD Amazon 1 $189.95
2 Traxxas 2872X 5000mAh 11.1V 3S 25C LiPo Battery Amazon 1 $56.99
3 Traxxas 7600mAh 7.4V 2-Cell 25C LiPo Battery Amazon 1 $70.99
4 Traxxas 2970 EZ-Peak Plus 4-Amp NiMH/LiPo Fast Charger Amazon 1 $35.99
5 Bluetooth 4.0 BLE Bee Module (Dual Mode) Robotshop 1 $19.50
6 Serial Graphics LCD (128x64) Sparkfun 1 $41.55
7 LV Maxsonar EZ0 Ultrasonic sensors Robotshop 5 $124.75

DBC File Implementation

  • The following is the DBC file of the project.
VERSION ""
NS_:
 NS_DESC_
 CM_
 BA_DEF_
 BA_
 VAL_
 CAT_DEF_
 CAT_
 FILTER
 BA_DEF_DEF_
 EV_DATA_
 ENVVAR_DATA_
 SGTYPE_
 SGTYPE_VAL_
 BA_DEF_SGTYPE_
 BA_SGTYPE_
 SIG_TYPE_REF_
 VAL_TABLE_
 SIG_GROUP_
 SIG_VALTYPE_
 SIGTYPE_VALTYPE_
 BO_TX_BU_
 BA_DEF_REL_
 BA_REL_
 BA_DEF_DEF_REL_
 BU_SG_REL_
 BU_EV_REL_
 BU_BO_REL_
 SG_MUL_VAL_
BS_:
BU_: DBG MASTER GPS MOTOR SENSOR APP
BO_ 1 APP_START_STOP: 1 APP
 SG_ APP_START_STOP_cmd : 0|8@1+ (1,0) [0|0] "COMMAND" MASTER


BO_ 16 SENSOR_DATA: 3 SENSOR 
 SG_ SENSOR_left_sensor : 0|8@1+ (1,0) [0|0] "Inches" MASTER,APP 
 SG_ SENSOR_middle_sensor : 8|8@1+ (1,0) [0|0] "Inches" MASTER,APP 
 SG_ SENSOR_right_sensor : 16|8@1+ (1,0) [0|0] "Inches" MASTER,APP


BO_ 32 MASTER_HB: 2 MASTER 
 SG_ MASTER_SPEED_cmd : 0|8@1+ (1,0) [0|0] "" SENSOR,MOTOR,GPS,APP
 SG_ MASTER_STEER_cmd : 8|8@1+ (1,0) [0|0] "" SENSOR,MOTOR,GPS,APP


BO_ 65 GPS_Data: 8 GPS
 SG_ GPS_READOUT_valid_bit : 0|1@1+ (1,0) [0|1] "" MASTER,MOTOR,APP,MOTOR
 SG_ GPS_READOUT_read_counter : 1|11@1+ (1,0) [0|2000] "" MASTER,MOTOR,APP
 SG_ GPS_READOUT_latitude : 12|26@1+ (0.000001,0) [0|0] "" MASTER,MOTOR,APP
 SG_ GPS_READOUT_longitude : 38|26@1- (0.000001,0) [0|0] "" MASTER,MOTOR,APP


BO_ 66 COMPASS_Data: 2 GPS
 SG_ COMPASS_Heading : 0|16@1+ (1,0) [0|359] "Degree" MASTER,APP,MOTOR 


BO_ 48 MOTOR_STATUS: 3 MOTOR
 SG_ MOTOR_STATUS_speed_mph : 0|16@1+ (0.001,0) [0|0] "mph" MASTER,APP,MOTOR

CM_ BU_ MASTER "The master controller driving the car";
CM_ BU_ MOTOR "The motor controller of the car";
CM_ BU_ SENSOR "The sensor controller of the car";
CM_ BU_ APP "The communication bridge controller of car";
CM_ BU_ GPS "GPS and compass controller of the car";
CM_ BO_ 100 "Sync message used to synchronize the controllers";
BA_DEF_ "BusType" STRING ;
BA_DEF_ BO_ "GenMsgCycleTime" INT 0 0;
BA_DEF_ SG_ "FieldType" STRING ;
BA_DEF_DEF_ "BusType" "CAN";
BA_DEF_DEF_ "FieldType" "";
BA_DEF_DEF_ "GenMsgCycleTime" 0;
BA_ "GenMsgCycleTime" BO_ 32 100;
BA_ "GenMsgCycleTime" BO_ 16 100;
BA_ "GenMsgCycleTime" BO_ 48 100;
BA_ "GenMsgCycleTime" BO_ 65 100;
BA_ "GenMsgCycleTime" BO_ 66 100;

Sensor Controller

Schedule

Week# Start Date End Date Task Status
1 09/13/2016 09/20/2016
  • Research on the type and model of sensors to use and order them.
Completed
2 09/21/2016 09/27/2016
  • Study the data sheet of sensor & prepare a high level design.
  • Interface the sonic sensor to the sensor controller.
Completed
3 09/28/2016 10/11/2016
  • Interface all the front sensors and test the readings with different environment conditions.
  • Stress test the sensors and design a filter so that reliable readings are sent to the master.
Completed
4 10/12/2016 10/24/2016
  • Interface back sensor and test all the sensors together.
  • Debug and fix any issues.
Completed
5 10/25/2016 10/31/2016
  • Integrate sensors with other nodes via CAN and test the sensor values while the car is on the move.
  • The master should have reliable data from sensors by now.
In Process
6 11/01/2016 11/07/2016
  • Design sensor mounts and 3D print them.
Not Started
7 11/08/2016 11/14/2016
  • Mount the sensors and test for any dead band. Position them for maximum coverage.
Not Started
8 11/15/2016 11/21/2016
  • Tune & optimize the sensor filter logic and the sensor mount as required.
Not Started
9 11/22/2016 11/28/2016
  • Interface Head lights and turn them ON based on light sensor value.
Not Started

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.

Motor & I/O Controller

Schedule

Week# Start Date End Date Task Status
1 09/13/2016 09/20/2016
  • Research on components requirement based on past projects.
  • Order motor controller related components: Traxxas RPM sensor, (Servo motor, DC motor and ESC)Included in traxxas RC car.
  • Reverse engineering Traxxas ESC, signal receiver, and signal transmitter to learn about basic functionality of the car.
Completed
2 09/20/2016 09/27/2016
  • Experiment and Research on voltage requirements for Servo and DC motor.
  • Experiment and Research on PWM frequency requirements for DC and Servo motor.
  • Experiment and Research on duty cycle required for controlling steer and speed of the car.
Completed
3 09/27/2016 10/04/2016
  • Interface the SJ One Board to car's ESC(Electronic Speed Controller) and servo motor and test research results.
Completed
4 10/04/2016 10/11/2016
  • Experiment and research on precision control of speed and steering using signals from SJ One board.
  • Developing the framework for the I/O display and setting up SPI framework to read the CAN messages
In Progress
5 10/11/2016 10/18/2016
  • Design software filter to filter CAN messages required for motor controller.
  • Get readings from the RPM sensor
  • Read the CAN messages to display on the LCD connected to the SJ One board.
Not Started
6 10/18/2016 10/25/2016
  • Send signals to the motor controller from another CAN Node to control speed and steering using CAN interface.
  • Creating necessary display messages and graphics related to the I/O modules.
Not Started
7 10/25/2016 11/15/2016
  • Integrating and testing motor & I/O controller with other nodes.
Not Started

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.

Geographical Controller

Schedule

Week# Start Date End Date Task Status
1 09/13/2016 09/20/2016
  • Research on GPS and Compass sensors which works with SJSUone board and order them.
Completed
2 09/21/2016 09/27/2016
  • Understanding schmetics of the modules .
Completed
3 09/28/2016 10/04/2016
  • Interface GPS module with SJSUone and initial calibration.
Completed
4 10/05/2016 10/11/2016
  • Interface Compass module with SJSUone and initial calibration.
Completed
5 10/12/2016 10/17/2016
  • Firmware Development to parse raw GPS and Compass readings.
In Process
6 10/18/2016 10/24/2016
  • Setup CAN communication between Master controller and Geo Controller.
Not Started
7 10/25/2016 10/31/2016
  • Test functionality of the Geo Controller by integrating with whole system.
Not Started
8 11/1/2016 11/7/2016
  • Debug and optimize the code for Geo Controller module.
Not Started

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.

GPS Module: Readytosky Ublox NEO-M8N


CMPE243 F16 Titans GPS Module.jpg


This GPS module uses UART serial communication interface. The refresh rate ranges from 1Hz up to 10Hz with a default baud rate of 9600bps. This module is an updated version to the Ublox NEO-M7N which brings improved accuracy of up to 0.9 meters using its build in antenna.

Specifications:

  • Power Supply:DC Voltage 2.8V~6.0V
  • Power Consumption: 50mA@5V
  • Support for GPS,GLONASS,Galileo,BeiDou,QZSS and SBAS
  • 72 Searching Channel
  • Receiving Sensitivity:Trace -167dBm, Capture-148dBm
  • Positioning Time:Cold Start:avg26s, Warm Start:avg25s, Hot Start:avg3s
  • positioning accuracy:2m At Open Wind
  • Output Frequency:1Hz-10Hz,Default 1Hz
  • Speed accuracy:0.1 m/s (Without Aid)
  • Acceleration accuracy:0.1 m/s (Without Aid)
  • Dynamic Characteristics:Max Height:18000m, Max Speed:515m/s, Max Acceleration:4G
  • UART Interface:UART Port:TXDA and RXDA
  • Support Rate:4800bps to 115200bps,Default 9600dps
  • Working Temperature:-40℃-+85℃
  • Storage Temperature:-40℃-+85℃
  • Diameter:45mm
  • Height:6mm
  • Weight:10g
  • 6pins 1.25mm port


GPS Connector Definition:

  • GND,
  • TX,data output
  • RX,data intput
  • VCC,2.8V-6V

Razor IMU - 9 Degrees of Freedom

CMPE243 F16 compass.jpg

The 9DOF Razor IMU incorporates three sensors - an ITG-3200 (MEMS triple-axis gyro), ADXL345 (triple-axis accelerometer), and HMC5883L (triple-axis magnetometer) - to output nine degrees of inertial measurement. The outputs of all sensors are processed by an on-board ATmega328 and output over a serial interface.

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.

Communication Bridge Controller

Schedule

Week# Start Date End Date Task Status
1 09/13/2016 09/20/2016 Android Development Environment Setup. Map API fundamental study. Completed
2 09/21/2016 09/27/2016 Bluetooth BLE related android programming study and BLE protocol study. Completed
3 09/28/2016 10/04/2016 Basic Android Application development, Intent passing, Finalize GUI template. Completed
4 10/05/2016 10/11/2016 Controlling Bluetooth of Mobile Phone(i.e. Turn on, Connect), Connect Mobile phone with Bluetooth BLE module on SJOne and Establishing basic communication between Android phone and SJOne Board. In Process
5 10/12/2016 10/17/2016 Integrate Google Map, Get Longitude and Latitude data from the position where Marker is placed, Get important data of other nodes from CAN bus. Not Started
6 10/18/2016 10/24/2016 Implement manual controls for car motion (i.e. Forward, Reverse, Left, Right buttons) Not Started
7 10/25/2016 10/31/2016 Integrate all hardware to the RC car, including power supplies from batteries. Test self powered prototype with the goal of controlling forward, reverse, left and right from the phone app. Test & fix basic integration bugs. Not Started
8 11/1/2016 11/7/2016 Put multiple markers on Map and implement logic to find shortest route to destination and pass route information on CAN bus. Not Started
9 11/8/2016 11/14/2016 Integrate GPS coordinates from Android app into Master Node for autonomous feature. Testing and Bug fixing. Not Started

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

Here is the hardware block diagram of Communication Bridge Controller.

Hardware block diagram for Communication Bridge Module

Here is the hardware block diagram of Communication Bridge Controller. Here is the hardware block diagram of Communication Bridge Controller. Here is the hardware block diagram of Communication Bridge Controller.

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.

Central Controller

Schedule

Week# Start Date End Date Task Status
1 09/20/2016 09/30/2016
  • Decide on the CAN ids and the priorities of the CAN messaged for various nodes.Design the barebones basic functionality of the algorithm. Create a skeleton code.
Completed
2 09/30/2016 10/10/2016
  • Set up CAN communication between the sensor and the master. Test for correct data transmission. Design the algorithm for the data processing received by the master.
In Process
3 10/10/2016 10/20/2016
  • Extend the algorithm to control the motors along with the obstacle information received from the sensors. Establish CAN communication between the master and the motors.
In Process
4 10/20/2016 10/30/2016
  • Obtain the data from the GPS and process the data to design the algorithm for navigation. Design and implement the kill switch to avoid the car from crashing
In Process
5 10/30/2016 11/10/2016
  • Integrate all the modules and test for the functionality. Save the data received from various modules into a log file for debugging purpose. Include the headlights and the LCD on the car and display messages on them.
Not Started
6 11/10/2016 11/20/2016
  • Improvise the algorithm and carry out stress testing and integration testing. Work on the modifications required and test previous hardware additions to the car.
Not Started
7 11/20/2016 12/15/2016
  • Integration and testing. Work to improvise on the algorithms and make sure individual modules work. Addition of any extra features and software development.
Not Started

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.


My Issue #1

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.