Last year I was asked by my employer to research the current state of AI vision technology. The company wanted to determine if real-time eyeball tracking might be possible to include in their future products. The project assignment was fascinating for me. During that investigation, one of the platforms I learned about was the "Jetson Nano." The Jetson Nano impressed me so much that I decided to purchase one for myself. My idea was to build a 'research robot' that could be easily reconfigured by just "plugging in" different vision recognition AI algorithms.
My Nano arrived shortly and I began to look at ways to create a robot with it. I examined several open source projects, including the famous JetBot, but found them too limited for my purpose. I wanted something that was more "expandable" so that in the future I could add additional sensors and new functionality. I also wanted something that I could build from commodity parts, without needing a 3D printer. And I wanted to use as much off-the-shelf technology as possible to get the project up and running quickly.
After a bit of searching, I learned about the Elegoo Robot Car v3.0. This seemed the perfect platform to build upon. But I still needed a way to control it from the Jetson Nano. After more searching I found the python library 'pyserial' that can do bidirectional data transfer between the serial port in the Elegoo car and a USB port in the Jetson Nano. Once I got this working, I also discovered that I could run the Arduino IDE software needed to program the Arduino from the Jetson Nano's UI. That's convenient because it allows seamless integration of the Jetson Nano and the Elegoo Arduino. Taking it one step further, I compiled open source 'synergy' software (a program that lets you control multiple computers using a single mouse and keyboard) and installed that on both the Jetson Nano and my Apple MacBook Pro so that I could completely control the Jetson Nano (and Arduino) from my laptop. From my laptop with a single keyboard and mouse, I can program the Arduino in C, the Jetson Nano in python and shell, and the Android app using Android Studio.
I proceeded to build a support structure on the Elegoo car that would let me mount the Jetson Nano onto it. My robot's hardware setup was completed near the end of August, 2019. It had taken me a month to design and put all the components together. Next I needed to build the actual software to control it, as the robot couldn't really do anything yet. At that time I was also approached by my employer as they had decided to pull out of San Francisco and move their engineering to Turkey, where the company headquarters now is. I did not want to move to Turkey and so lost my employment as Sr. Android Developer at that time. But instead of immediately looking for new work, I decided instead to complete the robot's software, open source it, and use that project to show new prospective employers my skills.
I began to write the robot's software at the start of September, 2019. It took me just over a month to complete the 3 major components: a 'C' language controller for the Arduino, a Python and Shell AI module for the Jetson Nano, and a Kotlin Android app that uses Bluetooth to communicate with the robot. This was also my first Kotlin app. By the first week of October I had a working robot and Android controller. For image recognition on the Jetson Nano, I selected the 'ImageAi' library by Moses Olafenwa. ImageAI currently has support for 4 vision recognition algorithms. It can be extended to support new algorithms easily. Find ImageAi here: https://github.com/OlafenwaMoses/ImageAI
The full BatBot robot project is here: https://github.com/LeeHounshell/BatBot
Under the BatBot project, you can find a bill of materials and and assembly instructions (with assembly photos of the robot) here: https://github.com/LeeHounshell/BatBot/tree/master/robot
And you can find full instructions to setup the Jetson Nano here: https://github.com/LeeHounshell/BatBot/tree/master/jetson_nano
I hope this project is useful to you.
Comments