Preserve acceleration through same-axis velocity reversal and submit retract commands immediately after zero-dwell tactile contact. Capture the applied command's TCP reference and measure signed retract progress, with logging of the maximum sampled forward displacement after reversal starts. Support per-command linear jerk in both touch.speed_l and retract, and cap requested acceleration and jerk at the configured arm limits. Protect command snapshots and stop completion against newer speedL submissions. Include the current QP arm and retract parameter tuning and remove an obsolete config field. Add headless actuator-driven MuJoCo reversal measurement and focused regression coverage for reversal continuity, controller concurrency, limit enforcement, and touch jerk configuration. Validation: cmvr_es and touch_screen_task_test build successfully; 18 focused regression tests pass, along with headless MuJoCo reversal checks.
165 lines
4.6 KiB
Protocol Buffer
165 lines
4.6 KiB
Protocol Buffer
syntax = "proto3";
|
|
package cmvr.config;
|
|
|
|
import "cmvr/config/lawba_ik_config.proto";
|
|
import "cmvr/config/pinocchio_dls_ik_config.proto";
|
|
import "cmvr/config/pinocchio_qp_ik_config.proto";
|
|
import "cmvr/config/srs_ik_config.proto";
|
|
import "cmvr/config/cartesian_motion_validation_config.proto";
|
|
|
|
enum ToppraPathType {
|
|
TOPPRA_PATH_TYPE_UNKNOWN = 0;
|
|
TOPPRA_PATH_TYPE_LINEAR = 1;
|
|
TOPPRA_PATH_TYPE_CUBIC_HERMITE = 2;
|
|
TOPPRA_PATH_TYPE_QUINTIC = 3;
|
|
TOPPRA_PATH_TYPE_NATURAL = 4;
|
|
}
|
|
|
|
message MotorRobotArmBackendConfig {
|
|
string motor_system_id = 2;
|
|
int32 dof = 3;
|
|
repeated string joint_names = 4;
|
|
int32 upd_freq = 5;
|
|
int32 buffer_size = 6;
|
|
double default_vel = 7;
|
|
double default_acc = 8;
|
|
repeated string motor_group_ids = 9;
|
|
}
|
|
|
|
enum VendorRobotArmBrand {
|
|
VENDOR_ROBOT_ARM_BRAND_UNKNOWN = 0;
|
|
VENDOR_ROBOT_ARM_BRAND_AUBO_ARM = 1;
|
|
VENDOR_ROBOT_ARM_BRAND_HUAYAN_ARM = 2;
|
|
}
|
|
|
|
message VendorRobotArmBackendConfig {
|
|
VendorRobotArmBrand brand = 1;
|
|
string ip = 2;
|
|
int32 port = 3;
|
|
string model = 4;
|
|
int32 dof = 5;
|
|
repeated string joint_names = 6;
|
|
string base_frame = 7;
|
|
string tool_frame = 8;
|
|
string username = 9;
|
|
string password = 10;
|
|
}
|
|
|
|
message SpeedLPlannerConfig {
|
|
// Default true: preserve acceleration through same-axis velocity reversal.
|
|
optional bool continuous_linear_reversal = 21;
|
|
// Arm-level speedL limits. Command requests may lower, but not raise them.
|
|
// Linear units: m/s, m/s^2, m/s^3. Angular units: rad/s, rad/s^2, rad/s^3.
|
|
// Unset/nonpositive values use the planner defaults.
|
|
double linear_velocity_max = 1;
|
|
double linear_acceleration_max = 2;
|
|
double linear_jerk_max = 3;
|
|
double angular_velocity_max = 4;
|
|
double angular_acceleration_max = 5;
|
|
double angular_jerk_max = 6;
|
|
double linear_target_replan_threshold = 8;
|
|
double angular_target_replan_threshold = 9;
|
|
double linear_reverse_cos_threshold = 10;
|
|
double linear_reverse_switch_speed_threshold = 11;
|
|
optional bool enforce_joint_acceleration_limits = 17;
|
|
CartesianLineDeviationCheckConfig line_deviation_check = 18;
|
|
JointVelocityCheckConfig joint_velocity_check = 19;
|
|
CartesianVelocityFeasibilityCheckConfig cartesian_velocity_feasibility_check = 20;
|
|
}
|
|
|
|
message CartesianVelocityControllerConfig {
|
|
double control_period_s = 1;
|
|
double stop_twist_norm = 2;
|
|
double stop_command_velocity_norm = 3;
|
|
double stop_measured_velocity_norm = 4;
|
|
double stop_acceleration = 5;
|
|
// 等待 Cartesian 速度运动停止的最长时间,单位为秒。
|
|
optional double stop_timeout_s = 6;
|
|
}
|
|
|
|
message ToppraJointMotionPlannerConfig {
|
|
ToppraPathType path_type = 1;
|
|
double sample_period_s = 2;
|
|
int32 grid_size = 3;
|
|
int32 high_grid_size = 4;
|
|
}
|
|
|
|
message MoveJConfig {
|
|
oneof algorithm {
|
|
ToppraJointMotionPlannerConfig toppra_joint_motion_planner = 1;
|
|
}
|
|
|
|
// MoveJ 轨迹发送完成后,等待关节实际状态稳定的最长时间,单位为秒。
|
|
optional double settle_timeout_s = 2;
|
|
// MoveJ 完成时允许的最大关节位置误差,单位为弧度。
|
|
optional double settle_position_tolerance_rad = 3;
|
|
// MoveJ 完成时允许的最大关节速度,单位为弧度/秒。
|
|
optional double settle_velocity_tolerance_rad_s = 4;
|
|
// 位置和速度连续满足条件的采样次数。
|
|
optional int32 settle_stable_sample_count = 5;
|
|
}
|
|
|
|
message MoveLPlannerConfig {
|
|
double sample_period_s = 1;
|
|
double position_gain = 2;
|
|
double rotation_gain = 3;
|
|
CartesianLineDeviationCheckConfig line_deviation_check = 4;
|
|
JointContinuityCheckConfig joint_continuity_check = 5;
|
|
CartesianStepFeasibilityCheckConfig cartesian_step_feasibility_check = 6;
|
|
}
|
|
|
|
message MoveLConfig {
|
|
oneof algorithm {
|
|
MoveLPlannerConfig pinocchio_cartesian_motion_planner = 1;
|
|
}
|
|
}
|
|
|
|
message SpeedLControllerConfig {
|
|
oneof algorithm {
|
|
CartesianVelocityControllerConfig cartesian_velocity_controller = 1;
|
|
}
|
|
}
|
|
|
|
message SpeedLConfig {
|
|
oneof algorithm {
|
|
SpeedLPlannerConfig pinocchio_cartesian_motion_planner = 1;
|
|
}
|
|
|
|
SpeedLControllerConfig speed_l_controller = 10;
|
|
}
|
|
|
|
message ArmKinematicsConfig {
|
|
oneof algorithm {
|
|
PinocchioDlsIKConfig pinocchio_dls_ik_solver = 10;
|
|
PinocchioQpIKConfig pinocchio_qp_ik_solver = 11;
|
|
SrsIKConfig srs_ik_solver = 12;
|
|
LawbaIKConfig lawba_ik_solver = 13;
|
|
}
|
|
}
|
|
|
|
message ArmMotionConfig {
|
|
MoveJConfig move_j = 1;
|
|
MoveLConfig move_l = 2;
|
|
SpeedLConfig speed_l = 4;
|
|
}
|
|
|
|
message RobotArmConfig {
|
|
string id = 1;
|
|
|
|
oneof backend {
|
|
MotorRobotArmBackendConfig motor = 10;
|
|
VendorRobotArmBackendConfig vendor = 11;
|
|
}
|
|
|
|
ArmKinematicsConfig kinematics = 20;
|
|
ArmMotionConfig motion = 21;
|
|
}
|
|
|
|
message ArmConfig {
|
|
repeated RobotArmConfig robot_arms = 1;
|
|
}
|
|
|
|
message ArmRootConfig {
|
|
ArmConfig arm = 1;
|
|
}
|