||Main > Work History > iRobot|
In my over 12 years at iRobot, I've worked on quite a variety of projects. I started out doing government-funded research, then a robotic lawn mower, before finally working on my first consumer robot: the Roomba J7. A selection of the projects I worked can be found below.Roomba J7
This robot has a front-facing camera that can see obstacles on the floor in front of it. I helped write the robot software to manage the keep-out-zones for obstacles detected during the mission. Images of the obstacles are then securely sent to the user's phone after the mission to provide the opportunity to go back and clean any areas that might have been missed due to a false-positive detection. Because obstacles are typically detected multiple times from different ranks and directions, care must be taken to only present the user with a single image for each unique obstacle. The images and meta-information for the detection event must also be stored and transmitted to the user's phone securely.
My code helped make this POOP Guarantee possible.Terra
This robot lawn mower used UltraWideband (UWB) beacons placed around the yard to do time-of-flight ranging for localization. I was in charge of beacon calibration and much of the beacon system as a whole. This involved robot-side software, beacon firmware, and factory calibration fixtures and scripts.
Any sort of RF work, and especially UWB, was completely new to me and I learned a lot of lessons the hard way. Much of my work involved trying to squeeze as much performance and accuracy out of the beacons as possible. This involved calibrating for distance, power, temperature, and bandwidth while meeting FCC laws. Which was tricky because these parameters are interrelated; changing one affects the others. But it was certainly interesting. Especially dealing with RF phenomena like reflection, refraction, diffraction and destructive interference caused by a ground-bounce of the Fresnel zone.Low Cost Arm
Using the lessons learned from the AMR-H and ARM-S programs, we sought to create a low-cost arm that could be used for a household helper robot, (although all the demos we did involved opening beers). Designing a new arm from a blank slate was a joy. While the hardware team was designing the actuators, I did extensive research to determine the optimal arm morphology. I chose the orientation of the joints to give us the largest and "best" work envelope. I did a majority of the arm kinematics, and firmware development on this 7 DOF arm. See paper: Heuristically initialized motion planning in a low cost consumer robot.
Videos available upon request.Packbot Door Opening
In this program, we added a tactile sensing gripper with a break-away wrist to the Packbot arm. This allowed it to be able to open doors much more reliably. We achieved autonomous door opening on push and pull doors with both knobs and levers, even with self-closing mechanisms. See paper: Autonomous door opening and traversal.Human Robot Interaction Study
I worked with researchers at UCF to study humans' perceptions of robot gaze and behavior in a hallway passing interaction. I addition to writing the robot code to exhibit different amounts of assertive/passive behavior, I also had to instrument the test hallway with a LIDAR-based tracking system. See papers: Effects of robotic social cues on interpersonal attributions and assessments of robot interaction behaviors and Effects of robot gaze and proxemic behavior on perceived social presence during a hallway navigation scenario.
This video demonstrates two of the robot behaviors.Autonomous Surface Craft
For this project, we created an autonomous surface craft with deployable ROV.Autonomous Robotic Manipulation - Hardware
This was the hardware track of the DARPA Autonomous Robotic Manipulation competition. The goal of this program was to further the development of robot hands by making them more capable and lower cost. While the overall morphology of our team's hand was similar to other three-fingered robot hands currently in existence, it had many new and novel features. For example, completely rubber and under-actuated distal joints, break-away fingers, low-cost hobby brushless motors, and extensive rubber padding with integrated pressure sensing. The pressure sensing was achieved with over-molded barometer sensors.
I was the primary software engineer on this project. It involved networking seven AVR XMEGA microcontrollers and a Gumstix which were used to service 114 pressure sensors, 6 accelerometers, 4 encoders, 5 motors, and a variety of other sensors. High-level interaction was provided through ROS and I was responsible for code updates to "customers". We provided this hand to ARM-S teams, then later hardened it and provided it to competitors in the DARPA Robotics Challenge to use on the Boston Dynamics Atlas robot.Autonomous Robotic Manipulation - Software
This was the software track of the DARPA Autonomous Robotic Manipulation competition. The goal of this program was to push the state-of-the-art of autonomous robotic grasping and manipulation. Six teams were provided with standardized hardware: A Barrett WAM arm, a Barrett hand, and Bumblebee2 stereo pair on a pan-tilt neck. Tasks ranged from simple pick-and-place of common objects to advanced manipulation tasks such as inserting a key in a lock, door opening, and operating a drill. I was the main integrator on iRobot side. We worked with large academic teams at UPenn and UMass Amherst to create a system consisting of 72 ROS Nodes, 398 ROS Topics, and 211 ROS Services.Create 2
Yes, this is a real thing. Yes it actually drives. I used the Roomba Wheel Hack instructions (that I wrote) to interface these new wheel modules into the Roomba. The robot thinks it is driving its own wheels! Only minimal modifications to the Roomba were required. I had to defeat the cliff sensors (obviously). And I also had to bypass the motor over-current sensing circuitry.
The wheel hack can also be used in the opposite direction. i.e. to directly drive the Roomba's wheel modules with your own circuitry. That's what I did here.