Difference between revisions of "S24: Team X"
(→Team Members & Responsibilities) |
(→References) |
||
(43 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
== Abstract == | == Abstract == | ||
− | + | Our main goal of this project was to utilize the knowledge acquired from the lectures in CMPE 243. The report summarizes the overall process taken to develop an autonomous driving RC car using FreeRTOS, various periodic tasks, and the CAN bus to combine and run the different code modules. | |
=== Introduction === | === Introduction === | ||
− | The project was divided into | + | The project was divided into 5 modules: |
− | * Sensor | + | * Sensor Node |
− | * Motor | + | * Motor Node |
− | * | + | * Driver Node |
− | * | + | * Geo Node |
+ | * Mobile Application | ||
=== Team Members & Responsibilities === | === Team Members & Responsibilities === | ||
<Team Picture> | <Team Picture> | ||
− | Gitlab Project Link | + | Gitlab Project Link [https://gitlab.com/faaris.khilji/sjtwo-c] |
<BR/> | <BR/> | ||
Line 29: | Line 30: | ||
! scope="col"| Team Members | ! scope="col"| Team Members | ||
! scope="col"| Task Responsibility | ! scope="col"| Task Responsibility | ||
− | |||
|- | |- | ||
− | + | ! scope="row" style="text-align: left;"| | |
* Priyanka Shah | * Priyanka Shah | ||
| | | | ||
* Geo Controller, Mobile App | * Geo Controller, Mobile App | ||
|- | |- | ||
− | + | ! scope="row" style="text-align: left;"| | |
− | |||
* Faaris Khilji | * Faaris Khilji | ||
| | | | ||
* Sensor and Bridge Controller | * Sensor and Bridge Controller | ||
− | |||
|- | |- | ||
− | + | ! scope="row" style="text-align: left;"| | |
* Ashley Ho | * Ashley Ho | ||
| | | | ||
* Driver and LCD Controller | * Driver and LCD Controller | ||
− | |||
|- | |- | ||
− | + | ! scope="row" style="text-align: left;"| | |
− | | | ||
* All/TBD | * All/TBD | ||
| | | | ||
* Motor Controller | * Motor Controller | ||
− | | | + | |- |
+ | |||
|} | |} | ||
Line 81: | Line 78: | ||
* Test GPS and UART communication. | * Test GPS and UART communication. | ||
| | | | ||
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
* <font color = "green">Completed | * <font color = "green">Completed | ||
|- | |- | ||
Line 92: | Line 91: | ||
| | | | ||
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
* <font color = "green">Completed | * <font color = "green">Completed | ||
|- | |- | ||
Line 103: | Line 104: | ||
| | | | ||
− | * <font color = " | + | * <font color = "green">Completed |
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
|- | |- | ||
! scope="row"| 4 | ! scope="row"| 4 | ||
Line 114: | Line 117: | ||
| | | | ||
− | * <font color = " | + | * <font color = "green">Completed |
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
|- | |- | ||
! scope="row"| 5 | ! scope="row"| 5 | ||
Line 125: | Line 130: | ||
| | | | ||
− | * <font color = " | + | * <font color = "green">Completed |
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
|- | |- | ||
! scope="row"| 6 | ! scope="row"| 6 | ||
Line 134: | Line 141: | ||
* Link Geo controller to GPS module | * Link Geo controller to GPS module | ||
* Integrate sensor hardware into sensor node | * Integrate sensor hardware into sensor node | ||
− | * Test LCD module | + | * Test LCD module to display using I2C |
* Begin wiki documentation | * Begin wiki documentation | ||
| | | | ||
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
* <font color = "red">Incomplete | * <font color = "red">Incomplete | ||
+ | * <font color = "green">Completed | ||
|- | |- | ||
! scope="row"| 7 | ! scope="row"| 7 | ||
Line 146: | Line 157: | ||
* Enhance obstacle avoidance algorithm | * Enhance obstacle avoidance algorithm | ||
* Integrate RPM and ultrasonic sensor | * Integrate RPM and ultrasonic sensor | ||
− | * Integrate LCD module | + | * Integrate LCD module with debug messages |
− | * Setup | + | * Setup preliminary mobile app structure |
* Test obstacle avoidance | * Test obstacle avoidance | ||
− | * Start working on | + | * Start working on power supply for SJ2 boards |
| | | | ||
− | * <font color = " | + | * <font color = "green">Completed |
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
+ | * <font color = "green">Completed | ||
|- | |- | ||
! scope="row"| 8 | ! scope="row"| 8 | ||
Line 164: | Line 180: | ||
| | | | ||
− | * <font color = " | + | * <font color = "green">Completed |
+ | * <font color = "green">Completed | ||
+ | * <font color = "yellow">In Progress | ||
+ | * <font color = "green">Completed | ||
|- | |- | ||
! scope="row"| 9 | ! scope="row"| 9 | ||
Line 173: | Line 192: | ||
* Start outdoor testing at garage rooftop | * Start outdoor testing at garage rooftop | ||
* Complete basic mobile app with destination, start/stop buttons | * Complete basic mobile app with destination, start/stop buttons | ||
− | * Interface motor and steering | + | * Interface motor and steering |
* Set up LED fault indicators | * Set up LED fault indicators | ||
| | | | ||
− | * <font color = " | + | * <font color = "green">Completed |
+ | * <font color = "green">Completed | ||
+ | * <font color = "yellow">In Progress | ||
+ | * <font color = "green">Completed | ||
+ | * <font color = "yellow">In Progress | ||
|- | |- | ||
! scope="row"| 10 | ! scope="row"| 10 | ||
Line 186: | Line 209: | ||
* Fine tune mobile app to display real-time location | * Fine tune mobile app to display real-time location | ||
* Display debug information on LCD | * Display debug information on LCD | ||
− | * Continue RC outdoor tests | + | * Implement PID controller |
+ | * Continue RC outdoor tests with ramps | ||
| | | | ||
− | * <font color = " | + | * <font color = "yellow">In Progress |
+ | * <font color = "yellow">In Progress | ||
+ | * <font color = "yellow">In Progress | ||
+ | * <font color = "yellow">In Progress | ||
+ | * <font color = "yellow">In Progress | ||
|- | |- | ||
! scope="row"| 11 | ! scope="row"| 11 | ||
Line 195: | Line 223: | ||
| 05/12/2024 | | 05/12/2024 | ||
| | | | ||
− | * | + | * Fine tune obstacle avoidance algorithm |
+ | * Fine tune motor controller and sensor controller | ||
+ | * Fine tune DBC file messages | ||
+ | * Continue updating wiki report and documentation | ||
| | | | ||
Line 204: | Line 235: | ||
| 05/12/2024 | | 05/12/2024 | ||
| | | | ||
− | * | + | * Tidy RC car mounted hardware |
+ | * Continue outdoor testing | ||
+ | * Fine tune navigational system | ||
+ | * Fine tune PID controller | ||
| | | | ||
Line 251: | Line 285: | ||
|- | |- | ||
! scope="row"| 2 | ! scope="row"| 2 | ||
+ | | RC Car Battery | ||
+ | | Traxxus | ||
+ | | 2 | ||
+ | | $100 | ||
+ | |- | ||
+ | ! scope="row"| 3 | ||
| CAN Transceivers MCP2551-I/P | | CAN Transceivers MCP2551-I/P | ||
| Microchip [http://www.microchip.com/wwwproducts/en/en010405] | | Microchip [http://www.microchip.com/wwwproducts/en/en010405] | ||
| 8 | | 8 | ||
| Free Samples | | Free Samples | ||
+ | |- | ||
+ | ! scope="row"| 4 | ||
+ | | MB1010 LV-MaxSonar | ||
+ | | <Insert Company> | ||
+ | | 4 | ||
+ | | $29.95 | ||
+ | |- | ||
+ | ! scope="row"| 5 | ||
+ | | GPS | ||
+ | | <Insert Company> | ||
+ | | <Insert Amount> | ||
+ | | <Insert Price> | ||
+ | |- | ||
+ | ! scope="row"| 6 | ||
+ | | Compass | ||
+ | | <Insert Company> | ||
+ | | <Insert Amount> | ||
+ | | <Insert Price> | ||
+ | |- | ||
+ | ! scope="row"| 7 | ||
+ | | LCD | ||
+ | | <Insert Company> | ||
+ | | <Insert Amount> | ||
+ | | <Insert Price> | ||
|- | |- | ||
|} | |} | ||
Line 260: | Line 324: | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
== CAN Communication == | == CAN Communication == | ||
<Talk about your message IDs or communication strategy, such as periodic transmission, MIA management etc.> | <Talk about your message IDs or communication strategy, such as periodic transmission, MIA management etc.> | ||
+ | For our CAN communication, we | ||
=== Hardware Design === | === Hardware Design === | ||
Line 273: | Line 333: | ||
=== DBC File === | === DBC File === | ||
− | + | Gitlab DBC File Link [https://gitlab.com/ashley.n.ho/sjtwo-c/-/blob/master/dbc/project.dbc?ref_type=heads] | |
− | |||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
− | == Sensor ECU == | + | |
− | <Picture and | + | == Sensor and Bridge Controller ECU == |
+ | <Picture> | ||
+ | |||
+ | Gitlab Sensor and Bridge Controller Node Link [https://gitlab.com/ashley.n.ho/sjtwo-c/-/tree/master/projects/sensor_node?ref_type=heads] | ||
=== Hardware Design === | === Hardware Design === | ||
Line 293: | Line 355: | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
+ | |||
== Motor ECU == | == Motor ECU == | ||
− | <Picture | + | <Picture> |
+ | |||
+ | Gitlab Motor Node Link [https://gitlab.com/ashley.n.ho/sjtwo-c/-/tree/master/projects/motor_node?ref_type=heads] | ||
=== Hardware Design === | === Hardware Design === | ||
Line 304: | Line 369: | ||
< List of problems and their detailed resolutions> | < List of problems and their detailed resolutions> | ||
+ | |||
+ | The main issue we had with the motor controller occurred during PWM hacking because we did not want the motor running the car too fast. As such, we had to guess and check a good PWM value to run the motor so that the car would move at the slowest speed possible without running into issues where it could not move. However, with continual tests, we managed to identify the ideal range we wanted to run the motor. | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
+ | |||
== Geographical Controller == | == Geographical Controller == | ||
− | <Picture | + | <Picture> |
+ | |||
+ | Gitlab Geo Node Link [https://gitlab.com/ashley.n.ho/sjtwo-c/-/tree/master/projects/geo_node?ref_type=heads] | ||
=== Hardware Design === | === Hardware Design === | ||
Line 323: | Line 393: | ||
<BR/> | <BR/> | ||
− | + | == Driver and LCD Module == | |
− | |||
− | == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | < | + | <Picture> |
− | |||
− | |||
− | + | Gitlab Driver & LCD Node Link [https://gitlab.com/ashley.n.ho/sjtwo-c/-/tree/master/projects/driver_node?ref_type=heads] | |
=== Hardware Design === | === Hardware Design === | ||
Line 350: | Line 406: | ||
=== Technical Challenges === | === Technical Challenges === | ||
− | + | Most of the issues surrounding the driver node occurred after field testing. We found there were some issues regarding how soon the driver made the decision compared to when it received the sensor data. As such, we made adjustments so that, despite the delay, there would be time for the driver to receive the sensor data, identify the correct action to take, and then move the wheels. Overall, our driver node worked as expected once we started field testing due to the multitude of unit tests that were done to ensure proper logic. | |
+ | |||
+ | Additionally, we ran into issues integrating the LCD screen through I2C. The screen's slave address would not get detected, despite the device having the proper connections and power supply. | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
+ | |||
== Mobile Application == | == Mobile Application == | ||
<Picture and link to Gitlab> | <Picture and link to Gitlab> | ||
+ | |||
+ | Gitlab Mobile APp Node Link [https://gitlab.com/ashley.n.ho/sjtwo-c/-/tree/master/mobile_app?ref_type=heads] | ||
=== Hardware Design === | === Hardware Design === | ||
Line 371: | Line 432: | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
+ | |||
== Conclusion == | == Conclusion == | ||
<Organized summary of the project> | <Organized summary of the project> | ||
Line 380: | Line 442: | ||
=== Project Source Code === | === Project Source Code === | ||
− | === | + | Team X Gitlab Link [https://gitlab.com/ashley.n.ho/sjtwo-c/-/tree/master?ref_type=heads] |
− | + | ||
+ | === Advice for Future Students === | ||
+ | *Start early! Order things as soon as you have your team, and keep track of finances for reimbursements | ||
=== Acknowledgement === | === Acknowledgement === | ||
+ | |||
+ | Thank you Preet for the class and for guiding us through the process of building the RC car. | ||
=== References === | === References === | ||
+ | 1. [http://www.handsontec.com/dataspecs/I2C_2004_LCD.pdf LCD Datasheet] | ||
+ | <BR> | ||
+ | 2. [https://controllerstech.com/lcd-20x4-using-i2c-with-stm32/ LCD Display Initialization and Configuration Example Tutorial] | ||
+ | <BR> |
Revision as of 21:35, 27 April 2024
Contents
Project Title
Team X
Abstract
Our main goal of this project was to utilize the knowledge acquired from the lectures in CMPE 243. The report summarizes the overall process taken to develop an autonomous driving RC car using FreeRTOS, various periodic tasks, and the CAN bus to combine and run the different code modules.
Introduction
The project was divided into 5 modules:
- Sensor Node
- Motor Node
- Driver Node
- Geo Node
- Mobile Application
Team Members & Responsibilities
<Team Picture>
Gitlab Project Link [1]
Team Members | Task Responsibility |
---|---|
|
|
|
|
|
|
|
|
Schedule
Week# | Start Date | End Date | Task | Status |
---|---|---|---|---|
1 | 02/19/2024 | 02/25/2024 |
|
|
2 | 02/26/2024 | 03/03/2024 |
|
|
3 | 03/04/2024 | 03/11/2024 |
|
|
4 | 03/18/2024 | 03/24/2024 |
|
|
5 | 03/25/2024 | 03/31/2024 |
|
|
6 | 04/01/2024 | 04/07/2024 |
|
|
7 | 04/08/2024 | 04/14/2024 |
|
|
8 | 04/15/2024 | 04/21/2024 |
|
|
9 | 04/22/2024 | 04/28/2024 |
|
|
10 | 04/29/2024 | 05/05/2024 |
|
|
11 | 05/06/2024 | 05/12/2024 |
|
|
12 | 05/06/2024 | 05/12/2024 |
|
|
13 | 05/13/2024 | 05/19/2024 |
|
|
14 | 05/20/2024 | 05/26/2024 |
|
|
Parts List & Cost
Item# | Part Desciption | Vendor | Qty | Cost |
---|---|---|---|---|
1 | RC Car | Traxxas | 1 | $250.00 |
2 | RC Car Battery | Traxxus | 2 | $100 |
3 | CAN Transceivers MCP2551-I/P | Microchip [2] | 8 | Free Samples |
4 | MB1010 LV-MaxSonar | <Insert Company> | 4 | $29.95 |
5 | GPS | <Insert Company> | <Insert Amount> | <Insert Price> |
6 | Compass | <Insert Company> | <Insert Amount> | <Insert Price> |
7 | LCD | <Insert Company> | <Insert Amount> | <Insert Price> |
CAN Communication
<Talk about your message IDs or communication strategy, such as periodic transmission, MIA management etc.> For our CAN communication, we
Hardware Design
<Show your CAN bus hardware design>
DBC File
Gitlab DBC File Link [3]
Sensor and Bridge Controller ECU
<Picture>
Gitlab Sensor and Bridge Controller Node Link [4]
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>
Gitlab Motor Node Link [5]
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
< List of problems and their detailed resolutions>
The main issue we had with the motor controller occurred during PWM hacking because we did not want the motor running the car too fast. As such, we had to guess and check a good PWM value to run the motor so that the car would move at the slowest speed possible without running into issues where it could not move. However, with continual tests, we managed to identify the ideal range we wanted to run the motor.
Geographical Controller
<Picture>
Gitlab Geo Node Link [6]
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
< List of problems and their detailed resolutions>
Driver and LCD Module
<Picture>
Gitlab Driver & LCD Node Link [7]
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
Most of the issues surrounding the driver node occurred after field testing. We found there were some issues regarding how soon the driver made the decision compared to when it received the sensor data. As such, we made adjustments so that, despite the delay, there would be time for the driver to receive the sensor data, identify the correct action to take, and then move the wheels. Overall, our driver node worked as expected once we started field testing due to the multitude of unit tests that were done to ensure proper logic.
Additionally, we ran into issues integrating the LCD screen through I2C. The screen's slave address would not get detected, despite the device having the proper connections and power supply.
Mobile Application
<Picture and link to Gitlab>
Gitlab Mobile APp Node Link [8]
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
Team X Gitlab Link [9]
Advice for Future Students
- Start early! Order things as soon as you have your team, and keep track of finances for reimbursements
Acknowledgement
Thank you Preet for the class and for guiding us through the process of building the RC car.
References
1. LCD Datasheet
2. LCD Display Initialization and Configuration Example Tutorial