From 73ce74ab04fc364095916173d23770d511e467cd Mon Sep 17 00:00:00 2001 From: Sucan126 <632190820@qq.com> Date: Thu, 9 Oct 2025 19:32:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(custom=5Frobot):=20=E4=BF=AE=E5=A4=8DContin?= =?UTF-8?q?uousMove=E5=91=BD=E4=BB=A4=E5=8F=82=E6=95=B0=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构ContinuousMove命令处理逻辑,合并Start/Stop功能 添加对'on'参数的检查,根据其值决定启动或停止连续移动 修复参数缺失时的错误处理逻辑 --- src/custom_robot.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/custom_robot.cpp b/src/custom_robot.cpp index a688632..7f28608 100644 --- a/src/custom_robot.cpp +++ b/src/custom_robot.cpp @@ -704,22 +704,26 @@ bool CustomRobot::processSportCmd(const std::string& cmd, const nlohmann::json& return controller_->WalkUpright(message["param"]["flag"]); } else if (cmd == "CrossStep") { return controller_->CrossStep(message["param"]["flag"]); - } else if (cmd == "StartContinuousMove") { + } else if (cmd == "ContinuousMove") { if (!message.contains("param")) { - LOG_ERROR("StartContinuousMove cmd missing 'param'"); + LOG_ERROR("ContinuousMove cmd missing 'param'"); return false; } auto param = message["param"]; - if (!param.contains("vx") || !param.contains("vy") || !param.contains("vyaw")) { - LOG_ERROR("StartContinuousMove missing vx, vy, or vyaw parameters"); - return false; + if(param.contains("on")){ + if(param["on"]){ + if (!param.contains("vx") || !param.contains("vy") || !param.contains("vyaw")) { + LOG_ERROR("ContinuousMove missing vx, vy, or vyaw parameters"); + return false; + } + float vx = param["vx"]; + float vy = param["vy"]; + float vyaw = param["vyaw"]; + return startContinuousMove(vx, vy, vyaw); + }else if(!param["on"]){ + return stopContinuousMove(); + } } - float vx = param["vx"]; - float vy = param["vy"]; - float vyaw = param["vyaw"]; - return startContinuousMove(vx, vy, vyaw); - } else if (cmd == "StopContinuousMove") { - return stopContinuousMove(); } else { LOG_ERROR("Unknown Sport command: " + cmd);