building a robot that identifies objects and slices them
su_chef robotics project is coming along, and I've finally gotten to the point where I can actually slice vegetables. It's still a little finicky, but the arm can identify vegetables, pick them up, drop them into a slicer, and then slice them. Check it out in action.
This feels like such a huge milestone, and I'm kind of shocked that I got it working. I know I'm still far away from a robust functional prototype, but now, for the first time, I'm starting to actually believe that this idea might really happen.
If you're interested in setting up a similar system, you can check out the instructions and code here. In the rest of this post, I'm going over the build details for the slicer control.
Building the Slicer
Aside from some fine tuning my previous arm controller and object detection algorithm, the only new component that I added to the
su_chef was the slicing apparatus. To build it, I combined a kitchen meat slicer, a motor and carriage from a broken printer, and an Arduino based relay.
The printer carriage and motor move the slicer tray back and forth. They're attached to the meat slicer with a little wood brace that I built to fit around the base of the slicer.
The motor just turns a band in chassis, which moves the carriage back and forth.
To control the slicer tray, I connected the motor to a relay that was controlled by an Arduino. The relay circuit looks like the following.
The pair of relays hooked up in this manner is required so that current can flow either direction depending on which way the relays are switched. This lets the DC motor run backwards and forwards so the tray can move both ways.
To keep the motor from ramming the sides, I also added two small "fail-safe" switches in the track. These will send a signal if the motor runs into them, informing the controller that the motor shouldn't push any further in that direction.
Controlling the slicer tray motion
To trigger the motion of the tray, I have to control the relays. To do this, I use a bit of Arduino code that can be found here. The code flips the relays on for a preset time, but also checks if the fail-safe switches are triggered and closes the relays if that happens.
Finally, I also added some ROS specific code to the Arduino that listens over the serial connection to trigger the slice. In my python control script, I send the
"go" message whenever I want the slicer to go back and forth one time.
Thus far, the whole thing is very fragile, but my next step to get to v0.3.0 is to update the pickup part to make it better able to lift things in more orientations. Also, I want to put in some checks that make sure the prior task completes before the next begins and aborts if something is going wrong. Eventually, I know I will need to upgrade to a more precise arm, but I'm going to push as far as I can with the current one first.
In the meantime, I am starting to work on organizing a worker-owned company around this project, which I'm calling WORC Foods for Worker-Owned Robotics Cooperative Foods. You can read more about it on our website. If you are at all interested in cofounding such a venture, please reach out!
Discussion Around the Web
Join the Conversation