{"id":344,"date":"2023-12-14T10:43:55","date_gmt":"2023-12-14T10:43:55","guid":{"rendered":"https:\/\/ai.seejazzwork.com\/autobots\/?p=344"},"modified":"2023-12-14T10:44:19","modified_gmt":"2023-12-14T10:44:19","slug":"from-static-to-dynamic-translating-wall-follower-code-from-c-to-python","status":"publish","type":"post","link":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/","title":{"rendered":"From Static to Dynamic: Translating Wall Follower Code from C++ to Python"},"content":{"rendered":"\n<p class=\"has-pale-pink-color has-text-color has-link-color has-medium-font-size wp-elements-9b46a09ad15e96b00c5cee20e78b3ee5\"><strong>Introduction<\/strong><\/p>\n\n\n\n<p>This time, my journey led me to Python, a shift from the familiar grounds of C++ that I navigated in our previous projects. My task? To breathe life into a Wall Follower algorithm using Python.<\/p>\n\n\n\n<p class=\"has-pale-pink-color has-text-color has-link-color has-medium-font-size wp-elements-6fbc270b82a9fad228188808b3038a5d\"><strong>From Square One to Complex Mazes<\/strong>:<\/p>\n\n\n\n<p>Starting with the basics, I had to get the robot to follow a simple square path, a warm-up exercise to get accustomed to commanding the Mbot in Python. That was when I realized how easy everything could be in Python. The flexibility and ease of the language are very convenient (even though that is at the expense of performance speed). To me, Python code is much more readable and user-friendly than C++, even in CSC236, the brackets all over the place are ugly and confusing. <\/p>\n\n\n\n<p class=\"has-pale-pink-color has-text-color has-link-color has-medium-font-size wp-elements-db9714e5956ba123edc8a6e7678a442f\"><strong>The Challenge: Translating C++ to Python<\/strong><\/p>\n\n\n\n<p>This part was more than just coding; it was about adapting to a totally new codebase, different API implementation, and an opportunity to go through the documentation in detail which offered me a lot of insights into the Mbot.<\/p>\n\n\n\n<p>The Wall Follower algorithm, initially coded in C++, had to be recoded in Python\u2019s flexible script. This translation wasn&#8217;t merely about changing syntax; it involved rethinking logic, embracing Python&#8217;s dynamic typing, and exploring its rich libraries, mainly Numpy, which offers great Linear Algebra built-in features that came in handy during cross-product and vector manipulation.<\/p>\n\n\n\n<p class=\"has-pale-pink-color has-text-color has-link-color has-medium-font-size wp-elements-ff8756a1864876b6ac414123e10a9305\"><strong>The Heart of the Algorithm<\/strong>:<\/p>\n\n\n\n<p>At the core of the Wall Follower lies a simple yet profound logic:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Reading the World:<\/strong> The robot uses its LIDAR sensors to gauge its surroundings.<\/li>\n\n\n\n<li><strong>Making the Call:<\/strong> Based on the sensor data, the robot decides how to adjust its path to maintain a consistent distance from the walls, or correct it otherwise.<\/li>\n<\/ol>\n\n\n\n<p>Here is the pseudocode:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>while True:\r\n    0) Gather sensory data\r\r\n\r\n    1) Analyzing for the closest obstacle: getting min_distance and min_angle\r\n\r\n    2) Decision-making based on proximity:\r\n    deviation = desired_distance - min_distance\r\n    movement_strategy = compute_movement(deviation, min_angle)\r\n\r\n    3) Executing the strategy\r<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"435\" height=\"416\" src=\"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png?resize=435%2C416&#038;ssl=1\" alt=\"\" class=\"wp-image-347\" srcset=\"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png?w=435&amp;ssl=1 435w, https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png?resize=300%2C287&amp;ssl=1 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/figure>\n\n\n\n<p class=\"has-pale-pink-color has-text-color has-link-color has-medium-font-size wp-elements-6bcd1746730370e34552d6cc4e598692\"><strong>Day 0: Demo day<\/strong>:<\/p>\n\n\n\n<p>During the demos, I learned a lot from my peers in class. Ali and Bishal&#8217;s presentation gave me insights into using NumPy directly for cross product. Nate&#8217;s presentation showed how to balance between sound wall following and a fast traversing of the maze, and Kori&#8217;s presentation was really enjoyable!!<\/p>\n\n\n\n<p>My robot performed well on the maze, except for two times when it stopped because it was surrounded by the maze, a chair, and 4 people, and I am conjecturing that was the reason it stopped (sensory overload that Python could not handle, perhaps) <\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background has-medium-font-size\">Here is the<strong><a href=\"https:\/\/files.fm\/u\/mt6eguuhd3\"> LINK<\/a><\/strong> to a video demo of my robot, perfectly navigating a closed map<\/p>\n\n\n\n<p>Wrapping up:<\/p>\n\n\n\n<p>This semester has been very insightful; I learned a lot and the collaborative non-competitive environment of the class was very convenient. I am so proud that I could get a robot to navigate mazes, follow walls, drive squares, and much more.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Thank you for bringing this class to Berea and offering us the learning opportunity<\/strong>!<\/p>\n\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-post-author\"><div class=\"wp-block-post-author__avatar\"><img alt='' src='https:\/\/secure.gravatar.com\/avatar\/c4a6a2ecbb862bfd526718799a99105b5d7b7157d3167b5a32814ea74afb1992?s=48&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/c4a6a2ecbb862bfd526718799a99105b5d7b7157d3167b5a32814ea74afb1992?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' \/><\/div><div class=\"wp-block-post-author__content\"><p class=\"wp-block-post-author__name\">oussema<\/p><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction This time, my journey led me to Python, a shift from the familiar grounds of C++ that I navigated in our previous projects. My task? To breathe life into a Wall&#8230;<\/p>\n","protected":false},"author":9,"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-344","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>From Static to Dynamic: Translating Wall Follower Code from C++ to Python - 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\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"From Static to Dynamic: Translating Wall Follower Code from C++ to Python - Autonomous Systems\" \/>\n<meta property=\"og:description\" content=\"Introduction This time, my journey led me to Python, a shift from the familiar grounds of C++ that I navigated in our previous projects. My task? To breathe life into a Wall...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Autonomous Systems\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-14T10:43:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-14T10:44:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png\" \/>\n<meta name=\"author\" content=\"oussema\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"oussema\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/\"},\"author\":{\"name\":\"oussema\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#\\\/schema\\\/person\\\/10f08a80b5322787e3b575cff6e93e69\"},\"headline\":\"From Static to Dynamic: Translating Wall Follower Code from C++ to Python\",\"datePublished\":\"2023-12-14T10:43:55+00:00\",\"dateModified\":\"2023-12-14T10:44:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/\"},\"wordCount\":475,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/image-12.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/\",\"url\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/\",\"name\":\"From Static to Dynamic: Translating Wall Follower Code from C++ to Python - Autonomous Systems\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/image-12.png\",\"datePublished\":\"2023-12-14T10:43:55+00:00\",\"dateModified\":\"2023-12-14T10:44:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/image-12.png?fit=435%2C416&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/ai.seejazzwork.com\\\/autobots\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/image-12.png?fit=435%2C416&ssl=1\",\"width\":435,\"height\":416},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/2023\\\/12\\\/14\\\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"From Static to Dynamic: Translating Wall Follower Code from C++ to Python\"}]},{\"@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\\\/10f08a80b5322787e3b575cff6e93e69\",\"name\":\"oussema\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c4a6a2ecbb862bfd526718799a99105b5d7b7157d3167b5a32814ea74afb1992?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c4a6a2ecbb862bfd526718799a99105b5d7b7157d3167b5a32814ea74afb1992?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c4a6a2ecbb862bfd526718799a99105b5d7b7157d3167b5a32814ea74afb1992?s=96&d=mm&r=g\",\"caption\":\"oussema\"},\"url\":\"https:\\\/\\\/ai.seejazzwork.com\\\/autobots\\\/blog\\\/author\\\/oussema\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"From Static to Dynamic: Translating Wall Follower Code from C++ to Python - 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\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/","og_locale":"en_US","og_type":"article","og_title":"From Static to Dynamic: Translating Wall Follower Code from C++ to Python - Autonomous Systems","og_description":"Introduction This time, my journey led me to Python, a shift from the familiar grounds of C++ that I navigated in our previous projects. My task? To breathe life into a Wall...","og_url":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/","og_site_name":"Autonomous Systems","article_published_time":"2023-12-14T10:43:55+00:00","article_modified_time":"2023-12-14T10:44:19+00:00","og_image":[{"url":"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png","type":"","width":"","height":""}],"author":"oussema","twitter_card":"summary_large_image","twitter_misc":{"Written by":"oussema","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/#article","isPartOf":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/"},"author":{"name":"oussema","@id":"https:\/\/ai.seejazzwork.com\/autobots\/#\/schema\/person\/10f08a80b5322787e3b575cff6e93e69"},"headline":"From Static to Dynamic: Translating Wall Follower Code from C++ to Python","datePublished":"2023-12-14T10:43:55+00:00","dateModified":"2023-12-14T10:44:19+00:00","mainEntityOfPage":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/"},"wordCount":475,"commentCount":0,"publisher":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/#organization"},"image":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/#primaryimage"},"thumbnailUrl":"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/","url":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/","name":"From Static to Dynamic: Translating Wall Follower Code from C++ to Python - Autonomous Systems","isPartOf":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/#primaryimage"},"image":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/#primaryimage"},"thumbnailUrl":"https:\/\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png","datePublished":"2023-12-14T10:43:55+00:00","dateModified":"2023-12-14T10:44:19+00:00","breadcrumb":{"@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/#primaryimage","url":"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png?fit=435%2C416&ssl=1","contentUrl":"https:\/\/i0.wp.com\/ai.seejazzwork.com\/autobots\/wp-content\/uploads\/2023\/12\/image-12.png?fit=435%2C416&ssl=1","width":435,"height":416},{"@type":"BreadcrumbList","@id":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/2023\/12\/14\/from-static-to-dynamic-translating-wall-follower-code-from-c-to-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ai.seejazzwork.com\/autobots\/"},{"@type":"ListItem","position":2,"name":"From Static to Dynamic: Translating Wall Follower Code from C++ to Python"}]},{"@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\/10f08a80b5322787e3b575cff6e93e69","name":"oussema","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c4a6a2ecbb862bfd526718799a99105b5d7b7157d3167b5a32814ea74afb1992?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c4a6a2ecbb862bfd526718799a99105b5d7b7157d3167b5a32814ea74afb1992?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c4a6a2ecbb862bfd526718799a99105b5d7b7157d3167b5a32814ea74afb1992?s=96&d=mm&r=g","caption":"oussema"},"url":"https:\/\/ai.seejazzwork.com\/autobots\/blog\/author\/oussema\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/posts\/344","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\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/comments?post=344"}],"version-history":[{"count":1,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/posts\/344\/revisions"}],"predecessor-version":[{"id":348,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/posts\/344\/revisions\/348"}],"wp:attachment":[{"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/media?parent=344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/categories?post=344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai.seejazzwork.com\/autobots\/wp-json\/wp\/v2\/tags?post=344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}