{"id":40035,"date":"2021-02-04T20:39:56","date_gmt":"2021-02-04T12:39:56","guid":{"rendered":"\/blog\/?p=40035"},"modified":"2021-02-04T20:40:00","modified_gmt":"2021-02-04T12:40:00","slug":"raspberry-pi-line-following-robot","status":"publish","type":"post","link":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/","title":{"rendered":"Build a Raspberry Pi Line Following Robot!"},"content":{"rendered":"\n<p>Today, we&#8217;re going to show you how to get started with the popular line following robot project with your Raspberry Pi SBC and Grove, step by step for beginners!<\/p>\n\n\n\n<p>A line following robot is a robot which is capable of following a path that is predefined by a line on the ground. Although there are many ways to achieve line following in a robot, the most basic ones use infrared (IR) sensors to help the robot keep track of the line.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1030\" height=\"601\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2021\/01\/8-1030x601.png\" alt=\"\" class=\"wp-image-40047\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-1030x601.png 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-300x175.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-768x448.png 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-1536x896.png 1536w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-2048x1195.png 2048w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-1024x597.png 1024w\" sizes=\"(max-width: 1030px) 100vw, 1030px\" \/><\/figure>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Make Line Following Robots?<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>While this project is for beginners, don\u2019t look down on the capabilities of a self-navigating robot. Today, these robots are used widely for logistics purposes in stores, warehouses and industries. Even big companies like Amazon use robots for their warehouses, saving costs and creating safer working environments!<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Inside Amazon&#039;s Smart Warehouse\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/IMPbKVb8y8s?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>While industry-standard robots are surely more advanced than the one we are creating today, make no mistake &#8211; this is a great place to start!<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Line Following Robot Projects<\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>The fact that there are so many tutorials for making line following robots is testament to just how interesting and educational this project is! For example, take a look at this line following robot created by Circuit Digest.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2021\/02\/Raspberry-pi-line-follower-robot-2.jpg\" alt=\"\" class=\"wp-image-40413\" width=\"565\" height=\"404\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/02\/Raspberry-pi-line-follower-robot-2.jpg 650w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/02\/Raspberry-pi-line-follower-robot-2-300x215.jpg 300w\" sizes=\"(max-width: 565px) 100vw, 565px\" \/><figcaption>Source: <a href=\"https:\/\/circuitdigest.com\/microcontroller-projects\/raspberry-pi-line-follower-robot\">CircuitDigest<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>How about this one by Aarav G on Instructables?<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2021\/02\/F6QWVL2JGGTIBK9.jpg.png\" alt=\"\" class=\"wp-image-40409\" width=\"538\" height=\"404\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/02\/F6QWVL2JGGTIBK9.jpg.png 1024w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/02\/F6QWVL2JGGTIBK9.jpg-300x225.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/02\/F6QWVL2JGGTIBK9.jpg-768x576.png 768w\" sizes=\"(max-width: 538px) 100vw, 538px\" \/><figcaption>Source: <a href=\"https:\/\/www.instructables.com\/Line-Follower-Robot-Using-Arduino-2\/\">Instructables<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>Yet, one thing&#8217;s for certain &#8211; that&#8217;s a lot of wiring for a beginner project! If you&#8217;re keen to build your very own line following robot but have been kept away by the hardware, we&#8217;ve got the right solution for you today.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Building with Grove Ecosystem<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>We can simplify the hardware building process greatly if we use the Raspberry Pi with it&#8217;s Grove Base Hat!<\/p>\n\n\n\n<p>Grove is a modular and easy-to-use electronics connection interface. With plug-and-play capabilities and <a href=\"https:\/\/wiki.seeedstudio.com\/Grove\/\">extensive documentation<\/a>, Grove is an easy way to get started with electronics projects for beginners! You can read more about Grove <a href=\"https:\/\/www.seeedstudio.com\/category\/Grove-c-1003.html\">here<\/a>.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>To follow along with our tutorial, we recommend the following parts:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>1x <a href=\"https:\/\/www.seeedstudio.com\/Raspberry-Pi-4-Computer-Model-B-4GB-p-4077.html\">Raspberry Pi 4B 4GB<\/a><\/li><li>1x <a href=\"https:\/\/www.seeedstudio.com\/Grove-Base-Hat-for-Raspberry-Pi.html\">Grove Base Hat for Raspberry Pi<\/a><\/li><li>1x <a href=\"https:\/\/www.seeedstudio.com\/Grove-I2C-Motor-Driver-L298P-p-4534.html\">Grove &#8211; I2C Motor Driver (L298P)<\/a><\/li><li>2x <a href=\"https:\/\/www.seeedstudio.com\/Grove-Infrared-Reflective-Sensor-v1-2.html\">Grove &#8211; Infrared Reflective Sensor v1.2<\/a><\/li><li>2x <a href=\"https:\/\/www.seeedstudio.com\/TT-Motor-Dual-output-shaft-1-48-p-4128.html\">TT Motor Dual output shaft (1:48)<\/a><\/li><li>2x <a href=\"https:\/\/www.seeedstudio.com\/Robotcars-Wheel-65mm-TT-Motor-p-4244.html\">Robot cars Wheel-65mm-TT Motor<\/a><\/li><li>1x <a href=\"https:\/\/www.seeedstudio.com\/18650-Battery-Holder-Case-2-Slot-with-Switch-p-4160.html\">18650 Battery Holder Case &#8211; 2 Slot with Switch<\/a><\/li><li><a href=\"https:\/\/www.seeedstudio.com\/Breadboard-Jumper-Wire-Pack-200mm-100m-p-1032.html\">Some dual male jumper wires<\/a><\/li><\/ul>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Finally, you\u2019ll want to get yourself a chassis, which will serve as the robot&#8217;s &#8216;body&#8217; and house the electrical components!<\/p>\n\n\n\n<p>Note: If this is your first time working with a Raspberry Pi SBC, we recommend you get started with <a href=\"https:\/\/wiki.seeedstudio.com\/Raspberry_Pi_3_Model_B\/\">this Seeed Wiki page<\/a> first. It will take you through the setup process so that you&#8217;ll be ready to follow along with the rest of this tutorial!<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How does an IR Line Following Robot work?<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Let\u2019s look at the parts and concepts behind what\u2019s going to make our robot work, starting from the IR sensors.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Introduction to IR Sensor<\/strong>s<\/h3>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>An IR sensor consists of an IR transmitter (IR LED) and an IR receiver (a photodiode). The transmitter will produce infrared light, whereas the receiver will wait to receive the light when or if it has been reflected by a surface.<\/p>\n\n\n\n<p>White surfaces will reflect the IR light just fine. However, since black surfaces will absorb the IR light, the receiver will not receive the reflection. This allows us to use the IR sensor to distinguish between white and black surfaces &#8211; such as when the sensor is on or off a line. Great!<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/czLNSdAygwA2pci2qcce9f7z6oABD2kZwPj63T90teCnnF3XKrvp_uBZunuZh7LY4IyQeDpNVBvizrYHgr_Ahqrl1v3NAZlaI_Nl_zx0A0HGcoc3mJFzKrFM8nar1PcUivkgGaPW\" alt=\"\" width=\"350\" height=\"263\" \/><figcaption><a href=\"https:\/\/www.seeedstudio.com\/Grove-Infrared-Reflective-Sensor-v1-2.html\">Grove &#8211; Infrared Reflective Sensor v1.2<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Following Paths with 2 IR Sensors<\/strong><\/h3>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>To follow our line, we will need two IR sensors, placed on each side of the line. When both IR sensors are not on the line, our robot will simply go straight.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/6JOqh5auCX4yElu_4NKTPv4Ky1t9bSUyKRoBKMSRjm0uAH3swC1YCXGzy-6QU1SRikdxsJGAYm1Kf_M6d6nlns4UO8R-_8Vl4Ln3-ZPZnVMSPK43GgZra36NdatSDA2BjsPqAc2g\" alt=\"\" \/><\/figure>\n\n\n\n<p>When one sensor is on the line while the other is not, we will have to tell the robot to turn in the direction of the first sensor. For example, when the left IR sensor detects the line but the right one does not, we will want the robot to turn left so that we stay on the line, and vice versa.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Schematic and Outline<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Now that we know how the robot will follow its line, we have to fill in the gaps between the sensor data and the robot\u2019s motion. Let\u2019s first look at the schematic below.<\/p>\n\n\n\n<p>At the center of our robot is the Raspberry Pi, which will essentially serve as our \u2018brain\u2019. It will receive the data from the two sensors, then issue controls to the two motors through a motor driver to achieve our desired movement.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/1doqJD-suToB4yulrg1nDVbVbwdlt9Ai4UppeLuLxpC5MNuTZGwUFWzguxZzEbcWDIWtu40t7U2fKTb5C7QrLUfATryP8ohzvxq-7j5VWAbyRzEZ9CNXcAWFINPZpmBP61Ve5TOx\" alt=\"\" width=\"800\" height=\"465\" \/><\/figure><\/div>\n\n\n\n<p>A motor driver is necessary since the Raspberry Pi\u2019s GPIO pins can only output a maximum of 5V. If we want to have more torque in our motors to allow our robot to carry heavier loads, we will need more power.<\/p>\n\n\n\n<p>In short, the motor driver allows us to receive controls from the Raspberry Pi while powering our motors from another more powerful power source. It will also allow our motors to operate bi-directionally &#8211; meaning a single wheel can move both forwards and backwards &#8211; what we need to change direction!<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Motor Control and Movement<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>To tell our robot to move left or right, we have to issue a combination of commands to each of the motors. The combination of individual wheel directions and their resulting motion are shown below &#8211; You can experiment and verify this for yourself!<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Left<\/strong><\/td><td><strong>Right<\/strong><\/td><td><strong>Resulting Movement<\/strong><\/td><\/tr><tr><td>Forward<\/td><td>Backward<\/td><td>Turn Right<\/td><\/tr><tr><td>Backward<\/td><td>Forward<\/td><td>Turn Left<\/td><\/tr><tr><td>Forward<\/td><td>Forward<\/td><td>Go Straight<\/td><\/tr><tr><td>Backward<\/td><td>Backward<\/td><td>Reverse<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Let\u2019s Wire our Robot Up!<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Now that all the theory is out of the way, let\u2019s begin constructing our line following robot! If you\u2019ve picked up all the items we\u2019ve recommended, you can directly follow the schematic below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1030\" height=\"601\" src=\"https:\/\/blog.seeedstudio.com\/wp-content\/uploads\/2021\/01\/Copy-of-Clean-10-1030x601.png\" alt=\"\" class=\"wp-image-40036\" srcset=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/Copy-of-Clean-10-1030x601.png 1030w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/Copy-of-Clean-10-300x175.png 300w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/Copy-of-Clean-10-768x448.png 768w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/Copy-of-Clean-10-1536x896.png 1536w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/Copy-of-Clean-10-2048x1195.png 2048w, https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/Copy-of-Clean-10-1024x597.png 1024w\" sizes=\"(max-width: 1030px) 100vw, 1030px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Take note!<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>The Grove base hat will sit on top of the Raspberry Pi and enable us to connect to our grove accessories.<\/li><li>Ensure that the batteries used have sufficient voltage to drive our motors. For a complete guide, visit our <a href=\"https:\/\/blog.seeedstudio.com\/blog\/2021\/01\/20\/guide-to-batteries-for-embedded-devices\/\">Guide: Batteries for Embedded Devices<\/a>.<\/li><li>Take note of the Grove connections with the hat! In the schematic above, the IR sensors are connected to our D16 and D18 digital connections, while our motor driver is connected to the I2C connection.<\/li><li>Ensure that the two IR sensors are facing towards the ground! Also be sure to leave enough space between them to accommodate the width of your line.<\/li><li>Remember to make power considerations for your Raspberry Pi too! A typical USB power bank should do the trick.<\/li><\/ul>\n\n\n\n<p>We look forward to seeing what kind of line following robot you will create, so have fun with the form factor of your robot while constructing!<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What about Software?<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Of course, our robot won\u2019t magically work just on hardware alone &#8211; It\u2019s now time to work with our Raspberry Pi!<\/p>\n\n\n\n<p>We will use Python to programme the behaviour of our robot. Fortunately, since we are using the Grove ecosystem, we also have the convenient <a href=\"https:\/\/github.com\/Seeed-Studio\/grove.py\/blob\/master\/doc\/README.md\">Grove Python library<\/a> to work with.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>First, install the Grove library on your Raspberry Pi through its command line interface (CLI):<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/Seeed-Studio\/grove.py\ncd grove.py\nsudo .\/install.sh<\/code><\/pre>\n\n\n\n<p>Then, we have the code for the main program as follows. You can create a python file (.py extension) with your favourite text or code editor.<\/p>\n\n\n\n<p>If you\u2019re new to programming, all that\u2019s going on in our code is simply what we\u2019ve already discussed so far in theory &#8211; reading in our IR sensor data and controlling the motors accordingly!<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from grove.gpio.gpio_rpi import GPIO\nfrom grove.grove_i2c_motor_driver import MotorDriver\n&nbsp;\nGPIO.setwarnings(False)\nGPIO.setmode(GPIO.BCM)\n&nbsp;\nLeft_IR = GPIO(16, direction = GPIO.IN) #GPIO 16 -&gt; Left IR out\nRight_IR = GPIO(18,direction = GPIO.IN) #GPIO 18 -&gt; Right IR out\n&nbsp;\n# Initialise our motor driver controls\nmotor = MotorDriver()\n&nbsp;\nwhile 1:\n&nbsp;&nbsp;&nbsp;if(GPIO.read(16)==True and GPIO.read(18)==True): #both forward&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MotorDriver.set_dir(clock_wise1 = True, clock_wise2 = True)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MotorDriver.set_speed(speed1 = 80, speed2 = 80)\n&nbsp;\n&nbsp;&nbsp;&nbsp;elif(GPIO.read(16)==False and GPIO.read(18)==True): #turn left&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MotorDriver.set_dir(clock_wise1 = False, clock_wise2 = True)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MotorDriver.set_speed(speed1 = 50, speed2 = 50)\n&nbsp;\n&nbsp;&nbsp;&nbsp;elif(GPIO.read(2)==True and GPIO.read(3)==False): #turn right\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MotorDriver.set_dir(clock_wise1 = True, clock_wise2 = False)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MotorDriver.set_speed(speed1 = 50, speed2 = 50)\n&nbsp;\n&nbsp;&nbsp;&nbsp;else:&nbsp; #stop\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MotorDriver.set_speed(speed1 = 0, speed2 = 0)<\/code><\/pre>\n\n\n\n<p><strong>Note:<\/strong> Be sure to change the GPIO pin numbers according to how you have plugged in your IR sensors. You may also have to tinker around with the motor directions depending on how you hooked your robot up.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Now that our programme is ready to run, simply run your python file with your own file path with the following command. I\u2019ve named my python file linefollower.py, but you can choose whatever you like and run it like below.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>python &lt;file_path&gt;\/linefollower.py<\/code><\/pre>\n\n\n\n<p>You can stop the program with Control + C on your keyboard.<\/p>\n\n\n\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Remote Controlling our Raspberry Pi<\/strong><\/h3>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>At this point, your Raspberry Pi has probably already been installed onto your robot. This can make it difficult to hook it up to use with a monitor, mouse and keyboard. If you have to troubleshoot your code back and forth on your Raspberry Pi, it can be much more convenient to use an SSH connection over WiFi to control your program.<\/p>\n\n\n\n<p>With SSH, we can even edit our python code by using a CLI text editor like nano:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano &lt;path&gt;\/&lt;filename&gt;.py<\/pre>\n\n\n\n<p>Visit our <a href=\"https:\/\/blog.seeedstudio.com\/wp-admin\/post.php?post=39915&amp;action=edit\">3 Methods to Configure WiFi on the Raspberry Pi tutorial<\/a> for more.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Testing Our Line Following Robot<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>This is the moment you\u2019ve been waiting for! Set up your own track with some black tape on the floor and watch your robot go!<\/p>\n\n\n\n<p>Don\u2019t worry if it doesn\u2019t work on the first try &#8211; troubleshooting and solving problems is probably one of the most important experiences of making your own robot!<\/p>\n\n\n\n<p>You can also explore other ways to improve your robot\u2019s line following abilities, such as adjusting your motor output values.<\/p>\n\n\n\n<p>While I unfortunately do not have the materials to build the robot, here\u2019s a wonderful demonstration by CircuitDigest of what the end-product should look like.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Raspberry Pi Line Following Robot\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/nFA4NrdBEEI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>In this article, we\u2019ve covered how to build your very own line following robot, going all the way from concepts and schematics to the hardware and software implementations. We hope you had fun following along with our tutorial!<\/p>\n\n\n\n<p>For beginners who want to learn more about the Raspberry Pi and other robotics projects, please visit:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.seeedstudio.com\/blog\/2020\/06\/11\/28-raspberry-pi-linux-commands-a-quick-guide-to-use-the-command-line-for-raspberry-pi-m\/\">28 Raspberry Pi Linux Commands: A Quick Guide to Use the Command Line for Raspberry Pi<\/a><\/li><li><a href=\"https:\/\/blog.seeedstudio.com\/blog\/2020\/01\/22\/how-to-build-a-raspberry-pi-robot-kits-and-projects-to-get-started\/\">How to build a Raspberry Pi Robot? Kits and Projects to get started<\/a><\/li><li><a href=\"https:\/\/www.seeedstudio.com\/blog\/2019\/09\/29\/top-20-best-raspberry-pi-4-projects-that-you-must-try-now\/\">Top 35 Raspberry Pi 4 Projects That You Must Try Now<\/a><\/li><\/ul>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Advanced Robotic Navigation &#8211; LiDAR and SLAM<\/strong><\/h2>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Although a line following robot will work perfectly for some cases, advanced robotic designs work away from this design since it can be costly to build line paths, especially in large factories.<\/p>\n\n\n\n<p>In those cases, we can use a technique known as SLAM (or Simultaneous Localisation and Mapping). By using a LiDAR (or Light Detection &amp; Ranging) sensor, our robot will build a 3D map of the world around it, figure out its position, and identify a path towards its destination.<\/p>\n\n\n\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>If this sounds exciting to you, be sure to check out some of our LiDAR and SLAM articles!<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/blog.seeedstudio.com\/blog\/2019\/12\/31\/what-is-a-lidar-sensor-technology-uses-projects\/\">What is a LiDAR Sensor? \u2013 Technology, Uses, Projects<\/a><\/li><li><a href=\"https:\/\/blog.seeedstudio.com\/blog\/2020\/01\/08\/what-is-a-time-of-flight-sensor-and-how-does-a-tof-sensor-work\/\">What is a Time of Flight Sensor and How does a ToF Sensor work?<\/a><\/li><li><a href=\"https:\/\/blog.seeedstudio.com\/blog\/2018\/11\/09\/rplidar-and-ros-the-best-way-to-learn-robot-and-slam\/\">RPLIDAR and ROS programming &#8211; The Best Way to Build Robot<\/a><\/li><\/ul>\n\n\n\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>For background knowledge, you may be interested to read the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Simultaneous_localization_and_mapping\">Simultaneous localization and mapping &#8211; Wikipedia<\/a><\/li><li><a href=\"https:\/\/aethon.com\/our-navigation-methodology-explained\/\">Self-Driving Robot Navigation Methodology Explained &#8211; Aethon<\/a><\/li><\/ul>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Today, we&#8217;re going to show you how to get started with the popular line following<\/p>\n","protected":false},"author":3537,"featured_media":40047,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[247,1450,1086],"class_list":["post-40035","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-raspberry-pi","tag-raspberry-pi-4","tag-robotics"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Build a Raspberry Pi Line Following Robot! - Latest News from Seeed Studio<\/title>\n<meta name=\"description\" content=\"Learn how to build your very own Raspberry Pi line following robot! Powered by the beginner friendly Grove ecosystem and complete with schematics and code.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build a Raspberry Pi Line Following Robot! - Latest News from Seeed Studio\" \/>\n<meta property=\"og:description\" content=\"Learn how to build your very own Raspberry Pi line following robot! Powered by the beginner friendly Grove ecosystem and complete with schematics and code.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/\" \/>\n<meta property=\"og:site_name\" content=\"Latest News from Seeed Studio\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-04T12:39:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-04T12:40:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png\" \/>\n\t<meta property=\"og:image:width\" content=\"3000\" \/>\n\t<meta property=\"og:image:height\" content=\"1750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jonathan Tan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Tan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/\",\"name\":\"Build a Raspberry Pi Line Following Robot! - Latest News from Seeed Studio\",\"isPartOf\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png\",\"datePublished\":\"2021-02-04T12:39:56+00:00\",\"dateModified\":\"2021-02-04T12:40:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61e29862da8741ee517eacd92f4cd094\"},\"description\":\"Learn how to build your very own Raspberry Pi line following robot! Powered by the beginner friendly Grove ecosystem and complete with schematics and code.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#primaryimage\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png\",\"contentUrl\":\"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png\",\"width\":3000,\"height\":1750},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.seeedstudio.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build a Raspberry Pi Line Following Robot!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#website\",\"url\":\"https:\/\/www.seeedstudio.com\/blog\/\",\"name\":\"Latest News from Seeed Studio\",\"description\":\"Emerging IoT, AI and Autonomous Applications on the Edge\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61e29862da8741ee517eacd92f4cd094\",\"name\":\"Jonathan Tan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d8dd1a4a7882386e8818e110c9322897?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d8dd1a4a7882386e8818e110c9322897?s=96&r=g\",\"caption\":\"Jonathan Tan\"},\"url\":\"https:\/\/www.seeedstudio.com\/blog\/author\/jonathan-tan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Build a Raspberry Pi Line Following Robot! - Latest News from Seeed Studio","description":"Learn how to build your very own Raspberry Pi line following robot! Powered by the beginner friendly Grove ecosystem and complete with schematics and code.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/","og_locale":"en_US","og_type":"article","og_title":"Build a Raspberry Pi Line Following Robot! - Latest News from Seeed Studio","og_description":"Learn how to build your very own Raspberry Pi line following robot! Powered by the beginner friendly Grove ecosystem and complete with schematics and code.","og_url":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/","og_site_name":"Latest News from Seeed Studio","article_published_time":"2021-02-04T12:39:56+00:00","article_modified_time":"2021-02-04T12:40:00+00:00","og_image":[{"width":3000,"height":1750,"url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png","type":"image\/png"}],"author":"Jonathan Tan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jonathan Tan","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/","url":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/","name":"Build a Raspberry Pi Line Following Robot! - Latest News from Seeed Studio","isPartOf":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#primaryimage"},"image":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#primaryimage"},"thumbnailUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png","datePublished":"2021-02-04T12:39:56+00:00","dateModified":"2021-02-04T12:40:00+00:00","author":{"@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61e29862da8741ee517eacd92f4cd094"},"description":"Learn how to build your very own Raspberry Pi line following robot! Powered by the beginner friendly Grove ecosystem and complete with schematics and code.","breadcrumb":{"@id":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#primaryimage","url":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png","contentUrl":"https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png","width":3000,"height":1750},{"@type":"BreadcrumbList","@id":"https:\/\/www.seeedstudio.com\/blog\/2021\/02\/04\/raspberry-pi-line-following-robot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.seeedstudio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Build a Raspberry Pi Line Following Robot!"}]},{"@type":"WebSite","@id":"https:\/\/www.seeedstudio.com\/blog\/#website","url":"https:\/\/www.seeedstudio.com\/blog\/","name":"Latest News from Seeed Studio","description":"Emerging IoT, AI and Autonomous Applications on the Edge","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.seeedstudio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/61e29862da8741ee517eacd92f4cd094","name":"Jonathan Tan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.seeedstudio.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d8dd1a4a7882386e8818e110c9322897?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d8dd1a4a7882386e8818e110c9322897?s=96&r=g","caption":"Jonathan Tan"},"url":"https:\/\/www.seeedstudio.com\/blog\/author\/jonathan-tan\/"}]}},"modified_by":"Jonathan Tan","views":26716,"featured_image_urls":{"full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png",3000,1750,false],"thumbnail":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-80x80.png",80,80,true],"medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-300x175.png",300,175,true],"medium_large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-768x448.png",640,373,true],"large":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-1030x601.png",640,373,true],"1536x1536":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-1536x896.png",1536,896,true],"2048x2048":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-2048x1195.png",2048,1195,true],"visody_icon":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8.png",32,19,false],"magazine-7-slider-full":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-1536x1020.png",1536,1020,true],"magazine-7-slider-center":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-936x897.png",936,897,true],"magazine-7-featured":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-1024x597.png",1024,597,true],"magazine-7-medium":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-720x380.png",720,380,true],"magazine-7-medium-square":["https:\/\/www.seeedstudio.com\/blog\/wp-content\/uploads\/2021\/01\/8-675x450.png",675,450,true]},"author_info":{"display_name":"Jonathan Tan","author_link":"https:\/\/www.seeedstudio.com\/blog\/author\/jonathan-tan\/"},"category_info":"<a href=\"https:\/\/www.seeedstudio.com\/blog\/category\/news\/\" rel=\"category tag\">News<\/a>","tag_info":"News","comment_count":"0","_links":{"self":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/40035","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/users\/3537"}],"replies":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/comments?post=40035"}],"version-history":[{"count":21,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/40035\/revisions"}],"predecessor-version":[{"id":40647,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/posts\/40035\/revisions\/40647"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media\/40047"}],"wp:attachment":[{"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/media?parent=40035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/categories?post=40035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.seeedstudio.com\/blog\/wp-json\/wp\/v2\/tags?post=40035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}