Bench Robotics

Nvidia Jetson Nano 3D Printed Robotics Development Platform With

“3D printed robotics development platform” or 3DPRDP a completely 3D printable development platform. Powered by Nvidia jetson nano and Arduino nano board runs on ubuntu. AI and machine learning models can be implemented easily on this. I designed this to test out prototypes and new ideas quickly. Instead of starting from scratch for every project, this will help in testing critical stuff early on the project like code and algorithms. I wanted to design an affordable and accessible system. This is completely 3D printed no funky assembly or nuts and bolt required.

The main program is written in python and uses flask and socket io to run a webserver on board. You can connect to the interface using the IP address. This project is modular, you don’t need all the components to make it work. I have highlighted the components which can replaced or their alternatives along with this article…

Supplies

  • 3D printed parts
  • Nvidia Jetson nano
  • CSI cam
  • Go pro session(optional)
  • Arduino nano
  • 2 X Motor drivers
  • 2 X MG90S servo
  • 0.92 inch oled
  • PCA9685 servo driver
  • USB cables
  • 4 X 16850 Li-on battery
  • Power bank for jetson nano

Relax and hear me out

This project might be a little advanced for beginners but don’t worry if you are ready to put in some effort it will be fine. The design of this project might look a little intimidating to beginners but it is not. I am not a professional programmer or expert. I learnt all the code and other stuff while doing this project. So if I can do it so can you. I have also attached all the resources I used to learn.

Also, not every component is necessary to make this project. If you are on a tight budget, you can leave some things out like GoPro Don’t worry, I will explain along the way. I have also adjusted the code in case some components are not available; just comment some lines out, and it should work fine.

I have provided lots of hyperlinks in the project if you read through them, it will make it easier for you to build this project. They will solve most of your problems.

Setting Up Nvidia Jetson Nano

We are going to use the Nvidia Jetson Nano for this project. NVIDIA Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts.

You can use Raspberry Pi, and the code for this project is not dependent on the hardware used. I chose Nvidia because of the many libraries and examples they provide, which will make it easier to add AI/ML features in the future.

Here is the complete official guide on how to set up Jetson Nano.

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit

For visual learners

Digi-key tutorial

Tip:-

Here are some more learning resources about the Jetson Nano. I used these to set up my Jetson. This is the best dedicated website for Jetson devices.

Assembly

This project is completely 3D printed and does not require any fancy assembly. Printed in PLA with 0.3mm layer height ender 3 pro. Reading the assembly instruction would be very boring so here is an interactive 3D model of the whole project that runs on your browser. There is a 3D model explode feature on grab cad please use that you will better understand which part goes where.

Grabcad interactive model

STL file for 3D printing

Raw Solidworks files for the project can also be download from the given link. Since these are original files and are parametric changing the design will be very easy.

Tip:-

If you don’t have access to a 3D printer you can use any regular robot chassis or just an old plastic box. I have used many take-out plastic boxes when I started this hobby. Robotics is an expensive hobby but there are always ways to work around it like simulation and stuff. ROS is a free platform to experiment and build robots without spending a dollar. I will make a ROS package for this project in upcoming week will update here soon.

Arduino and Motor Setup

We are using Arduino nano and two motor drivers to control each wheel. Setup is simple like any other Arduino-powered car nothing special. Arduino will be connected to jetson via USB.

Powering Arduino and Motor driver.

Arduino takes its power from Jetson nano via USB cable. While the motor driver takes its power from Li-ion batteries. They run on two separate power sources. The motor driver has separate + – pins for power input. We just need to connect the ground of Arduino nano to the ground of the motor driver. Never give power to Arduino nano with battery and USB at the same time you will blow up the board.

(DO NOT CONNECT ARDUINO TO BATTERY AND JETSON AT THE SAME TIME.

ONLY CONNECT GROUND WIRE OF BATTERY TO THE GROUND OF ARDUINO NANO)

Motor Driver

Motor driver has input pins (A1,A2,B1,B2) or (INT1,INT2,INT3,INT4) labelling might be different but they do the same thing. Take signals from Arduino pins and change the motor direction based on that.

The driver also has 4 output pins each labeled Motor A and Motor B. You attach your motor wires here. There is no separate power supply for motors. they take their power from the motor driver

Pin used :- 3,6,4,5

Wiring

Driver 1

IN1 = 3; IN2 = 6; IN3 = 4; IN4 = 5;

Driver 2

IN5 = 7; IN6 = 8; IN7 = 9; IN8 = 10;

Connect GND of Arduino nano with GND( negative) of the motor driver.

Arduino_program.ino

Tip:-

You might be uncomfortable with this setup of Arduino it’s ok. There are alternatives I used this setup to make my bit look clean. We can also use regular Arduino UNO with the motor driver shield. This is the reason why I made everything a separate system.

How our current system works.

Arduino nano gets commands from python file vis USB.

f – forward

b – backward

l – left

r – right

c – stop

Based on these commands it will run a function.

Example:-

If received ‘f’ it will run Forward(Speed,0); which will move the bot forward.

We can replace our current setup with Arduino UNO and motor driver shield without changing anything in the python code. Just make the changes in the Arduino code. You can actually use the same Arduino code and just change the pin declaration in the beginning of the code.

Here is the reference code from one of my previous projects. It runs on Bluetooth use this code to learn how to declare the pins.

S.M.A.R.S

https://github.com/sastejugaad/SMARS

Leave a Reply

Your email address will not be published. Required fields are marked *