Skip to content

Getting Started

Overview

Indy Framework 2.0 is the core software framework used for Neuromeka's robot control and is implemented in STEP which is a Linux-based embedded robot controller developed by Neuromeka. This chapter describes basic execution method of Indy and structure of the robot control framework. Also, this chapter describes how to use various API provided by Indy Framework. Using these features, users can easily create, run, and deploy xenomai-based real-time software without expertise in real-time OS (RTOS).

Structure of Indy Framework and Execution Method

Real-time Task

The real-time task guarantees accurate execution time. For example, a 1000 Hz real-time task will be run 1000 times per second, ensuring 1 ms cycle with high accuracy. The indy framework consists of event-driven real-time tasks. When you run the indy framework, three queues with different cycles are created, and queue 1 has the highest execution cycle of 4000 Hz.


Timing Event and Realtime Task

Since the accuracy of the execution time and the frequency of the execution cycle directly affect the performance of controller for robot, the control task is constantly executed in queue 1. Other real-time applications can be assigned to different queues for each purpose.

TaskManager and Execution Method

The real-time tasks mentioned above are managed by TaskManager . TaskManager invokes the real-time tasks, places it in each queue, receives timing events, and executes tasks through a JSON configuration file. TaskManager runs with the following command in the STEP's terminal. The method for accessing STEP's terminal in Windows is described in Connect to the STEP.

1
$ sudo TaskManager -j indyDeploy.json

When the TaskManager is executed, robot is booted on. After a while, the console window will look like below.


Users can check the current states of robot from these logs. When the key 'q' was input in console running TaskManager, the TaskManager and the robot will be turned off.

Warning

In case running TaskManager from remote pc, if the connection between pc and robot is lost ( exit the console window, or unplug the ethernet cable, etc ), the robot will be turned down. The 'nohup' command can be used to prevent this accident. If 'nohup' is used, even exit the console window, TaskManager is still alive.

1
$ sudo nohup TaskManager -j indyDeploy.json

TaskManager can take a JSON configuration file with the -j option. indyDeploy.json contains information about queues and tasks.

indyDeploy.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
    "TimerRate" : 4000, /*Hz*/
    "HighRate" : 4000, /*Hz*/
    "MediumRate" : 20, /*Hz*/
    "LowRate" : 1, /*Hz*/

    "QueueHigh" :
    [
        {
            "TaskName" : "Indy6DControlTask",
            "SharedLib" : "libIndy6DControlTask.so",
            "Location" : "/home/user/release/TasksDeployment/"
        },
        {
            "TaskName" : "Indy6DLoggingTask",
            "SharedLib" : "libIndy6DLoggingTask.so",
            "Location" : "/home/user/release/TasksDeployment/"
        }
    ],
    "QueueMedium" :
    [
        {
            "TaskName" : "Indy6DCadkitTask",
            "SharedLib" : "libIndy6DCadkitTask.so",
            "Location" : "/home/user/release/TasksDeployment/"
        }
    ],
    "QueueLow" :
    [
      {
        "TaskName" : "Indy6DStateMonitoringTask",
        "SharedLib" : "libIndy6DStateMonitoringTask.so",
        "Location" : "/home/user/release/TasksDeployment/"
      }
    ]
}

In line 2, there are the TimerRate which is the frequency of the fastest queue. Lines 3-5 set the frequency for each of the three queues (HighRate, MediumRate, LowRate) in [Hz] Lines 7 - 35 describe the information about the tasks that run in each queue.

  • TaskName : the name of the task

  • SharedLib : the name of the task file

  • Location : the path that the task file is located

In this example, the ControlTask and the LoggingTask are arranged in queue high having the execution frequency of 4000Hz. In the queue medium having 20Hz execution cycle, Neuromeka's robot simulation tool CadKit is executed. And in queue low with 1Hz execution cycle, StateMonitoringTask checking the state of the robot in the console is arranged.

If TaskManager is executed with this JSON configuration file, the tasks will be automatically placed in each queue according to the configuration and executed. Here, the .so file is an application built as the shared library. The Neuromeca control box (STEP) contains the various application files described below. In addition, users can develop the real-time task application for own purposes. The real-time task files and TaskManager executable files can be found in STEP's /home/user/release/TasksDeployment directory.

1
2
3
4
5
6
7
8
├── TasksDeployment
    ├── TaskManager
    ├── indyDeploy.json
    ├── libIndy6DControlTask.so
    ├── libIndy6DControlTaskSim.so
    ├── libIndy6DLoggingTask.so
    ├── libIndy6DModbusTCPTask.so
    └──  ...
  • libIndy6DControlTask.so :
    Indy6DControlTask is a core task which should be run to control robot. Communication tools (Conty, IndyDCP, etc) can be connected to a robot while Indy6DControlTask is running.

  • libIndy6DControlTaskSim.so :
    Indy6DControlTaskSim is required to run the robot only in simulation mode without running the real robot. Communication tools can be connected to simulated robot and model-based data can be obtained

  • libIndy6DLoggingTask.so :
    Indy6DLoggingTask is a task for logging robot data. It saves the real-time data and status information of the robot in the /home/user/release/LogData/ path when the emergency stop event occurs.

  • libIndy6DModbusTCPTask.so :
    Indy6DModbusTCPTask is a task for using one of the Indy Communication Tool, ModbusTCP. For details about the ModbusTCP, refer to ModbusTCP.

Warning

In STEP2, the control task controls the 6 DOF robot manipulator with 4000 Hz. For the latest version STEP3, the control cycle can be extended up to 8000 Hz. Since it is set considering the CPU operation time required for dynamics and inverse kinematics calculation, if the control frequency is set to be slower, the control performance become degraded, and if the control frequency is set to be higher, the operation can not be completed in a cycle, and the robot will be stopped in an emergency. Therefore, do not modify the frequency of queue high, or place the control task in another queue.

Disable Autorun

By default, TaskManager is automatically run with the boot so that the robot turns on when the control box is booted. If you kill *** TaskManager *** through the terminal, it will run again automatically. If users want to turn off these settings and run the robot in simulation mode, or run own application, these autorun settings should be turned off.

The UDEVMonitor process automatically executes TaskManager when STEP is booted. The following command quits the UDEVMonitor and its associated processes. It will restart automatically when STEP is rebooted.

1
$ killall -g UDEVMonitor

If TaskManager is already running, a new TaskManager cannot be run, and below messages is printed.


Installation

Indy Framework is installed in the robot control box. If users want to develop the robot software using the API, the development environment need to be installed. The installation files are provided separately for the customers. If you need the latest software version, or if you have any other questions, please contact to the Neuromeka sales team.

  • sales@neuromeka.com