{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "RobotConfig",
"type": "object",
"properties": {
"joint_trajectory_clients": {
"description": "Joint trajectory clients to be used.",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"localization": {
"description": "Localization to be used. `\"ros\"`, `\"urdf-viz\"`, `false`, or plugin instance name.",
"default": true,
"allOf": [
{
"$ref": "#/definitions/ClientKind"
}
]
},
"move_base": {
"description": "MoveBase to be used. `\"ros\"`, `\"urdf-viz\"`, `false`, or plugin instance name.",
"default": true,
"allOf": [
{
"$ref": "#/definitions/ClientKind"
}
]
},
"navigation": {
"description": "Navigation to be used. `\"ros\"`, `\"urdf-viz\"`, `false`, or plugin instance name.",
"default": true,
"allOf": [
{
"$ref": "#/definitions/ClientKind"
}
]
},
"openrr_clients_config": {
"default": {
"ik_solvers_configs": {},
"self_collision_check_pairs": [],
"urdf_full_path": null,
"urdf_path": null
},
"allOf": [
{
"$ref": "#/definitions/OpenrrClientsConfig"
}
]
},
"plugins": {
"default": {},
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/PluginConfig"
}
},
"ros_action_clients_configs": {
"type": "array",
"items": {
"$ref": "#/definitions/RosControlActionClientConfig"
}
},
"ros_clients_configs": {
"type": "array",
"items": {
"$ref": "#/definitions/RosControlClientConfig"
}
},
"ros_cmd_vel_move_base_client_config": {
"anyOf": [
{
"$ref": "#/definitions/RosCmdVelMoveBaseConfig"
},
{
"type": "null"
}
]
},
"ros_localization_client_config": {
"anyOf": [
{
"$ref": "#/definitions/RosLocalizationClientConfig"
},
{
"type": "null"
}
]
},
"ros_navigation_client_config": {
"anyOf": [
{
"$ref": "#/definitions/RosNavClientConfig"
},
{
"type": "null"
}
]
},
"speak_configs": {
"default": {},
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/SpeakConfig"
}
},
"speakers": {
"description": "Speakers to be used.",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"urdf_viz_clients_configs": {
"type": "array",
"items": {
"$ref": "#/definitions/UrdfVizWebClientConfig"
}
}
},
"additionalProperties": false,
"definitions": {
"BuiltinClient": {
"type": "string",
"enum": [
"ros",
"urdf-viz"
]
},
"ClientKind": {
"anyOf": [
{
"$ref": "#/definitions/BuiltinClient"
},
{
"type": "string"
},
{
"type": "boolean"
}
]
},
"CollisionCheckClientConfig": {
"type": "object",
"required": [
"client_name",
"name"
],
"properties": {
"client_name": {
"type": "string"
},
"name": {
"type": "string"
},
"self_collision_checker_config": {
"default": {
"prediction": 0.001,
"time_interpolate_rate": 0.5
},
"allOf": [
{
"$ref": "#/definitions/SelfCollisionCheckerConfig"
}
]
}
},
"additionalProperties": false
},
"IkClientConfig": {
"type": "object",
"required": [
"client_name",
"name",
"solver_name"
],
"properties": {
"client_name": {
"type": "string"
},
"name": {
"type": "string"
},
"solver_name": {
"type": "string"
}
},
"additionalProperties": false
},
"IkSolverConfig": {
"type": "object",
"required": [
"ik_target"
],
"properties": {
"allowable_angle_error_rad": {
"default": 0.005,
"type": "number",
"format": "double"
},
"allowable_position_error_m": {
"default": 0.005,
"type": "number",
"format": "double"
},
"constraints": {
"description": "A bundle of flags determining which coordinates are constrained for a target",
"default": {
"ignored_joint_names": [],
"position_x": true,
"position_y": true,
"position_z": true,
"rotation_x": true,
"rotation_y": true,
"rotation_z": true
},
"type": "object",
"properties": {
"position_x": {
"description": "true means the constraint is used. The coordinates is the world, not the end of the arm.",
"default": true,
"type": "boolean"
},
"position_y": {
"default": true,
"type": "boolean"
},
"position_z": {
"default": true,
"type": "boolean"
},
"rotation_x": {
"default": true,
"type": "boolean"
},
"rotation_y": {
"default": true,
"type": "boolean"
},
"rotation_z": {
"default": true,
"type": "boolean"
}
}
},
"ik_target": {
"type": "string"
},
"jacobian_multiplier": {
"default": 0.1,
"type": "number",
"format": "double"
},
"num_max_try": {
"default": 300,
"type": "integer",
"format": "uint",
"minimum": 0.0
},
"root_node_name": {
"type": [
"string",
"null"
]
},
"use_random_ik": {
"default": false,
"type": "boolean"
}
},
"additionalProperties": false
},
"JointPositionLimit": {
"type": "object",
"properties": {
"lower": {
"type": [
"number",
"null"
],
"format": "double"
},
"upper": {
"type": [
"number",
"null"
],
"format": "double"
}
}
},
"JointPositionLimiterStrategy": {
"type": "string",
"enum": [
"Clamp",
"ClampWithWarn",
"Error"
]
},
"JointTrajectoryClientsContainerConfig": {
"type": "object",
"required": [
"clients_names",
"name"
],
"properties": {
"clients_names": {
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"type": "string"
}
},
"additionalProperties": false
},
"JointsPose": {
"type": "object",
"required": [
"client_name",
"pose_name",
"positions"
],
"properties": {
"client_name": {
"type": "string"
},
"pose_name": {
"type": "string"
},
"positions": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
}
},
"additionalProperties": false
},
"OpenrrClientsConfig": {
"type": "object",
"properties": {
"collision_check_clients_configs": {
"type": "array",
"items": {
"$ref": "#/definitions/CollisionCheckClientConfig"
}
},
"ik_clients_configs": {
"type": "array",
"items": {
"$ref": "#/definitions/IkClientConfig"
}
},
"ik_solvers_configs": {
"default": {},
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/IkSolverConfig"
}
},
"joint_trajectory_clients_container_configs": {
"type": "array",
"items": {
"$ref": "#/definitions/JointTrajectoryClientsContainerConfig"
}
},
"joints_poses": {
"type": "array",
"items": {
"$ref": "#/definitions/JointsPose"
}
},
"self_collision_check_pairs": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"urdf_full_path": {
"type": [
"string",
"null"
]
},
"urdf_path": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"PluginConfig": {
"type": "object",
"required": [
"instances",
"path"
],
"properties": {
"instances": {
"type": "array",
"items": {
"$ref": "#/definitions/PluginInstance"
}
},
"path": {
"description": "Path to the plugin. If no extension is specified, the default extension for `cdylib` on the current OS will be selected. (linux: `.so`, macos: `.dylib`, windows: `.dll`)",
"type": "string"
}
},
"additionalProperties": false
},
"PluginInstance": {
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"args": {
"description": "Arguments passed when creating this instance.",
"type": [
"string",
"null"
]
},
"args_from_path": {
"description": "Pass the contents of the specified file as an argument.",
"type": [
"string",
"null"
]
},
"name": {
"description": "Name of this plugin instance.",
"type": "string"
},
"type": {
"description": "Trait kind of this instance.",
"allOf": [
{
"$ref": "#/definitions/PluginInstanceKind"
}
]
}
},
"additionalProperties": false
},
"PluginInstanceKind": {
"description": "Trait kind of the instance.",
"type": "string",
"enum": [
"JointTrajectoryClient",
"Localization",
"MoveBase",
"Navigation",
"Speaker"
]
},
"RosCmdVelMoveBaseConfig": {
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string"
}
},
"additionalProperties": false
},
"RosControlActionClientConfig": {
"type": "object",
"required": [
"complete_allowable_errors",
"controller_name",
"joint_names",
"name",
"state_topic_name"
],
"properties": {
"complete_allowable_errors": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
},
"complete_timeout_sec": {
"default": 10.0,
"type": "number",
"format": "double"
},
"controller_name": {
"type": "string"
},
"joint_names": {
"type": "array",
"items": {
"type": "string"
}
},
"joint_position_difference_limits": {
"type": [
"array",
"null"
],
"items": {
"type": "number",
"format": "double"
}
},
"joint_position_limiter_strategy": {
"default": "Clamp",
"allOf": [
{
"$ref": "#/definitions/JointPositionLimiterStrategy"
}
]
},
"joint_position_limits": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/JointPositionLimit"
}
},
"joint_velocity_limits": {
"type": [
"array",
"null"
],
"items": {
"type": "number",
"format": "double"
}
},
"name": {
"type": "string"
},
"send_partial_joints_goal": {
"default": false,
"type": "boolean"
},
"state_topic_name": {
"type": "string"
},
"wrap_with_joint_position_difference_limiter": {
"default": false,
"type": "boolean"
},
"wrap_with_joint_position_limiter": {
"default": false,
"type": "boolean"
},
"wrap_with_joint_velocity_limiter": {
"default": false,
"type": "boolean"
}
},
"additionalProperties": false
},
"RosControlClientConfig": {
"type": "object",
"required": [
"complete_allowable_errors",
"controller_name",
"joint_names",
"name"
],
"properties": {
"complete_allowable_errors": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
},
"complete_timeout_sec": {
"default": 10.0,
"type": "number",
"format": "double"
},
"controller_name": {
"type": "string"
},
"joint_names": {
"type": "array",
"items": {
"type": "string"
}
},
"joint_position_difference_limits": {
"type": [
"array",
"null"
],
"items": {
"type": "number",
"format": "double"
}
},
"joint_position_limiter_strategy": {
"default": "Clamp",
"allOf": [
{
"$ref": "#/definitions/JointPositionLimiterStrategy"
}
]
},
"joint_position_limits": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/JointPositionLimit"
}
},
"joint_velocity_limits": {
"type": [
"array",
"null"
],
"items": {
"type": "number",
"format": "double"
}
},
"name": {
"type": "string"
},
"send_partial_joints_goal": {
"default": false,
"type": "boolean"
},
"state_topic_name": {
"type": [
"string",
"null"
]
},
"wrap_with_joint_position_difference_limiter": {
"default": false,
"type": "boolean"
},
"wrap_with_joint_position_limiter": {
"default": false,
"type": "boolean"
},
"wrap_with_joint_velocity_limiter": {
"default": false,
"type": "boolean"
}
},
"additionalProperties": false
},
"RosEspeakClientConfig": {
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string"
}
},
"additionalProperties": false
},
"RosLocalizationClientConfig": {
"type": "object",
"required": [
"request_final_nomotion_update_hack"
],
"properties": {
"amcl_pose_topic_name": {
"default": "/amcl_pose",
"type": "string"
},
"nomotion_update_service_name": {
"default": "request_nomotion_update",
"type": "string"
},
"request_final_nomotion_update_hack": {
"type": "boolean"
}
},
"additionalProperties": false
},
"RosNavClientConfig": {
"type": "object",
"required": [
"clear_costmap_before_start",
"request_final_nomotion_update_hack"
],
"properties": {
"clear_costmap_before_start": {
"type": "boolean"
},
"clear_costmap_service_name": {
"default": "/move_base/clear_costmaps",
"type": "string"
},
"move_base_action_base_name": {
"default": "/move_base",
"type": "string"
},
"nomotion_update_service_name": {
"default": "request_nomotion_update",
"type": "string"
},
"request_final_nomotion_update_hack": {
"type": "boolean"
}
},
"additionalProperties": false
},
"SelfCollisionCheckerConfig": {
"type": "object",
"properties": {
"prediction": {
"default": 0.001,
"type": "number",
"format": "double"
},
"time_interpolate_rate": {
"default": 0.5,
"type": "number",
"format": "double"
}
},
"additionalProperties": false
},
"SpeakConfig": {
"oneOf": [
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"Print"
]
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"Command"
]
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"args",
"type"
],
"properties": {
"args": {
"type": "object",
"required": [
"config"
],
"properties": {
"config": {
"$ref": "#/definitions/RosEspeakClientConfig"
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"enum": [
"RosEspeak"
]
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"args",
"type"
],
"properties": {
"args": {
"type": "object",
"required": [
"map"
],
"properties": {
"map": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"enum": [
"Audio"
]
}
},
"additionalProperties": false
}
]
},
"UrdfVizWebClientConfig": {
"type": "object",
"required": [
"name"
],
"properties": {
"joint_names": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"joint_position_limits": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/JointPositionLimit"
}
},
"joint_velocity_limits": {
"type": [
"array",
"null"
],
"items": {
"type": "number",
"format": "double"
}
},
"name": {
"type": "string"
},
"wrap_with_joint_position_limiter": {
"default": false,
"type": "boolean"
},
"wrap_with_joint_velocity_limiter": {
"default": false,
"type": "boolean"
}
},
"additionalProperties": false
}
}
}