<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Embedded on Mahdi Sarfarazi</title>
    <link>https://mahdisf.ir/tags/embedded/</link>
    <description>Recent content in Embedded on Mahdi Sarfarazi</description>
    <image>
      <title>Mahdi Sarfarazi</title>
      <url>https://mahdisf.ir/images/social-card.png</url>
      <link>https://mahdisf.ir/images/social-card.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Sat, 01 Feb 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://mahdisf.ir/tags/embedded/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Human-following mobile robot</title>
      <link>https://mahdisf.ir/projects/human-follower-mobile-robot/</link>
      <pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://mahdisf.ir/projects/human-follower-mobile-robot/</guid>
      <description>Course project: a four-wheeled robot that follows a person, using on-phone vision and an Arduino motor controller with an ultrasonic safety stop.</description>
      <content:encoded><![CDATA[<p>A course project in which I owned the requirements and the end-to-end build of a small robot that follows a person indoors.</p>
<p><img alt="Diagram: an Android phone sends direction commands over USB serial to an Arduino Uno and L298N motor driver, with an ultrasonic sensor that can stop the robot." loading="lazy" src="/projects/human-follower-mobile-robot/architecture.svg"></p>
<h2 id="what-i-built">What I built</h2>
<p>A Python (Kivy/Buildozer) Android app runs a TensorFlow Lite MobileNet v1 model on the phone to detect and select the person to follow, at roughly 60 frames per second.</p>
<p>The phone sends forward, backward, left, right and stop commands over USB serial to an Arduino Uno, which drives four DC motors through an L298N driver.</p>
<p>An HC-SR04 ultrasonic sensor overrides the vision system. It stops or redirects the robot whenever an obstacle is closer than 1.5 m.</p>
<h2 id="decisions-worth-noting">Decisions worth noting</h2>
<p>I compared a Raspberry Pi with a smartphone as the compute platform, and SAMURAI, YOLOv8 and MobileNet as detectors, choosing on inference efficiency. Running vision on the phone kept the robot&rsquo;s electronics simple and cheap.</p>
<h2 id="limits">Limits</h2>
<p>This was a course prototype. It was not evaluated with a formal protocol, and no code or video is public.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
