Difference between revisions of "S21: UTAH"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Schedule)
Line 227: Line 227:
 
*<span style="color:cyan">Create sensor API to parse raw data and send useful data</span>
 
*<span style="color:cyan">Create sensor API to parse raw data and send useful data</span>
 
*<span style="color:blue">Integrate google map features into app</span>
 
*<span style="color:blue">Integrate google map features into app</span>
*<span style="color:magenta">Integration testing of motor controller logic to verify it works on hardware</span>
+
*<span style="color:magenta">Integration testing of motor controller logic</span>
 
*<span style="color:orange">Create a Checkpoint Navigation algorithm for Driver</span>
 
*<span style="color:orange">Create a Checkpoint Navigation algorithm for Driver</span>
 
|
 
|
Line 233: Line 233:
 
* <span style="color:orange">In progress</span>
 
* <span style="color:orange">In progress</span>
 
* <span style="color:red">Incomplete</span>
 
* <span style="color:red">Incomplete</span>
* <span style="color:green">Complete</span>
+
* <span style="color:red">Incomplete</span>
 
* <span style="color:green">Complete</span>
 
* <span style="color:green">Complete</span>
 
|-
 
|-
Line 248: Line 248:
 
*<span style="color:black">Finish implementation of canbus between controllers and begin real world testing</span>
 
*<span style="color:black">Finish implementation of canbus between controllers and begin real world testing</span>
 
*<span style="color:cyan">3D print sensor mounts, sensor guards, and draft sensor offset timing to deter sensor cross talk</span>
 
*<span style="color:cyan">3D print sensor mounts, sensor guards, and draft sensor offset timing to deter sensor cross talk</span>
*<span style="color:magenta">Write and test RPM sensor code</span>
+
*<span style="color:magenta">Finish integrating wheel encoder and display speed on SJOne Telemetry</span>
 
|
 
|
 
* <span style="color:orange">In progress</span>
 
* <span style="color:orange">In progress</span>
Line 269: Line 269:
 
*<span style="color:cyan">Analysis for jitters in sensor value</span>
 
*<span style="color:cyan">Analysis for jitters in sensor value</span>
 
*<span style="color:magenta">Complete "Self Test" for motor test(DC motor moves forward and backwards and servo moves right left)</span>
 
*<span style="color:magenta">Complete "Self Test" for motor test(DC motor moves forward and backwards and servo moves right left)</span>
*<span style="color:magenta">Write and test PID for drive speed control</span>
+
*<span style="color:magenta">Start working on PID control algorithm</span>
 
|
 
|
 
* <span style="color:orange">In progress</span>
 
