Fluval Edge 6gal Aquarium Log 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.

Read the full post for more updates!
Read the rest of this entry »

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.

Downloads

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.

Website Transition November 4, 2012 No Comments

Today I transferred a lot of content to a new WordPress site (which you are reading now.) This is the fourth version of my website and marks the departure from the custom content managements system I started in high school. There is still a lot more content to move, but hopefully this will be a much better website going forward since I can spend more time adding content and less time coding the back-end.

Website Stats:

  • v1 included information on products and services (building computers and designing websites)
  • v2 introduced a modular system architecture that was customizable on a per-user basis
  • v3 included a blog and web development project list
  • v4 is an online project viewer
  • v5 switched back to a blog under WordPress
  • first two versions were hosted on a Fedore Core server in my closet
  • first four versions used a custom content management system

What do you think of the new website?

Neato XV-11 Laser USB Interface Board October 12, 2012 No Comments

One of the sensors I intend on integrating into my Mecanumbot is the 2D laser range finder from the Neato XV-11 robot. To make the connection between the laser and the computer cleaner, I decided to make a PCB. (My first PCB! Woohoo!) I followed the schematic from the Neato Laser guide on the ROS wiki. I later found out that there was one error in the schematic – the laser logic board needs 3.3V instead of 3V. Apparently the early versions of this laser were a little bit different. Or I’m wrong and I’m shortening the lifespan of my laser… Eh.

Downloads

Mecanumbot Gets a New Body August 10, 2012 No Comments

After a few sleepless nights, I have finally milled out the pieces for my Mecanum-wheeled robot body. The outer and bottom body pieces are made out of 1/8″ G10/FR4 Garolite. The top two layers are made from transparent polycarbonite. A thin layer of transparent silicon will be placed on the top-most layer of polycarbonite to provide some friction when transporting objects on the top. All of the pieces are held together with MicroRAX extruded aluminum pieces. See below for some pictures. More updates coming soon!

Mecanumbot Motor Testing July 28, 2012 2 Comments

This passed week I have been playing with the new motors and motor drivers I got for the Mecanumbot. I used some MicroRAX pieces and the supplied motor brackets to piece everything today. I controlled the MD25 motor controllers over I2C using an Arduino which was getting commands from an RC transmitter. Unfortunately the naive method of reading in the RC receiver signals of only three channels takes up nearly 100% of the Arduino’s processing power rendering it useless for anything else – but it worked great just for this!

Downloads