g2core motion control firmware
g2core is the ARM port of the TinyG motion control system: open-source firmware for CNC machines, 3D printers, laser cutters and robots.
g2core is designed for high-performance motion on small to mid-sized machines. Its default target is the Arduino Due; add a gShield ($49.99) and you have a 3-axis controller with jerk-controlled motion planning. Machine builders also run it on their own boards.
Features
- Up to 9 axes: XYZ linear, ABC rotary and UVW (UVW is in the edge branch)
- Jerk-controlled (S-curve) acceleration planning; the wiki describes g2core's planner as jerk-bound 6th-order
- Stable, low-jitter 200 kHz step generation
- RESTful interface using JSON over USB, plus status reports
- Native USB on the ARM processor; XON/XOFF and RTS/CTS flow control
- Hardware abstraction layer (Motate) for porting to other ARM boards
- Extensions for 3D printing as well as CNC
Who uses g2core?
ShopBot's FabMo software drives its machines through its own g2core build (FabMo-G2-Core, "Powered by G2 from Synthetos"). The g2core in use page on the wiki lists other commercial machines built on it, including Bantam Tools desktop CNC and PCB milling machines, the Dorna robotic arm and Pensa Labs' D.I.Wire benchtop wire benders. g2core is also supported by host software such as CNCjs and Universal Gcode Sender.
g2core vs grbl
grbl is the popular 3-axis firmware for 8-bit Arduinos, with constant-acceleration (trapezoidal) motion planning. g2core runs on 32-bit ARM boards, controls up to 9 axes, plans jerk-controlled (S-curve) motion and talks JSON as well as text. Both run on a gShield: grbl on an Arduino Uno, g2core on an Arduino Due. See TinyG vs grbl for more on the difference in motion planning.
Licensing
g2core is licensed under GPLv2 with the BeRTOS exception: the application as a whole stays open source, while files marked as components can be used in commercial and closed-source products without opening the code they touch. See g2core licensing. Building a product on g2core? Talk to us.
Getting started
- Getting started with g2core: hardware and software you need
- Flashing g2core (Windows, macOS, Linux)
- Configuring g2core 0.99
- Arduino Due pinout for g2core
- Supported G-code
- Developing g2core
TinyG, G2 and g2core: the names
TinyG is the Synthetos controller hardware and the original firmware for its Atmel Xmega processor (the firmware still goes by TinyG on GitHub). g2core (originally "G2") is the C++ code base for ARM processors, built on the Motate hardware abstraction layer. We make the distinction because there are now many combinations of firmware and hardware.