Back to Basics
Over the past couple of months I've gone through a reset of sorts on the robotics front. After spending quite a while exploring various approaches to walking and other mechanical conundrums, I wanted to start making better progress implementing some of my machine learning ideas. I've been particularly interested in developing an environment where I could do some foundational work applying the Arduino Artificial Neural Network to some real world sensor data and robot control tasks.
To get on track with these experiments I needed a simple but robust robotic platform. It needed to be medium size, large enough to carry a modest payload of batteries, breadboarded circuits, and sensors, yet small enough to explore the rather confined space of my home office. I also wanted it to be reasonably inexpensive, repeatable, and easy to tear down and reconfigure. In short I wanted to get back to basics.
In the end I wound up with a two-wheeled differential drive chassis built around a Tamiya Twin-Motor Gearbox kit. The chassis uses some additional Tamiya hardware from the universal plate and universal arm kits. The wheels are made from peanut butter jar lids with rubber band tires. I needed a nice wide, large diameter wheel to operate on the deep pile carpet that plagues the upper floor of the house. Plus I've been hoarding peanut butter lids for a long time and really wanted to use them in a project. For the rear caster I used one of my long-time favorites, a ceramic cabinet knob from the bins at Home Depot.
On the electronics side, I'm driving the motors with two Texas Instruments SN754410NE h-bridge ICs, running in parallel to provide double current. The microcontroller is an Atmel ATMEGA1284P selected here primarily for its generous 16K of SRAM. A Microchip 24LC512 EEPROM provides 512kbits (64K) of non-volatile memory for data logging and other long term storage. For the first round of development I outfitted the bot with two bumper switches and three homebrew IR proximity sensors.
As basic as the new setup might be, it necessarily involved the requisite tinkering with motors, sensors, hardware and microcontrollers. I'll be posting more notes from the build in the coming weeks while it's still fresh.
With all of this thinking around resetting and getting back to basics, it seemed like good time to revisit how I'm documenting the robotics work. The process of creating robots is extremely dynamic, extending from "thought experiments" and philosophical meanderings, to where the rubber quite literally meets the road with a functioning machine. The process is also extremely iterative. Projects are seldom completed, rather they are always works-in-progress tinkered with and reconfigured endlessly, or until they are abandoned to chase a new idea.
It's always been my goal to write about hobby robotics holistically, capturing the essence of the journey while delivering technical information that readers can put to practical use. In hindsight I think I've been filtering too much, with the result being that a great deal that I intend to communicate simply never makes it to the site. And so begins The Robot Diaries with a simple premise to write more and filter less. Hopefully this new format will prove a more fluid vehicle for sharing some of the nuance of the process while still providing a suitable home for the more formal tutorials and other write-ups. Time will tell.
October 1, 2013
Migrating to the 1284P
The ATMEGA1284P is one of the more capable microcontrollers available in the hobbyist and breadboard-friendly 40-pin PDIP package. Here I discuss migrating the neural network project to the 1284p to take advantage of its relatively generous 16K RAM.
Getting Up and Running With a Tamiya Twin-Motor Gearbox
Tamiya makes a full line of small gearbox kits for different applications that are capable for their size and an easy, economical way to get a small to medium size wheeled robot project up and running.
An Arduino Neural Network
An artificial neural network developed on an Arduino Uno. Includes tutorial and source code.
A Simple Machine Learning Experiment for the Artificial Neural Network
A very simple concept for getting started applying the network to a robot machine learning scenario. The test robot has three IR sensors and two bump switches. For the experiment, the robot will use the bump switches to register collisions, and based on those collisions will learn to avoid obstacles in the future.
Flexinol and other Nitinol Muscle Wires
With its unique ability to contract on demand, Muscle Wire (or more generically, shape memory actuator wire) presents many intriguing possibilities for robotics. Nitinol actuator wires are able to contract with significant force, and can be useful in many applications where a servo motor or solenoid might be considered.
Precision Flexinol Position Control Using Arduino
An approach to precision control of Flexinol contraction based on controlling the voltage in the circuit. In addition, taking advantage of the fact that the resistance of Flexinol drops predictably as it contracts, the mechanism described here uses the wire itself as a sensor in a feedback control loop.
LaunchPad MSP430 Assembly Language Tutorial
One of my more widely read tutorials. Uses the Texas Instruments LaunchPad with its included MSP430G2231 processor to introduce MSP430 assembly language programming.
K'nexabeast - A Theo Jansen Style Octopod Robot
K'nexabeast is an octopod robot built with K'nex. The electronics are built around a PICAXE microcontroller and it uses a leg structure inspired by Theo Jansen's innovative Strandbeests.