{"id":310,"date":"2025-03-30T00:52:20","date_gmt":"2025-03-30T00:52:20","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/?p=310"},"modified":"2025-03-30T03:26:09","modified_gmt":"2025-03-30T03:26:09","slug":"teams-status-report-for-3-29","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/2025\/03\/30\/teams-status-report-for-3-29\/","title":{"rendered":"Team Status Report for 3\/29"},"content":{"rendered":"<h4>Risks<\/h4>\n<ul>\n<li>Chunked image upload:<span style=\"font-weight: 400\"> The chunked image upload process is fairly complicated because we\u2019re implementing it from scratch. While we considered S3 multipart upload, it wasn\u2019t suitable for our file sizes. This approach introduces more moving parts, including chunk splitting, metadata tracking, individual uploads, and image assembly. While this complexity increases the potential for issues (e.g., missing chunks, incorrect assembly), we&#8217;ve developed a solid design for the image upload protocol this week (details in <\/span><a href=\"https:\/\/github.com\/BingchengLi\/plate-patrol-aws-central-server\/pull\/11\"><span style=\"font-weight: 400\">PR description<\/span><\/a><span style=\"font-weight: 400\">) and got the basic structure in place. The focus next week will be on thoroughly testing and debugging to minimize risks and ensure reliability before integration.<\/span><\/li>\n<li style=\"font-weight: 400\">Power supply integration:<span style=\"font-weight: 400\"> Integrating our uninterruptible power supply (UPS) with car cigarette lighter power sources presents potential challenges, as the UPS currently operates reliably only from stable stationary power outlets. We have procured an adapter and an additional cigarette lighter wiring adapter specifically for testing purposes. Before any on-road implementation, we plan extensive lab testing to verify functionality, stability, and safety under simulated automotive conditions. This cautious approach aims to mitigate risks associated with unstable voltage, unexpected power fluctuations, or hardware incompatibility when connecting to a vehicle\u2019s power system.<\/span><\/li>\n<\/ul>\n<h4>Changes<\/h4>\n<ul>\n<li style=\"font-weight: 400\">GPS module:<span style=\"font-weight: 400\"> We changed the GPS module from Adafruit Automate GPS to Sparkfun GPS RTK according to Professor Tamal\u2019s recommendation.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\">Image upload protocol:<span style=\"font-weight: 400\"> We realized that Blues Notehub\u2019s 8KB file size limit requires us to use chunked uploads for images (~45KB). Originally, we implemented S3 pre-signed URLs for full image uploads, but that approach wouldn\u2019t work with the size limitations. As a result, we\u2019re implementing the chunked image upload process from scratch.\u00a0<\/span><\/li>\n<li>Partial match instead of message queue:<span style=\"font-weight: 400\"> Instead of implementing a message queue in the watchlist query server for asynchronous processing, we are prioritizing local filtering (partial matching) on the dashcam for now since this approach can more directly reduce bandwidth consumption and server load. By performing partial matching directly on the dashcam, we can simplify server-side operations, minimize data transmission, and enable faster, more efficient processing at the edge. The dashcam will locally store a synced watchlist and perform partial matches (e.g., comparing the first few characters of license plates) before sending only the relevant matches to the server. We still need to figure out the best way for the dash cam to sync with the server.<\/span><\/li>\n<\/ul>\n<h4>Schedule<\/h4>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-330\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-content\/uploads\/sites\/344\/2025\/03\/Screenshot-2025-03-29-at-11.25.34\u202fPM-300x197.png\" alt=\"\" width=\"452\" height=\"297\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-content\/uploads\/sites\/344\/2025\/03\/Screenshot-2025-03-29-at-11.25.34\u202fPM-300x197.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-content\/uploads\/sites\/344\/2025\/03\/Screenshot-2025-03-29-at-11.25.34\u202fPM-768x505.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-content\/uploads\/sites\/344\/2025\/03\/Screenshot-2025-03-29-at-11.25.34\u202fPM-1024x673.png 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-content\/uploads\/sites\/344\/2025\/03\/Screenshot-2025-03-29-at-11.25.34\u202fPM.png 1668w\" sizes=\"(max-width: 452px) 100vw, 452px\" \/><\/p>\n<h4>Pics!<\/h4>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-313\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-content\/uploads\/sites\/344\/2025\/03\/IMG_2481-225x300.jpeg\" alt=\"\" width=\"225\" height=\"300\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-content\/uploads\/sites\/344\/2025\/03\/IMG_2481-225x300.jpeg 225w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-content\/uploads\/sites\/344\/2025\/03\/IMG_2481-768x1024.jpeg 768w\" sizes=\"(max-width: 225px) 100vw, 225px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Risks Chunked image upload: The chunked image upload process is fairly complicated because we\u2019re implementing it from scratch. While we considered S3 multipart upload, it wasn\u2019t suitable for our file sizes. This approach introduces more moving parts, including chunk splitting, metadata tracking, individual uploads, and image assembly. While this complexity increases the potential for issues &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/2025\/03\/30\/teams-status-report-for-3-29\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Team Status Report for 3\/29&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1047,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[4],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/posts\/310"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/users\/1047"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/comments?post=310"}],"version-history":[{"count":10,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/posts\/310\/revisions"}],"predecessor-version":[{"id":331,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/posts\/310\/revisions\/331"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/media?parent=310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/categories?post=310"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamb2\/wp-json\/wp\/v2\/tags?post=310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}