Robot Documentations

Robot Status API

Get information about the robot's current status, hardware components, and system information.

Get the current status of the robot

Retrieve the current status of the robot including charging state, battery percentage, emergency stop status, current state, and out of service status.

GET
/api/v1/status

Response Body

Successful Response

is_chargingIs Charging

Indicates whether the robot is currently charging.

Default: false
battery_percentBattery Percent

Battery percentage of the robot.

Default: 100
is_estopIs Estop

Indicates whether the robot is in an emergency stop state.

Default: false
navigation_blockedNavigation Blocked

Indicates whether the robot's navigation is currently blocked.

Default: false
stationary_awhileStationary Awhile

Indicates whether the robot has been stationary for a while.

Default: false
soft_estopSoft Estop

Indicates whether the robot is in a soft emergency stop state.

Default: false
is_obstacle_to_robotIs Obstacle To Robot

Indicates whether there is an obstacle close to the robot.

Default: false
stateState

Numeric code representing the current state of the robot.

Default: 0
state_labelState Label

Current state of the robot.

Default: ""
curl -X GET "http://localhost:7242/api/v1/status"
fetch("http://localhost:7242/api/v1/status")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status"

response = requests.request("GET", url)

print(response.text)
{
  "is_charging": false,
  "battery_percent": 100,
  "is_estop": false,
  "navigation_blocked": false,
  "stationary_awhile": false,
  "soft_estop": false,
  "is_obstacle_to_robot": false,
  "state": 0,
  "state_label": "READY_FOR_MISSION"
}

Get the hardware status of the robot

Retrieve the status of the robot's hardware components including lidars, cameras, and internet connection.

GET
/api/v1/status/hardware

Response Body

Successful Response

lidarsLidars

List of lidar sensors and their statuses.

camerasCameras

List of camera sensors and their statuses.

internet_statusInternetStatus

Internet connection status of the robot.

curl -X GET "http://localhost:7242/api/v1/status/hardware"
fetch("http://localhost:7242/api/v1/status/hardware")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status/hardware"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status/hardware"

response = requests.request("GET", url)

print(response.text)
{
  "lidars": [
    {
      "name": "main_lidar",
      "is_working": true,
      "state": "WORKING",
      "error": "No error"
    }
  ],
  "cameras": [
    {
      "name": "front_camera",
      "is_working": true,
      "state": "WORKING",
      "error": "No error"
    }
  ],
  "internet_status": {
    "state": "DISCONNECTED",
    "error": "No error",
    "wifi_enabled": false,
    "wifi_connected": false,
    "wifi_ssid": "MyRobotWiFi",
    "wifi_ip_addr": "",
    "wifi_mac_addr": "00:11:22:33:44:55",
    "mobile_enabled": false,
    "mobile_connected": false
  }
}

Get the information of the robot

Retrieve the information of the robot including robot ID, name, model, software version, hardware version, site, floor, and current mission details.

GET
/api/v1/status/info

Response Body

Successful Response

robot_uidRobot Uid

The unique identifier of the robot.

Default: ""
project_idProject Id

The project ID of the robot.

Default: ""
site_floorSiteFloorModel

The site and floor of the robot.

curl -X GET "http://localhost:7242/api/v1/status/info"
fetch("http://localhost:7242/api/v1/status/info")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status/info"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status/info"

response = requests.request("GET", url)

print(response.text)
{
  "robot_uid": "robot-1",
  "project_id": "project-1",
  "site_floor": {
    "site": "site",
    "floor": "floor"
  }
}

Stream the current status of the robot

Stream the current status of the robot in real-time including charging state, battery percentage, emergency stop status, current state, and out of service status.

GET
/api/v1/status/stream

Response Body

Successful Response

is_chargingIs Charging

Indicates whether the robot is currently charging.

Default: false
battery_percentBattery Percent

Battery percentage of the robot.

Default: 100
is_estopIs Estop

Indicates whether the robot is in an emergency stop state.

Default: false
navigation_blockedNavigation Blocked

Indicates whether the robot's navigation is currently blocked.

Default: false
stationary_awhileStationary Awhile

Indicates whether the robot has been stationary for a while.

Default: false
soft_estopSoft Estop

Indicates whether the robot is in a soft emergency stop state.

Default: false
is_obstacle_to_robotIs Obstacle To Robot

