Abyss the Great (Smartphone Powered AI-Robot Based on Intel`s Opensource OpenBot Platform)

by Zoran Dznda in Workshop > Electric Vehicles

158 Views, 3 Favorites, 0 Comments

Abyss the Great (Smartphone Powered AI-Robot Based on Intel`s Opensource OpenBot Platform)

Abyss.png
screen_object_tracking_2.jpg
screen_object_tracking_1.jpg

I’m excited to showcase our custom-built AI-powered robot, inspired by OpenBot, Intel’s open-source robotics platform. While I used OpenBot as a foundation, I took a creative approach to make this robot uniquely ours.

Instead of following the exact design, we made several modifications to fit our needs—and more importantly, to make use of the resources I had at the time. For example, I swapped the recommended Arduino board for an Arduino Nano, used different motors and motor drivers, and customized the Arduino code to optimize performance. These changes allowed me to explore new possibilities while staying true to the essence of OpenBot, which is all about making robotics accessible and innovative. By the way, we’re tinkerers at heart—for us, the process matters more than the cost!

In this guide, I’ll not only show you how we built this robot step by step but also highlight the adaptations we made along the way. Whether you’re sticking to the original design or looking to experiment, this project will inspire you to dive into the exciting world of AI and robotics.

For reference, here’s a link to the original Intel OpenBot open-source platform:

🔗 https://www.openbot.org/

I encourage you to compare it, experiment, and find your own innovative approach to tackling challenges along the way. This project is meant to inspire you to research, investigate, and innovate, so I highly recommend checking out the original OpenBot site and connecting with other tinkerers who have already modified the project. Add your own signature to it!

Lastly, I should mention that I aimed to leverage as many free AI tools as possible throughout this process—from refining the narrative and exploring mechanical solutions to modifying the code, wiring, and everything else. AI helped shape this project, and I hope it can help you, too!

Even It choose its name "Abyss", I add "the Great" just because I`m from Macedonia!

My Future goal and initial idea were to create a voice-controlled robot with the capability for AI reasoning and the ability to interpret chat-like conversations into commands. Additionally, it should have the potential for upgrades, such as object proximity detection sensors, GPS navigation, Solar-cell charging system etc. This project can serve as a solid foundation for further integration with OpenAI API`s for LLM models like ChatGPT and similar AI models.

This project has online training platform called OpenBot Playground where you can program your robot using block based coding environment.

🔗 https://www.playground.openbot.org/

This basic opensource platform has capabilities for Voice commands, Object tracking, Following person, Autopilot, Manual Remote control, and most important - Upgrades!

Supplies

Mechanics SupplIes.png
Electronics SupplIes.png

Before I started this project, I searched the web for ideas and similar projects that could help or be used as part of this one. Most of what I found was based on Raspberry Pi or other, even more expensive, microcomputers with complex designs. I kept searching for a cheaper solution using more affordable microcontrollers like Arduino, as that was what I could gather from previous projects. I also knew it was possible to build what I was aiming for with those.

As you can see, my choice of other supplies and materials was oriented toward household items and common components that anyone can easily find.

For the main body construction, I used an old broken RC toy car, mainly for the body and rear wheels.

For the front wheels, I built two custom-build separate arms that contain motors, a gearbox, and suspension.

Before you start, you should gather some essential parts:

  1. Arduino Nano *1
  2. L298N Motor Driver Module *1
  3. TP4056 Li-lion Battery Charger Module (Optional)
  4. HC-SR04 UltraSonic Sensor *1
  5. Mini DC-Motor *2 (I use MT62 from same toy-car, but you have free will)
  6. Lithium-Ion Battery-Pack
  7. aaaand certainly Android Smartphone. (the brain of the robot)

You will have more free will and imagination choosing:

Old Toy-car (for body, or you can build something from scratch)

Pice of PVC pipe and other plastic (for construction , use your imagination)

Some PVC piping addons (also for custom-made parts)

Nuts, Bolts, Washers, Bearings..(also, use your imagination)

Tooth gears (for reduction)..

Use your imagination :)

Tools

Tools.png

This project encourages creativity and lets you choose your own approach. As you can see in my design, I mostly used custom-built parts for the mechanics and affordable, everyday items to assemble unique mechanisms.

