fix(custom_robot): 修复ContinuousMove命令参数检查逻辑

重构ContinuousMove命令处理逻辑,合并Start/Stop功能
添加对'on'参数的检查,根据其值决定启动或停止连续移动
修复参数缺失时的错误处理逻辑
This commit is contained in:
2025-10-09 19:32:44 +08:00
parent 827ccdb438
commit 73ce74ab04

View File

@@ -704,23 +704,27 @@ bool CustomRobot::processSportCmd(const std::string& cmd, const nlohmann::json&
return controller_->WalkUpright(message["param"]["flag"]); return controller_->WalkUpright(message["param"]["flag"]);
} else if (cmd == "CrossStep") { } else if (cmd == "CrossStep") {
return controller_->CrossStep(message["param"]["flag"]); return controller_->CrossStep(message["param"]["flag"]);
} else if (cmd == "StartContinuousMove") { } else if (cmd == "ContinuousMove") {
if (!message.contains("param")) { if (!message.contains("param")) {
LOG_ERROR("StartContinuousMove cmd missing 'param'"); LOG_ERROR("ContinuousMove cmd missing 'param'");
return false; return false;
} }
auto param = message["param"]; auto param = message["param"];
if(param.contains("on")){
if(param["on"]){
if (!param.contains("vx") || !param.contains("vy") || !param.contains("vyaw")) { if (!param.contains("vx") || !param.contains("vy") || !param.contains("vyaw")) {
LOG_ERROR("StartContinuousMove missing vx, vy, or vyaw parameters"); LOG_ERROR("ContinuousMove missing vx, vy, or vyaw parameters");
return false; return false;
} }
float vx = param["vx"]; float vx = param["vx"];
float vy = param["vy"]; float vy = param["vy"];
float vyaw = param["vyaw"]; float vyaw = param["vyaw"];
return startContinuousMove(vx, vy, vyaw); return startContinuousMove(vx, vy, vyaw);
} else if (cmd == "StopContinuousMove") { }else if(!param["on"]){
return stopContinuousMove(); return stopContinuousMove();
} }
}
}
else { else {
LOG_ERROR("Unknown Sport command: " + cmd); LOG_ERROR("Unknown Sport command: " + cmd);
return false; return false;