S22: Testla
Contents
Testla
<Group Pic>
Abstract
The Testla project is the culmination of our efforts to create an autonomously operated RC Car by pooling together our experience in software design, hardware design, power systems, and mobile application development. Project development started in February of 2022 and ended in May. (NOTE: One more sentence probably)
Introduction
The project was divided into 5 modules:
- Bridge and Sensor Information
- Motor Operation
- Geological Information
- Driver and LCD Manager
- Android Application
Team Members & Responsibilities
- Devin Alexander Gitlab
- Project Lead Meeting Organizer
- Driver Controller
- Geographical Controller
- Scott LoCascio Gitlab
- Geographical Controller
- Car Construction
- Testing?
- Thinh Lu Gitlab
- Android Application
- Sensor and Bridge Controller
- Bang Nguyen --couldn't find your gitlab
- Sensor and Bridge Controller
- LCD Display
- Michael Hatzikokolakis Gitlab
- Motor Controller
- Android Application
- Sinan Bayati Gitlab
- PCB Design
- Motor Controller
Schedule
Week # | Start Date | End Date | Task | Status |
---|---|---|---|---|
1 | 2/15/2022 | 2/21/2022 | Read previous projects, gather information and discuss among the group members. | Complete |
2 | 2/22/2022 | 2/28/2022 | Distribute modules to each team member. | Complete |
3 | 3/1/2022 | 3/7/2022 | Purchase the RC Car Purchase sensors |
Complete |
4 | 3/8/2022 | 3/14/2022 | Learning to use CAN BUSMASTER | Complete |
5 | 3/15/2022 | 3/21/2022 | DBC file discussed and implemented | Complete |
6 | 3/22/2022 | 3/28/2022 | Discuss modules needed for PCB, any feature requests | Complete |
7 | 3/29/2022 | 4/4/2022 | Finalize preparations and research | Complete |
8 | 4/5/2022 | 4/11/2022 | Interface with RC car and hack steering and motor Integrate the GEO sensor with the GEO controller Complete the Driver sensor using analog readings Write a basic implementation of the sensor controller Interface ESP8266 for bridge controller Begin testing with single vs dual power supplies |
Complete |
9 | 4/12/2022 | 4/18/2022 | Install wheel encoder, implement, implement PID into velocity processing, and establish collaboration between the Motor and Sensor Controllers Test alternate sonar sensor (I2C) Configure GPS to run at 10Hz, 115200 baud and only parse $GPGGA strings on startup Integrate compass Setup NodeJS server to communicate with the Bridge controller via TCP/IP Start Mobile Application development. Finalize power supply choice Finish PCB designs for each subsystem |
In Progress |
10 | 4/19/2022 | 4/25/2022 | Finish 1st vehicle prototype - include PCBs if possible Complete basic mobile application Write various motor test routines to define in mobile application Verify timing and correctness of GEO controller messages. Produce debug messages for Geo controller Generate debug messages for all controllers. Finalize sensor choice and complete integration of all three sensors. |
Incomplete |
11 | 4/26/2022 | 5/2/2022 | Identify first PCB design inefficiencies/failures and submit the second and final draft for production Thoroughly test the motor's performance on sloped terrain and refine PID controller Test message timing and propagation with Bus Master Improve existing navigation algorithm with state estimation and localization Integration testing Driver controller with Mobile App |
Incomplete |
12 | 5/3/2022 | 5/9/2022 | Finished mobile application More testing, update schedule as needed |
Incomplete |
13 | 5/10/2022 | 5/16/2022 | Final prototype complete | Incomplete |
14 | 5/17/2022 | 5/25/2022 | Last tests | Incomplete |
Parts List & Cost
Item# | Part Desciption | Vendor | Qty | Cost |
---|---|---|---|---|
1 | Unassembled RC Car | Traxxas [1] | 1 | $279.99 |
2 | CAN Transceivers | Amazon [2] | 1 | $8.99 |
2 | CAN Transceivers | Amazon [3] | 1 | $8.99 |
2 | CAN Transceivers | Amazon [4] | 1 | $8.99 |
2 | CAN Transceivers | Amazon [5] | 1 | $8.99 |
2 | CAN Transceivers | Amazon [6] | 1 | $8.99 |
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
<Gitlab link to your DBC file> DBC 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 MOTOR SENSOR BO_ 100 DRIVER_HEARTBEAT: 3 DRIVER SG_ DRIVER_HEARTBEAT_cmd : 0|8@1+ (1,0) [0|0] "" DBG BO_ 110 DRIVER_STEERING: 3 DRIVER SG_ DRIVER_STEERING_yaw : 0|12@1+ (0.001,-2) [-2|2] "radians" MOTOR SG_ DRIVER_STEERING_velocity : 12|12@1+ (0.01,0) [0|40] "kph" MOTOR BO_ 120 MOTOR_HEARTBEAT: 2 MOTOR SG_ MOTOR_HEARTBEAT_cmd : 0|8@1+ (1,0) [0|0] "" DBG SG_ MOTOR_HEARTBEAT_encoder : 8|8@1+ (1,0) [0|0] "" DBG BO_ 130 MOTOR_ACK: 1 MOTOR SG_ MOTOR_ACK_cmd : 0|8@1+ (1,0) [0|0] "" DRIVER BO_ 200 SENSOR_SONARS: 8 SENSOR SG_ SENSOR_SONARS_left : 0|10@1+ (1,0) [0|800] "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_back : 30|10@1+ (1,0) [0|0] "inch" DRIVER SG_ SENSOR_SONARS_frame_id : 42|16@1+ (1,0) [0|0] "" DRIVER BO_ 210 GPS_DESTINATION_LOCATION: 8 SENSOR SG_ GPS_DEST_LATITUDE : 0|28@1+ (0.000001,-90.000000) [-90|90] "Degrees" GEO SG_ GPS_DEST_LONGITUDE : 28|28@1+ (0.000001,-180.000000) [-180|180] "Degrees" GEO BO_ 220 GEO_STATUS: 8 GEO SG_ GEO_STATUS_COMPASS_HEADING : 0|12@1+ (1,0) [0|359] "Degrees" DRIVER SG_ GEO_STATUS_COMPASS_BEARING : 12|12@1+ (1,0) [0|359] "Degrees" DRIVER SG_ GEO_STATUS_DISTANCE_TO_DESTINATION : 24|16@1+ (0.1,0) [0|0] "Meters" 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
The Geographical controller is responsible for determining the position of the vehicle as well as the distance and bearing to desired destination.
Hardware Design
An Adafruit Ultimate GPS breakout module using the MTK3339 chipset is interfaced over UART to the Geographical controller to provide latitude and longitude updates.
TODO: interface and explain compass
Software Design
On startup the GPS module is initialized to provide updates at 10Hz with a 115200 baud rate. Additionally, the Bridge and Sensor controller sends a desired latitude and longitude to the Geo controller over the CAN bus.
The desired and current position are used to calculate a distance and bearing using the haversine formula shown below.
Moveable Type Scripts: Calculate distance, bearing and more between Latitude/Longitude points
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
<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>