I followed an iterative approach, which involved multiple trial-and-error cycles and start-overs, but in the end, I arrived at this final solution. One of the key techniques I used for plastic construction was salvaging plastic sheets from PVC pipes, which I then shaped into the necessary pieces for assembling the robot’s body and arms.

To do this, I used a hot air gun to soften the PVC pipe, then cut it using tin snips, scissors, and a scalpel. I experimented with several types of glue, each serving a different purpose. For plastic assembly, I used super glue and two-component epoxy, and I even reinforced some parts using 3D printer filament with iron. If you’re working with glue, I highly recommend using clamps to hold parts in place while curing, along with other tools for smoothing surfaces.

For the electronics, you’ll need basic tools like screwdrivers, wires, and maybe a multimeter for troubleshooting.

The Process..

the Process.. 01.png
the Process.. 02.png
Abyss! (Smartphone powered AI-Robot based on Intel`s OpenBot opensource platform) Body + Suspension

First, I grabbed an old, broken RC toy car that had been lying around, just waiting for a second chance at life. I stripped away almost everything that wasn’t necessary—anything that didn’t match the awesome robot I had in my imagination!

I managed to fit all the electronics—an Arduino Nano, a motor driver module, and a bunch of wires—inside the original battery compartment of the RC car. Why? Because I had a cool plan: I was going to use a custom-made rechargeable battery pack!

Next, I got creative. I repurposed an old laptop charger casing to make a battery case, glued it onto the robot’s body, and carefully placed the battery cells inside. To hold the smartphone (which would act as the robot’s brain), I bent a piece of plastic into shape and glued it right on top of the battery casing—instant phone holder!

Of course, I had to make sure everything was connected properly, so I drilled some holes for the wires—one for the motors and sensors, and another for the USB port of the Arduino, which would plug straight into the smartphone.


As you can see in the second picture, I grabbed a piece of PVC pipe, my heavy-duty scissors (a.k.a. tin snips), and a heat gun. I heated up the PVC pipe, cut it into the right-sized pieces, then flattened them out to make them nice and even.

Next, I let my imagination (and experience) take over! Using the plastic pieces I had just made, along with some nails, nuts, bolts, and bearings, I put together two symmetrical arms that would hold the motors, gearing system, and wheels.

For the motor mounts, I used two-inch-wide PVC pipe holders and glued them onto the arms. To make sure the robot had smooth movement, I also built two extra elbow joints and attached them to the main body. To keep things rolling smoothly, I scavenged bearings from an old broken hard drive and fixed them into place.

For suspension, I initially tried pen springs, but they lost their elasticity quickly. After that, I switched to rubber bands, which was an AI suggestion, and it worked out pretty well. You can see the final looks on the video.

https://www.youtube.com/shorts/vG-qbGECLMM (and please subscribe on channel if like.. it`s @wisdomxpress216)

Electronics

Electronics Wiring.png
Arduino-Nano-pinout.jpg
fd197cd698e93af330b73353f638b1b2.jpg_720x720q80.jpg

I tried my best to sketch the exact Schematic Diagram I used in this project.

I chose the Arduino Nano because it closely resembles Intel’s original design, but you can use almost any Arduino module, ESP8266, or ESP32 with eventual minor code adjustments.

As you can see, the Arduino Nano is powered by the smartphone via USB (OTG) and controls the DC motor movement through pins 5, 6, 9, and 10, which are connected to the L298N motor driver module. I used the L298N motor driver simply because I didn’t have the one recommended in Intel’s OpenBot open-source project.

The Ultrasonic Sensor is powered by the 5V output from the Arduino and is connected to pins 11 and 12, with Echo and Trigger wired accordingly. The motors are connected to the L298N outputs, and I used an iterative approach to determine the correct wiring. I recommend lifting the robot off the ground and testing whether the motors rotate in the proper direction. If a motor spins in reverse, simply swap the wiring to fix it.

The motors are powered through the L298N module, which shares a common ground with the Arduino and gets its positive voltage from the battery pack. The L298N comes with default jumpers, which are usually removed when the Arduino code controls motor direction. However, in this case, the Jumpers should Remain in place.

In this Instructable i include Pinout Diagrams of Arduino Nano and L298N Motor-driver module.

Software

