Before I write about the Pick-n-Place (PnP) project at The specified item was not found. (Chicago's hackerspace), I thought those of you that might be Dr. Who fans would appreciate what we put on the roof of our building):
source: http://pumpingstationone.org/2013/04/party-time-is-coming-up-fast/
PnP motion control idea #1 - LinuxCNC:
Our first idea was to leverage existing open source CNC software called LinuxCNC (formerly EMC2). Old PCs with parallel ports can be used to build a CNC controller with LinuxCNC. We like this low cost approach to CNC and felt makes sense to replace a builky PC with a single board computer like the BeagleBone Black .
source: http://www.linuxcnc.org/
We discovered there was already a pre-built SD card image for the original BeagleBone. However, it utilized the Linux 3.2 kernel whereas the BeagleBone Black (BBB) currently requires the 3.8 kernel.
I did some research which I documented in this thread: mhaberler, and he explained the current effort to port LinuxCNC to the BeagleBone Black and 3.8 kernel. He also pointed out the BeagleBone LinuxCNC which had a relevant post:
. I then discovered one of the developers is a Community member,
BeagleBone Black, Linux 3.8, and Device Tree
http://bb-lcnc.blogspot.com/2013/06/beaglebone-black-linux-38-and-device.html
Our team decided we didn't have the skills to help with the neceessary Linux kernel modifications. There wasn't much we could do until the LinuxCNC developers had some more time, so we decided to look at other solutions. As I'm writing this now, I see that their work has progressed where they can use the BeBoPr 3D printer cape with the BBB:
Using a BeBoPr with a BeagleBone Black
http://bb-lcnc.blogspot.com/2013/06/using-bebopr-with-beaglebone-black.html
PnP motion control idea #2 - Replicape PRU & Python code:
After the launch of the BBB, I kept seeing great tutorials by Elias Bakken on his Hipster Circuits website. I discovered he'd previously designed a 3D printer cape for the original BeagleBone called the Replicape:
Elias uses the BeagleBone PRU to handle steppper motor acceleration and send step and direction signals to TI DRV8825 stepper motor driver ICs :
source: http://hipstercircuits.com/accelerated-stepper-motors-on-beaglebone/
Elias also wrote a great library to allow him to control the PRU from Python in Linux on the Bone:
PyPRUSS – A simple PRU python binding for BeagleBone
http://hipstercircuits.com/pypruss-a-simple-pru-python-binding-for-beaglebone/
I reviewed his code for the Replicape to see how we could adapt it for our use case. However, in the end, we decided that unless we are actually using the Replicape itself that we'd be better off sticking with the TinyG controller. Elias has been working on a new version which is BBB-compatible:
Replicape Revision A2 ready for review
http://hipstercircuits.com/replicape-revision-a2-ready-for-review/
PnP motion control idea #3 - Use TinyG and write Qt app:
Meanwhile, the PS1 member who designed the PnP gantry, Ed Bennett, had tuned the TinyG controller for the motors in the gantry. This improved the performance and made us realize it would be counterproductive to PnP project to replace the TinyG with out own solution. Even though the BBB wouldn't create the stepper motor signals, it could still play a critical role in generating the gcode that is sent to the TinyG. The TinyG would connect to the BBB's USB host port and allow for simple serial communication.
To exercise the gantry, Ed then had the idea to write a Qt app in Python using PyQt that would generate gcode based on the movement of the mouse and print gcode to the USB serial port for TinyG to interpret:
I've since gone through the process of getting it to run on the BBB which required rewriting it for Qt4. I'll write more about that and the features we plan to add to our Qt app in the future. I'll also talk about the design process and machining Ed has been doing for the vacuum nozzle (which will pick up and place the parts).
Cheers,
Drew