algorithmic modeling for Rhino

HAL | Robot Programming & Control


HAL | Robot Programming & Control

HAL is a Grasshopper plugin for industrial robots programming, compatible with ABB, KUKA and Universal Robots machines.


With its large library (154 components), HAL allows designers to simulate, program and control complex multi-robots setups in real-time, as well as robot setups involving external axis (tracks & rotary tables). With its special programming packs covering a large panel of native robot language instructions, HAL facilitates the creation of advanced application structures including I/O management, error handling and multi-tasking. Specific tooling packs, for hotwire cutting, milling and picking, ease the programming process of innovative fabrication strategies.


HAL is available in two versions:

  • The free, unlicensed version will allow the user to use the simulation tools, but coding functionalities will not be available.
  • The licensed version offers full access to all simulation and coding functionalities, as well as tooling-specific packs (Advanced Programming, I/O Management, Multi-Robots, Hotwire cutting, Milling, Picking)

In order to obtain a 1 month trial license, please send a request email at, containing the informations generated with the "" file embedded in the installation package.

HAL is fully compatible with Rhino 4 and 5 (x86). The only restriction when using HAL with Rhino 5 x64 is the disabling of real-time controller access functionalities.

NB: Hal is a powerful experimental tool for robot programming, and must be used with great caution


The complete LOG file of HAL is available in the Auto-Installer.


Video tutorials to quickly get started are available on the youtube channel.

More informations on

Members: 87
Latest Activity: Apr 13

Discussion Forum

Changing status bit on Kuka robots 2 Replies

Hi Thibault, I am having problems changing the status bit in HAL. I changed the Flip settings, which works fine in the simulation but nothing is changed in the code generation. How can I make the…Continue

Tags: HAL

Started by Erik Parr. Last reply by Erik Parr Oct 7, 2015.

Spline Movement 2 Replies

Hi Thibault,I'm tyring out the simple path example. Is there anyway I can generate Spline movement command for kuka robot? It's much faster than Line movement command especially when there are many…Continue

Started by Kada Liao. Last reply by Kada Liao Aug 7, 2014.

milling 11 Replies

Hi Thibault:We are trying to replicate your milling definition (attached)Everything goes well in the simulation, untill we switch to code generation, then IK Solver throws an error, base, arm and…Continue

Started by MARIO VERGARA. Last reply by MARIO VERGARA Mar 7, 2014.

KUKUA KR180 R2500 7 Replies

Hello Guys:We are trying to use the speed expert component, since you can have control over acceleration of the robot.I noticed that on curved toolpath the movement is slower than the straight ones.I…Continue

Started by MARIO VERGARA. Last reply by MARIO VERGARA Feb 27, 2014.

Comment Wall


You need to be a member of HAL | Robot Programming & Control to add comments!

Comment by Thibault Schwartz on April 13, 2017 at 4:35pm

Dear all,

Due to recurrent issues with the old HAL 5 licensing system on windows 10, I just published a fixing utility on the food4rhino page. All licensed users are invited to execute this utility on their machine after installing the new windows creators update, and future major win10 updates.

Best regards,


Comment by ardi on August 10, 2015 at 9:06pm

Hi Thibault Schwartz , Is HAL available for purchase now? I tried your web page and email to purchase the license but no response yet! 

Thibault Schwartz 

Comment by Thibault Schwartz on July 13, 2015 at 6:44am

Hi Erik. You just have to use the wait component to generate your command (or your can also use a simple string panel), then use the "Commands" input of the toolpath creator. These commands are then available as a separate output on the post-processor, so you can interweave them with your motion instructions.

Comment by Erik Parr on July 13, 2015 at 6:41am

Hi, I am trying to create a custom motion sequence with Hal using Kuka KRL code. I have hall going to a sequences of points in PTP mode, but I would like to have the robot wait in between each point for x seconds. I can hand write the command in my robot code by adding the line "WAIT SEC 3" for example, but how would I accomplish this in Hal? 