Indicates whether there is an obstacle close to the robot.

Default: false
stateState

Numeric code representing the current state of the robot.

Default: 0
state_labelState Label

Current state of the robot.

Default: ""

Failed to stream robot status

curl -X GET "http://localhost:7242/api/v1/status/stream"
fetch("http://localhost:7242/api/v1/status/stream")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status/stream"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status/stream"

response = requests.request("GET", url)

print(response.text)
{
  "is_charging": false,
  "battery_percent": 100,
  "is_estop": false,
  "navigation_blocked": false,
  "stationary_awhile": false,
  "soft_estop": false,
  "is_obstacle_to_robot": false,
  "state": 0,
  "state_label": "READY_FOR_MISSION"
}
{
  "status_code": 500,
  "success": false,
  "message": "Failed to stream robot status",
  "error": {
    "code": "ROBOT_STATUS_STREAM_ERROR",
    "message": "Failed to stream robot status"
  }
}

Get the software versions of the robot

Retrieve the ros , dep and scu software versions of the robot.

GET
/api/v1/status/version

Response Body

Successful Response

ros_versionRos Version

The version of Robot main package.

Default: ""
dep_versionDep Version

Versions of the dependencies of the robot main package.

Default: ""
scu_versionScu Version

The version of the SCU firmware.

Default: ""
curl -X GET "http://localhost:7242/api/v1/status/version"
fetch("http://localhost:7242/api/v1/status/version")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status/version"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status/version"

response = requests.request("GET", url)

print(response.text)
{
  "ros_version": "1.0.0",
  "dep_version": "1.0.0",
  "scu_version": "1.0.0"
}

Get the active alarms of the robot

Retrieve the list of active alarms on the robot, including alarm code, message, and severity.

GET
/api/v1/status/alarms

Response Body

Successful Response

warningsWarnings

List of active warnings on the robot.

errorsErrors

List of active errors on the robot.

curl -X GET "http://localhost:7242/api/v1/status/alarms"
fetch("http://localhost:7242/api/v1/status/alarms")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status/alarms"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status/alarms"

response = requests.request("GET", url)

print(response.text)
{
  "warnings": [
    "509"
  ],
  "errors": [
    "510"
  ]
}

Stream the active alarms of the robot

Stream the list of active alarms on the robot in real-time, including alarm code, message, and severity.

GET
/api/v1/status/alarms/stream

Response Body

Successful Response

warningsWarnings

List of active warnings on the robot.

errorsErrors

List of active errors on the robot.

Failed to stream robot alarms

curl -X GET "http://localhost:7242/api/v1/status/alarms/stream"
fetch("http://localhost:7242/api/v1/status/alarms/stream")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status/alarms/stream"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status/alarms/stream"

response = requests.request("GET", url)

print(response.text)
{
  "warnings": [
    "509"
  ],
  "errors": [
    "510"
  ]
}
{
  "status_code": 500,
  "success": false,
  "message": "Failed to stream robot alarms",
  "error": {
    "code": "ROBOT_ALARMS_STREAM_ERROR",
    "message": "Failed to stream robot alarms"
  }
}

Get the screen UI configuration

Retrieve the current screen UI configuration of the robot as a JSON object.

GET
/api/v1/status/screen-config

Response Body

Successful Response

[key: string]any
curl -X GET "http://localhost:7242/api/v1/status/screen-config"
fetch("http://localhost:7242/api/v1/status/screen-config")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status/screen-config"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status/screen-config"

response = requests.request("GET", url)

print(response.text)
{}

Stream the screen UI configuration

Stream the screen UI configuration of the robot in real-time as SSE events.

GET
/api/v1/status/screen-config/stream

Response Body

Successful Response

responseRequiredunknown

Failed to stream screen config

curl -X GET "http://localhost:7242/api/v1/status/screen-config/stream"
fetch("http://localhost:7242/api/v1/status/screen-config/stream")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "http://localhost:7242/api/v1/status/screen-config/stream"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "http://localhost:7242/api/v1/status/screen-config/stream"

response = requests.request("GET", url)

print(response.text)
null
{
  "status_code": 500,
  "success": false,
  "message": "Failed to stream screen config",
  "error": {
    "code": "SCREEN_CONFIG_STREAM_ERROR",
    "message": "Failed to stream screen config"
  }
}