{"id":295,"date":"2023-12-16T05:10:15","date_gmt":"2023-12-16T05:10:15","guid":{"rendered":"https:\/\/ai.seejazzwork.com\/autobots\/?p=295"},"modified":"2023-12-16T05:10:15","modified_gmt":"2023-12-16T05:10:15","slug":"python-wall-following-project","status":"publish","type":"post","link":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/","title":{"rendered":"Python Wall-Following Project"},"content":{"rendered":"\n<p>As part of my final project, I was working on a challenging project: building a wall-following robot using the Mbot and Python. This blog post reflects on my experience throughout the project, highlighting my choices, implementation process, and key takeaways.<\/p>\n\n\n\n<p>The project was how the name sounds &#8211; following a wall. I implemented a bang-bang controller to leverage the Lidar sensor data and adjust the robot&#8217;s direction based on its distance from the wall. This involved functions like find_min_dist to identify the nearest obstacle and cross_product to calculate the required correction vector. Tuning the setpoint and control gain was crucial for achieving smooth and stable wall following.<\/p>\n\n\n\n<p>The following is the pseudocode of how I implemented the find_min_dist and the cross_product. <\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>Import necessary modules: time, numpy, MBot API, signal, sys<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>Initialize variable CTRL_C_Pressed as False<\/p>\n\n\n\n<p>Define signal_handler function:<br>Set global variable CTRL_C_Pressed to True<br>Print message indicating CTRL+C has been pressed<\/p>\n\n\n\n<p>Link the signal_handler function to the SIGINT signal (CTRL+C)<\/p>\n\n\n\n<p>Define function find_min_dist with parameters ranges and thetas:<br>Initialize min_dist to infinity and min_angle to None<br>For each distance and its index in ranges:<br>If distance is not 0 and less than min_dist:<br>Update min_dist to this distance<br>Update min_angle to the corresponding angle from thetas<br>If min_dist remains infinity, return None, None<br>Otherwise, return min_dist, min_angle<\/p>\n\n\n\n<p>Define function cross_product with parameters v1, v2:<br>Compute and return the cross product of v1 and v2<\/p>\n\n\n\n<p>Create an MBot object named robot<br>Set a variable setpoint (desired distance) to 0.35<\/p>\n\n\n\n<p>Begin a try block:<br>Start an infinite loop:<br>Read lidar data into ranges and thetas<br>Get min_dist and min_angle using find_min_dist<br>If a valid minimum distance and angle are found:<br>Calculate x and y using min_dist and min_angle<br>Define vectors v1 and v2<br>Compute crossP as the cross product of v1 and v2<br>Calculate correction vector based on min_dist, min_angle, and setpoint<br>Drive the robot using values from crossP and correction<br>If CTRL_C_Pressed is True:<br>Print a stopping message<br>Break the loop<br>Else:<br>Print a message indicating no valid minimum distance found<br>Pause for 0.1 seconds<\/p>\n\n\n\n<p>Catch any exceptions, print the error message<\/p>\n\n\n\n<p>Finally:<br>Stop the robot<br>Print a robot stopped message<br>Exit the program<br><\/p>\n\n\n\n<p><strong>Challenges and Solutions<\/strong><br>I felt a great sense of accomplishment when my robot finished two full laps of the course with perfect navigation. This success was a result of the numerous hours spent testing, debugging, and improving the code.<\/p>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<p>One major problem was that the robot would sometimes detect two minimum distances at the same time, which resulted in a state of uncertainty and erratic movements. This was an especially difficult problem because it fundamentally tested the robot&#8217;s ability to navigate. I added a &#8216;correction vector&#8217; to the code after doing extensive\u00a0testing. This calculated addition turned out to be a game-changer because it allowed the robot to recognize its path with accuracy even in situations where distance readings were inconsistent. To ensure smoother, more consistent navigation, the correction vector adjusted the robot&#8217;s trajectory based on the most trustworthy distance data.<br><br>Previous projects had been instrumental in shaping my approach to this challenge. They taught me the nuances of the MBot&#8217;s API and the importance of real-time data visualization on the console. The most significant takeaway was the refinement of the correction vector, a concept I first encountered during the Wall Following project<br><br>Robot Following the wall<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"293\" src=\"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?resize=640%2C293&#038;ssl=1\" alt=\"\" class=\"wp-image-311\" srcset=\"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?resize=1024%2C469&amp;ssl=1 1024w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?resize=300%2C138&amp;ssl=1 300w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?resize=768%2C352&amp;ssl=1 768w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?resize=1536%2C704&amp;ssl=1 1536w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?resize=850%2C390&amp;ssl=1 850w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?w=1920&amp;ssl=1 1920w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"278\" src=\"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-8.png?resize=640%2C278&#038;ssl=1\" alt=\"\" class=\"wp-image-312\" srcset=\"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-8.png?resize=1024%2C444&amp;ssl=1 1024w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-8.png?resize=300%2C130&amp;ssl=1 300w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-8.png?resize=768%2C333&amp;ssl=1 768w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-8.png?resize=1536%2C666&amp;ssl=1 1536w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-8.png?resize=850%2C368&amp;ssl=1 850w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-8.png?w=1920&amp;ssl=1 1920w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-8.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"283\" src=\"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-9.png?resize=640%2C283&#038;ssl=1\" alt=\"\" class=\"wp-image-313\" srcset=\"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-9.png?resize=1024%2C452&amp;ssl=1 1024w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-9.png?resize=300%2C132&amp;ssl=1 300w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-9.png?resize=768%2C339&amp;ssl=1 768w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-9.png?resize=1536%2C678&amp;ssl=1 1536w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-9.png?resize=850%2C375&amp;ssl=1 850w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-9.png?w=1920&amp;ssl=1 1920w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-9.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>Teammates <br>Bishal Timalsina<br>Ali Ramazani<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As part of my final project, I was working on a challenging project: building a wall-following robot using the Mbot and Python. This blog post reflects on my experience throughout the project,&#8230;<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-295","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python Wall-Following Project - Autonomous Systems<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Wall-Following Project - Autonomous Systems\" \/>\n<meta property=\"og:description\" content=\"As part of my final project, I was working on a challenging project: building a wall-following robot using the Mbot and Python. This blog post reflects on my experience throughout the project,...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/\" \/>\n<meta property=\"og:site_name\" content=\"Autonomous Systems\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-16T05:10:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7-1024x469.png\" \/>\n<meta name=\"author\" content=\"bishal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"bishal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/\"},\"author\":{\"name\":\"bishal\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#\\\/schema\\\/person\\\/6c5d2502cbda8d7584b049ba75286ff8\"},\"headline\":\"Python Wall-Following Project\",\"datePublished\":\"2023-12-16T05:10:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/\"},\"wordCount\":587,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/image-7-1024x469.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/\",\"url\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/\",\"name\":\"Python Wall-Following Project - Autonomous Systems\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/image-7-1024x469.png\",\"datePublished\":\"2023-12-16T05:10:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/image-7.png?fit=1920%2C880&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/image-7.png?fit=1920%2C880&ssl=1\",\"width\":1920,\"height\":880},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/16\\\/python-wall-following-project\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python Wall-Following Project\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#website\",\"url\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/\",\"name\":\"AI and Autonomous Systems Class\",\"description\":\"AI, Algorithms, Robotics (HelloRob | Berea College)\",\"publisher\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#organization\",\"name\":\"Berea College Computer Science\",\"url\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/mbot-omni.jpg\",\"contentUrl\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/mbot-omni.jpg\",\"width\":603,\"height\":751,\"caption\":\"Berea College Computer Science\"},\"image\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#\\\/schema\\\/person\\\/6c5d2502cbda8d7584b049ba75286ff8\",\"name\":\"bishal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cf3a7de9dd6860fce54fdadc5abb7d07a5e18bfb3cfff541a87a220dd7d43688?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cf3a7de9dd6860fce54fdadc5abb7d07a5e18bfb3cfff541a87a220dd7d43688?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cf3a7de9dd6860fce54fdadc5abb7d07a5e18bfb3cfff541a87a220dd7d43688?s=96&d=mm&r=g\",\"caption\":\"bishal\"},\"url\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/author\\\/bishal\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python Wall-Following Project - Autonomous Systems","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:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/","og_locale":"en_US","og_type":"article","og_title":"Python Wall-Following Project - Autonomous Systems","og_description":"As part of my final project, I was working on a challenging project: building a wall-following robot using the Mbot and Python. This blog post reflects on my experience throughout the project,...","og_url":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/","og_site_name":"Autonomous Systems","article_published_time":"2023-12-16T05:10:15+00:00","og_image":[{"url":"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7-1024x469.png","type":"","width":"","height":""}],"author":"bishal","twitter_card":"summary_large_image","twitter_misc":{"Written by":"bishal","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/#article","isPartOf":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/"},"author":{"name":"bishal","@id":"https:\/\/ai.seejazzwork.com\/autobots\/#\/schema\/person\/6c5d2502cbda8d7584b049ba75286ff8"},"headline":"Python Wall-Following Project","datePublished":"2023-12-16T05:10:15+00:00","mainEntityOfPage":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/"},"wordCount":587,"commentCount":0,"publisher":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/#organization"},"image":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/#primaryimage"},"thumbnailUrl":"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7-1024x469.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/","url":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/","name":"Python Wall-Following Project - Autonomous Systems","isPartOf":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/#primaryimage"},"image":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/#primaryimage"},"thumbnailUrl":"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7-1024x469.png","datePublished":"2023-12-16T05:10:15+00:00","breadcrumb":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/#primaryimage","url":"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?fit=1920%2C880&ssl=1","contentUrl":"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-7.png?fit=1920%2C880&ssl=1","width":1920,"height":880},{"@type":"BreadcrumbList","@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/16\/python-wall-following-project\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ai.seejazzwork.com\/autobots\/"},{"@type":"ListItem","position":2,"name":"Python Wall-Following Project"}]},{"@type":"WebSite","@id":"https:\/\/ai.seejazzwork.com\/autobots\/#website","url":"https:\/\/ai.seejazzwork.com\/autobots\/","name":"AI and Autonomous Systems Class","description":"AI, Algorithms, Robotics (HelloRob | Berea College)","publisher":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ai.seejazzwork.com\/autobots\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ai.seejazzwork.com\/autobots\/#organization","name":"Berea College Computer Science","url":"https:\/\/ai.seejazzwork.com\/autobots\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ai.seejazzwork.com\/autobots\/#\/schema\/logo\/image\/","url":"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/08\/mbot-omni.jpg","contentUrl":"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/08\/mbot-omni.jpg","width":603,"height":751,"caption":"Berea College Computer Science"},"image":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/ai.seejazzwork.com\/autobots\/#\/schema\/person\/6c5d2502cbda8d7584b049ba75286ff8","name":"bishal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cf3a7de9dd6860fce54fdadc5abb7d07a5e18bfb3cfff541a87a220dd7d43688?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cf3a7de9dd6860fce54fdadc5abb7d07a5e18bfb3cfff541a87a220dd7d43688?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cf3a7de9dd6860fce54fdadc5abb7d07a5e18bfb3cfff541a87a220dd7d43688?s=96&d=mm&r=g","caption":"bishal"},"url":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/author\/bishal\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/posts\/295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/comments?post=295"}],"version-history":[{"count":4,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/posts\/295\/revisions"}],"predecessor-version":[{"id":314,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/posts\/295\/revisions\/314"}],"wp:attachment":[{"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/media?parent=295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/categories?post=295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/tags?post=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}