ROS and Other Ramblings

I've been a bit ineffective at finishing things lately, and thus haven't had much to say in this blog. Issy got a new laser cut body, some teaser pictures are over at TRC, but I haven't gotten back to software development on him yet.

I've been a bit distracted playing around with navigation and motion control under ROS. During July I built a "Poor Man's LIDAR" (or PML for short), out of a long range IR sensor and an AX-12. The image to the left shows the PML mounted on ROSalyn, an iRobot Create based ROS-powered robot I've recently assembled at the University lab. I'm using a new ArbotiX-derivative board to control an AX-12 pan and tilt and the PML.

I actually bought the sensor about 18 months ago -- originally to put on REX (may he rest in pieces), but hadn't gotten around to actually hooking it up until recently (partially inspired by the successes that Bob Mottram had). All in all, it works fairly well -- way better results than I ever had with a sonar ring, but of course nowhere near a true LIDAR. The PML results are broadcast within ROS as if they were actually produced by a laser scanner. You can see the scan (black dots) and then a costmap_2d generation (red dots are lethal objects, blue dots are expanded version for motion planning) showing up in the RVIZ view (the robot is at the end of our hallway, the range of the costmap is 3m, less than the 5 or so meters that the laser can trace out, so there's no costmap generation of the walls inside the rooms in the distance, just the laser scan dots).

All of this ROS work is towards the goal of producing a very robust, and extensive ROS package for the ArbotiX. The core of the package allows the ArbotiX to control AX-12 servos, read/write digital IO, and read analog inputs -- all within ROS. There's also extensions to control differential drive robots, or NUKE-powered walkers, using the standard "cmd_vel" topic -- and publish odometry such that the bots could be tied into the ROS navigation stack. Version 0.1 is now in SVN, although the ROS API is quite unstable and will be changing drastically in 0.2 (to a much nicer, and more robust interface, which also sets up several features I want to implement further down the line).

Another Day of Printing (and Issy Building)

I got another day of solid printing out of the Makerbot. Finished printing Issy's legs, printed his head camera mount, and the first segment of the tail. The head camera mount is a fairly massive print, at 3.5" x 1.75" and an inch tall. The first attempt warped massively after the first 3 ayers and had to be tossed. I got a much better raft on the second one, and it came out fine (some warpage, but not enough to ruin the print). I'm hoping to crank out the snout and second tail section tomorrow.

Unfortunately, no pictures. My camera is on vacation in Florida. But, here's a rendering of the final head/snout with the MS Lifecam cameras:

Issy's New Legs

One of the key features desired for Issy3 is a set of feet with tactile feedback. I've played with FSR versions in the past, and they tend not to survive that long.
Two afternoons of prototyping and printing has yielded the first of Issy's new feet. I have one leg assembled, but I'll still have to get some different hardware tomorrow to tweak it completely.
The foot consists of three printed parts: the outer case, the foot pad, and a retainer insert inside the case. A screw connects throw the foot pad and the retainer, and a spring pushes the foot downward. There will be a little spring steel connector on top that will get touched by the screw -- acting as a simple switch. A vinyl footpad gives traction.
Each foot takes about an hour of printing on the Makerbot.