10/12/2014 at 06:15 •
While Little Sergei was training for his new job, disaster struck! His "hip" gave out, incapacitating Sergei and putting a possible end to his ambitions. Now, he needs to wait for a replacement hip, and hope it helps enough to resume the life of a robot butler.
Unfortunately, the Sabertooth Dual 12A Motor Driver burned out in the middle of testing, complete with smoke and the smell of fried electronics. After some testing, the most likely cause was that the connector wires got squished together, or into the metal body. As a result, two wires were grounded and burned out, so only one of the sides drive now. An important lesson in wire management: exposed wires should be kept track of at all times, or wrapped in an insulator like electrical tape.
Unfortunately, this means that the Robot Butler project will have to be on hold until a new motor controller can be found. Though, only one of the two controllers on the motor driver is broken. So for now, the half working motor controller has been salvaged. Perhaps it can be re-purposed for another project.
One Month Later...
Little Sergei is able to acquire a hip replacement, and is now back in action. It's a bit more complicated to move around now, but the enterprising robot shall not let that deter his quest.
A replacement motor drive is being used to control the robot motors. It is a Seeedstudio Motor Shield v1.0, which connects directly to the Arduino Mega. This ended up actually simplifying the the layout of the robot. The side connectors may also be amenable to servo motors, removing the need for a breadboard to handle the Lifting Servo Motor. In addition, the motor shield automatically bridges and powers the Arduino, so the 5V Universal Battery Elimination Circuit can be scavenged from the project.
Controlling the motor shield is a bit different, each motor utilizes three PINs, compared to the original one:
- Power draw
08/18/2014 at 05:54 •
As the first step of training is to review all necessary equipment, Little Sergei will double-check his equipment and diet regimen to make sure he's prepared.
While I'm able to piggyback off existing circuitry of the battle-bot, I still need to go through and make sure everything is connected properly. This will also be useful information if anything breaks. Below is a diagram of the device layout for this project.
The layout begins with two Lithium Polymer batteries in serial, providing 14.8 volts to the robot. After going through an on/off switch, the power splits into a motor controller and a "Universal Battery Elimination Circuit" (UBEC). The DC motors are powered by the motor controller. The UBEC regulates the voltage to a stable 5 volts, so the Arduino won't be damaged from electrical spikes. This is a common setup so that a single power source can be used for both motors and electronics.
For the robot control components, the Arduino pins are connected to the control pins for the lifters and controllers. A serial USB cable connects the Arduino with a laptop, while the Kinect sensor is hooked to the laptop.
08/12/2014 at 02:07 •
Now that all the equipment has been checked and verified, it is time for Little Sergei to put on the uniform and make sure he's ready to begin training.
Previously, I attached the new batteries and uploaded Standard Firmata to the Arduino. The next step is to fire up a Firmata program on my computer and test how well the motors move. A test executable can be found on the Firmata website. I attach both devices with a USB cable and connect the control/power/ground pins between the motors and Arduino.
This enables me to launch the text executable and select the appropriate serial (USB) port, which automatically populates the form field with all the available pins. I'm able to change the pin mode to "Servo" and adjust the motor values. All the motors react well, so I can move on to putting together the Kinect mount.
These extensions are assembled from materials scavenged from the Makerbar. The core of the mount consists of two 7 inch pine wood planks. Each piece of wood had a diagonal cut into the edge, and the two pieces are wood glued together. This formed a "L" shaped structure that is screwed into a simple plank. I remove the cover of the battlebot replace it with the plank.
The Kinect has a 1/4 inch screw hole on the bottom, the same as a standard camera mount. So I drill a hole of that size in the top of the mount and found a camera mount screw. Unfortunately, the weight of the Kinect is too much for the a "L" shaped mount to hold, so I add a simple support beam on the other side.
08/06/2014 at 21:37 •
After a few days of waiting, all of Little Sergei's new stuff arrived, so it's time to connect everything and make sure it works. Sadly, not everything is needed, so some parts will be taken out and stored away in a sad little cardboard box.
Two new Lithium Polymer batteries arrived in the mail, along with a charger. With the new batteries installed, the robot turns on without issue. I then used Arduino's built in examples to directly test the motors. Unfortunately, one of the lifting Servo motors (the right one) doesn't lift. Sounds do still occur and there's little motions, so perhaps the motor isn't connected properly.
I spent some time trying to create a new Kinect Project and have it communicate with the Arduino Mega over serial. I will use Standard Firmata, to cut down on the amount of Arduino programming. However, there is a scarity of up-to-date .NET libraries for Firmata. After a long period of failure, I settled on a C# library called Sharpduino.
Some libraries I added:
- JSON library
- Tools -> Library Package Manager -> Package Manager Console
- Install-Package Newtonsoft.Json
- Reference to Kinect library
- Project -> Add Reference... -> Extension
A quick update on Kinect: my computer may be unable to directly use the Kinect device, but I can use Kinect Studio to play a recording and develop off of that.
- JSON library
08/02/2014 at 21:21 •
While Little Sergei waits to build a new diet (batteries), he also needs to get glasses, in the form of a shiny cutting-edge version 2 Kinect. He'll spend a few days with it learning how to see boxes.
The new device provides high resolution imaging, depth sensing, and a good microphone. The SDK also has built in libraries, and is able to see up to six people and their general limb positions. Since people detection is already available, I will work on detecting a cardboard box instead. For now, here's a little brainstorming about how the robot will use the Kinect.
The new Kinect requires windows 8, and a USB 3.0 connection. Sadly, my wimpy computer only has USB 2.0. I attempted to buy a 34mm PCI Express card for USB ports, but the card needs Express version 2 to allow full functionality. Thus, I had to borrow a boot-camped Apple computer to operate the Kinect. I wish to avoid too many middle-men programs, so the core of the robot will be coded in C#. I'll aim to use standard firmata in C# so the program can directly send signals to the Arduino on the robot.
Unfortunately, the Kinect requires external power, and the adapter ends in an electrical socket plug. I haven't found any third party power adapters I could snip and connect to a battery, so for the moment, Little Sergei will be a tethered robot. He probably needs some hand holding anyway.
07/25/2014 at 19:29 •
"Little Sergei" is eager to begin working again, but he's been retired a bit too long. He needs to introspect and make sure those old bones are still in working order.
Step 1: reviewing battlebot condition
Looking through, the battlebot has:
- Two 7.4V LiPo two-cell batteries
- Four DC Motors
- Two Servo Motors for lifting
- Arduino Mega 2560
- XBee Wireless
Unfortunately, the battery packs are puffing a bit. This is indicative of potential damage in the battery. Possible, as the robot/battery has not seen use in two years. While many have continued to use puffed LiPo batteries without issue, there is still a chance of catastrophic failure (fire).
I'm no battery expert, and I lack guard sleeves and fire-proof storage containers. LiPo batteries are fairly cheap nowadays, so the better action is to simply buy new ones.
Arduino and Motor Testing
The LiPo batteries are connected in serial, so the system would expect 14.8V/1.6Ah of power. I don't have a variable power supply with me at the moment, but I can power the Arduino with an AC adapter/computer. The control pins are already connected, so I just need a temporary wire from Arduino 5V to Servo power pin. Using a Raspberry Pi, I sent a few motor signals through the Arduino, which moves the motors.
The attached computer's wireless will be used instead, so the XBee component can be removed.