Ohara Lab

JAKA Control Architecture, SDKs, and Communication Interfaces

return

When controlling JAKA from a PC, the Robot Arm, Controller, JAKA App / TP, robot programs on the Controller, SDKs for external PCs, and communication protocols need to be considered separately. In particular, an SDK and a communication protocol are not the same thing.

Responsibilities of the Control System

Conceptually, the system can be organized as follows.

Robot Arm
   ↑
Controller / motion control
   ↑
   ├─ JAKA App / TP ── teaching, Jog, configuration, program operations
   ├─ Controller program ── autonomous execution on the Controller
   ├─ JAKA SDK ── API control from C/C++ / C# / Python
   └─ external communication ── TCP/IP / gRPC / fieldbus

The Controller is responsible for actually coordinating the servos and individual axes of the Robot Arm. JAKA App is a higher-level operation and teaching environment, while the external PC SDK provides another route for invoking Controller functions through an API.

JAKA App / TP

JAKA App is the standard operating environment for jogging, teaching, configuring coordinate systems and I/O, creating and running programs, and configuring the Controller. Using the SDK does not eliminate the need for the App. The official SDK documentation states that, for Controller V3.2 and later, the SDK account password must be configured in the App and the control source switched to SDK.

Programs on the Controller and External PC Control

Ordinary robot programs run on the Controller. By contrast, when using the SDK from an external PC, an application on the PC calls JAKA SDK APIs to request motion and I/O operations from the Controller. Thus “placing and executing a program on the Controller” and “calling APIs directly from a PC through the SDK” are distinct control modes.

Official SDK

JAKA provides an official SDK, with C/C++, C#, and Python support documented officially. Python uses the jkrc module, creating a robot object with jkrc.RC(ip).

Typical capabilities include:

The official Python documentation describes using libjakaAPI.so and jkrc.so on Linux, and jakaAPI.dll and jkrc on Windows. Thus, even though the visible interface is a Python API, it relies on a manufacturer-provided native library underneath.

Is the SDK Free or Open Source?

No statement requiring a separately purchased runtime license to use the SDK could be found in the official documentation and public repositories. On the other hand, since the Python SDK uses native libraries such as libjakaAPI.so / jakaAPI.dll, it is important to distinguish an “SDK available for free download and use” from an “entirely open-source SDK.”

JAKA’s official GitHub organization contains SDK / ROS repositories, but when deploying on an actual robot, it is prudent to check the license and redistribution terms supplied with the SDK package for the Controller version in use.

TCP/IP and gRPC

JAKA publishes a TCP/IP external control protocol. The Controller hosts a TCP server, typically using the following ports:

However, the SDK’s communication mechanism differs across Controller / SDK generations. The official SDK documentation states that SDK 2.2.x and later support TCP/IP and gRPC, and recommends prioritizing gRPC for V3 Controllers. It is therefore inappropriate to regard the JAKA SDK as merely a TCP socket wrapper.

Fieldbuses such as Modbus TCP / RTU, EtherNet/IP, and PROFINET belong to another layer intended for PLC and equipment connections. Their responsibilities should not be confused with those of the PC SDK.

ROS / ROS2

JAKA also publishes ROS / ROS2 resources on its official GitHub. With ROS2, ROS2 nodes and MoveIt-related interfaces are built above the Controller API / SDK.

Are There Third-Party Libraries Like ur_rtde?

For Universal Robots, SDU Robotics’ ur_rtde sits on top of the official RTDE and is widely used for motion control from PCs. Unofficial libraries also exist for JAKA, but as of August 2026 no de facto standard third-party library with adoption comparable to ur_rtde could be identified.

One example on PyPI is the unofficial libjaka.

However, because JAKA itself provides a Python SDK and ROS2 resources, starting with the official SDK is the natural choice for a custom device class.

Using JAKA in SUSANOO

When creating a SUSANOO device class, the simplest arrangement is not to replace JAKA App or Controller programs, but to wrap the official Python SDK—the PC control interface—as a lower-level driver.

SUSANOO device class
        ↓
JAKA official Python SDK (jkrc)
        ↓
TCP/IP / gRPC
        ↓
JAKA Controller
        ↓
Robot Arm

Another advantage is that the SDK, rather than the device class, can handle the gRPC / TCP/IP differences between Controller versions.