configを自分で書くことで、サンプルにないロボットや独自に作成したロボットがOpenRRで動くようになります。configには以下の要素を書くことができます。
また、VSCodeを使用している方はこちら から拡張機能のEvenBetterTOML
を導入することを推奨します。
デフォルトは以下のようになっています。読み込んだconfigに応じて設定が追加または上書きされます。
openrr_apps_robot_command --show-default-config
[speak_configs]
[openrr_clients_config]
self_collision_check_pairs = []
[openrr_clients_config.ik_solvers_configs]
[plugins]
Client configに書く項目の一覧になります。リポジトリにあるサンプルもぜひご参考に。サンプルはこちら から。
Type: array string
Type: string or boolean
move_base = false
navigation = "arci_ros2"
[openrr_clients_config]
urdf_path = "./twin_arms_robot.urdf"
self_collision_check_pairs = [
"left_shoulder:left_gripper",
"right_shoulder:right_gripper"
]
Collision Check Client Config Type
client_name string (required)
name string (required)
self_collision_checker_config SelfCollisionCheckerConfig
[[openrr_clients_config.collision_check_clients_configs]]
client_name = "arm_with_torso"
name = "arm_with_torso_collision_checked"
Self Collision Checker Config Type
prediction double (default 0.001)
time_interpolate_rate double (default 0.5)
IK Client Config Type
client_name string (required)
name string (required)
solver_name string (required)
[[openrr_clients_config.ik_clients_configs]]
name = "arm_with_torso_ik"
client_name = "arm_with_torso_collision_checked"
solver_name = "arm_with_torso_ik_solver"
IK Solver Config Type
allowable_angle_error_rad double (default 0.005)
allowable_position_error_m double (default 0.005)
constraints Constraints
ik_target string (required)
jacobian_multiplier double (default 0.1)
num_max_try uint (default 300)
root_node_name string
use_random_ik boolean (default false)
[openrr_clients_config.ik_solvers_configs.arm_with_torso_ik_solver]
ik_target = "gripper_palm_joint"
allowable_position_error_m = 0.01
Constraints Type
ignored_joint_names array string (default [])
position_x boolean (default true)
position_y boolean (default true)
position_z boolean (default true)
rotation_x boolean (default true)
rotation_y boolean (default true)
rotation_z boolean (default true)
Joint Trajectory Client Container Config Type
clients_name array string (required)
name string
Joints Pose Type
client_name string (required)
pose_name string (required)
positions array double (required)
[[openrr_clients_config.joints_poses]]
pose_name = "stand by"
client_name = "arm"
positions = [0.0, 1.2, 0.0, -0.7, 0.0, -0.2, 0.0]
ROS Control Action Client Config Type
complete_allowable_errors array double (required)
complete_timeout_sec double (default 10.0)
controller_name string (required)
joint_names array string (required)
joint_position_difference_limits array double
joint_position_limiter_strategy JointPositionLimiterStrategy
joint_position_limits JointPositionLimit
joint_velocity_limits array double
name string (required)
send_partial_joints_goal boolean (default false)
state_topic_name string (required)
wrap_with_joint_position_difference_limiter boolean (default false)
wrap_with_joint_position_limiter boolean (default false)
wrap_with_joint_velocity_limiter boolean (default false)
Joint Position Limiter Strategy Element
string (enum) "Clamp", "ClampWithWarn", "Error"
Joint Position Limit Type
lower double
upper double
[[urdf_viz_clients_configs]]
name = "foo"
joint_names = ["bar1", "bar2"]
joint_position_limits = [
{ lower = -3.0, upper = 3.0 },
{ lower = -2.0, upper = 1.5 },
]
Plugin Instance Type Description
args string Arguments passed when creating this instance.
args_from_path string Pass the contents of the specified file as an argument.
path string (required) 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 PluginInstanceKind
Joint Position Limiter Strategy Element
string (enum) "JointTrajectoryClient", Localization", MoveBase", Navigation", "Speaker"
ROS Control Client Config Type
complete_allowable_errors array double
complete_timeout_sec double
controller_name string
joint_names array string
joint_position_limits array JointPositionLimit
joint_velocity_limits array double
name string
send_partial_joints_goal boolean
state_topic_name string
wrap_with_joint_position_limiter boolean (false)
wrap_with_joint_velocity_limiter boolean (false)
Joint Position Limit Type
lower double
upper double
[[ros_clients_configs]]
name = "arm"
joint_names = [
"shoulder_joint",
"shoulder_joint",
"upper_arm_roll_joint",
"elbow_flex_joint",
"forearm_roll_joint",
"wrist_flex_joint",
"wrist_roll_joint",
]
complete_allowable_errors = [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01]
controller_name = "arm_controller"
state_topic_name = "arm_controller/openrr/state"
ROS cmd_vel MoveBase Config Type
topic string
ROS Localization Client Config Type
request_final_nomotion_update_hack boolean
ROS Navigation Client Config Type
clear_costmap_before_start boolean
request_final_nomotion_update_hack boolean
Speak Config Element
string(enum) "Print"
, "Audio"
, "Command"
or "RosEspeak"
"Audio" Type
args map (required)
ROS Espeak Client Config Type
topic string
[speak_configs."foo"]
type = "Audio"
[speak_configs."foo".args.map]
bar = "./bar.mp3" # Path to audio file
openrr_apps_robot_command --config-path {path to toml} speak foo bar
[speak_configs.espeak]
type = "RosEspeak"
[speak_configs.espeak.args.config]
topic = "/sample/message"
openrr_apps_robot_command --config-path {path to toml} -i
> speak espeak Hello!
data: "Hello!"
---
Type: string
URDF-Viz Web Client Config Type
joint_names array string
joint_position_limits array JointPositionLimit
joint_velocity_limits array double
name string
wrap_with_joint_position_limiter boolean (default false)
wrap_with_joint_velocity_limiter boolean (default false)
[[urdf_viz_clients_configs]]
# `urdf-viz` client name
name = "arm"
# List of joints
joint_names = [
"shoulder_yaw",
"shoulder_pitch",
"shoulder_roll",
"elbow_pitch",
"wrist_yaw",
"wrist_pitch",
]
wrap_with_joint_position_limiter = true
# Range of joints
joint_position_limits = [
{ lower = -3.0, upper = 3.0 },
{ lower = -2.0, upper = 1.5 },
{ lower = -1.5, upper = 2.0 },
{ lower = -2.0, upper = 1.5 },
{ lower = -3.0, upper = 3.0 },
{ lower = -2.0, upper = 2.0 },
]
[openrr_clients_config]
# Path to URDF file
urdf_path = "./sample.urdf"
self_collision_check_pairs = [
"shoulder_yaw:gripper_linear1",
]
[[openrr_clients_config.collision_check_clients_configs]]
# Collision check client name
name = "arm_collision_checked"
# `urdf-viz` client name
client_name = "arm"
[[openrr_clients_config.ik_clients_configs]]
# IK client name
name = "arm_ik"
# Collision check client name
client_name = "arm_collision_checked"
# IK solver name
solver_name = "arm_ik_solver"
[[openrr_clients_config.joints_poses]]
# Position name
pose_name = "zero"
# Collision check client name
client_name = "arm_collision_checked"
# Position that you want to set
positions = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
[openrr_clients_config.ik_solvers_configs.arm_ik_solver] # IK solver name (arm_ik_solver)
ik_target = "tool_fixed"