Program Control

Start Task

Start a new task, wait for the new task to start running, and return the new task's task_id.

Serial tasks execute in sequence, with at most one serial task running at a time. Subsequent tasks will only run after the previous task completes, fails, or is terminated.

Parallel tasks execute immediately. Multiple parallel tasks can run simultaneously with independent environment variables, similar to multi-threaded execution.

WARNING

  • When the scene being started contains motion related interfaces, it must be started as a serial task (is_parallel is false)
  • In serial tasks, it must be started as a parallel task (is_parallel is true), otherwise it will block
  • Function name: Method start_task under [Robot]
  • Parameters:
    1. scene: [str] Scene ID
    2. params: [list[str]] Parameters, string array. Optional, default empty
    3. dir: [str] Workspace name. Optional, default root directory
    4. is_parallel: [bool] Whether to execute in parallel. Optional, default serial
    5. loop_to: [int] Repeat execution count. Optional, default 1 time, 0 means infinite
  • Return: [int] Task ID
JSON-RPC
// Request:
{ "jsonrpc": "2.0", "method": "start_task", "params": [{"name": "", "params": [""], "dir": "", "is_parallel": false, "loop_to": 1}], "id": 1 }
// Response:
{ "jsonrpc": "2.0", "result": {"id": 1}, "id": 1 }

Example Program

task_id = lebai:start_task("10000", {}, "", false, 1)

Get All Task IDs

  • Function name: Method get_task_list under [Robot]
  • Parameters: None
  • Return: [list[int]] IDs of all unfinished tasks
JSON-RPC
// Request:
{ "jsonrpc": "2.0", "method": "load_task_list", "params": [{}], "id": 1 }
// Response:
{ "jsonrpc": "2.0", "result": {"ids": []}, "id": 1 }

Example Program

tasks = lebai:get_task_list()

Get Serial Task ID

  • Function name: Method get_main_task_id under [Robot]
  • Parameters: None
  • Return: [int] Serial task ID. Returns None when no serial task

Example Program

task = lebai:get_main_task_id()

Wait for Task Completion

Block wait for task to end, return task status string and all output.

  • Function name: Method wait_task under [Robot]
  • Parameters:
    1. id: [int] task_id returned by start_task. Optional, default serial task
  • Return: [str] Task status string
JSON-RPC
// Request:
{ "jsonrpc": "2.0", "method": "wait_task", "params": [{"id": 1}], "id": 1 }
// Response:
{ "jsonrpc": "2.0", "result": {"done": true, "stdout": ""}, "id": 1 }

Example Program

task_id = lebai:start_task("10000", {}, "", false, 1)
stdout = lebai:wait_task(task_id)

Get Task Status

  • Function name: Method get_task_state under [Robot]
  • Parameters:
    1. id: [int] Task ID. Optional, default serial task
  • Return: [str] Task status: "NONE" no task; "WAIT" queued; "RUNNING" running; "PAUSE" paused; "SUCCESS" success; "INTERRUPTING" stopping; "INTERRUPT" stopped; "FAIL" failed
JSON-RPC
// Request:
{ "jsonrpc": "2.0", "method": "load_task", "params": [{"id": 1}], "id": 1 }
// Response:
{ "jsonrpc": "2.0", "result": {"state": ""}, "id": 1 }

Example Program

task_id = lebai:start_task("10000", {}, "", false, 1)
state = lebai:get_task_state(task_id)

Stop Task

Stop the specified task. When stopping a serial task, stop_move is automatically called to stop motion.

  • Function name: Method cancel_task under [Robot]
  • Parameters:
    1. id: [int] Task ID. Optional, default serial task
  • Return: None
JSON-RPC
// Request:
{ "jsonrpc": "2.0", "method": "cancel_task", "params": [{"id": 1}], "id": 1 }
// Response:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }

Example Program

lebai:cancel_task(task_id)

Pause Task

Pause the specified task. When pausing a serial task, pause_move is automatically called to pause motion.

  • Function name: Method pause_task under [Robot]
  • Parameters:
    1. id: [int] Task ID. Optional, default serial task
  • Return: None
JSON-RPC
// Request:
{ "jsonrpc": "2.0", "method": "pause_task", "params": [{"id": 1}], "id": 1 }
// Response:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }

Example Program

lebai:pause_task(task_id)

Resume Task

Resume the specified task. When resuming a serial task, resume_move is automatically called to resume motion.

  • Function name: Method resume_task under [Robot]
  • Parameters:
    1. id: [int] Task ID. Optional, default serial task
  • Return: None
JSON-RPC
// Request:
{ "jsonrpc": "2.0", "method": "resume_task", "params": [{"id": 1}], "id": 1 }
// Response:
{ "jsonrpc": "2.0", "result": {}, "id": 1 }

Example Program

lebai:resume_task(task_id)