* <span style="color:orange">In progress</span>
Line 402: Line 402:
  
 
[https://gitlab.com/infallibleprogrammer/utah/-/blob/user/infallibleprogrammer/%238/Geo_Controller_For_GEO_Lab/dbc/project.dbc DBC File Link]
 
[https://gitlab.com/infallibleprogrammer/utah/-/blob/user/infallibleprogrammer/%238/Geo_Controller_For_GEO_Lab/dbc/project.dbc DBC File Link]
 +
<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_: DBG DRIVER IO MOTOR SENSOR GEO
 +
 +
 +
BO_ 100 BRIDGE_APP_COMMANDS: 1 SENSOR
 +
SG_ APP_COMMAND : 0|2@1+ (1,0) [0|0] "" GEO,DRIVER
 +
 +
BO_ 101 MOTOR_CHANGE_SPEED_AND_ANGLE_MSG: 2 DRIVER
 +
SG_ DC_MOTOR_DRIVE_SPEED_sig : 0|5@1+ (1,-5) [-5|15] "levels" MOTOR
 +
SG_ SERVO_STEER_ANGLE_sig : 5|8@1+ (1,-45) [-45|45] "degrees" MOTOR
 +
 +
BO_ 102 SENSOR_SONARS_ROUTINE: 5 SENSOR
 +
SG_ SENSOR_SONARS_left : 0|10@1+ (1,0) [0|0] "inch" DRIVER
 +
SG_ SENSOR_SONARS_right : 10|10@1+ (1,0) [0|0] "inch" DRIVER
 +
SG_ SENSOR_SONARS_middle : 20|10@1+ (1,0) [0|0] "inch" DRIVER
 +
SG_ SENSOR_SONARS_rear : 30|10@1+ (1,0) [0|0] "inch" DRIVER
 +
 +
BO_ 300 GPS_DESTINATION_LOCATION: 8 SENSOR
 +
SG_ DEST_LATITUDE : 0|32@1+ (0.000001,-90.000000) [-90|90] "Degrees" GEO
 +
SG_ DEST_LONGITUDE : 32|32@1+ (0.000001,-180.000000) [-180|180] "Degrees" GEO
 +
 +
BO_ 301 COMPASS_HEADING_DISTANCE: 8 GEO
 +
SG_ CURRENT_HEADING : 0|12@1+ (0.1,0) [0|359.9] "Degrees" DRIVER,SENSOR
 +
SG_ DESTINATION_HEADING: 12|12@1+ (0.1,0) [0|359.9] "Degrees" DRIVER,SENSOR
 +
SG_ DISTANCE : 24|17@1+ (0.01,0) [0|0] "Meters" DRIVER,SENSOR
 +
 +
BO_ 501 GPS_CURRENT_INFO: 8 GEO
 +
SG_ GPS_CURRENT_LAT : 0|32@1+ (0.000001,-90.000000) [-90|90] "degrees" DRIVER,SENSOR,MOTOR
 +
SG_ GPS_CURRENT_LONG : 32|32@1+ (0.000001,-180.000000) [-180|180] "degrees" DRIVER,SENSOR,MOTOR
 +
 +
BO_ 502 GPS_CURRENT_DESTINATIONS_DATA: 8 GEO
 +
SG_ CURRENT_DEST_LATITUDE : 0|32@1+ (0.000001,-90.000000) [-90|90] "Degrees" DRIVER
 +
SG_ CURRENT_DEST_LONGITUDE : 32|32@1+ (0.000001,-180.000000) [-180|180] "Degrees" DRIVER
 +
 +
BO_ 504 RC_CAR_SPEED_READ_MSG: 2 MOTOR
 +
  SG_ RC_CAR_SPEED_sig : 0|12@1+ (0.01,-2.5) [-2.5|10] "m/s" DRIVER,SENSOR
 +
 +
BO_ 001 DRIVER_HEARTBEAT: 1 DRIVER
 +
SG_ DRIVER_HEARTBEAT_cmd : 0|8@1+ (1,0) [0|0] "" SENSOR,MOTOR
 +
 +
BO_ 002 SENSOR_HEARTBEAT: 1 SENSOR
 +
SG_ DRIVER_HEARTBEAT_cmd : 0|8@1+ (1,0) [0|0] "" SENSOR,MOTOR
 +
 +
BO_ 003 GEO_HEARTBEAT: 1 GEO
 +
SG_ DRIVER_HEARTBEAT_cmd : 0|8@1+ (1,0) [0|0] "" SENSOR,MOTOR
 +
 +
BO_ 004 MOTOR_HEARTBEAT_MSG: 1 MOTOR
 +
  SG_ MOTOR_HEARTBEAT_sig : 0|8@1+ (1,0) [0|255] "pulse" DRIVER
 +
 +
CM_ BU_ DRIVER "The driver controller driving the car";
 +
CM_ BU_ MOTOR "The motor controller of the car";
 +
CM_ BU_ SENSOR "The sensor controller of the car";
 +
CM_ BO_ 100 "Sync message used to synchronize the controllers";
 +
CM_ SG_ 100 DRIVER_HEARTBEAT_cmd "Heartbeat command from the driver";
 +
 +
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_ 100 1000;
 +
BA_ "GenMsgCycleTime" BO_ 200 50;
 +
BA_ "FieldType" SG_ 100 DRIVER_HEARTBEAT_cmd "DRIVER_HEARTBEAT_cmd";
 +
 +
VAL_ 100 DRIVER_HEARTBEAT_cmd 2 "DRIVER_HEARTBEAT_cmd_REBOOT" 1 "DRIVER_HEARTBEAT_cmd_SYNC" 0 "DRIVER_HEARTBEAT_cmd_NOOP" ;
 +
</pre>
 
<HR>
 
<HR>
 
<BR/>
 
<BR/>

Revision as of 21:19, 13 April 2021

UTAH: Unit Tested to Avoid Hazards

Abstract

UTAH abstract

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.

Team Members & Responsibilities

Akash Vachhani profilepic.jpg

Jbeardphoto.jpg

  • Ameer Ali
    • Master Controller

Jonathan tran self pic.jpeg

  • Jonathan Tran Gitlab
    • Sensors Controller
  • Amritpal Sidhu
    • Motor Controller

Download.jpeg

  • Shreevats Gadhikar Gitlab'
    • Motor Controller

Schedule

Legend
Description Color
Administrative Black
Sensor Cyan
Bluetooth & App Blue
GPS Red
Motor Magenta
Main Orange
Week# Start Date End Date Task Status
1
  • 02/15/2021
  • 02/21/2021
  • Read previous projects to understand what is expected and have some meaningful knowledge by first meeting. Assign roles.
  • Completed
2
  • 02/22/2021
  • 02/28/2021
  • Acquire parts: Canbus modules, GPS module, Ultrasonic module, Bluetooth module, Car frame, and LCD display
  • Conduct meeting: Discuss GitLab layout and expectation of each assigned role
  • Completed
  • Completed
3
  • 03/01/2021
  • 03/01/2021
  • 03/01/2021
  • 03/01/2021
  • 03/01/2021
  • 03/01/2021
  • 03/01/2021
  • 03/07/2021
  • 03/07/2021
  • 03/07/2021
  • 03/07/2021
  • 03/07/2021
  • 03/07/2021
  • 03/07/2021
  • Purchased RC car and batteries.
  • Research and finalize which ultrasonic sensor the project will use.
  • Purchased Bluetooth connector
  • Research math to determine distance between navigation points.
  • Researchmultiple navigation point algorithm(Djikstra's) to determine shortest path.
  • Created branch for motor controller driver. Created draft template API for motor controller.
  • Using previous projects, determine what works needs to be completed for main board
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
4
  • 03/08/2021
  • 03/08/2021
  • 03/08/2021
  • 03/14/2021
  • 03/14/2021
  • 03/14/2021
  • Research connection with Bluetooth from board to application
  • Work on implementation of multiple navigation point algorithm to determine shortest path
  • Plan motor controller API and create basic software flow of API
  • incomplete
  • Incomplete
  • Complete
5
  • 03/15/2021
  • 03/15/2021
  • 03/15/2021
  • 03/15/2021
  • 03/15/2021
  • 03/21/2021
  • 03/21/2021
  • 03/21/2021
  • 03/21/2021
  • 03/21/2021
  • Begin laying out hardware requirements for PCB on excel document
  • Finish research on application building with android studio
  • Implement a simple application with a button and text
  • Unit Test Direction Math Module
  • Begin coding and digesting adafruit Compass data
  • Incomplete
  • Complete
  • Complete
  • Complete
  • Complete
6
  • 03/22/2021
  • 03/22/2021
  • 03/22/2021
  • 03/22/2021
  • 03/22/2021



  • 03/22/2021
  • 03/22/2021
  • 03/22/2021
  • 03/28/2021
  • 03/28/2021
  • 03/28/2021
  • 03/28/2021
  • 03/28/2021



  • 03/28/2021
  • 03/28/2021
  • 03/28/2021
  • Acquire sensor and interface sensors to SJ2 Board and receive raw data
  • Implement basic communication between board and app
  • Update Wiki with proper software diagrams
  • Begin Mapping out pins used on all board
  • Complete a block diagram and a control scheme
  1. Top Level Driver Logic diagram
  2. Periodic Callback Functions Diagram
  • Create a basic Obstacle avoidance algorithm for Driver
  • Probe RC car to determine expected behavior of signals and install RPM sensor
  • Write motor controller modules and tests
  • Incomplete
  • In progress
  • In progress
  • In Progress
  • In Progress
  • Complete
  • In Progress
  • Complete
  • Complete
  • Complete
7
  • 03/29/2021
  • 03/29/2021
  • 03/29/2021
  • 03/29/2021
  • 03/29/2021
  • 04/04/2021
  • 04/04/2021
  • 04/04/2021
  • 04/04/2021
  • 04/04/2021
  • Discuss and construct DBC file
  • Create sensor API to parse raw data and send useful data
  • Integrate google map features into app
  • Integration testing of motor controller logic
  • Create a Checkpoint Navigation algorithm for Driver
  • Complete
  • In progress
  • Incomplete
  • Incomplete
  • Complete
8
  • 04/05/2021
  • 04/05/2021
  • 04/05/2021
  • 04/11/2021
  • 04/11/2021
  • 04/11/2021
  • Finish implementation of canbus between controllers and begin real world testing
  • 3D print sensor mounts, sensor guards, and draft sensor offset timing to deter sensor cross talk
  • Finish integrating wheel encoder and display speed on SJOne Telemetry
  • In progress
  • Incomplete
  • Complete
9
  • 04/12/2021
  • 04/12/2021
  • 04/12/2021
  • 04/12/2021
  • 04/18/2021
  • 04/18/2021
  • 04/18/2021
  • 04/18/2021
  • Integrate Driver, Geo, Bridge sensor, and Motor nodes.
  • Analysis for jitters in sensor value
  • Complete "Self Test" for motor test(DC motor moves forward and backwards and servo moves right left)
  • Start working on PID control algorithm
  • In progress
  • Incomplete
  • In progress
  • In progress
10
  • 04/19/2021
  • 04/19/2021
  • 04/19/2021
  • 05/26/2021
  • 05/26/2021
  • 04/26/2021
  • Begin to analysis real world tests from previous weeks implementation and perform fixes for issues faced
  • Ensure Canbus nodes are communicating correctly by verifying PCON data
  • Integration testing with obstacle avoidance
  • Incomplete
  • Incomplete
  • Incomplete
11
  • 04/26/2021
  • 04/26/2021
  • 05/02/2021
  • 05/02/2021
  • Perform more real world tests and isolate bugs
  • Perform final bug fixes for all Canbus nodes
  • Incomplete
  • Incomplete
12
  • 05/09/2021
  • 05/09/2021
  • 05/09/2021
  • 05/09/2021
  • 05/09/2021
  • 05/09/2021
  • Update Wiki Report to reflect all changes and include final testing video
  • Perform final code changes and commit to master branch
  • Complete Final Demo with Preetpal Kang
  • Incomplete
  • Incomplete
  • Incomplete


Parts List & Cost

Item# Part Description Vendor Qty Cost
1 Traxxas 1/10 Scale RC Short Truck Traxxas [1] 1 $239.99 + Tax
2 RPM Sensor & Mount Traxxas [2] 1 $19.00 + Tax
3 2S 7.4V 5000mAh LiPo Battery Pack Amazon [3] 2 $40.69 + Tax
4 Bluetooth Adapter Amazon [4] 1? $8.99 + Tax
5 Adafruit Ultimate GPS Breakout Adafruit[5] 1 $39.95
6 Adafruit Triple-axis Accelerometer+Magnetometer Adafruit[6] 1 $14.95
7 Deans Connector Amazon[7] 1 $8.99 + Tax


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

DBC File Link

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_: DBG DRIVER IO MOTOR SENSOR GEO


BO_ 100 BRIDGE_APP_COMMANDS: 1 SENSOR
 SG_ APP_COMMAND : 0|2@1+ (1,0) [0|0] "" GEO,DRIVER
 
BO_ 101 MOTOR_CHANGE_SPEED_AND_ANGLE_MSG: 2 DRIVER
 SG_ DC_MOTOR_DRIVE_SPEED_sig : 0|5@1+ (1,-5) [-5|15] "levels" MOTOR
 SG_ SERVO_STEER_ANGLE_sig : 5|8@1+ (1,-45) [-45|45] "degrees" MOTOR

BO_ 102 SENSOR_SONARS_ROUTINE: 5 SENSOR
 SG_ SENSOR_SONARS_left : 0|10@1+ (1,0) [0|0] "inch" DRIVER
 SG_ SENSOR_SONARS_right : 10|10@1+ (1,0) [0|0] "inch" DRIVER
 SG_ SENSOR_SONARS_middle : 20|10@1+ (1,0) [0|0] "inch" DRIVER
 SG_ SENSOR_SONARS_rear : 30|10@1+ (1,0) [0|0] "inch" DRIVER

BO_ 300 GPS_DESTINATION_LOCATION: 8 SENSOR
 SG_ DEST_LATITUDE : 0|32@1+ (0.000001,-90.000000) [-90|90] "Degrees" GEO
 SG_ DEST_LONGITUDE : 32|32@1+ (0.000001,-180.000000) [-180|180] "Degrees" GEO

BO_ 301 COMPASS_HEADING_DISTANCE: 8 GEO
 SG_ CURRENT_HEADING : 0|12@1+ (0.1,0) [0|359.9] "Degrees" DRIVER,SENSOR
 SG_ DESTINATION_HEADING: 12|12@1+ (0.1,0) [0|359.9] "Degrees" DRIVER,SENSOR
 SG_ DISTANCE : 24|17@1+ (0.01,0) [0|0] "Meters" DRIVER,SENSOR

BO_ 501 GPS_CURRENT_INFO: 8 GEO
 SG_ GPS_CURRENT_LAT : 0|32@1+ (0.000001,-90.000000) [-90|90] "degrees" DRIVER,SENSOR,MOTOR
 SG_ GPS_CURRENT_LONG : 32|32@1+ (0.000001,-180.000000) [-180|180] "degrees" DRIVER,SENSOR,MOTOR

BO_ 502 GPS_CURRENT_DESTINATIONS_DATA: 8 GEO
 SG_ CURRENT_DEST_LATITUDE : 0|32@1+ (0.000001,-90.000000) [-90|90] "Degrees" DRIVER
 SG_ CURRENT_DEST_LONGITUDE : 32|32@1+ (0.000001,-180.000000) [-180|180] "Degrees" DRIVER

BO_ 504 RC_CAR_SPEED_READ_MSG: 2 MOTOR
  SG_ RC_CAR_SPEED_sig : 0|12@1+ (0.01,-2.5) [-2.5|10] "m/s" DRIVER,SENSOR

BO_ 001 DRIVER_HEARTBEAT: 1 DRIVER
 SG_ DRIVER_HEARTBEAT_cmd : 0|8@1+ (1,0) [0|0] "" SENSOR,MOTOR

BO_ 002 SENSOR_HEARTBEAT: 1 SENSOR
 SG_ DRIVER_HEARTBEAT_cmd : 0|8@1+ (1,0) [0|0] "" SENSOR,MOTOR

BO_ 003 GEO_HEARTBEAT: 1 GEO
 SG_ DRIVER_HEARTBEAT_cmd : 0|8@1+ (1,0) [0|0] "" SENSOR,MOTOR

BO_ 004 MOTOR_HEARTBEAT_MSG: 1 MOTOR
  SG_ MOTOR_HEARTBEAT_sig : 0|8@1+ (1,0) [0|255] "pulse" DRIVER

CM_ BU_ DRIVER "The driver controller driving the car";
CM_ BU_ MOTOR "The motor controller of the car";
CM_ BU_ SENSOR "The sensor controller of the car";
CM_ BO_ 100 "Sync message used to synchronize the controllers";
CM_ SG_ 100 DRIVER_HEARTBEAT_cmd "Heartbeat command from the driver";

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_ 100 1000;
BA_ "GenMsgCycleTime" BO_ 200 50;
BA_ "FieldType" SG_ 100 DRIVER_HEARTBEAT_cmd "DRIVER_HEARTBEAT_cmd";

VAL_ 100 DRIVER_HEARTBEAT_cmd 2 "DRIVER_HEARTBEAT_cmd_REBOOT" 1 "DRIVER_HEARTBEAT_cmd_SYNC" 0 "DRIVER_HEARTBEAT_cmd_NOOP" ;


Sensor ECU

<Picture and link to Gitlab>

Hardware Design

Software Design

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

Technical Challenges

< List of problems and their detailed resolutions>



Motor ECU

<Picture and link to Gitlab>

Hardware Design

Software Design

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

Technical Challenges

< List of problems and their detailed resolutions>



Geographical Controller

<Picture and link to Gitlab>

Hardware Design

Software Design

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

Technical Challenges

< List of problems and their detailed resolutions>





Communication Bridge Controller & LCD

<Picture and link to Gitlab>

Hardware Design

Software Design

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

Technical Challenges

< List of problems and their detailed resolutions>



Master Module

<Picture and link to Gitlab>

Hardware Design

Software Design

Driver logic UTAH.jpg

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

Technical Challenges

< List of problems and their detailed resolutions>



Mobile Application

<Picture and link to Gitlab>

Hardware Design

Software Design

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

Technical Challenges

< List of problems and their detailed resolutions>






Conclusion

<Organized summary of the project>

<What did you learn?>

Project Video

Project Source Code

Advise for Future Students

<Bullet points and discussion>

Acknowledgement

References