Mecanumbot Integrated Lights Test April 9, 2013 No Comments
I’ve finally achieved end-to-end control of the Mecanumbot’s LEDs! The latest hurdle which prevented me from writing the LED code was a RAM limitation on the microcontroller side. The solution involved swapping over from an Arduino Duemilanove with 1KB of RAM to a Seeeduino Mega with 8KB of RAM. The increased RAM also opens the door for me to code up the Mecanumbot low-level telemetry including items like bus voltage and bus current. This will be the final low-level Mecanumbot development!
In the video above, I demonstrate control of the internal, forward, and side LEDs via an Xbox360 controller. For the forward lights, I am actually varying the brightness with one of the triggers on the controller. (The Mecanumbot also has 16 LEDs directly below the transparent deck, but I didn’t bother to program a key to control these. They will be autonomously event-driven later on.) I then turn off the lights in the room and gauge the effectiveness of the forward lights on the scene in front of the robot. Works pretty well if you ask me!
3D-Printed iPhone 5 Car Mount April 8, 2013 No Comments
We got a new MakerBot Replicator 2 at work this month. I had been meaning to print an iPhone 5 mounting adapter for my car, so I thought I’d try to print that using the new printer!
The goal of the mount was to fit onto a car mount that I had bought for my iPhone 3GS back in the day. The suction cup and stand part of the mount conveniently separates from the backplane that holds the phone. That means all I had to do was to match the guide-rail holes on my new iPhone 5 mount for it to snap in perfectly. I chose to make the adapter fit my phone with the case on (using a ZeroChroma VarioProtect 5) and also included a hole for the lightning cable as well.
Mecanumbot Power Board January 6, 2013 No Comments
After a second revision, I have completed the power board for the Mecanumbot. This board has the following features:
- automatically selects between two batteries and the wall
- chooses the wall if available, otherwise drains the batteries one at a time
- provides power voltage and current measuring
- communicates to the primary vehicle Arduino over I2C
- provides regulated 5V power for the robot LEDs
New Aquarium Additions January 5, 2013 1 Comment
The aquarium now has a few extra plants (Baby Dwarf Tears, Microsword, Cabomba, and a Marimo Moss Ball) and a boat load of new shrimp (via mr_bullfrogs_aquatic_critters) including two pregnant shrimp!
New Six Gallon Aquarium January 3, 2013 No Comments
Check out my new aquarium! The tank is a six gallon Fluval Edge. I currently have it stocked with one male red gold tuxedo guppy, two female guppies, and one red cherry shrimp (four were eaten as soon as I put them in the tank.) I also have a couple live plants including Java Fern, Anubias, and Moneywort. I’m going to try and add some moss soon which will hopefully give future shrimp and guppy fries some cover.
BP Hobbies 25″ Flat Wing Foamie Build December 27, 2012 No Comments
Thanks to the Christmas break, I have finally had a chance to build the 25″ Extra flat wing foamie kit I bought from BP Hobbies almost a year ago. The electronics were purchased from Hobby King and include four 5.5g Turnigy servos, one Turnigy 1300KV motor, and one Hobby King 20A ESC. Control is provided via a six channel Hitec receiver and the plane is powered by a 1000mAh Turnigy 3S LiPo.
Automatic Daily Fish Food Dispenser November 23, 2012 No Comments
Meet Bob, the goldfish (pictured below.) Bob is a pet at work, and we needed to keep him fed over the Thanksgiving break. I had an Arduino and a servo that were free, so I wanted to make something that would supply him with the right amount of food for the four days we would be gone. I came up with a little cylinder that I 3D-printed with a MakerBot Replicator v1. It is sized to fit the plus-shaped servo arm attachment for a 9g micro servo. The cylinder features five pockets that food can be placed in. The servo rotates to drop food from each pocket independently.
Below is a video showing the basic usage. Simply hold down the button until the first chunk of food drops. At that point, the food will drop once a day for four more days.
Quick Manual Control Demo November 12, 2012 No Comments
This weekend I added a wireless Xbox controller to the list of devices I can use to control the Mecanumbot. Before now I’ve been able to use a standard RC transmitter, a computer keyboard, and a Wiimote. I again used the ROS framework to integrate the controller. Built into ROS is a joystick node to interface with the wireless USB dongle and I had already built a node to listen to the “cmd_vel” Twist messages. The teleop_joy node (posted in the downloads section) takes care of scaling specific channels from the controller and produces the required velocity commands.
One interesting feature of the Xbox controller is that it doesn’t send the controller state when state hasn’t changed, presumably to save battery life. (The Wiimote does not have this feature.) Since I have a failsafe in my motor controller code that requires velocity messages to be sent at least every 2Hz, I had to add a feature in the teleop_joy node to force the cmd_vel publication every-so-often even if there wasn’t a new message from the Xbox controller.
Legorov Teleoperating Robot November 8, 2012 2 Comments
I built this little robot out of Lego this week (see picture.) The electronics include an Arduino, a Sparkfun xBee shield, and an Adafruit motor shield. On the other side of the xBee shield is a linux box running ROS. With ROS I can generated velocity messages from my keyboard or with a Wiimote. These messages get sent to the Arduino which translates the commands into individual motor speeds.
I brought the robot to work to show off today really wanted to stick a camera on the robot somehow so I could drive it remotely. I finally ended up throwing my iPhone on the top of the robot and launching Skype. I called my desktop and presto, a teleoperated roboted. I completed a full loop around the upper floor of our building after hours. Yay, robot fun!
Wifi Bandwidth Experiment November 5, 2012 No Comments
I had been noticing pretty poor Wifi performance with my Mecanumbot, especially when I’m trying to visualize data with rviz remotely. After a couple weeks of dealing slow performance and tethering the robot with an Ethernet cord, I finally decided to kick my Netgear WNR2000 v2 router to the curb and look for something new. I ended up with the Linksys E4200 after a quick search for “best Wifi router.” The E4200 bests my old router with simultaneous dual band support, gigabit wired ports, and the ability to upgrade the firmware to DD-WRT.
The new router arrived today, and like any good engineer, I had to test the router to see if the upgrade was really worth it. To compare the bandwidth difference between routers, I decided to use iperf between two local machines. The basic commands are iperf -s (which I ran on my desktop) and iperf -c SERVER_IP (which I ran on the Mecanumbot.) This configuration downloaded data from the Mecanumbot to the desktop, similar to the scenario when using rviz. Both routers were using their default settings. Below are the results of the tests. Each number represents the average of five trials and the standard deviation between the trials.
|Test||WNR2000 v2 (Mb/s)||E4200 (Mb/s)||E4200/ER1000 (Mb/s)|
|wired, 10/100||95.9, 0.0||-||-|
|wired, 10/100/1000||-||942.6, 0.5||-|
|802.11g, same room||29.2, 8.0||63.9, 24.0||-|
|802.11g, different room||10.5, 0.9||28.6, 1.5||13.7, 3.4|
|802.11g, in-between room||-||-||25.4, 5.6|
The results show that the E4200 improved performance by 2 to 3 times over the WNR2000. Along with my new router, I also purchased a Linksys brand range extender – the RE1000. I was surprised to see that this in fact reduced performance with the E4200. I actually unplugging and replugging in the RE1000 a couple of times because I didn’t believe the results. But each time the range extender was unplugged, I got better bandwidth. Looks like I’m keeping the E4200 and returning the RE1000…
In case you are curious, I also ran a set of 5 iperf tests from my Macbook with the 5Ghz 802.11n link and got an average of 55.1 Mb/s in the “different room.” Not too shabby.
Update: Turns out that range extenders decreases bandwidth by design. Multiple access points or better antennas is the only way to augment an existing router without decreasing bandwidth. More info on the Wifi Wikipedia article.