{"id":1610,"date":"2024-03-23T14:38:15","date_gmt":"2024-03-23T18:38:15","guid":{"rendered":"https:\/\/pleiades-technology.com\/?p=1610"},"modified":"2024-03-23T14:56:19","modified_gmt":"2024-03-23T18:56:19","slug":"building-a-home-robot-platform-with-off-the-shelf-components","status":"publish","type":"post","link":"https:\/\/pleiades-technology.com\/index.php\/2024\/03\/23\/building-a-home-robot-platform-with-off-the-shelf-components\/","title":{"rendered":"Building a Home Robot Platform with Off-the-Shelf Components"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1610\" class=\"elementor elementor-1610\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-84bfd2e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"84bfd2e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-938d9c5\" data-id=\"938d9c5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5d26b41 elementor-drop-cap-yes elementor-drop-cap-view-default elementor-widget elementor-widget-text-editor\" data-id=\"5d26b41\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;drop_cap&quot;:&quot;yes&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"245d\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\">Everyday, we hear about AI and various surveillance systems that are used in homes, businesses and the government to monitor everything that we do. I\u2019ve been wondering if I could make use of these AI and imaging technologies to put together an affordable robot for the elderly. Perhaps a robot to provide companionship as well as look out for their safety around the home.<\/p><p>\u00a0<\/p><p id=\"c307\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">It would be nice if the robot could see, hear and sense the environment it is in and react appropriately. Turn on the light when it is getting dark, turn on a space heater if it gets too cold, watch for intruders, turn on TV for the news, play games, provide reminders, connect with friends or relatives, summon for help if needed, etc.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"c460\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">This is not quite the humanoid robot that we have all dreamed about that can do the dishes. That, I believe, is still a bit further off. The robot I am thinking about is a companion that is there around the clock. Whereas, a regular home attendant, for example, is just there to do the house work and leaves.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"d435\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Perhaps you can think of other applications for a Home Robot as well.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"ce02\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong class=\"be\">State of Current Home Robots<\/strong><\/h3><p id=\"f21e\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Before diving into developing my own robot, I went and did a quick survey of what is currently available. There are a lot of them. Enough to write a whole story just about it. Below, I only listed a few representative ones that are on the market.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"6274\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">In the past few years, many home robots have been cropping up. They range from just a table top companion robot like the<a class=\"ba qs\" href=\"https:\/\/www.intuitionrobotics.com\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">\u00a0ElliQ<\/a>\u00a0to the<a class=\"ba qs\" href=\"https:\/\/orobuddy.com\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">\u00a0ORO Petcare Companion Robot<\/a>\u00a0that showed up in CES 2024 to take care of your beloved doggie.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"65b0\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">And, don\u2019t forget Amazon\u2019s household robot<a class=\"ba qs\" href=\"https:\/\/www.amazon.com\/Introducing-Amazon-Astro\/dp\/B078NSDFSB\" target=\"_blank\" rel=\"noopener ugc nofollow\">\u00a0Astro<\/a>\u00a0that would roam around the house to check what you need to order from Amazon. The Astro was announced in 2021 but still seems to be in the \u201cpurchase by invitation only\u201d mode.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"935d\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">None of these robots seem to meet my requirements. Each has some of the features I am looking for but not all together in one single product. Alternatively, I would settle to get a robot that I can develop and run my own program on. However, that does not exist either.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"56d3\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">In the end, I decided to take a shot at building a robot of my own. Actually, what I need is a Home Robot Platform to build up whatever robot I want it to be.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"9107\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>Key Considerations in Building the Home Robot Platform<\/strong><\/h3><p id=\"fcdd\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">The following are some of the key considerations in building the robot platform:<\/p><ul class=\"\"><li id=\"1e8c\" class=\"yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg abd abe abf br\" data-selectable-paragraph=\"\">The robot should be affordable for any tinkerer, like myself, to build<\/li><li id=\"9860\" class=\"yp yq sz mf b tj abg ys yt tm abh yv yw lp abi yy yz lu abj zb zc lz abk ze zf zg abd abe abf br\" data-selectable-paragraph=\"\">The components in the robot should be the best that is affordable and uses the latest technology available<\/li><li id=\"50c0\" class=\"yp yq sz mf b tj abg ys yt tm abh yv yw lp abi yy yz lu abj zb zc lz abk ze zf zg abd abe abf br\" data-selectable-paragraph=\"\">The design should be easy to understand and replicated by others<\/li><li id=\"c69f\" class=\"yp yq sz mf b tj abg ys yt tm abh yv yw lp abi yy yz lu abj zb zc lz abk ze zf zg abd abe abf br\" data-selectable-paragraph=\"\">While the robot must have Wi-Fi capability, it should be fully functional without internet connection<\/li><li id=\"eb21\" class=\"yp yq sz mf b tj abg ys yt tm abh yv yw lp abi yy yz lu abj zb zc lz abk ze zf zg abd abe abf br\" data-selectable-paragraph=\"\">The robot will not send any data out unless there is explicit consent from the user<\/li><li id=\"b60e\" class=\"yp yq sz mf b tj abg ys yt tm abh yv yw lp abi yy yz lu abj zb zc lz abk ze zf zg abd abe abf br\" data-selectable-paragraph=\"\">The robot\u2019s software will be open source<\/li><li id=\"ff78\" class=\"yp yq sz mf b tj abg ys yt tm abh yv yw lp abi yy yz lu abj zb zc lz abk ze zf zg abd abe abf br\" data-selectable-paragraph=\"\">The robot will be a modular design to allow for future upgrade and growth<\/li><\/ul><p id=\"6065\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">After researching the components available and experimenting with some proof of concept tests, I came up with something that seems quite feasible to meet my requirements.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"9e27\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong class=\"be\">The Brain Behind the Robot<\/strong><\/h3><p id=\"89b4\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Since the goal is to build an affordable robot, I looked for a low cost computer board to be the brain of the robot. I also wanted to have a fully capable computer system with a lot of support.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"1952\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The main processor board selected for the home robot platform is the\u00a0<a class=\"ba qs\" href=\"https:\/\/www.raspberrypi.com\/products\/raspberry-pi-4-model-b\/specifications\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Raspberry Pi 4B<\/a>\u00a0with 8GB RAM. The robot will be upgraded to the latest\u00a0<a class=\"ba qs\" href=\"https:\/\/www.raspberrypi.com\/products\/raspberry-pi-5\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Raspberry Pi 5<\/a>\u00a0in the future. This new Raspberry Pi 5 processor board has up to three times the performance improvement and many other upgrades for about the same price as the Raspberry Pi 4B.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"4cd2\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The Raspberry Pi runs on the\u00a0<a class=\"ba qs\" href=\"https:\/\/en.wikipedia.org\/wiki\/Debian\" target=\"_blank\" rel=\"noopener ugc nofollow\">Debian<\/a>-based\u00a0<a class=\"ba qs\" href=\"https:\/\/www.raspberrypi.com\/documentation\/computers\/os.html#introduction\" target=\"_blank\" rel=\"noopener ugc nofollow\">standard Raspberry Pi OS<\/a>\u00a0with Raspberry Pi Desktop.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"5ef1\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Sticking with Raspberry Pi OS ensures that reliable support is available for all the common peripherals such as sound input\/output, touch screen, serial devices, external memory etc. With the popularity of the Raspberry Pi, there are a lot of affordable compatible peripherals to choose from.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"f1e4\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">To enable direct connection to devices, the Raspberry Pi has a row of\u00a0<a class=\"ba qs\" href=\"https:\/\/www.raspberrypi.com\/documentation\/computers\/raspberry-pi.html#gpio-and-the-40-pin-header\" target=\"_blank\" rel=\"noopener ugc nofollow\">GPIO<\/a>\u00a0(general-purpose input\/output) pins along the top edge of the board for controlling specialized hardware such as servo motors or sensors.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"57f0\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The Raspberry Pi system comes with Ethernet, Wi-Fi and Bluetooth connectivities. Programs can be developed and executed on the robot via a\u00a0<a class=\"ba qs\" href=\"https:\/\/www.raspberrypi.com\/documentation\/computers\/configuration.html#set-up-a-headless-raspberry-pi\" target=\"_blank\" rel=\"noopener ugc nofollow\">headless<\/a>\u00a0setup over the Wi-Fi network. Unlike a regular computer, the keyboard, mouse and monitor do not need to be physically connected to the Raspberry Pi.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"0409\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">One of the key factors for setting up the Raspberry Pi to run the standard Raspberry Pi OS, a Linux distribution, is that it supports multitasking. This allows the robot to be doing multiple things at the same time.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"5edb\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The tradeoff is that activities might not be executed at the precise timing as intended. Intelligent functions could take some \u201cthinking time\u201d which is probably acceptable for the robot. Time-critical functions are expected to be handled by the peripheral processors appropriately.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"45dc\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>Program for the Brain<\/strong><\/h3><p id=\"aeab\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Python is used to program the main functions of the robot. Python is a general purpose and easy to understand programming language. It is \u201cnatively\u201d supported for the Raspberry Pi. Python can be used to control pretty much everything on the Raspberry Pi including the GPIO pins.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"f662\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">There is a large collection of standard Python libraries available to reduce development effort.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"ccdc\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Python is an interpreted language. A python program can be edited and executed immediately without the need to compile and link as other programming languages such as C or C++. This makes programming the robot more fun and intuitive.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"fd8c\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">With the ease of programming, Python could potentially pose a performance issue if used exclusively for all robot control functions. This is handled in two ways.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"6b31\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">First, the main program written in Python is primarily the \u201cconductor\u201d of the robot functions. It does the logical analysis and the non-real time functions. Any speed demanding behaviors that need to run on the Raspberry Pi can be written as Python callable functions in a compiled language such as\u00a0<a class=\"ba qs\" href=\"https:\/\/en.wikipedia.org\/wiki\/C_(programming_language)\" target=\"_blank\" rel=\"noopener ugc nofollow\">C<\/a>\u00a0or\u00a0<a class=\"ba qs\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rust_(programming_language)\" target=\"_blank\" rel=\"noopener ugc nofollow\">Rust<\/a>. As a newer language, Rust appears to be getting a lot of attention and support. So it might be the preferred language to use.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"1658\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Second, one of the key architectural concepts of the robot is to distribute the heavy duty and real-time processing to the peripherals.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"a297\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>I Can See You<\/strong><\/h3><p id=\"3cb8\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Just like a human, the robot uses two eyes to see and determine the distance of objects. These two eyes only see black and white. There is a third eye that can see color at high resolution. In the path of the three eyes\u2019 output, images can be routed, processed and analyzed at high speed.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"aa67\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">This is done with the\u00a0<a class=\"ba qs\" href=\"https:\/\/shop.luxonis.com\/collections\/home-page\/products\/oak-d-lite-1?variant=42583102456031\" target=\"_blank\" rel=\"noopener ugc nofollow\">OAK-D Lite<\/a>\u00a0USB module with 3 cameras on it. The OAK-D Lite has two monochrome cameras for object distance detection, a color camera for high resolution imaging and an\u00a0<a class=\"ba qs\" href=\"https:\/\/www.anandtech.com\/show\/11771\/intel-announces-movidius-myriad-x-vpu\" target=\"_blank\" rel=\"noopener ugc nofollow\">Intel Movidius Myriad VPU<\/a>\u00a0for processing acceleration. These are all included in one hardware package at a reasonable cost.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"67fe\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">In terms of control, software imaging pipelines can be developed for different needs. The\u00a0<a class=\"ba qs\" href=\"https:\/\/docs.luxonis.com\/projects\/api\/en\/latest\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">DepthAI<\/a>\u00a0package is used by the Raspberry Pi to connect to, configure and communicate with the OAK-D Lite device.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"42b2\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">For proof of concept, an imaging pipeline routing appropriately cropped and scaled images to various neural network models has been developed. Locations of people in front of the robot and their corresponding face signatures are detected in the pipeline. This data is continuously sent to the Raspberry Pi as a concise text stream. This allows the Raspberry Pi to understand what is going on and to determine the appropriate actions to take without expending a lot of processing power.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"7a7b\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Pipelines was also built to identify and extract image data for specific objects such as people, faces or hands in parallel with the data text being streamed out. Analyzing targeted image data will reduce the image processing requirement for the Raspberry Pi to perform.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"dfc7\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">One application example is for the Raspberry Pi to send the cropped and scaled image data to the\u00a0<a class=\"ba qs\" href=\"https:\/\/developers.google.com\/mediapipe\/solutions\/examples\" target=\"_blank\" rel=\"noopener ugc nofollow\">MediaPipe<\/a>\u00a0software library to perform tasks such as pose, facial landmark or hand gesture estimation.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"9496\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Pose estimations can be used to determine if a person has fallen. Facial landmark estimations can be used to determine a person\u2019s mood. Hand gestures can be used as a person-to-robot command interface. Applications are limited only by one\u2019s imagination.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"f92d\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The robot currently uses the lowest cost OAK-D Lite but can be upgraded to the\u00a0<a class=\"ba qs\" href=\"https:\/\/shop.luxonis.com\/collections\/oak-cameras-1\/products\/oak-d-pro?variant=42455252369631\" target=\"_blank\" rel=\"noopener ugc nofollow\">OAK-D Pro<\/a>\u00a0that uses projected IR (infrared) dots for more accurate 3D measurements and night vision to allow the robot to operate in complete darkness.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"ccd0\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>Robot Dreams<\/strong><\/h3><p id=\"6d8a\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Besides the accelerated processing done on the OAK-D-Lite, much more image and video processing can be done with the Raspberry Pi processing using\u00a0<a class=\"ba qs\" href=\"https:\/\/docs.opencv.org\/4.x\/d9\/df8\/tutorial_root.html\" target=\"_blank\" rel=\"noopener ugc nofollow\">OpenCV<\/a>. OpenCV has the world\u2019s largest computer vision library. It can be used to do many background image analysis for the robot\u2019s brain when it has spare compute cycles.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"3df6\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Also, video can be recorded from the day time and OpenCV can be utilized to extract helpful information. One example would be to analyze the previous day\u2019s activities to note where things were placed to help find them in the future.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"7050\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong class=\"be\">Sensitive to The Environment<\/strong><\/h3><p id=\"799b\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Besides being able to see, it would be desirable for the robot to be able to hear and make sense of the sound around it. Would be useful if the robot can actually understand some spoken commands.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"63c5\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">While there are many speech to text services offered on the internet, the intention is not to rely on having connections to the internet for the robot to function. This also removes any privacy concerns regarding sending voice data to an external entity.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"db8f\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The\u00a0<strong class=\"mf gp\">SENSE<\/strong>\u00a0module consists of an\u00a0<a class=\"ba qs\" href=\"https:\/\/store-usa.arduino.cc\/products\/nano-33-ble-sense-rev2\" target=\"_blank\" rel=\"noopener ugc nofollow\">Arduino Nano 33 BLE Sense<\/a>\u00a0board to analyze snippets of sound input using its on-board\u00a0<a class=\"ba qs\" href=\"https:\/\/content.arduino.cc\/assets\/Nano_BLE_MCU-nRF52840_PS_v1.1.pdf\" target=\"_blank\" rel=\"noopener ugc nofollow\">nRF52840<\/a>\u00a0processor. The processor can be trained to recognize a small set of 1 sec sound input snippets. The training is performed with the\u00a0<a class=\"ba qs\" href=\"https:\/\/docs.edgeimpulse.com\/docs\" target=\"_blank\" rel=\"noopener ugc nofollow\">Edge Impulse<\/a>\u00a0web based machine learning and deployment tool.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"14a4\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Communication with the Arduino Nano 33 BLE Sense is over the USB serial interface from the Raspberry Pi.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"587d\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">For proof of concept, the\u00a0<strong class=\"mf gp\">SENSE<\/strong>\u00a0module was trained to recognize around 10 spoken phrases. More can be added. It is also possible to train the board to recognize voices and other noises such as glass breakage or large \u201cthump\u201d sound from falling objects.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"a6ab\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Besides the microphone, the Arduino Nano 33 BLE Sense board also has a 9-axis Inertial Measurement Unit (IMU) to measure motions, a proximity\/ambient light\/color\/gesture sensor, a barometric pressure sensor and a temperature\/humidity sensor.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"8c53\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">These sensors could be used to add more capabilities to the robot in the future.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"e8f9\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>It Is Not a Robot if It Can\u2019t Move<\/strong><\/h3><p id=\"7df5\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">There are only two moving capabilities on the robot. First, the\u00a0<strong class=\"mf gp\">NECK<\/strong>\u00a0module allows the\u00a0<strong class=\"mf gp\">EYES<\/strong>\u00a0module to be tilted and\/or panned. Second, there are the wheels on the\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module that allows the robot to move forward, move backward and turn.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"e8d5\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The\u00a0<strong class=\"mf gp\">NECK<\/strong>\u00a0module consists of two\u00a0<a class=\"ba qs\" href=\"https:\/\/www.amazon.com\/gp\/product\/B07NQJ1VZ2\/ref=ppx_od_dt_b_asin_title_s02?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noopener ugc nofollow\">servo motors<\/a>\u00a0mounted on a pair of\u00a0<a class=\"ba qs\" href=\"https:\/\/www.amazon.com\/gp\/product\/B07PQ12TXS\/ref=ppx_od_dt_b_asin_title_s01?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noopener ugc nofollow\">pan tilt brackets<\/a>. The servo motors are driven by a\u00a0<a class=\"ba qs\" href=\"https:\/\/www.amazon.com\/HiLetgo-PCA9685-Channel-12-Bit-Arduino\/dp\/B07BRS249H\/ref=pd_bxgy_img_sccl_2\/134-5254930-7616102?pd_rd_w=nlTca&amp;content-id=amzn1.sym.43d28dfc-aa4f-4ef6-b591-5ab7095e137f&amp;pf_rd_p=43d28dfc-aa4f-4ef6-b591-5ab7095e137f&amp;pf_rd_r=CHQNDPFSBN3TEC0DT6Q1&amp;pd_rd_wg=I9Obx&amp;pd_rd_r=867a37c3-8728-48b9-8ce7-32366069ea94&amp;pd_rd_i=B07BRS249H&amp;psc=1\" target=\"_blank\" rel=\"noopener ugc nofollow\">servo motor driver<\/a>\u00a0controlled by the Raspberry Pi via\u00a0<a class=\"ba qs\" href=\"https:\/\/www.geeksforgeeks.org\/i2c-communication-protocol\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">I2C<\/a>\u00a0lines. This allows the robot to look up or down and left or right.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"18fa\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module has 3 wheels. There are a couple of\u00a0<a class=\"ba qs\" href=\"https:\/\/www.servocity.com\/3607-series-disc-wheel-14mm-bore-120mm-diameter-black-2-pack\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">120 mm plastic wheels<\/a>\u00a0balanced by a third\u00a0<a class=\"ba qs\" href=\"https:\/\/www.servocity.com\/2-swivel-caster-wheel\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">caster wheel<\/a>\u00a0in the back. The plastic wheels are driven by a pair of\u00a0<a class=\"ba qs\" href=\"https:\/\/www.servocity.com\/98-rpm-econ-gear-motor\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">98 RPM geared DC motors<\/a>. These motors are controlled by its own processor from an<a class=\"ba qs\" href=\"https:\/\/store-usa.arduino.cc\/products\/uno-r4-minima?selectedStore=us\" target=\"_blank\" rel=\"noopener ugc nofollow\">\u00a0Arduino UNO<\/a>\u00a0board fitted with a\u00a0<a class=\"ba qs\" href=\"https:\/\/www.cytron.io\/p-10amp-7v-30v-dc-motor-driver-shield-for-arduino-2-channels\" target=\"_blank\" rel=\"noopener ugc nofollow\">2-channel Motor Driver Arduino Shield<\/a>. Communication with the Arduino UNO is over a separate USB serial interface from the Raspberry Pi.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"4488\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">All speed and directional controls for the wheels are self-contained in the\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module.<\/p><p id=\"cb58\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">For safety, the UNO board independently detects objects that might have come in front of the robot with an\u00a0<a class=\"ba qs\" href=\"https:\/\/www.adafruit.com\/product\/3942\" target=\"_blank\" rel=\"noopener ugc nofollow\">Ultrasonic Sonar Distance Sensor<\/a>\u00a0mounted on the\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module. Forward motion is stopped immediately by the UNO\u2019s processor when an object is detected.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"c162\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module is a collection of mechanical and electronic components mounted on a circular piece cut out from a\u00a0<a class=\"ba qs\" href=\"https:\/\/www.amazon.com\/gp\/product\/B07HDY1YK3\/ref=ppx_yo_dt_b_asin_title_o02_s02?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noopener ugc nofollow\">12&#215;24\u201d plexiglass<\/a>. I got most of my wheels, motors and mounting parts from\u00a0<a class=\"ba qs\" href=\"https:\/\/www.servocity.com\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">ServoCity<\/a>.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"af6c\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">There are too many miscellaneous mechanical parts to list here. If you follow the links for the DC motor and wheels, you should be able to find all the parts you need to mount the motors and wheels.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"342d\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Selecting the motors, wheels and working through all the various mounting options was new to me. When I got started, I did not know where to begin. Luckily, I came across a couple of good teachers. Paul McWhorter\u2019s\u00a0<a class=\"ba qs\" href=\"https:\/\/www.youtube.com\/watch?v=eqXQ80vlgqE&amp;list=PLGs0VKk2DiYxkoe2XNxDvVHqL5XG4dMWi\" target=\"_blank\" rel=\"noopener ugc nofollow\">Robot Training series<\/a>\u00a0got me started to learn about controlling servo motors. DroneBot Workshop\u2019s\u00a0<a class=\"ba qs\" href=\"https:\/\/dronebotworkshop.com\/category\/real-robot\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Build a REAL Robot series<\/a>\u00a0gave me a more hands-on practical guide to select the wheels, motors and mounting hardware. Paul and Bill are very good teachers and I highly recommend anyone interested in building robots watch their series of videos.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"9448\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">To be able to move untethered, the robot is powered by a hefty\u00a0<a class=\"ba qs\" href=\"https:\/\/www.amazon.com\/gp\/product\/B08R1FWW5P\/ref=ppx_od_dt_b_asin_image_s01?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noopener ugc nofollow\">12V battery<\/a>. The 12V output drives the DC motors and is also stepped down with multiple\u00a0<a class=\"ba qs\" href=\"https:\/\/www.amazon.com\/gp\/product\/B087RHWTJW\/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noopener ugc nofollow\">USB Buck voltage converters<\/a>\u00a0to provide power for all the boards.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"d135\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>Wheels are Optional<\/strong><\/h3><p id=\"b092\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Conceptually, the\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module is intended to be a stand alone replaceable unit that provides locomotion and battery power for the robot.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"9895\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The\u00a0<em class=\"abl\">top part<\/em>\u00a0of the robot includes the Raspberry Pi and all its peripherals including the speakers that are currently mounted inside the\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module. When the\u00a0<em class=\"abl\">top part<\/em>\u00a0is plugged into an AC outlet, it turns into a stationary robot with all the intelligence.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"c30d\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module\u2019s function is to provide locomotion for the robot. Alternatively, the\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module can have 4 legs, or even 2 legs, instead of wheels as long as it can understand the move commands and provide power for the\u00a0<em class=\"abl\">top part<\/em>\u00a0of the robot.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"56cc\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>3D Printed Parts on a Trash Can<\/strong><\/h3><p id=\"a93c\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">The concept of the robot is that a person in the sitting position can comfortably interact with it. To get the robot to be at a reasonable height, we need to build up the robot. Also, I need to have a way to hold down all my proof-of-concept piles of parts that were taped on various cardboard boxes into an actual moving robot.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"88d0\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Luckily, my brother-in-law, Bob, is a retired Electrical Engineer who got into 3D printing. He is my collaborator for the robot. Bob designed the camera mount, the \u201ctower\u201d and all the miscellaneous bits and pieces to hold things together. It is amazing what one can do with a 3D printer. Maybe I can talk Bob into sharing his experience of how to get into 3D printing and the details of the 3D parts used to build the robot.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"f9a3\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">With the limitation of the size of printable 3D parts, we really needed something bigger to prop up the robot and to provide it with some stability.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"72fb\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Inspired by the\u00a0<a class=\"ba qs\" href=\"https:\/\/en.wikipedia.org\/wiki\/Dalek\" target=\"_blank\" rel=\"noopener ugc nofollow\">Daleks<\/a>, which many thought looked like a moving garbage can, we headed to Home Depot looking for a similar \u201cbody part\u201d. Lo and behold, we found an\u00a0<a class=\"ba qs\" href=\"https:\/\/www.homedepot.com\/p\/Rubbermaid-Commercial-Products-5-Gal-Round-Mesh-Trash-Can-in-Silver-FGWMB20SLV\/205188540\" target=\"_blank\" rel=\"noopener ugc nofollow\">office trash can<\/a>\u00a0that fits the bill. The wired trash can, mounted upside down on top of the plexiglass, serves as a cover for all the electronics, battery and wires of the\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"badd\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The bottom of the trash can, when it was flipped over, provided a flat surface to mount the top part of the robot. For convenience, we have decided to mount the speaker inside the trash can for now.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"07c0\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">In the future, we could come up with a 3D printed\u00a0<strong class=\"mf gp\">BASE<\/strong>\u00a0module enclosure design that would reduce the parts needed to mount the wheels and would be easier to assemble.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"591c\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>Rounding it Off with the Usual Computer Peripherals<\/strong><\/h3><p id=\"c111\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Besides the specialized peripherals, there is a 7\u201d touch screen, a USB microphone and a pair of stereo speakers connected to the Raspberry Pi. With these accessories, many applications can be built from scratch or based on existing open source projects.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"43b6\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Here are some examples:<\/p><ol class=\"\"><li id=\"9b44\" class=\"yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg abm abe abf br\" data-selectable-paragraph=\"\">One can build interactive games using the touch screen.<\/li><li id=\"2c41\" class=\"yp yq sz mf b tj abg ys yt tm abh yv yw lp abi yy yz lu abj zb zc lz abk ze zf zg abm abe abf br\" data-selectable-paragraph=\"\">With the screen and microphone, one can build robot-to-robot video calls using the open source code like\u00a0<a class=\"ba qs\" href=\"https:\/\/jitsi.github.io\/handbook\/docs\/intro\" target=\"_blank\" rel=\"noopener ugc nofollow\">Jitsi<\/a>.<\/li><li id=\"0bb1\" class=\"yp yq sz mf b tj abg ys yt tm abh yv yw lp abi yy yz lu abj zb zc lz abk ze zf zg abm abe abf br\" data-selectable-paragraph=\"\">Another idea is to have a follow-me kind of game to entice a person to do exercise while following sequences of arm postures. Captured image information can be analyzed. Player\u2019s correct pose sequence scores points.<\/li><\/ol><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"6c95\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">With mobility, the robot can move right next to you for calls or move to the appropriate distances for games or other applications.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"2600\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong class=\"be\">The Robot is a Complete Development Environment<\/strong><\/h3><p id=\"7484\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">I was totally hooked when I first played with an\u00a0<a class=\"ba qs\" href=\"https:\/\/en.wikipedia.org\/wiki\/Apple_II\" target=\"_blank\" rel=\"noopener ugc nofollow\">Apple II<\/a>\u00a0computer. I could write and execute\u00a0<a class=\"ba qs\" href=\"https:\/\/en.wikipedia.org\/wiki\/Integer_BASIC\" target=\"_blank\" rel=\"noopener ugc nofollow\">Basic<\/a>\u00a0code right from the keyboard with the built-in editor. The results appeared immediately on the screen. With the color graphics support, I could create pictures interactively. That kind of feedback was extremely empowering and inviting for exploration. I wanted the same development environment for the robot.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"e6e1\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">There is a minimum set of tools required to develop capabilities for the robot. All software development tools run on the Raspberry Pi. These tools can be remote accessed from any computer or laptop via Virtual Network Computing (<a class=\"ba qs\" href=\"https:\/\/en.wikipedia.org\/wiki\/Virtual_Network_Computing\" target=\"_blank\" rel=\"noopener ugc nofollow\">VNC<\/a>), the headless setup as mentioned before. Changes made on the robot can be tested directly without relying on any other external devices.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"16c7\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Python programming can be done with the pre-loaded\u00a0<a class=\"ba qs\" href=\"https:\/\/thonny.org\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Thonny<\/a>\u00a0editor or with a downloaded free\u00a0<a class=\"ba qs\" href=\"https:\/\/code.visualstudio.com\/docs\" target=\"_blank\" rel=\"noopener ugc nofollow\">Visual Studio Code<\/a>\u00a0for a more powerful code editing.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"02e1\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">OAK-D Lite imaging pipelines are Python snippets on the main program that are downloaded onto the OAK-D Lite device.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"a6ef\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">The Arduino Nano 33 BLE Sense and the Arduino UNO boards are programmed with the\u00a0<a class=\"ba qs\" href=\"https:\/\/www.arduino.cc\/en\/software\" target=\"_blank\" rel=\"noopener ugc nofollow\">Arduino IDE<\/a>\u00a0that runs on the Raspberry Pi.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"749a\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">With the Raspberry Pi Desktop, windows to program the main Raspberry Pi processor and the peripheral processors using the Arduino IDE can be shown simultaneously on the same screen.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"115a\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>Where is the LiDAR and ROS on the Robot?<\/strong><\/h3><p id=\"1d1a\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">For those who have been reading about robots, many of these robots have a\u00a0<a class=\"ba qs\" href=\"https:\/\/velodynelidar.com\/what-is-lidar\/#:~:text=Depending%20on%20the%20application%20and,more%20slowly%20than%20a%20car.\" target=\"_blank\" rel=\"noopener ugc nofollow\">LiDAR<\/a>\u00a0(light detection and ranging) device. Many robots also run on top of\u00a0<a class=\"ba qs\" href=\"https:\/\/www.spiceworks.com\/tech\/artificial-intelligence\/articles\/what-is-robot-operating-system\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">ROS<\/a>\u00a0(Robot Operating System).<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"99a8\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">LiDAR (Light Detection and Ranging) technology senses the reflection of a scanning light source as it is bounced off objects to produce a 3D map of their surroundings. Perhaps not at the same accuracy, the depth detection stereo camera on the OAK-D Lite can do the same function at a much lower cost.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"d51c\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">ROS is not really an Operating System as such. It is more like a framework designed for robotics software development. It\u2019s a collection of libraries and tools that operates on top of a conventional operating system such as Linux. While ROS allows for expandability and has a large support community, it requires a substantial level of overhead to set up and operate. In my opinion, ROS is more suited for industrial applications.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><h3 id=\"74fb\" class=\"zh zi sz am zj lf zk lg lj lk zl ll lo lp zm lq lt lu zn lv ly lz zo ma md zp br\"><strong>Conclusion<\/strong><\/h3><p id=\"2984\" class=\"pw-post-body-paragraph yp yq sz mf b tj zy ys yt tm zz yv yw lp aba yy yz lu abb zb zc lz abc ze zf zg il br\" data-selectable-paragraph=\"\">Except for the 3D printed parts, all components were purchased off the shelf. Total cost of the material is less than US$700. This is still expensive and takes quite a bit of effort to assemble.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"02a2\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">While there are some areas where cost can be reduced and new 3D designs can be done to consolidate or replace current mechanical parts, the final cost will not be reduced too much. Besides, there are at least two functions that need to be added that will increase the cost.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"819f\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Currently, the robot needs to be charged manually. We are in the process of adding some 3D printed hardware and sensors to design a charging home port for the robot. Cost is to be decided.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"a5f3\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">Also, the Raspberry Pi uses a microSD card for program storage. This should be upgraded to use a more reliable SSD memory. Luckily, the new Raspberry 5 supports booting from and using SSD memory. This could add about $150 to the robot.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"cc45\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">However, the Prototype 1 design is a good start. Even without further work, the current robot is a good platform to be used to start exploring robot functionalities.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"cfa3\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">With the help of ChatGPT, I have the modular software architecture defined. I have a basic functional robot up and running. But there is a lot more to do.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"f8c1\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">In the mean time, I am also studying up on various AI concepts to see how they can be deployed on the robot. The fun is just starting.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"3faf\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">If there are interest, I could provide more details on the various aspects of the robot\u2019s design in future stories. Please let us know.<\/p><p data-selectable-paragraph=\"\">\u00a0<\/p><p id=\"c946\" class=\"pw-post-body-paragraph yp yq sz mf b tj yr ys yt tm yu yv yw lp yx yy yz lu za zb zc lz zd ze zf zg il br\" data-selectable-paragraph=\"\">You might want to build one yourself too. It would be interesting to see how far we can get with such a robot if more people worked on it together.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Everyday, we hear about AI and various surveillance systems that are used in homes, businesses and the government to monitor everything that we do. I\u2019ve been wondering if I could make use of these AI and imaging technologies to put together an affordable robot for the elderly. Perhaps a robot to provide companionship as well [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1577,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7,1],"tags":[],"class_list":["post-1610","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hardware","category-robotics"],"_links":{"self":[{"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/posts\/1610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/comments?post=1610"}],"version-history":[{"count":35,"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/posts\/1610\/revisions"}],"predecessor-version":[{"id":1650,"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/posts\/1610\/revisions\/1650"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/media\/1577"}],"wp:attachment":[{"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/media?parent=1610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/categories?post=1610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pleiades-technology.com\/index.php\/wp-json\/wp\/v2\/tags?post=1610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}