Difference between pages "S19: Run D.B.C" and "S19: Tech Savy"
Proj user10 (talk | contribs) (→Technical Challenges) |
Proj user22 (talk | contribs) (→DBC File) |
||
| Line 1: | Line 1: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | [[File:Tech_Savy_Logo.jpg| 300px |LOGO|bottom|right]] | |
| − | {| | + | |
| − | | | + | == '''Tech Savy RC Car''' == |
| − | + | ||
| − | + | {| | |
| − | | | + | | |
| − | + | | | |
| − | + | |[[File:CMPE243_Tech_Savy_Car_SideView.jpg|300px|thumb|left|Tech_Savy Side Open view]] | |
| − | + | | | |
| − | + | | | |
| − | + | | | |
| + | | | ||
| + | |[[File:CMPE243_Tech_Savy_Car.jpg|600px|thumb|center|Tech_Savy front view]] | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | |[[File:CMPE243_Tech_Savy_Car_Top.jpeg|300px|thumb|right|Tech_Savy Top Open view]] | ||
| + | | | ||
|} | |} | ||
| + | == '''Abstract''' == | ||
| − | + | In this project our main aim to build a Self-Navigating Car named Tech Savy, that navigates from a source location to a selected destination by avoiding obstacles in its path using sensors and motors. | |
| − | + | ||
| − | + | [[File:Car_Working.png|800px|thumb|center|Main Building Blocks of Tech Savy]] | |
| − | < | + | |
| − | + | == '''Introduction & Objectives''' == | |
| − | + | ||
| − | + | The key features support by the system are | |
| − | + | ||
| − | + | 1. A Google-map based <font color="brown"><B>Android application</B></font> is developed which finds out the shortest distance path between current location and destination and connects to the self-driving RC car via Bluetooth to send the GPS Coordinates. | |
| − | + | ||
| − | + | 2. The car will be integrated with the <font color="orange"><B>GPS, Compass</B></font>, <font color="maroon"><B>Bluetooth</B></font>, multiple sensors such as <font color="FUCHSIA"><B>Ultrasonic sensors and RPM sensors</B></font> to fulfill the purpose of navigation, obstacle detection, and avoidance | |
| − | + | ||
| + | 3. <font color="FUCHSIA"><B>LIDAR</B></font> used for obstacle recognition and avoidance. | ||
| + | |||
| + | 4. <font color="green"><B>Motor</B></font> drives the car by Route Calculation and Maneuvering to the selected destination and Self- Adjusting the speed of the car on Ramp. | ||
| + | |||
| + | 5. <font color="fire"><B>LEDs and LED Display</B></font> are used for debugging and to get all relevant information about the status of the car, in real time and <font color="fire"><B>LCD Display</B></font> is used to give more detailed information related to the car. | ||
| + | |||
| + | The system is built on FreeRTOS running on LPC1758 SJOne controller and Android application. | ||
| + | The main building blocks of Tech Savy are the five controllers communicating through High Speed CAN network designed to handle dedicated tasks. The controllers integrate various sensors that are used for navigation of the car. | ||
| + | |||
| + | '''CAR Objectives''' | ||
| + | '''1. Master Controller''' - Handles the Route Manuevering,Path Planning and Obstacle Avoidance | ||
| + | '''2. Sensor Controller''' - Detects the surrounding objects | ||
| + | '''3. Geo Controller''' - Provides current location in the form of coordinates and navigate car using CMPS11 | ||
| + | '''4. Motor Controller''' - controls the movement of the Car. | ||
| + | '''5. Bridge controller''' - Interfaces the system using Bluetooth to an Android application. | ||
| + | |||
| + | '''Team Objectives''' | ||
| + | '''1.''' Learn each and every module as much as possible, in order to develop an industrial product. | ||
| + | '''2.''' Achieve 100% code coverage, during unit testing. | ||
| + | '''3.''' Document and track all the bugs encountered during development, unit testing, and field testing. | ||
| + | |||
| + | {| | ||
| + | |[[ File: CmpE243_TechSavy_System_Design.png|650px|thumb|left|System Architecture]] | ||
| + | | | ||
| + | |[[ File: CmpE243_TechSavy_Application.png |400px|thumb|right|Android Application]] | ||
| + | | | ||
|} | |} | ||
| + | == '''Team Members & Technical Responsibilities''' == | ||
| + | [[File:Team_Pic.jpeg|thumb|600px|TEAM TECH SAVY|right]] | ||
| + | |||
| + | * Git Project Link: <font color="blue"><U>[https://gitlab.com/tech-savycmpe243/cmpe243_techsavy_rc_car Tech Savy ]</U></font> | ||
| + | |||
| + | * <font color="PURPLE"><B>Master Controller</B></font> | ||
| + | **'''''[http://linkedin.com/in/aakash-chitroda-17841740 Aakash Chitroda]''''' | ||
| + | **'''''[https://www.linkedin.com/in/halak-vyas-4646a4145 Halak Vyas]''''' | ||
| + | |||
| + | * <font color="green"><B>Motor Controller</B></font> | ||
| + | **'''''[https://www.linkedin.com/in/jay-parsana-59059a860 Jay Parsana]''''' | ||
| + | **'''''[http://linkedin.com/in/vatsal-makani-540650b2 Vatsal Makani]''''' | ||
| + | |||
| + | * <font color="orange"><B>Geographical Controller</B></font> | ||
| + | **'''''[https://www.linkedin.com/in/vidushi-jain-048b992a Vidushi Jain]''''' | ||
| + | **'''''[https://www.linkedin.com/in/prashantgandhi27 Prashant Gandhi]''''' | ||
| + | |||
| + | * <font color="FUCHSIA"><B>Sensor Controller</B></font> | ||
| + | **'''''[https://www.linkedin.com/in/halak-vyas-4646a4145 Halak Vyas]''''' | ||
| + | **'''''[http://linkedin.com/in/aakash-chitroda-17841740 Aakash Chitroda]''''' | ||
| + | |||
| + | * <font color="MAROON"><B>Communication Bridge Controller</B></font> | ||
| + | **'''''[https://www.linkedin.com/in/vidushi-jain-048b992a Vidushi Jain]''''' | ||
| + | **'''''[https://www.linkedin.com/in/akshata-kulkarni-a9145b62 Akshata Kulkarni]''''' | ||
| + | **'''''[https://www.linkedin.com/in/jay-parsana-59059a860 Jay Parsana]''''' | ||
| + | |||
| + | * <font color="brown"><B>Android Application</B></font> | ||
| + | **'''''[https://www.linkedin.com/in/Saumil Saumil Shah]''''' | ||
| + | **'''''[https://www.linkedin.com/in/akshata-kulkarni-a9145b62 Akshata Kulkarni]''''' | ||
| − | + | * <font color="fire"><B>LCD Interfacing & UI Designing</B></font> | |
| − | + | **'''''[http://linkedin.com/in/aakash-chitroda-17841740 Aakash Chitroda]''''' | |
| − | + | ||
| − | < | + | * <font color="#148F77"><B>Hardware PCB Integration</B></font> |
| − | + | **'''''[http://linkedin.com/in/vatsal-makani-540650b2 Vatsal Makani]''''' | |
| − | + | **'''''[https://www.linkedin.com/in/prashantgandhi27 Prashant Gandhi]''''' | |
| − | |||
| − | * | ||
| − | * < | ||
| − | |||
| − | * | ||
| − | |||
| − | * | ||
| − | |||
| − | |||
| + | * <font color="LIGHTCORAL"><B>Testing</B></font> | ||
| + | **'''''[https://www.linkedin.com/in/jay-parsana-59059a860 Jay Parsana]''''' | ||
| + | **'''''[https://www.linkedin.com/in/vidushi-jain-048b992a Vidushi Jain]''''' | ||
| + | **'''''[https://www.linkedin.com/in/prashantgandhi27 Prashant Gandhi]''''' | ||
| + | **'''''[https://www.linkedin.com/in/Saumil Saumil Shah]''''' | ||
| + | <br> | ||
| + | == '''Administrative Responsibilities''' == | ||
{| class="wikitable" style="margin-left: 0px; margin-right: auto;" | {| class="wikitable" style="margin-left: 0px; margin-right: auto;" | ||
| − | |- style="vertical-align: top;" | + | |- style="vertical-align: top;" |
| − | ! colspan="5" style="background:# | + | ! colspan="5" style="background:#7acee2" | <span style="color:#FFFFFF"> Administrative Roles </span> |
| − | <span style="color:#FFFFFF"> | ||
|- | |- | ||
! style="text-align: left;" | | ! style="text-align: left;" | | ||
| − | * <span style="color:#000000">Team Lead</span> < | + | * <span style="color:#000000">Team Lead </span> |
| − | * <span style="color:# | + | |<font color="orange"><B> Aakash Chitroda </B></font> |
| − | * <span style="color:# | + | |- |
| − | * <span style="color:# | + | ! style="text-align: left;" | |
| − | + | * <span style="color:#000000">Finance Manager</span> | |
| − | * <span style="color:# | + | |<font color="blue"><B> Halak Vyas</B></font> |
| − | + | |- | |
| + | ! style="text-align: left;" | | ||
| + | * <span style="color:#000000">Git Repository Manager </span> | ||
| + | |<font color="green"><B> Vatsal Makani</B></font> | ||
| + | |- | ||
| + | ! style="text-align: left;" | | ||
| + | * <span style="color:#000000">Wiki Report Manager </span> | ||
| + | |<font color="indianred"><B> Vidushi Jain</B></font> | ||
| + | |- | ||
| + | ! style="text-align: left;" | | ||
| + | * <span style="color:#000000">Bill of Materials Manager </span> | ||
| + | |<font color="purple"><B> Jay Parsana</B></font> | ||
|} | |} | ||
| + | == '''Team Deliverables Schedule''' == | ||
| − | {| class="wikitable" style=" | + | {| class="wikitable" |
| − | | | + | |- |
| − | ! | + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> WEEK</span> |
| − | <span style="color:#FFFFFF"> | + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> |
| + | START DATE </span> | ||
| + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> | ||
| + | END DATE </span> | ||
| + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> | ||
| + | TASK DETAILS </span> | ||
| + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> | ||
| + | STATUS </span> | ||
| + | |- | ||
| + | | '''1''' || '''26 Feb 2019''' || '''4 March 2019''' || | ||
| + | *<font color="#808080">'''Create and establish GitLab repository'''</font> | ||
| + | *<font color="#808080">'''Establish slack channel and invite Preet'''</font> | ||
| + | *<font color="#808080">'''Look through previous years projects and study it'''</font> | ||
| + | *<font color="#808080">'''Distribute major roles among team members'''</font> | ||
| + | || Completed <br> Completed <br> Completed <br>Completed <br> | ||
| + | |- | ||
| + | | '''2''' || '''05 March 2019''' || '''12 March 2019''' || | ||
| + | *<font color="#808080">'''Create a Bill of Materials.'''</font> | ||
| + | *<font color="#808080">'''Select and order an RC car.'''</font> | ||
| + | *<font color="#808080">'''Make Repo on Gitlab for all modules - Follow Naming Convention.'''</font> | ||
| + | || Completed <br> Completed <br> Completed | ||
| + | |- | ||
| + | | '''3''' || '''13 March 2019'''|| '''19 March 2019''' || | ||
| + | *<font color="#808080">'''Select Part Number for Sensors (Halak, Akash)'''</font> | ||
| + | *<font color="#808080">'''Designing and deciding PCB tool(Prashant, Vatsal)'''</font> | ||
| + | *<font color="#808080">'''Finalizing GPS module by doing some research (Vidushi)'''</font> | ||
| + | *<font color="#808080">'''Finalize and order LCD (Akash, Vidushi)'''</font> | ||
| + | *<font color="#808080">'''Finalize Motor and Order it (Vatsal)'''</font> | ||
| + | *<font color="#808080">'''Environmental setup of Android (Saumil, Akshata)'''</font> | ||
| + | || Completed <br> Completed <br> Completed <br> Completed <br> Completed <br>Completed <br> | ||
|- | |- | ||
| − | + | | '''4''' || '''20 March 2019'''|| '''26 March 2019'''|| | |
| − | + | *<font color="purple">'''Understand DBC and implement the DBC file compatible with all the controllers.'''</font> | |
| − | + | *<font color="green">'''Test motor driving in different situations, begin to listen to CAN for controls.'''</font> | |
| − | + | *<font color="purple">'''Establish communication across all the CAN controllers over CAN bus based on the DBC file.'''</font> | |
| − | + | *<font color="#148F77">'''Verify the power-up interactions and configurations between Master and the other controllers.'''</font> | |
| − | + | *<font color="purple">'''03/26/2019 DBC File'''</font> | |
| − | + | *<font color="purple">'''03/26/2019 DEMO: CAN communication between controllers.'''</font> | |
| + | || Completed <br> Completed <br> Completed <br> Completed <br> Completed <br>Completed <br> | ||
|- | |- | ||
| − | | | + | | '''5''' || '''27 March 2019'''|| '''09 April 2019'''|| |
| − | + | *<font color="#148F77">'''Check and Resolve power issue for RC Car.'''</font> | |
| − | * | + | *<font color="#148F77">'''Finalize high-level system block diagram and control scheme.'''</font> |
| − | + | *<font color="#148F77">'''Circuit Simulation in Diptrace Tool.'''</font> | |
| − | * ''' | + | *<font color="#148F77">'''PCB Layout Design in Diptrace Tool.'''</font> |
| − | * < | + | *<font color="#148F77">'''Finalize Components placement on PCB.'''</font> |
| − | * < | + | *<font color="brown">'''Establish a connection over Bluetooth and Android app.'''</font> |
| − | + | *<font color="brown">'''Establish a communication between Bluetooth devices.'''</font> | |
| − | * < | + | *<font color="FUCHSIA">'''Interfacing of ultrasonic sensors to the SJOne board and check for basic functionality.'''</font> |
| − | * < | + | *<font color="FUCHSIA">'''Interface and get the reading of Lidar sensor with SJOne over UART.'''</font> |
| − | * < | + | *<font color="purple">'''Chalk out the Message IDs based on the priority of the messages and the data to be sent across nodes.'''</font> |
| − | + | *<font color="green">'''Interface of Servo & DC motor to the SJOne board and check for basic functionality.'''</font> | |
| + | *<font color="orange">'''Interface Compass module with SJOne board using I2C serial bus.'''</font> | ||
| + | *<font color="MAROON">'''Interface bluetooth HC-05 module with SJOne board using serial Communication.'''</font> | ||
| + | *<font color="MAROON">'''Configure bluetooth HC-05 module name as Tech Savy using HC-05 Communication Mode.'''</font> | ||
| + | *<font color="fire">'''Explore UI designing of LCD.'''</font> | ||
| + | *<font color="green">'''Finish motor controller API. Test motor driving in different situations, begin to listen to CAN for controls.'''</font> | ||
| + | *<font color="brown">'''Add a TextView for displaying the Bluetooth connection status in Android App.'''</font> | ||
| + | || Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> | ||
|- | |- | ||
| − | | | + | | '''6''' || '''10 April 2019'''|| '''16 April 2019'''|| |
| − | + | *<font color="FUCHSIA">'''Parse data of Lidar Sensor depending on distance and angle and send it to master using dbc.'''</font> | |
| − | * | + | *<font color="FUCHSIA">'''Implement basic obstacle avoidance algorithm based on sensor data and test the same.'''</font> |
| − | + | *<font color="green">'''Continue testing motor driver via commands from CAN bus.'''</font> | |
| − | + | *<font color="green">'''Build in speed steps to reverse motor for reverse to work correctly.'''</font> | |
| − | * < | + | *<font color="FUCHSIA">'''Mount all the sensors and test for any dead band and modify their positions for maximum coverage.'''</font> |
| − | * < | + | *<font color="FUCHSIA">'''Integrate the fusion of LIDAR and Ultrasound sensor to get overall feedback from all the directions.'''</font> |
| − | * < | + | *<font color="green">'''Develop algorithm to avoid obstacles and plan the car's further navigation path.'''</font> |
| − | + | *<font color="FUCHSIA">'''Complete final prototype of the obstacle avoidance feature.'''</font> | |
| + | *<font color="orange">'''Calibrate Compass Module. Develop code for Compass module communication over CAN.'''</font> | ||
| + | *<font color="green">'''16 April 2019 DEMO: Motors driven by wheel feedback and sensors, Basic obstacle avoidance.'''</font> | ||
| + | *<font color="#808080">'''Final Wiki Schedule.'''</font> | ||
| + | ||Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br> Completed <br>Completed <br> Completed <br> Completed <br> Completed <br> | ||
|- | |- | ||
| − | | | + | | '''7''' || '''17 April 2019'''|| '''23 April 2019'''|| |
| − | + | *<font color="orange">'''Configure GPS device baud rate and interface it with SJOne board using UART.'''</font> | |
| − | * | + | *<font color="orange">'''Send and recieve current location, destination and checkpoint coordinates to and from App and Geo module via BRIDGE.'''</font> |
| − | + | *<font color="FUCHSIA">'''Calibrate sensors readings and work on filtering algorithm with Master & Sensor'''</font> | |
| − | * < | + | *<font color="fire">'''Begin work on LCD to show vehicle live status(speed, fuel-status, obstacles, distance to destination etc.) in a GUI.'''</font> |
| − | * < | + | *<font color="FUCHSIA">'''Finish implementing speed control on motor (to make sure requested speed is met based on RPM read).'''</font> |
| − | * < | + | *<font color="green">'''Work on Car reversing using Motor Controllers.'''</font> |
| − | + | *<font color="purple">'''Integrate all modules with the Master to test the data flow.'''</font> | |
| − | * < | + | *<font color="green">'''Validation & Verification of obstacle avoidance, steering logic with rear sensor inputs and reversing.'''</font> |
| − | * < | + | *<font color="orange">'''Start incorporating GEO Controller information to Master module Steering logic.'''</font> |
| − | * < | + | *<font color="maroon">'''Decide, implement and test data exchange between Geo Controller and BRIDGE.'''</font> |
| − | + | *<font color="orange">'''Calculate and send simple bearing angle and destination status on CAN to figure out initial challenges.'''</font> | |
| + | *<font color="brown">'''Add a Google Map for setting the car's destination.'''</font> | ||
| + | *<font color="brown">'''Send car location to app and check points received to Geo module.'''</font> | ||
| + | *<font color="maroon">'''Verify the stringent requirement of Start-up Sync, Periodic heart-beat messages.'''</font> | ||
| + | *<font color="#808080">'''Update Wiki Schedule with Test Reports.'''</font> | ||
| + | || In Progress <br> | ||
|- | |- | ||
| − | | | + | | '''8''' || '''24 April 2019'''|| '''30 April 2019'''|| |
| − | + | *<font color="fire">'''Testing & Validation of the LCD UI and display run time vehicle status and looking forward for feedbacks from team if any.'''</font> | |
| − | * | + | *<font color="orange">'''Improve & Validate Navigation logic with multiple checkpoints, bearing angle and destination information.'''</font> |
| − | + | *<font color="orange">'''Identify and mitigate GPS locking, Location Accuracy and Number of Satellite-In-View coming.'''</font> | |
| − | * < | + | *<font color="orange">'''Validate Accuracy of Compass Calibration with iPhone Compass.'''</font> |
| − | + | *<font color="purple">'''Determine and add DBC Changes and finalized.'''</font> | |
| − | * < | + | *<font color="orange">'''Implement the steering logic with bearing angle and status provided by GEO-Module.'''</font> |
| − | * < | + | *<font color="brown">'''Consistently Communicate current car location to App, get check points from App and relay them to Geo module.'''</font> |
| − | + | *<font color="MAROON">'''Send additional vehicle status information from can bus to the App for display.'''</font> | |
| + | *<font color="brown">'''Send the request to Google for getting the checkpoints(use the Google Maps Directions API).'''</font> | ||
| + | *<font color="green">'''Field test and check for obvious issues in obstacle avoidance, navigation, maintaining speed (up/down hill).'''</font> | ||
| + | *<font color="black">'''Provide feed backs to each team on identified short comings.'''</font> | ||
| + | *<font color="#808080">'''Update Wiki with new details and information.'''</font> | ||
| + | *<font color="orange">'''DEMO: GPS driving'''</font> | ||
| + | ||In Progress <br> | ||
|- | |- | ||
| − | | | + | | '''9''' || '''1 May 2019'''|| '''7 May 2019'''|| |
| − | + | *<font color="black">'''FIELD TESTING - CRITICAL WEEK '''</font> | |
| − | * | + | *<font color="blue">'''Implement turning indicators, break lights and head light.'''</font> |
| − | + | *<font color="green">'''Check for Corner cases for steering logic under various conditions and locations.'''</font> | |
| − | + | *<font color="orange">'''Analyse field test results for GPS and CMPS and work on it if required.'''</font> | |
| − | * < | + | *<font color="blue">'''Test the accuracy of check-points from the Blue-tooth controller, location data from the Geo-controller sensor and Navigation Algorithm.'''</font> |
| − | * < | + | *<font color="black">'''Check overall robustness of the complete system.'''</font> |
| − | + | *<font color="#808080">'''Update wiki with details.'''</font> | |
| + | ||In Progress <br> | ||
|- | |- | ||
| − | | | + | | '''10''' || '''8 May 2019'''|| '''21 May 2019'''|| |
| − | + | *<font color="black">'''All hands on testing and final bug fixes.'''</font> | |
| − | * | + | *<font color="black">'''Check for tuning or calibration of modules if required.'''</font> |
| − | + | *<font color="black">'''Complete end-to-end testing for various scenarios and conditions.'''</font> | |
| − | + | *<font color="black">'''Create the semester long project activity video and upload to YouTube.'''</font> | |
| − | * < | + | *<font color="#808080">'''Update and finalize wiki.'''</font> |
| − | * < | + | ||In Progress <br> |
| − | |||
|- | |- | ||
| − | | | + | | '''11''' || '''22 May 2019'''|| || |
| − | + | *<font color="black">'''DEMO: Final Project '''</font> | |
| − | + | *<font color="black">'''SUBMISSION: Final Project Wiki'''</font> | |
| − | | | + | ||In Progress <br> |
| − | | | ||
| − | * < | ||
| − | * < | ||
|} | |} | ||
| − | |||
| − | == | + | == '''BILL OF MATERIALS (GENERAL PARTS)''' == |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | {| class="wikitable" | ||
|- | |- | ||
| − | ! scope=" | + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> PART NAME </span> |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> | ||
| + | PART MODEL & SOURCE </span> | ||
| + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> | ||
| + | QUANTITY </span> | ||
| + | ! scope="col" style="text-align: left;" style="background:#7acee2;" | <span style="color:#FFFFFF"> | ||
| + | COST PER UNIT (USD) </span> | ||
|- | |- | ||
| − | + | | | |
| − | + | * '''Micro-Controller Eval-Boards''' | |
| | | | ||
| − | * | + | * LPC 1758 '''(Purchased from Preet Kang) |
| − | + | | | |
| − | + | * 5 | |
| − | + | | | |
| − | + | * 80.00 | |
| − | |||
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | | | ||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| | | | ||
| − | * | + | * '''RC Car''' |
| − | * | + | | |
| − | + | * [https://www.amazon.com/Traxxas-Slash-Course-2-4GHZ-Vehicle/dp/B01DU474B0/ref=sr_1_3?ie=UTF8&qid=1474747759&sr=8-3&keywords=Traxxas+1%2F10+slash+2wd Traxxas 1/10 Slash 2WD RTR with 2.4GHz Radio] | |
| − | + | | | |
| − | + | * 1 | |
| − | + | | | |
| − | + | * 205.99 | |
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | |||
| − | * | ||
|- | |- | ||
| − | + | | | |
| − | + | * '''Lithium-Ion Battery''' | |
| + | | | ||
| + | * [https://www.amazon.com/Traxxas-7600mAh-7-4V-2-Cell-Battery/dp/B00S1R0VEY/ref=sr_1_7?s=toys-and-games&ie=UTF8&qid=1474748332&sr=1-7&keywords=traxxas+battery Traxxas 7600mAh 7.4V 2-Cell 25C LiPo Battery] | ||
| + | | | ||
| + | * 1 | ||
| | | | ||
| − | * | + | * 74.95 |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | + | | | |
| − | + | * '''Lithium-Ion Battery 2''' | |
| + | | | ||
| + | * [https://www.amazon.com/Traxxas-11-1V-5000mAh-3-Cell-Battery/dp/B07D691FPT Traxxas 2872X 5000mAh 11.1V 3S 25C LiPo Battery] | ||
| + | | | ||
| + | * 1 | ||
| | | | ||
| − | * | + | * 69.95 |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | + | | | |
| − | + | * '''RC Car Battery Charger''' | |
| | | | ||
| − | * | + | * [https://www.amazon.com/Traxxas-2970-EZ-Peak-Charger-Identification/dp/B00OAFYLJC/ref=pd_bxgy_21_img_2?ie=UTF8&psc=1&refRID=JVX791WVV9Y8T9DW92KW Amazon Traxxas 2970 EZ-Peak Plus 4-Amp NiMH/LiPo Fast Charger] |
| − | + | | | |
| − | + | * 1 | |
| − | + | | | |
| − | + | * 49.95 | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | |||
| − | * | ||
|- | |- | ||
| − | + | | | |
| − | + | * '''Bluetooth Breakout Board''' | |
| + | | | ||
| + | * [https://www.amazon.com/HC-05-Bluetooth-Pass-through-Wireless-Communication/dp/B01G9KSAF6/ref=sr_1_4?ie=UTF8&qid=1507077325&sr=8-4&keywords=arduino+bluetooth+hc-05 Bluetooth Module HC-05] | ||
| + | | | ||
| + | * 1 | ||
| | | | ||
| − | * | + | * 8.49 |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | + | | | |
| − | + | * '''RC Car Display''' | |
| | | | ||
| − | * | + | * [http://www.4dsystems.com.au/product/uLCD_32PTU/ 4D systems 4D systems LCD Display] |
| − | + | | | |
| − | + | * 1 | |
| − | + | | | |
| − | * | + | * 79.00 |
| − | | | ||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | + | | | |
| − | + | * '''Ultrasonic Sensors''' | |
| | | | ||
| − | * | + | * [http://www.robotshop.com/en/maxbotix-ez0-ultrasonic-ranger.html LV Maxsonar EZ0 & Ultrasonic sensors] |
| − | + | | | |
| − | + | * 2 | |
| − | + | | | |
| − | + | * 30.00 | |
| − | | | ||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | * | ||
|- | |- | ||
| − | + | | | |
| − | + | * '''RP-LIDAR Sensor''' | |
| + | | | ||
| + | * [https://www.amazon.com/RPLiDAR-A1M8-Degree-Laser-Scanner/dp/B07H7X3SFF/ref=sr_1_fkmrnull_1?crid=2FSUI76G4UA8K&keywords=rplidar+a1m8+-+360+degree+laser+scanner+development+kit&qid=1552764172&s=gateway&sprefix=RPlidar%2Caps%2C263&sr=8-1-fkmrnull LIDAR Sensor] | ||
| | | | ||
| − | * | + | * 1 |
| − | + | | | |
| − | + | * 99.00 | |
| − | |||
| − | | | ||
| − | * | ||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | + | | | |
| − | + | * '''GNSS Taoglas GPS Antenna''' | |
| | | | ||
| − | * | + | * [https://www.taoglas.com/product/titan-aa106-gps-adhesive-with-magnet-antenna-2/ GPS Active Antenna] |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| | | | ||
| − | * | + | * 1 |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| | | | ||
| − | * | + | * FREE |
| − | |||
| − | |||
|- | |- | ||
| − | |||
| − | |||
| − | |||
| − | |||
| | | | ||
| − | * | + | * '''CAN Transreceivers''' |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| | | | ||
| − | * | + | * [http://www.microchip.com/samples/Default.aspx?DeviceFamily=MCP2551 Microchip Samples] |
| | | | ||
| − | * | + | * 10 |
| − | |||
| − | |||
| | | | ||
| − | * | + | * FREE |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| + | | | ||
| + | * '''Compass''' | ||
| | | | ||
| − | * | + | * [https://www.dfrobot.com/product-1275.html DFRobot CMPS11 Compass] |
| | | | ||
| − | * | + | * 2 |
| | | | ||
| − | * | + | * 30.00 |
| − | |||
| − | |||
|- | |- | ||
| | | | ||
| − | * ''' | + | * '''RPM Sensor''' |
| | | | ||
| − | * [https://www.amazon.com/Traxxas- | + | * [https://www.amazon.com/Traxxas-6520-RPM-Sensor-long/dp/B006IRXEZM Amazon RPM Sensor] |
| | | | ||
* 1 | * 1 | ||
| | | | ||
| − | * | + | * 10.00 |
|- | |- | ||
| + | | | ||
| + | * '''GPS Breakout Board''' | ||
| | | | ||
| − | + | * [https://www.amazon.com/Traxxas-6520-RPM-Sensor-long/dp/B006IRXEZM Amazon GPS Module] | |
| − | |||
| − | * [https://www.amazon.com/Traxxas- | ||
| | | | ||
* 1 | * 1 | ||
| | | | ||
| − | * | + | * 43.00 |
|} | |} | ||
<BR/> | <BR/> | ||
| − | == < | + | == Printed Circuit Board == |
| + | <Picture and information, including links to your PCB> | ||
| + | <br> | ||
| + | |||
| + | =='''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== | ||
| + | A Link to the DBC file that defines the CAN communication of the system is as follows: | ||
| + | [https://gitlab.com/tech-savycmpe243/cmpe243_techsavy_rc_car/blob/master/PROJ_DBC_File/243_techSavvy.dbc DBC link on GitLab] | ||
| + | <br> | ||
| + | |||
| + | DBC is a format that enables fewer hassles while developing code to either interpret data received or send data over the CAN bus. This project used DBC effectively. | ||
| + | |||
| + | Shown below is the DBC implementation for this project. | ||
| + | <pre> | ||
| + | VERSION "" | ||
| + | |||
| + | NS_ : | ||
| + | BA_ | ||
| + | BA_DEF_ | ||
| + | BA_DEF_DEF_ | ||
| + | BA_DEF_DEF_REL_ | ||
| + | BA_DEF_REL_ | ||
| + | BA_DEF_SGTYPE_ | ||
| + | BA_REL_ | ||
| + | BA_SGTYPE_ | ||
| + | BO_TX_BU_ | ||
| + | BU_BO_REL_ | ||
| + | BU_EV_REL_ | ||
| + | BU_SG_REL_ | ||
| + | CAT_ | ||
| + | CAT_DEF_ | ||
| + | CM_ | ||
| + | ENVVAR_DATA_ | ||
| + | EV_DATA_ | ||
| + | FILTER | ||
| + | NS_DESC_ | ||
| + | SGTYPE_ | ||
| + | SGTYPE_VAL_ | ||
| + | SG_MUL_VAL_ | ||
| + | SIGTYPE_VALTYPE_ | ||
| + | SIG_GROUP_ | ||
| + | SIG_TYPE_REF_ | ||
| + | SIG_VALTYPE_ | ||
| + | VAL_ | ||
| + | VAL_TABLE_ | ||
| + | |||
| + | BS_: | ||
| + | |||
| + | BU_: MASTER BRIDGE MOTOR SENSOR GPS | ||
| + | |||
| + | |||
| + | BO_ 103 BRIDGE_NODE: 1 BRIDGE | ||
| + | SG_ BRIDGE_START_cmd : 0|1@1+ (1,0) [0|1] "" MASTER | ||
| + | |||
| + | BO_ 104 SENSOR_NODE: 5 SENSOR | ||
| + | SG_ SENSOR_FRONT_cm : 0|10@1+ (1,0) [0|645] "cm" MASTER,MOTOR,BRIDGE | ||
| + | SG_ LIDAR_Obstacle_FRONT : 10|3@1+ (1,0) [0|0] "" MASTER,MOTOR,BRIDGE | ||
| + | SG_ LIDAR_Obstacle_RIGHT : 13|3@1+ (1,0) [0|0] "" MASTER,MOTOR,BRIDGE | ||
| + | SG_ LIDAR_Obstacle_LEFT : 16|3@1+ (1,0) [0|0] "" MASTER,MOTOR,BRIDGE | ||
| + | SG_ LIDAR_Obstacle_BACK : 19|3@1+ (1,0) [0|0] "" MASTER,MOTOR,BRIDGE | ||
| + | |||
| + | BO_ 105 CAR_CONTROL: 1 MASTER | ||
| + | SG_ MOTOR_DRIVE_cmd : 0|3@1+ (1,0) [0|0] "" MOTOR | ||
| + | SG_ MOTOR_STEER_cmd : 3|3@1+ (1,0) [0|0] "" MOTOR | ||
| + | |||
| + | BO_ 106 MOTOR_NODE: 1 MOTOR | ||
| + | SG_ MOTOR_SPEED_mph : 0|8@1+ (0.1,0) [0.0|15.0] "mph" MASTER,BRIDGE | ||
| + | |||
| + | BO_ 107 BRIDGE_CHECKPOINTS: 8 BRIDGE | ||
| + | SG_ CHECKPOINT_LAT_deg : 0|28@1+ (0.000001,-90.000000) [-90|90] "Degrees" MASTER,GPS | ||
| + | SG_ CHECKPOINT_LONG_deg : 28|29@1+ (0.000001,-180.000000) [-180|180] "Degrees" MASTER,GPS | ||
| + | |||
| + | BO_ 108 GPS_LOCATION: 8 GPS | ||
| + | SG_ CURRENT_LAT_deg : 0|28@1+ (0.000001,-90.000000) [-90|90] "Degrees" MASTER,BRIDGE,MOTOR | ||
| + | SG_ CURRENT_LONG_deg : 28|29@1+ (0.000001,-180.000000) [-180|180] "Degrees" MASTER,BRIDGE,MOTOR | ||
| + | |||
| + | BO_ 109 COMPASS: 8 GPS | ||
| + | SG_ CMP_HEADING_deg : 0|12@1+ (0.1,0) [0|359.9] "Degrees" MASTER,BRIDGE,MOTOR | ||
| + | SG_ CMP_BEARING_deg : 12|12@1+ (0.1,0) [0|359.9] "Degrees" MASTER,BRIDGE,MOTOR | ||
| + | |||
| + | BO_ 110 MASTER_HEARTBEAT: 1 MASTER | ||
| + | SG_ MASTER_hbt : 0|1@1+ (1,0) [0|1] "" SENSOR,MOTOR,BRIDGE,GPS | ||
| + | |||
| + | BO_ 111 SENSOR_HEARTBEAT: 1 SENSOR | ||
| + | SG_ SENSOR_hbt : 0|1@1+ (1,0) [0|1] "" MASTER | ||
| + | |||
| + | BO_ 112 MOTOR_HEARTBEAT: 1 MOTOR | ||
| + | SG_ MOTOR_hbt : 0|1@1+ (1,0) [0|1] "" MASTER | ||
| + | |||
| + | BO_ 113 GPS_HEARTBEAT: 1 GPS | ||
| + | SG_ GPS_hbt : 0|1@1+ (1,0) [0|1] "" MASTER | ||
| + | |||
| + | BO_ 114 BRIDGE_HEARTBEAT: 1 BRIDGE | ||
| + | SG_ BRIDGE_hbt : 0|1@1+ (1,0) [0|1] "" MASTER | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | 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_ BRIDGE "The bridge controller of the car"; | ||
| + | CM_ BU_ GPS "The gps 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_ 103 100; | |
| + | BA_ "GenMsgCycleTime" BO_ 104 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 105 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 106 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 107 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 108 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 109 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 110 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 111 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 112 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 113 100; | ||
| + | BA_ "GenMsgCycleTime" BO_ 114 100; | ||
| + | BA_ "FieldType" SG_ 105 MOTOR_DRIVE_cmd "MOTOR_DRIVE_cmd"; | ||
| + | BA_ "FieldType" SG_ 105 MOTOR_STEER_cmd "MOTOR_STEER_cmd"; | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | VAL_ 105 MOTOR_DRIVE_cmd 2 "MOTOR_STOP" 1 "MOTOR_REV" 3 "MOTOR_FWD_SLOW" 4 "MOTOR_FWD_MED" 5 "MOTOR_FWD_FAST" ; | |
| − | + | VAL_ 105 MOTOR_STEER_cmd 2 "MOTOR_DONT_STEER" 1 "MOTOR_STEER_SLIGHT_LEFT" 0 "MOTOR_STEER_FULL_LEFT" 3 "MOTOR_STEER_SLIGHT_RIGHT" 4 "MOTOR_STEER_FULL_RIGHT" ; | |
| − | |||
| − | |||
| − | + | </pre> | |
| − | < | ||
| − | + | A screenshot of the Bus Master Application is as shown below: | |
| − | |||
| − | |||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
| − | == | + | == Sensor ECU == |
| − | |||
<Picture and link to Gitlab> | <Picture and link to Gitlab> | ||
| − | === | + | === Hardware Design === |
| − | === | + | === Software Design === |
<List the code modules that are being called periodically.> | <List the code modules that are being called periodically.> | ||
| − | === | + | === Technical Challenges === |
<Bullet or Headings of a module> | <Bullet or Headings of a module> | ||
| − | === | + | ==== Unreliable sonor sensors ==== |
<Problem Summary> | <Problem Summary> | ||
<Problem Resolution> | <Problem Resolution> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
| − | == | + | == Motor ECU == |
| − | |||
<Picture and link to Gitlab> | <Picture and link to Gitlab> | ||
| − | === | + | === Hardware Design === |
| − | === | + | === Software Design === |
<List the code modules that are being called periodically.> | <List the code modules that are being called periodically.> | ||
| − | === | + | === Technical Challenges === |
<Bullet or Headings of a module> | <Bullet or Headings of a module> | ||
| − | === | + | ==== Unreliable Servo Motors ==== |
<Problem Summary> | <Problem Summary> | ||
<Problem Resolution> | <Problem Resolution> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
| − | == | + | =='''Geographical Controller'''== |
<Picture and link to Gitlab> | <Picture and link to Gitlab> | ||
| − | === | + | === Hardware Design === |
| + | |||
| + | The hardware interface details of '''GPS and Compass Module''' with SJOne board are given below: | ||
| − | === | + | [[ File: CmpE243_TechSavy_GEO_Controller.png|679px|thumb|centre||GPS & CMPS11 Module Hardware Interfacing]] |
| + | <br> | ||
| + | |||
| + | '''GPS''' | ||
| + | |||
| + | GPS is a global navigation satellite system that provides geolocation and time information to a GPS receiver anywhere on or near the Earth where there is an unobstructed line of sight to four or more GPS satellites. | ||
| + | |||
| + | '''Compass''' | ||
| + | |||
| + | [[File:CmpE243_F17_Rolling_Thunder_GEO_compass.png|right|220px|thumb|CMPS11 Compass Module ]] | ||
| + | |||
| + | A Compass is an instrument used for navigation and orientation that shows direction relative to the geographic cardinal directions (or points). Compass is communicating over I2C with SJ One board. The register 2 and 3 of the compass provide the compass bearing angle (0- 360 range). Calibrating the compass is an important part. We are calibrating it on ‘horizontal calibration mode’, it works for us because the compass has tilt calibration. | ||
| + | |||
| + | Calibration process: | ||
| + | First of all, you need to enter the calibration mode by sending a 3-byte sequence of 0xF0,0xF5 and then 0xF7 to the command register, these MUST be sent in 3 separate I2C frames. There MUST be a minimum of 20ms between each I2C frame. | ||
| + | |||
| + | The LED will then extinguish and the CMPS11 should now be rotated in all directions on a horizontal plane, if a new maximum for any of the sensors is detected then the LED will flash, when you cannot get any further LED flashes in any direction then exit the calibration mode with a command of 0xF8. | ||
| + | |||
| + | Note: Please make sure that the CMPS11 is not located near to ferrous objects as this will distort the magnetic field and induce errors in the reading. While calibrating rotate the compass slowly. Only the X and Y magnetometer axis is calibrated in this mode. | ||
| + | |||
| + | We are sending 3-byte sequence command of 0xF0,0xF5 and then 0xF7 on 4th switch press and 0xF8 command on 2nd switch press of the SJ One board. | ||
| + | You can always restore factory calibration mode by sending the 3-byte sequence command of 0x20,0x2A,0x60. We are using switch 3 to restore factory calibration. | ||
| + | |||
| + | === Software Design === | ||
<List the code modules that are being called periodically.> | <List the code modules that are being called periodically.> | ||
| − | === | + | === Technical Challenges === |
<Bullet or Headings of a module> | <Bullet or Headings of a module> | ||
| − | === | + | ==== Unreliable GPS lock ==== |
<Problem Summary> | <Problem Summary> | ||
<Problem Resolution> | <Problem Resolution> | ||
| − | + | <HR> | |
| − | + | <BR/> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | < | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | =='''Bridge Controller Communication'''== | |
| − | + | <Picture and link to Gitlab> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ===Hardware Design=== | |
| − | + | '''Bluetooth Module Hardware Interfacing:''' | |
| + | |||
| + | We are using an HC-05 Bluetooth module to send and receive the data from our android application to Controller. The Bridge controller is connected to the Bluetooth module through the Serial interface(UART2) of SjOne board and we have configured HC-05 at 38400 baud rate 8-bit data and 1 stop bit using modules Communication Mode. | ||
| − | + | [[ File: CmpE243_TechSavy_bridge_HC-05_pin_conf.png|679px|thumb|centre||HC-05 Module Hardware Interfacing]] | |
| + | <br> | ||
| − | + | ===HC-05 Bluetooth module=== | |
| + | HC-05 Bluetooth Module is used to set up wireless communication between the Car and the Android phone. | ||
| + | This module is based on the Cambridge Silicon Radio BC417 2.4 GHz BlueTooth Radio chip. This is a complex chip which uses an external 8 Mbit flash memory | ||
| + | It includes the Radio and Memory chips, 26 MHz crystal, antenna, and RF matching network. | ||
| + | The right section of the Bluetooth Board has connection pins for power and signals as well as a 5V to 3.3V Regulator, LED, and level shifting. | ||
| − | + | * '''HC-05 PinOut''' | |
| + | * EN: In a case brought HIGH before power is applied, forces AT Command Setup Mode | ||
| + | * VCC: 5V Power | ||
| + | * GND: Ground | ||
| + | * TXD: Serial Transmit pin connected to RXD2 of SJOne board | ||
| + | * RXD: Serial Receive pin connected to TXD2 of SJOne board | ||
| + | * STATE: States if connected or not | ||
| − | === | + | * '''LED Blinking signals''' |
| + | * Flashing RED Fast: Ready for Pairing with nearby Bluetooth device available | ||
| + | * Flashing RED Slow: Paired and Connected | ||
| + | === Software Design === | ||
<List the code modules that are being called periodically.> | <List the code modules that are being called periodically.> | ||
| − | === | + | === Technical Challenges === |
<Bullet or Headings of a module> | <Bullet or Headings of a module> | ||
| − | === | + | ==== Insane Bug ==== |
<Problem Summary> | <Problem Summary> | ||
<Problem Resolution> | <Problem Resolution> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
| − | == | + | == Master Module == |
| + | |||
<Picture and link to Gitlab> | <Picture and link to Gitlab> | ||
| − | === | + | === Hardware Design === |
| − | === | + | === Software Design === |
<List the code modules that are being called periodically.> | <List the code modules that are being called periodically.> | ||
| − | === | + | === Technical Challenges === |
<Bullet or Headings of a module> | <Bullet or Headings of a module> | ||
| − | === | + | ==== Improper Unit Testing ==== |
<Problem Summary> | <Problem Summary> | ||
<Problem Resolution> | <Problem Resolution> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
| − | == | + | |
| + | == Mobile Application == | ||
<Picture and link to Gitlab> | <Picture and link to Gitlab> | ||
| − | === | + | === Hardware Design === |
| − | === | + | === Software Design === |
<List the code modules that are being called periodically.> | <List the code modules that are being called periodically.> | ||
| − | === | + | === Technical Challenges === |
<Bullet or Headings of a module> | <Bullet or Headings of a module> | ||
| + | ==== Wifi Link Reliability ==== | ||
| + | <Problem Summary> | ||
| + | <Problem Resolution> | ||
| − | + | <HR> | |
| + | <BR/> | ||
| + | =='''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 the 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 the exact code, but you may show pseudocode and fragments of code. Keep in mind that you are showing the DESIGN of your software, not the inner workings of it. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | [[File:CMPE243-Software Architecture.PNG|800px|thumb|center|TechSavy High Level Software Architecture]] | |
| − | | | ||
| − | |||
| − | | | ||
| − | |||
| − | | | ||
| − | |||
| − | | | ||
| − | |||
| − | + | == Testing & Technical Challenges == | |
| − | + | Describe the challenges of your project. What advise would you give yourself or someone else if your project can is started from scratch again? | |
| − | + | Make a smooth transition to the 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 == |
<Organized summary of the project> | <Organized summary of the project> | ||
| Line 866: | Line 761: | ||
=== Project Source Code === | === Project Source Code === | ||
| + | * [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link] | ||
| − | === | + | * Git Project Link: <font color="blue">[https://gitlab.com/tech-savycmpe243/TechSavy Tech Savy ]</font><br> |
| + | |||
| + | |||
| + | === Advise for Future Students === | ||
<Bullet points and discussion> | <Bullet points and discussion> | ||
| + | === Acknowledgement === | ||
| + | |||
| + | === References === | ||
| + | |||
| + | == 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. | ||
| − | == Grading Criteria == | + | == '''Grading Criteria''' == |
<font color="green"> | <font color="green"> | ||
* How well is Software & Hardware Design described? | * How well is Software & Hardware Design described? | ||
Revision as of 21:02, 19 April 2019
Contents
- 1 Tech Savy RC Car
- 2 Abstract
- 3 Introduction & Objectives
- 4 Team Members & Technical Responsibilities
- 5 Administrative Responsibilities
- 6 Team Deliverables Schedule
- 7 BILL OF MATERIALS (GENERAL PARTS)
- 8 Printed Circuit Board
- 9 CAN Communication
- 10 Hardware Design
- 11 DBC File
- 12 Sensor ECU
- 13 Motor ECU
- 14 Geographical Controller
- 15 Bridge Controller Communication
- 16 Master Module
- 17 Mobile Application
- 18 Design & Implementation
- 19 Testing & Technical Challenges
- 20 Conclusion
- 21 References
- 22 Grading Criteria
Tech Savy RC Car
File:CMPE243 Tech Savy Car.jpg Tech_Savy front view |
Abstract
In this project our main aim to build a Self-Navigating Car named Tech Savy, that navigates from a source location to a selected destination by avoiding obstacles in its path using sensors and motors.
Introduction & Objectives
The key features support by the system are
1. A Google-map based Android application is developed which finds out the shortest distance path between current location and destination and connects to the self-driving RC car via Bluetooth to send the GPS Coordinates.
2. The car will be integrated with the GPS, Compass, Bluetooth, multiple sensors such as Ultrasonic sensors and RPM sensors to fulfill the purpose of navigation, obstacle detection, and avoidance
3. LIDAR used for obstacle recognition and avoidance.
4. Motor drives the car by Route Calculation and Maneuvering to the selected destination and Self- Adjusting the speed of the car on Ramp.
5. LEDs and LED Display are used for debugging and to get all relevant information about the status of the car, in real time and LCD Display is used to give more detailed information related to the car.
The system is built on FreeRTOS running on LPC1758 SJOne controller and Android application. The main building blocks of Tech Savy are the five controllers communicating through High Speed CAN network designed to handle dedicated tasks. The controllers integrate various sensors that are used for navigation of the car.
CAR Objectives
1. Master Controller - Handles the Route Manuevering,Path Planning and Obstacle Avoidance
2. Sensor Controller - Detects the surrounding objects
3. Geo Controller - Provides current location in the form of coordinates and navigate car using CMPS11
4. Motor Controller - controls the movement of the Car.
5. Bridge controller - Interfaces the system using Bluetooth to an Android application.
Team Objectives
1. Learn each and every module as much as possible, in order to develop an industrial product.
2. Achieve 100% code coverage, during unit testing.
3. Document and track all the bugs encountered during development, unit testing, and field testing.
File:CmpE243 TechSavy Application.png Android Application |
Team Members & Technical Responsibilities
- Git Project Link: Tech Savy
- Master Controller
- Motor Controller
- Geographical Controller
- Sensor Controller
- Communication Bridge Controller
- Android Application
- LCD Interfacing & UI Designing
- Hardware PCB Integration
Administrative Responsibilities
| Administrative Roles | ||||
|---|---|---|---|---|
|
Aakash Chitroda | |||
|
Halak Vyas | |||
|
Vatsal Makani | |||
|
Vidushi Jain | |||
|
Jay Parsana | |||
Team Deliverables Schedule
| WEEK |
START DATE |
END DATE |
TASK DETAILS |
STATUS |
|---|---|---|---|---|
| 1 | 26 Feb 2019 | 4 March 2019 |
|
Completed Completed Completed Completed |
| 2 | 05 March 2019 | 12 March 2019 |
|
Completed Completed Completed |
| 3 | 13 March 2019 | 19 March 2019 |
|
Completed Completed Completed Completed Completed Completed |
| 4 | 20 March 2019 | 26 March 2019 |
|
Completed Completed Completed Completed Completed Completed |
| 5 | 27 March 2019 | 09 April 2019 |
|
Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed |
| 6 | 10 April 2019 | 16 April 2019 |
|
Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed Completed |
| 7 | 17 April 2019 | 23 April 2019 |
|
In Progress |
| 8 | 24 April 2019 | 30 April 2019 |
|
In Progress |
| 9 | 1 May 2019 | 7 May 2019 |
|
In Progress |
| 10 | 8 May 2019 | 21 May 2019 |
|
In Progress |
| 11 | 22 May 2019 |
|
In Progress |
BILL OF MATERIALS (GENERAL PARTS)
| PART NAME |
PART MODEL & SOURCE |
QUANTITY |
COST PER UNIT (USD) |
|---|---|---|---|
|
|
|
|
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
|
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
A Link to the DBC file that defines the CAN communication of the system is as follows:
DBC link on GitLab
DBC is a format that enables fewer hassles while developing code to either interpret data received or send data over the CAN bus. This project used DBC effectively.
Shown below is the DBC implementation for this project.
VERSION ""
NS_ :
BA_
BA_DEF_
BA_DEF_DEF_
BA_DEF_DEF_REL_
BA_DEF_REL_
BA_DEF_SGTYPE_
BA_REL_
BA_SGTYPE_
BO_TX_BU_
BU_BO_REL_
BU_EV_REL_
BU_SG_REL_
CAT_
CAT_DEF_
CM_
ENVVAR_DATA_
EV_DATA_
FILTER
NS_DESC_
SGTYPE_
SGTYPE_VAL_
SG_MUL_VAL_
SIGTYPE_VALTYPE_
SIG_GROUP_
SIG_TYPE_REF_
SIG_VALTYPE_
VAL_
VAL_TABLE_
BS_:
BU_: MASTER BRIDGE MOTOR SENSOR GPS
BO_ 103 BRIDGE_NODE: 1 BRIDGE
SG_ BRIDGE_START_cmd : 0|1@1+ (1,0) [0|1] "" MASTER
BO_ 104 SENSOR_NODE: 5 SENSOR
SG_ SENSOR_FRONT_cm : 0|10@1+ (1,0) [0|645] "cm" MASTER,MOTOR,BRIDGE
SG_ LIDAR_Obstacle_FRONT : 10|3@1+ (1,0) [0|0] "" MASTER,MOTOR,BRIDGE
SG_ LIDAR_Obstacle_RIGHT : 13|3@1+ (1,0) [0|0] "" MASTER,MOTOR,BRIDGE
SG_ LIDAR_Obstacle_LEFT : 16|3@1+ (1,0) [0|0] "" MASTER,MOTOR,BRIDGE
SG_ LIDAR_Obstacle_BACK : 19|3@1+ (1,0) [0|0] "" MASTER,MOTOR,BRIDGE
BO_ 105 CAR_CONTROL: 1 MASTER
SG_ MOTOR_DRIVE_cmd : 0|3@1+ (1,0) [0|0] "" MOTOR
SG_ MOTOR_STEER_cmd : 3|3@1+ (1,0) [0|0] "" MOTOR
BO_ 106 MOTOR_NODE: 1 MOTOR
SG_ MOTOR_SPEED_mph : 0|8@1+ (0.1,0) [0.0|15.0] "mph" MASTER,BRIDGE
BO_ 107 BRIDGE_CHECKPOINTS: 8 BRIDGE
SG_ CHECKPOINT_LAT_deg : 0|28@1+ (0.000001,-90.000000) [-90|90] "Degrees" MASTER,GPS
SG_ CHECKPOINT_LONG_deg : 28|29@1+ (0.000001,-180.000000) [-180|180] "Degrees" MASTER,GPS
BO_ 108 GPS_LOCATION: 8 GPS
SG_ CURRENT_LAT_deg : 0|28@1+ (0.000001,-90.000000) [-90|90] "Degrees" MASTER,BRIDGE,MOTOR
SG_ CURRENT_LONG_deg : 28|29@1+ (0.000001,-180.000000) [-180|180] "Degrees" MASTER,BRIDGE,MOTOR
BO_ 109 COMPASS: 8 GPS
SG_ CMP_HEADING_deg : 0|12@1+ (0.1,0) [0|359.9] "Degrees" MASTER,BRIDGE,MOTOR
SG_ CMP_BEARING_deg : 12|12@1+ (0.1,0) [0|359.9] "Degrees" MASTER,BRIDGE,MOTOR
BO_ 110 MASTER_HEARTBEAT: 1 MASTER
SG_ MASTER_hbt : 0|1@1+ (1,0) [0|1] "" SENSOR,MOTOR,BRIDGE,GPS
BO_ 111 SENSOR_HEARTBEAT: 1 SENSOR
SG_ SENSOR_hbt : 0|1@1+ (1,0) [0|1] "" MASTER
BO_ 112 MOTOR_HEARTBEAT: 1 MOTOR
SG_ MOTOR_hbt : 0|1@1+ (1,0) [0|1] "" MASTER
BO_ 113 GPS_HEARTBEAT: 1 GPS
SG_ GPS_hbt : 0|1@1+ (1,0) [0|1] "" MASTER
BO_ 114 BRIDGE_HEARTBEAT: 1 BRIDGE
SG_ BRIDGE_hbt : 0|1@1+ (1,0) [0|1] "" MASTER
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_ BRIDGE "The bridge controller of the car";
CM_ BU_ GPS "The gps 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_ 103 100;
BA_ "GenMsgCycleTime" BO_ 104 100;
BA_ "GenMsgCycleTime" BO_ 105 100;
BA_ "GenMsgCycleTime" BO_ 106 100;
BA_ "GenMsgCycleTime" BO_ 107 100;
BA_ "GenMsgCycleTime" BO_ 108 100;
BA_ "GenMsgCycleTime" BO_ 109 100;
BA_ "GenMsgCycleTime" BO_ 110 100;
BA_ "GenMsgCycleTime" BO_ 111 100;
BA_ "GenMsgCycleTime" BO_ 112 100;
BA_ "GenMsgCycleTime" BO_ 113 100;
BA_ "GenMsgCycleTime" BO_ 114 100;
BA_ "FieldType" SG_ 105 MOTOR_DRIVE_cmd "MOTOR_DRIVE_cmd";
BA_ "FieldType" SG_ 105 MOTOR_STEER_cmd "MOTOR_STEER_cmd";
VAL_ 105 MOTOR_DRIVE_cmd 2 "MOTOR_STOP" 1 "MOTOR_REV" 3 "MOTOR_FWD_SLOW" 4 "MOTOR_FWD_MED" 5 "MOTOR_FWD_FAST" ;
VAL_ 105 MOTOR_STEER_cmd 2 "MOTOR_DONT_STEER" 1 "MOTOR_STEER_SLIGHT_LEFT" 0 "MOTOR_STEER_FULL_LEFT" 3 "MOTOR_STEER_SLIGHT_RIGHT" 4 "MOTOR_STEER_FULL_RIGHT" ;
A screenshot of the Bus Master Application is as shown below:
Sensor ECU
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
<Bullet or Headings of a module>
Unreliable sonor sensors
<Problem Summary> <Problem Resolution>
Motor ECU
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
<Bullet or Headings of a module>
Unreliable Servo Motors
<Problem Summary> <Problem Resolution>
Geographical Controller
<Picture and link to Gitlab>
Hardware Design
The hardware interface details of GPS and Compass Module with SJOne board are given below:
GPS
GPS is a global navigation satellite system that provides geolocation and time information to a GPS receiver anywhere on or near the Earth where there is an unobstructed line of sight to four or more GPS satellites.
Compass
A Compass is an instrument used for navigation and orientation that shows direction relative to the geographic cardinal directions (or points). Compass is communicating over I2C with SJ One board. The register 2 and 3 of the compass provide the compass bearing angle (0- 360 range). Calibrating the compass is an important part. We are calibrating it on ‘horizontal calibration mode’, it works for us because the compass has tilt calibration.
Calibration process: First of all, you need to enter the calibration mode by sending a 3-byte sequence of 0xF0,0xF5 and then 0xF7 to the command register, these MUST be sent in 3 separate I2C frames. There MUST be a minimum of 20ms between each I2C frame.
The LED will then extinguish and the CMPS11 should now be rotated in all directions on a horizontal plane, if a new maximum for any of the sensors is detected then the LED will flash, when you cannot get any further LED flashes in any direction then exit the calibration mode with a command of 0xF8.
Note: Please make sure that the CMPS11 is not located near to ferrous objects as this will distort the magnetic field and induce errors in the reading. While calibrating rotate the compass slowly. Only the X and Y magnetometer axis is calibrated in this mode.
We are sending 3-byte sequence command of 0xF0,0xF5 and then 0xF7 on 4th switch press and 0xF8 command on 2nd switch press of the SJ One board. You can always restore factory calibration mode by sending the 3-byte sequence command of 0x20,0x2A,0x60. We are using switch 3 to restore factory calibration.
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
<Bullet or Headings of a module>
Unreliable GPS lock
<Problem Summary> <Problem Resolution>
Bridge Controller Communication
<Picture and link to Gitlab>
Hardware Design
Bluetooth Module Hardware Interfacing:
We are using an HC-05 Bluetooth module to send and receive the data from our android application to Controller. The Bridge controller is connected to the Bluetooth module through the Serial interface(UART2) of SjOne board and we have configured HC-05 at 38400 baud rate 8-bit data and 1 stop bit using modules Communication Mode.
HC-05 Bluetooth module
HC-05 Bluetooth Module is used to set up wireless communication between the Car and the Android phone. This module is based on the Cambridge Silicon Radio BC417 2.4 GHz BlueTooth Radio chip. This is a complex chip which uses an external 8 Mbit flash memory It includes the Radio and Memory chips, 26 MHz crystal, antenna, and RF matching network. The right section of the Bluetooth Board has connection pins for power and signals as well as a 5V to 3.3V Regulator, LED, and level shifting.
- HC-05 PinOut
* EN: In a case brought HIGH before power is applied, forces AT Command Setup Mode * VCC: 5V Power * GND: Ground * TXD: Serial Transmit pin connected to RXD2 of SJOne board * RXD: Serial Receive pin connected to TXD2 of SJOne board * STATE: States if connected or not
- LED Blinking signals
* Flashing RED Fast: Ready for Pairing with nearby Bluetooth device available * Flashing RED Slow: Paired and Connected
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
<Bullet or Headings of a module>
Insane Bug
<Problem Summary> <Problem Resolution>
Master Module
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
<Bullet or Headings of a module>
Improper Unit Testing
<Problem Summary> <Problem Resolution>
Mobile Application
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
<Bullet or Headings of a module>
Wifi Link Reliability
<Problem Summary> <Problem Resolution>
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 the 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 the exact code, but you may show pseudocode and fragments of code. Keep in mind that you are showing the DESIGN of your software, not the inner workings of it.
Testing & Technical Challenges
Describe the challenges of your project. What advise would you give yourself or someone else if your project can is started from scratch again? Make a smooth transition to the 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
<Organized summary of the project>
<What did you learn?>
Project Video
Project Source Code
- Git Project Link: Tech Savy
Advise for Future Students
<Bullet points and discussion>
Acknowledgement
References
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.
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.