Sunday, November 23, 2014

Jog-while-paused

Recently jog-while-paused popped up again on the LinuxCNC mailing list (this happens a lot, check the archives), so it seems like a good time to point out that not only does Machinekit contain jog-while-paused functionality, this feature was added to LinuxCNC by Michael Haberler before there was a Machinekit project at all.  If you're unfamiliar with the jog-while-paused feature, it allows you to pause a running gcode program, move the machine (perhaps to take a measurement, inspect the cut, or perhaps replace a tool) then resume program operation.

Since so many folks seem to want the feature, but almost no one is using it, what is needed to get jog-while-paused working?  First, you need to have the jog-while-paused code in your build.  With Machinekit, the feature is in all current packages, but with LinuxCNC you'll need to dig around for the proper branches (check the dev-list archives around the date of the video above, Oct. 2013).  This adds new offset pins to motion that provides for the jog-while-paused functionality.

The next piece is some HAL logic to drive the new pins.  There's a simulation example provided with Machinekit (the sim.axis.jog-while-paused9 configuration) which includes some custom UI and HAL code to get jog-while-paused working.

So...what's really missing is just some real-machine example configurations and perhaps a bit of a HOWTO with instructions on getting everything working.  If you've been itching for this feature, why not try out the simulation config.  If you like how it works, merge the jog-while-paused changes into your machine setup.  Remember to take notes and share your results.  Once a few brave souls blaze the trail, I'm sure lots more will follow, and this is a great way non-programmers can help out with the project.

Monday, November 17, 2014

New QtQuickVcp Interfaces

Great news!  Alexander Rössler has released the first two new user interfaces for Machinekit based on QtQuickVcp:

Machineface
Cetus
These interfaces can be run on the same system that is running Machinekit, or they can be run remotely on a tablet, smart-phone, or standard desktop.  Since the interface is based on Qt, it can run virtually anywhere, including Windows, Mac, Linux, and mobile (Android and iOS).  Alexander posted a video walk-through if you want to see more than just the screen-shots:

See Alexander's post on the Machinekit list if you want to try out one of these interfaces.

Thursday, September 11, 2014

Package Based Install

Alexander Rössler has put together a page showing how to create a Machinekit image for the BeagleBone based on Debian Packages.

The current packages still require absolute paths to the PRU code in your configuration files (sadly, a different path than is needed for the previous run-in-place builds).  I hope to have enough time to address that soon by embedding the PRU code directly into the HAL driver. This will also prevent any possible confusion caused by the HAL and PRU code versions not matching (which I can confirm is a nasty issue to track down if you're not looking for it!).

Package installs also make it much easier to update both Machinekit and the kernel, both of which are "difficult" to update on all of my currently available images.

If you feel up to the task, I strongly suggest switching to a package based install.  It should make it much easier to track ongoing progress with both Machinekit and newer kernels.

Saturday, August 9, 2014

Unexpected Help

While I haven't been doing a lot with Machinekit and the BeagleBone lately ("real" work, kids home from school all summer, family vacation, etc.), the beauty of open source is that anyone who wants to can help.  Out of the blue on Friday, I got emails from github with pull requests for two of my projects:

malcom2073 added details for the PMDX-432 board to my pinmux spreadsheet for the beaglebone

jstampfl added the missing cape-univ-hdmi I've been meaning to write to beaglebone-universal-io

A BIG THANKS to both of you for the help!  I'd also like to encourage anyone else thinking about making a change to an open source project (big or small) to go ahead and do it.  It's a great feeling to help out others, and it lets the owners of the project know people are interested and using the code.

Along those lines, even (especially) if you don't need to change anything but there's a project you're using that "just works", send a quick note of appreciation to the mailing list.  Most first posts are from folks having some sort of problem, so it's always refreshing to get thanks from someone who doesn't need anything else.  Knowing your code is being used and helping others is the sort of feedback that keeps developers happily volunteering their time to write and improve open-source code for everyone to use!

Wednesday, August 6, 2014

New Toy!

OK, "toy" might not be the right word (it's really a powerful tool), but it's just so much fun to play with!  :)

UPS delivered a new controller box for my Probotix Fireball Comet CNC router yesterday.  Unlike the PC version that came with the Comet, this one has a BeagleBone inside and will run stand-alone!

The PC configuration for the Comet is a great example of things you can do with HAL.  The Y axis gantry is is controlled by a single step/dir generator using some HAL logic to split the drive pulses into signals for two separate stepper motors with two independent home switches.  But this approach only works with software stepgen, so something else is needed for "outboard" stepgen that is not directly part of HAL (ie: hm2 drivers and the BeagleBone PRU driver).

I have written a gantry HAL component that mimics the behavior of the Probotix HAL file but works with outboard step generation and up to a seven joint gantry axis.  Testing this with a three-joint gantry axis (my linear-delta 3D printer, temporarily re-purposed as a test-bed) was a lot of fun, but I really look forward to getting this working with real hardware and making some chips.  Look for some example configurations using the gantry HAL component in the near future!

NOTE: In addition to working with standard gantry routers (Fireball, Shapeoko, etc), the gantry component will also work well for other multi-motor axis (like the two-motor Z axis found on many Mendel-style 3D printers) as long as each joint (motor) has it's own home switch.

Thursday, June 19, 2014

The Great Midwestern CNC Road Trip

What started as a simple plan to head up to Madison, WI for the first Machinekit meetup has grown into an epic road trip.

First I'll head off to St. Louis, MO to meet with Jon Elson of Pico Systems.  Jon and the Pico Systems folks will be building and selling assembled CRAMPS boards, which will hopefully be available for sale in the next couple weeks.

Then it's off to Peoria, IL and Probotix, makers of the excellent Fireball series of CNC routers (powerd by LinuxCNC).  They also sell a BeagleBone breakout board available, and I look forward to seeing what other projects are being cooked up in the R&D lab!

Chicago is the final stop before Madison, where I'll be attending a special meeting of the CNC build club to discus running Machinekit on a BeagleBone, the CRAMPS cape I designed, and where Machinekit is headed.

I should finally make it to the Tormach facility in Madison sometime Friday, where I look forward to an exciting weekend of discussions with everyone else who can make it.  A preliminary agenda was posted to the Machinekit list.  While the event is mostly informal, there are a few talks planned.  We will try to live-stream the video (or at least record something and post it online later) for those who cannot attend in person.  Monitor the list for updates or changes.

Wednesday, June 18, 2014

Packages (not tied up with strings)

If you don't monitor the Machinekit group (you should), over the weekend John Morris announced the availability of binary packages for Machinekit and it's required dependencies (at least the ones that are not already in the Debian archives).

If you're trying to build a minimal system (particularly helpful on the BealgeBone with it's limited eMMC rootfs), this is welcome news indeed!

I will be updating my build scripts and the resulting images to use the pre-built packages soon, meaning you'll be able to simply "apt-get update" and "apt-get upgrade" to get the latest official Machinekit release.  Until then, feel free to add the pre-built packages to your existing install, the run-in-place development version and the installed packages should work side-by-side and should not interfere with each other.  Instructions can be found at the package repository website.

If you run into any problems, let us know on the Machinekit list.