<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Computer Vision | Zilin Chen's Homepage</title><link>https://zilin-chen-22.github.io/zilinchen.github.io/tag/computer-vision/</link><atom:link href="https://zilin-chen-22.github.io/zilinchen.github.io/tag/computer-vision/index.xml" rel="self" type="application/rss+xml"/><description>Computer Vision</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 01 Jul 2024 00:00:00 +0000</lastBuildDate><image><url>https://zilin-chen-22.github.io/zilinchen.github.io/media/icon_hu7729264130191091259.png</url><title>Computer Vision</title><link>https://zilin-chen-22.github.io/zilinchen.github.io/tag/computer-vision/</link></image><item><title>Intelligent Autonomous Guided Car</title><link>https://zilin-chen-22.github.io/zilinchen.github.io/blog/intelligent-car/</link><pubDate>Mon, 01 Jul 2024 00:00:00 +0000</pubDate><guid>https://zilin-chen-22.github.io/zilinchen.github.io/blog/intelligent-car/</guid><description>&lt;p>During one of our summer semester course, I led a team of three in designing an autonomous car-shaped vehicle capable of transporting objects from start to finish. The vehicle have integrated advanced features including line-following, obstacle navigation, destination location, and Bluetooth connectivity for remote control.&lt;/p>
&lt;p>I acquired proficiency in utilizing PID control algorithms to fine-tune input parameters for precise motor control. I utilized an STM32 microcontroller for vehicle control and Open MV for image capture (computer vision), trajectory planning, and dynamic output management.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Picture of my group" srcset="
/zilinchen.github.io/blog/intelligent-car/summer_semester_photo_hu14420534038906574668.webp 400w,
/zilinchen.github.io/blog/intelligent-car/summer_semester_photo_hu4045064630173791130.webp 760w,
/zilinchen.github.io/blog/intelligent-car/summer_semester_photo_hu11713117714738198386.webp 1200w"
src="https://zilin-chen-22.github.io/zilinchen.github.io/zilinchen.github.io/blog/intelligent-car/summer_semester_photo_hu14420534038906574668.webp"
width="760"
height="285"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="task">Task&lt;/h2>
&lt;p>Our vehicle is asked to finish two task automatically:&lt;/p>
&lt;ul>
&lt;li>line-following: pick up the stuff and carry it, move along the line and then place the stuff down at the end point&lt;/li>
&lt;li>path-finding: knowing the start-point and the end-point absolute position in the real world, but have a lot of obstacles in the path. The vehicle is asked to plan a suitable way for itself to find the end and put the stuff down.&lt;/li>
&lt;/ul>
&lt;h3 id="hardware">Hardware&lt;/h3>
&lt;p>We use STM32 as the main controller, controlling all the motors, servos, and send and grab data from bluetooth, openMV and Gyro (We use JY901S).&lt;/p>
&lt;div style="text-align: center;">
&lt;img src="stm32.png" alt="STM32 connect" style="width: 50%;">
&lt;/div>
&lt;p>In the main function, read OpenMV, Bluetooth, and IMU data in a loop with 5ms as one unit. One loop takes 20ms (the remaining 5ms is used to process all the above data). Refresh motor and servo control data in each loop.&lt;/p>
&lt;p>Detail issues:&lt;/p>
&lt;ul>
&lt;li>Interrupt conflict: prioritize encoder interrupt to ensure PID stability.&lt;/li>
&lt;li>Abnormal data: retain the last received data without refreshing.&lt;/li>
&lt;li>Check bit: avoid incorrect vehicle state control caused by accidental error transmission of data, enhance fault tolerance.&lt;/li>
&lt;/ul>
&lt;h3 id="line-following">Line following&lt;/h3>
&lt;p>The vehicle can follow the line automatically. Here is an video when we are still testing:&lt;/p>
&lt;div style="text-align: center;">
&lt;video src="car_line.mp4" controls="controls" width="50%">
您的浏览器不支持视频标签。
&lt;/video>
&lt;/div>
&lt;p>&lt;a href="https://zilin-chen-22.github.io/zilinchen.github.io/blog/intelligent-car/car_line.mp4" target="_blank" rel="noopener">Click here&lt;/a> if not working.&lt;/p>
&lt;h3 id="path-finding">Path Finding&lt;/h3>
&lt;p>Here is one video while testing:&lt;/p>
&lt;div style="text-align: center;">
&lt;video src="obstacles.mp4" controls="controls" width="50%">
您的浏览器不支持视频标签。
&lt;/video>
&lt;/div>
&lt;p>&lt;a href="https://zilin-chen-22.github.io/zilinchen.github.io/blog/intelligent-car/obstacles.mp4" target="_blank" rel="noopener">Click here&lt;/a> if not working.&lt;/p>
&lt;p>Here is another one:&lt;/p>
&lt;div style="text-align: center;">
&lt;video src="obstacles2.mp4" controls="controls" width="50%">
您的浏览器不支持视频标签。
&lt;/video>
&lt;/div>
&lt;p>&lt;a href="https://zilin-chen-22.github.io/zilinchen.github.io/blog/intelligent-car/obstacles2.mp4" target="_blank" rel="noopener">Click here&lt;/a> if not working.&lt;/p></description></item></channel></rss>