From 06bf2fa2088aabce20ba4a30d4b99615335d2a3a Mon Sep 17 00:00:00 2001 From: Sucan126 <632190820@qq.com> Date: Thu, 9 Oct 2025 18:26:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=BD=A8=E8=BF=B9=E6=8E=A7=E5=88=B6):=20?= =?UTF-8?q?=E4=B8=BAstart=5Ftraj=E5=91=BD=E4=BB=A4=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=A7=A3=E6=9E=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 扩展start_traj命令以支持从消息中解析轨迹参数,包括模式、比例、速度等配置项。这使得轨迹控制更加灵活可配置。 --- src/custom_robot.cpp | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/custom_robot.cpp b/src/custom_robot.cpp index 9c92ba4..33ea928 100644 --- a/src/custom_robot.cpp +++ b/src/custom_robot.cpp @@ -772,7 +772,42 @@ bool CustomRobot::processSportCmd(const std::string& cmd, const nlohmann::json& } else if (cmd == "CrossStep") { return controller_->CrossStep(message["param"]["flag"]); } 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(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") { stopTraj(); return true;