The Flora Project is an ongoing attempt to create a semi-autonomous, humanoid robot. The original mechanical structure lacked intelligence, but was functional enough to serve as the flower girl in my wedding in 2009. Since then, I have been designing circuitry to be used in Flora-v2.0.
My brother got married in November of 2008, and at the reception, one of cousins (jokingly) suggested that whenever I got married, I should build some sort of robot to be my flower girl or ring bearer. I guess he didn't realize that I generally take these types of suggestions quite seriously. Not long after, I was engaged, and after a few rough sketches of what I had in mind, I discussed the idea with my soon-to-be-wife who gave the whole project her blessing. I began researching similar robots that existed, and although this example gives my wife the creeps, the Posy robot from Flower Robotics in Japan was the best thing i could up with. In fact, the only actual robotic flower girl I could find was this mechanical contraption that has since won the hearts of many...even though it isn't nearly as awesome as Flora, but then again, I may be a bit biased to my own creation.
The last initial component to Flora was her name. At first, I tried to find the name of a strange flower or some other fun word that had some association to weddings, flowers, or us. In the end, I decided to go with Flora which means plant life. Plus, Flora the Flower Girl has a nice ring to it. As she gained a more humanoid shape and appearance, Flora was given the middle name Hope to associate her with a term of endearment before finally adopting my surname of Clothier.
I started with only two specifications in this project:
Initially, I thought of making a kind of mobile industrial robot in which a single arm would be mounted to a mobile base. While this would have worked equally well, it would not have served the same purpose as having an actual humanoid robot do the work. I felt that people would be slightly underwhelmed by my first idea. I think that our society wants to see machines that look and act like us. The thought both frightens and amazes us, and that is the reaction I was hoping to eventually get with Flora. At some point in the future, Flora may gain the ability to walk as opposed to drive on wheels, but that is far from my primary concern at this point in time. I started building Flora from opposite ends somewhat simultaneously, deciding how to connect the torso and base towards the end of the build.
Since the ability to grasp petals was the primary function of Flora (besides movement, of course) I started with the design of the arms. I did a bit of research on average arm lengths of children to know how big they should be, and then went to work on creating a frame to house all of the servos. This was a long and tedious task to perform in the confines of my small apartment while still finding time to work a full time job, go to grad school, and entertain my fiance, but I think I did a pretty good job of building a more than capable upper body.
I started with the a frame to hold the shoulders, and worked down from there. Each arm is identical but opposite to the other. I also used springs to given the shoulder servos more strength. Ideally, the springs will hold the entire weight of the arm, servo is just responsible for the arm movement and any additional load. In retrospect, I should have use much stronger shoulder servo motors.
All in all, there are six servos (and consequently, six joints) on each arm plus the end effector. This gives each arm a total of six degrees of freedom putting it just shy of the human arm. That is a lot of motion to control!
I had no idea how much Flora would weigh, but this unknown was one of the most important factors in my motor selection. To get a rough idea, I added the weight of the semi-completed upper body with an estimated amount of raw materials and additional servo motors. I eventually went with an estimate of 50lbs and started work on the base. To couple to wheels and motor shaft, I took a pair of couples designed for my selected motors, epoxied them to aluminum pipes that were the exact size of the wheel axle holes, and the epoxied all of that to the wheels. It wasn't the most elegant solution, but it was about the only thing I could come with that would work given my cramped working space and limited tools.
Originally, the motors were mounted directy to the frame by a few pieces of curved metal, but this never worked out quite right. I was happily delighted to find out that the motors fit perfectly inside a piece of PVC pipe I had lying around, so I rebuilt the base frame to hold the pipe. Mounting the motors like this allowed the wheels to be perfectly aligned. I later had to replace this pipe with a much longer segment to provide a more stable base and prevent the robot from tipping over.
With the upper and lower bodies mostly done, I needed a way to connect them. I came up with a design for a rotating "waist" to hold the upper body. It uses a single servo for the movement, but the support for the upper body rests on a few wheels that can roll around the waist platform. With this functionality, the robot's upper body is able to turn from side to side, independently of the base.
To connect this torso to the base, a long piece of PVC pipe was used. This also served as a sort of "spine" to safely house all of the wiring that need to be run throughout the robot.
Flora couldn't be seen as a humanoid without some sort of head. To create such a thing, I curved a few strips of metal to form a sort of squished sphere. This was attached to the upper body by two servos to allow for full pan and tilt (a neck with two degrees of freedom).
Sadly, not a lot of time or effort was spent on the electrical design. I had so much work to do in school, and other wedding planning that I didn't have much time left for Flora. Once the robot was built, I did whatever I had to do to make it work.
Initially, Flora did not have a lot of electronics to speak of. There are no sensors to be found, nor can she move autonomously which technically makes her hard to classify as a robot. The servos were all driven by the SSC-32 servo controller from Lynxmotion. I had planned to use their Bot Board as the master controller, but never had time to implement it. Instead, all of the arm movements were a pre-programmed loop which wirelessly transmitted from my laptop to the SSC-32 through use of a pair of Bluetooth enabled USB to RS-232 connectors using the Lynxmotion visual sequencer program. The drive motors were powered through this circuit. The control of the wheels was done through an RC helicopter transmitter and receiver I found on eBay. One of my ushers served as Flora's mobile tele-operator.
There are two battery banks in use. The primary is a pair of 12V 10Ah banks that I built from rechargeable NiMH D cells. This bank powers all of the electronics and wheel motors. The second set is made of four parallel 6V rechargeable NiCd 5Ah packs. This bank powers all of the servo motors. I decided to use two banks so I didn't waste a lot of power regulating the 12V bank down to 6V for the servos. In future versions, I plan to use a high power switching regulator to create the 6V source for the servos. A double-throw, double-pole switch turns on both banks, and a key switch is available to completely disconnect the common line of both banks to the rest of the robot. The power is distributed throughout the robot through a fuse block I ripped out of an old truck. A couple of trays were built on the base to house all of the batteries and connectors. As expected, the batteries are the largest source of weight. I did design two regulators - one for the SSC-32 and Bot Board, and another for Bluetooth wireless connectors. I used simple 78xx parts as explained in the simple power supply page.
Although Flora had no vision system, I needed to put something in the head to make her more lifelike. The best thing was a pair of "eyes." These are made from the reflection cones in a pair or flashlights. I drilled holes in the cone for LEDs. Each eye has a set of red, white, and blue LEDs. Each LED bank is driven by a transistor. Since there was no actual main controller, I simply connected the blue LED control line to a five volt source on the SSC-32 to enable the blue LEDs to illuminate in the eyes.
Although I was very happy with how Flora was turning out, I wanted her to fit into the wedding theme a bit more than she did with all of her mechanics showing. My first attempt to "clothe" Flora was in the form of modeling clay. I creating an aluminum wire frame and then covered it with the clay. I also created a clay covering to solidify the head. This solution had a lot of potential, but was quickly scrapped when I realized how much weight the shell added to the robot. It wad barely able to move with the shell attached.
I eventually decided to use an actual dress which would provide adequate covering with little additional weight. I found a girl's dress on eBay that I though worked well, and added a few small pieces of framing wherever I needed to give the dress body. The arms were then covered by a few pairs of white, women's opaque hosiery. This allowed unrestricted movement while completely covering the internal structure.
To hold the petals (well, actually leaves because we had an Autumn wedding) I took a small wicker basket and had my mother sew a lining for it. This basket was connected to the front of Flora with a couple of hooks. To incorporate our wedding colors, I also created a red velvet sash that wrapped around Flora's waste and added a bow to the back. This really completed the look I was going for. Who knew I could be so creative?
Flora's design and creation:
Flora's big day:
All of the framing was built by hand out of various sizes and types of aluminum stripping.
Each joint was given extra strength by using springs. Counter springs would be nice for damping, but would also defeat the purpose.
The grippers are actually cheap salad tongs. One side was glue to the wrist, while the other was attached to a servo.
I was really counting on the epoxy to hold...
I thought about using omni-wheels, but they were too noisy.
I decided to use traditional castors.
The motor mounts were retooled to hold the PVC.
Testing the frame and motors with a 6V battery.
A simple wooden platform holds the "waist" servo.
The upper body shoulder frame was refitted to attach to the waist.
The central PVC pipe acts like a spine, housing all of the robot wiring.
With a head in place, Flora is really starting to look like something.
Simple Regulator Circuit.
The power systems all reside on the base to keep the center of mass as low as possible.
The LED eyes can shine.
I created an outer frame out of aluminum before covering it in clay.
Flora checking out the new outer shell.
I added depth to the arms with small wires.
Two nights before the wedding, the right shoulder servo went out! Still don't believe in Murphy's Law?
Testing the program in my apartment. She works!