feat(轨迹控制): 为start_traj命令添加参数解析功能

扩展start_traj命令以支持从消息中解析轨迹参数,包括模式、比例、速度等配置项。这使得轨迹控制更加灵活可配置。
This commit is contained in:
2025-10-09 18:26:07 +08:00
parent 993ed111a6
commit 06bf2fa208

View File

@@ -772,7 +772,42 @@ bool CustomRobot::processSportCmd(const std::string& cmd, const nlohmann::json&
} else if (cmd == "CrossStep") { } else if (cmd == "CrossStep") {
return controller_->CrossStep(message["param"]["flag"]); return controller_->CrossStep(message["param"]["flag"]);
} else if (cmd == "start_traj") { } else if (cmd == "start_traj") {
return startTraj(); TrajectoryParams params;
// 从消息中解析参数(如果有的话)
if (message.contains("param")) {
const auto& param = message["param"];
// 解析轨迹模式
if (param.contains("pattern")) {
int pattern_int = param["pattern"];
if (pattern_int >= 0 && pattern_int <= 4) {
params.pattern = static_cast<TrajectoryPattern>(pattern_int);
}
}
// 解析其他参数
if (param.contains("scale")) {
params.scale = param["scale"];
}
if (param.contains("speed")) {
params.speed = param["speed"];
}
if (param.contains("frequency")) {
params.frequency = param["frequency"];
}
if (param.contains("amplitude")) {
params.amplitude = param["amplitude"];
}
if (param.contains("points_count")) {
params.points_count = param["points_count"];
}
if (param.contains("time_step")) {
params.time_step = param["time_step"];
}
}
return startTraj(params);
} else if (cmd == "stop_traj") { } else if (cmd == "stop_traj") {
stopTraj(); stopTraj();
return true; return true;