here's the files if you want to see my setup


Comment by Thibault Schwartz on April 5, 2015 at 5:45am

Hi Ardi,

I suppose you already linked your Arduino signals to the S4C+ controller using some electronics to deal with the 24V to 5V conversion so there is a link between the controller I/Os and your Arduino.

You can use different things to play with the I/Os in HAL:

1) MoveLDO or MoveJDO interpolations directly in the Toolpath Creator component,

2) the Commands tree (that you can populate with a procedure call with all your IO management code for example, or any other trig event) in the Toolpath Creator component that you can merge at the output of the Post Processor with your movement instructions,

3) or (but S4C+ is not supporting it) the HAL to Controller component, that can be used as a virtual PLC to link anything (software) to the robot signals with a 250ms latency. An equivalent for S4C+ would be socket programming if you have the option, and then you suscribe (through a TCP client in GH that you link to your Arduino pin state) to the I/Os that you monitor in a separate non-motion task. But it's a long shot, I do not support this solution on controllers older than IRC5.

Other solution: don't use Arduino, there are plenty of boards compatible with 24V out there. Depending on what you try to achieve, maybe it's even more simple to do it with pure electronics.

Comment by ardi on April 4, 2015 at 12:30pm


I am trying to work with IO in HAL. Working with a custom made tool, we need to integrate some moveL on an ABB IRB2400 (S4CPlus controller) with specific action on an Arduino board. Is it possible?

Comment by Thibault Schwartz on February 9, 2014 at 7:37pm

HAL 5 for ABB, KUKA & Universal Robots is now available!

Comment by Thibault Schwartz on October 22, 2013 at 8:04am

Due to a web hosting problem, the usual emails are down, so if you have any problem please send me a PM or a mail at


Comment by Thibault Schwartz on July 11, 2013 at 8:34am

Dear All,

The first Alpha version of HAL 005, cross-compatible with ABB, Universal Robots and KUKA is now available. If you are interested to participate to the testing, please send me a PM.


Comment by Thibault Schwartz on April 6, 2013 at 10:52am

HAL 004.5 Update available

LOG HALv0.04.5
General updates:
• The license requesting utility now allows you to generate an automatic email embedding your data.

Robot Library:
• New IRB4400(60) robot preset.
• New IRB6400Rex(200) robot preset.
• New IRB6620(150) robot preset.
• New IRBT6004 track preset.
• New Track Creator component.

Base Pack:
• The Inverse Kinematics Solver now handles inputs for track positioners (linear external axis).
• The Inverse Kinematics Solver now handles flip overrides to access alternative configurations of the elbow, of the wrist, or both.
• New control in the right-click menu of the Inverse Kinematics Solver allowing to change the threshold for large reorientation analysis.
• The Rapid Generator was outputing wrong confdata for axis with a rotation between +270 and +360°, this is solved.
• The Rapid Generator was outputing wrong local rotation values for targets when a Work Object was used under certain conditions, this is solved.
• The Rapid Generator is now outputing the declaration of the Work Object when it is different than WObj0.
• New controls in the right-click menu of the RAPID Generator allowing to set custom precisions for coordinates and rotation values to be used
in the code, in order to optimize the size of the program.
• New control in the right-click menu of the RAPID Generator allowing to force the formating of the output for multi-robot setups.
• New Track Position Solver component.
• New External Axis Manager component.
• New Signals Manager component.
• New Flip Value List component.

Communication Pack:
• The HAL To Controller component now allows to manage Digital Outputs (DO) and simulated Digital Inputs (DI) signals in real-time.
• The OSC To HAL component is now compatible with remote digital signal management.
• The OSC To HAL component is now automatically detecting the device (iPhone or iPad) you are using.
• The TouchOSC layout has a new Digital I/Os management menu (2*15 channels on the iPad, 2*6 channels on the iPhone).


Members (87)



Search Grasshopper


  • Add Photos
  • View All

© 2017   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service