Ohara Lab

FAIRINO Control Architecture, SDKs, and Communication Interfaces

return

FAIRINO’s architecture is easier to understand when the Robot Arm / Control Box, WebAPP / Teach Pendant, Lua programs on the Controller, SDKs for external PCs, ROS / ROS2, and fieldbus are considered separately. In particular, the availability of the official Python SDK’s source code is a major advantage for PC-based research applications.

Responsibilities of the Control System

Robot Arm
   ↑
Control Box / motion control
   ↑
   ├─ WebAPP / Teach Pendant ── teaching, Jog, configuration, program operations
   ├─ Lua program ── autonomous execution on the Controller
   ├─ FAIRINO SDK ── Python / C++ / C# / Java
   ├─ status feedback ── acquisition of state data
   └─ fieldbus ── PLC / equipment integration

WebAPP / Teach Pendant

WebAPP plays an important role in FAIRINO’s standard operating environment. A PC or other device on the same network as the Controller can connect through a browser to perform Jog operations, teach points, configure I/O and parameters, and create and run programs. Unlike the external PC SDK, this is the standard operating environment intended for robot operators / programmers.

Lua Programs

Lua is used for robot programs executed on the Controller. A Lua program is a program layer that runs autonomously on the Controller and is distinct from the external PC SDK.

The SDK can also upload / download Lua files and load / run / pause / resume / stop programs. Thus a PC application can choose either to “issue motion commands directly through an API” or to “manage and execute Lua programs on the Controller.”

Official SDKs

FAIRINO publishes official Python, C++, C#, and Java SDKs on GitHub.

In the Python SDK, Robot.RPC(robot_ip) is the entry point for connecting to the Controller. Joint / Cartesian motion, Jog, Servo motion, I/O, state, force control, peripheral control, and other functions are exposed through APIs.

Is the SDK Free or Open Source?

The official fairino-python-sdk repository is published under the Apache License 2.0. At least this Python SDK can therefore clearly be treated as OSS whose source can be inspected, used, and modified.

Because the manufacturer itself publishes the SDK source on GitHub, there is no need to assume a third-party library that wraps an official protocol into a more convenient interface, as with ur_rtde for Universal Robots. This makes it quite convenient when developing custom Python device classes for research.

Communication Interfaces

In addition to the SDK’s RPC interface, interfaces exist for robot state feedback, Modbus TCP, PROFINET, EtherCAT, and more. They serve different purposes.

RPC SDK              : Invoke robot APIs from a PC application
state feedback       : Continuously acquire robot state
Lua program          : Execute robot sequences on the Controller
Modbus / PROFINET etc.: Connect to PLCs / equipment

The availability of Modbus therefore does not make the SDK unnecessary. Handling a robot as part of an equipment sequence from a PLC and using robot motion APIs from a PC are different responsibilities.

ROS / ROS2

FAIRINO also publishes official ROS1 / ROS2 repositories.

When ROS2 is used, ROS2 services, MoveIt2, and related components are built on top of the FAIRINO SDK / Controller API.

Are There Third-Party Libraries Like ur_rtde?

For FAIRINO, the need to look for a well-known third-party wrapper is itself relatively limited, because the official Python SDK is available under Apache-2.0.

For UR, a strong option is:

UR official RTDE + URScript
        ↓
ur_rtde (third party)
        ↓
Python / C++ application

By contrast, FAIRINO can directly use:

FAIRINO official Python SDK
        ↓
Python application

Third-party packages may exist, but as of August 2026 no de facto standard library replacing the official SDK could be identified.

Using FAIRINO in SUSANOO

For SUSANOO, the natural arrangement is to use the official Python SDK directly as the lower-level driver for a device class.

SUSANOO device class
        ↓
FAIRINO official Python SDK
        ↓
RPC / Controller communication
        ↓
Control Box
        ↓
Robot Arm

Since the Python SDK is published under Apache-2.0, being able to design the device class while inspecting API behavior and implementation is a significant advantage.