Hardware Engineering - ImmersiveSystems/net-robo GitHub Wiki

Introduction

This page will document the engineering behind the hardware components of the project. This document is primarily concerned with the Arduino boards and it's communication with the microprocessor (Raspberry Pi/Beaglebone Black).

data and power connection

Chassis

Chassis is the main mechanical component of the robot. Chassis include frame of the robot, gears, motors and wheels. For the first robot we are using Dagu Wild Thumper 4WD All-Terrain Chassis, 72:1 gear ratio. The advantages of this chassis is it's powerful motors, solid structure, independent suspension and a motor controller built specificity for this chassis. Downsides of this chassis is power consumption, lack of motor encoders, difficulties with controlling the robot (robot goes too fast).

Possible options for the second robot: Lynxmotion Aluminum A4WD1 Rover Kit (w/ Encoders) Also very robust, has it's own motor controller but comes with motor encoders.

Motor Controller

For the first robot we are using Wild Thumper Controller Board because it's optimized for the chassis we have. The controller includes heat sink, control of charging of the battery, fuses to protect motors, 5V output to power USB hub (more on that in the Raspberry Pi section), the controller is programmed with Arduino IDE.

We faced several issues with this motor controller: it didn't come with a bootloader. We followed instructions from here and here to burn the bootloader. The second issue was that Arduino IDE doesn't support ATmega 168p CPU by default.

On-board computer

Possible options:

  • Raspberry Pi
  • BeagleBone

We used Raspberry Pi (RPi) to safe time on ordering parts because we already had a RPi. RPi is fast, cheap has an integrated videocore graphics processor, a lot of add-ons (including a camera) and most importantly a lot of tutorials, projects and documentation. BeagleBone might be as good as RPi but I suggest we continue using RPi because it's doing its job good enough.

Battery and powering

Motor controller requires a 7.2V battery. The only types of batteries the controller can be powered with are SLA, NiCd, NiMh. We purchased 7.2V NiMh battery with the capacity of 5000 mAh. We haven't experimented yet with how long can the robot be powered by this battery but it seems that the time is very limited. Possible solutions might be using a battery of bigger capacity of using two or more 5000 mAh batteries. It is important to charge the battery with caution because overcharging the battery might damage it.

Battery supplies power directly to the motor controller, motor controller through a 5V output powers a USB hub. USB hub provides power to RPi via a microUSB cable. This way all components are powered throm a single battery. Using just one battery simplifies the task of charging it. THe battery is charged through the motor controller by connecting a 12V input to the controller.

It's important to shut down RPi after each time we use it so it doesn't turn off abruptly when the battery dies. Ideally some mechanism needs to be designed to safely power RPi off when the battery voltages gets too low.

Communication

RPi sends commands to the motor controller via a serial channel. We are using a USB connection between RPi and the controller. Other options are using TD and TX pins or using I2C connection pins. We might consider later options if we want to use USB port for some other use. RPi is connected to a local network via WiFi dongle, and receives commands from a local server.

Assembly

At this point the battery is located in it's compartment on the chassis, the controller is located on the top of the battery, RPi and the USB hub are mounted on the top level of the robot. RPi is mounted with screws and the hub is fixed with a glue gun. location of components

Future improvements:

  • Motor controller should not be placed directly on the battery because it gets heated and heat might be dangerous for the battery
  • Wires should be color-coded (red and black wires for power)
  • All components should be mounted with screws or strapped with plastic bands.