Hello World, THIS IS A WORK IN PROGRESS, IT IS NOT COMPLETE. IT MAY NEVER BE COMPLETE.
This post details the design assembly and programming of a small mobile robot called Hexnut, or X0 for short. Hexnut is not a kit. This is not an advertisement for Hexnut, nor instruction on how you can build your own Hexnut. Consider this a list observations and lessons learned from building a small mobile robot. I started this project ~3 years ago and the number one lesson learned thus far is building a robot is hard! There are many facets that need to be understood before anything useful can be constructed.
A Hexnut project cheatsheet is here
The ultimate goal for this project is to create a small mobile autonomous robot. The robot should be able to move about in a domestic area, such as a house or office. The robot should be able to perform tasks such as finding objects, delivering objects to a location, or patrolling an area. These tasks will require a reasonable level of intelligence and autonomous behavior. A secondary goal is to create a set of modular tools that allow others to build similar robots using similar hardware.
The computing core of Hexnut is based on a Raspberry Pi linux computer running Debian. The Raspberry Pi communicates with a Brainstem microcontroller and a Brainstem Moto microcontroller. The Brainstem microcontrollers provide the low-level hardware interface for data acquisition and control.
This project is a combination of hardware and software. All software is published at:
Get the Body
I believe the hardest part to get right on a mobile robot is the chassis, motor and power systems. Most DYI hackers do not have the precision tools needed to make this part of the robot. Luckily, we have the toy industry and garage sales. Hexnut uses a pre-made four wheeled robot chassis from a
Rumble Robot called Lug Nut. The original name Lug Nut inspired the robot’s name Hexnut. Here is what Lug Nut originally did. This post will describe something more like this video. Rumble Robots are well made for “toy” robots and can be disassembled and modified. It has a place for 4 AA batteries molded into the body. It also has the motor, gearing and drive train. This makes an ideal starting platform for a more intelligent robot.
]2 Robot drivetrain uses differential steering with two motors.
Get Direction Hexnut has a
Devantech compass module connected to the Moto I2C bus. The compass returns values in the range of [0-3599]. This value is converted to one of eight directions. Hexnut also has a gyroscope HiTEC Robonova-1 Gyro (HG-R01) connected to the Moto analog input.
Get Control The next most important part after having solid chassis and motors is the electronic motor drive system. Hexnut uses two
3 Amp Low Voltage H-Bridge from Acroname to supply controlled power to its two motors. The data sheet is here. The motor controllers are attached to a Brainstem Moto 1.0 and this is where all low-level motor control is performed. The Hexnut uses feed-forward motor control and does not have any sensing of wheel velocity. The H-Bridge is configured for PWM motor control and can output a voltage in the range of [-Vmotor, +Vmotor].
Get on the Bus I chose to use RabbitMQ for the message bus framework. It was easy to install on the Raspberry Pi and it supports a number of client interfaces, including the python pika library.
Get the Stats
It will be important to view statistics for hexnut in order to debug any problems. Graphite is used to view the statistics.
Get the Data
PostgreSQL is used as a database engine.
$79 x1 Brainstem Moto 1.0
$80 x2 Low Voltage H-Bridge
$57 x1 Devantech Compass