screen_main.jpg
120615629-c4a13f00-c458-11eb-8094-b9b8f86a19b9.jpg
235748185-6678df48-8f31-4343-beed-0c873a89017f.jpeg
Abyss the Great (Smartphone Powered AI-Robot Based on Intel`s Opensource OpenBot Platform) -Testing

I assume you have some experience with microcontrollers and the Arduino IDE, so I’ll skip the basic Arduino training, which you can easily find elsewhere if needed.

This project includes many features, some of which we didn’t use, but you’re free to enable them or add new ones later.

You can use any other MCU (microcontroller) with the following features:

  1. 1x USB-to-TTL Serial (communication with the smartphone)
  2. 4x PWM output (control the motors)
  3. 1x analog pin for battery monitoring
  4. 2x digital pin for the speed sensors
  5. 1x digital pin for the ultrasonic sensor (optional)
  6. 2x digital pin for the indicator LEDs (optional)


FIRMWARE


The firmware contains everything you need—you simply select which features to use and configure them accordingly. Disabled features are not compiled to save memory and improve performance. If a flag is not defined, that feature remains disabled. Each model has default settings, but you may need to adjust them based on your configuration.

Feature Configuration

  1. Voltage Divider
  2. Enable by setting HAS_VOLTAGE_DIVIDER 1 (disable: 0).
  3. If enabled, specify:
  4. VOLTAGE_DIVIDER_FACTOR = (R1+R2)/R2
  5. VOLTAGE_MIN (minimum voltage for motors)
  6. VOLTAGE_LOW (minimum battery voltage)
  7. VOLTAGE_MAX (maximum battery voltage)
  8. Indicator LEDs
  9. Enable with HAS_INDICATORS 1 (disable: 0).
  10. Speed Sensors (Front/Back)
  11. Enable with HAS_SPEED_SENSORS_FRONT 1 / HAS_SPEED_SENSORS_BACK 1 (disable: 0).
  12. Ultrasonic Sensor
  13. Enable with HAS_SONAR 1 (disable: 0).
  14. Enable median filtering for sonar measurements with USE_MEDIAN 1 (disable: 0).
  15. Bumper Sensor (for collision detection)
  16. Enable with HAS_BUMPER 1 (disable: 0).
  17. OLED Display
  18. Enable with HAS_OLED 1 (disable: 0).
  19. LED Control (Front/Back/Status LEDs)
  20. Enable with HAS_LEDS_FRONT 1, HAS_LEDS_BACK 1, HAS_LEDS_STATUS 1 (disable: 0).

Dependencies

  1. Speed Sensors / Ultrasonic Sensor
  2. Requires PinChangeInterrupt library.
  3. The Arduino Nano has only two external interrupt pins (D2 & D3), and D3 also supports PWM.
  4. This library allows all pins to be used as interrupts by parsing port interrupts.
  5. OLED Display
  6. Requires Adafruit_SSD1306 and Adafruit_GFX libraries.

You can find below Arduino Firmware (Sketch) in *.PDF and *.INO-file, just download it, open it in your Arduino IDE, burn it in to your Arduino module and use it as it is.


OPENBOT ANDROID APP


This basic opensource platform has capabilities for Voice commands, Object tracking, Following person, Autopilot, Manual Remote control..

Features

Click on the links below to read about the features of the apps.

  1. Robot App
  2. Controller App

Install the apps

The easiest way to get either of the apps is to download it directly to the phone using the corresponding QR code. If you are on the phone browser, you can also just click on the QR code. You can then open the apk on your phone and install it. Note that the apk is only signed with a debug key.

🤖 App | 🎮 App

Alternatively, you can download the apks from the assets of any release. If you want the latest app from the master branch, you can also download it from the build artifacts here. Note, that it may not be stable. If you would like to make changes to the app later, follow the steps below to compile the app and deploy it on your phone.


DISCLAIMERS

  1. Safety: Always make sure you operate in a safe environment. Keep in mind, that your phone could be damaged in a collision! Special care is necessary when using automated control (e.g. person following or driving policy). Make sure you always have a game controller connected and are familiar with the key mapping, so you can stop the vehicle at any time. Use at your own risk!
  2. App under development: The application is under development and may crash or exhibit unexpected behaviour depending on your phone model and version of the operating system. Make sure to test all functionalities with no wheels connected. Use at your own risk!


About everything further you can visit following links for original readme file and everything else.

https://github.com/ob-f/OpenBot/blob/master/firmware/README.md (Firmware)

https://github.com/ob-f/OpenBot/blob/master/android/robot/README.md (Adroid App)

https://github.com/ob-f/OpenBot (for else).