增加机器人奇异点检测
This commit is contained in:
@@ -175,6 +175,39 @@ json KinematicsWebAPI::handleRobotCommand(const std::string &req_cmd, const json
|
||||
res_data = {{"error", "Failed to calculate forward kinematics for all joints: " + std::string(e.what())}};
|
||||
}
|
||||
}
|
||||
else if (req_cmd == "Cmd_Kinematics_check_singularity")
|
||||
{
|
||||
try
|
||||
{
|
||||
log("Handling Cmd_Kinematics_check_singularity command");
|
||||
|
||||
std::string joints_str = req_param.value("joints_str", req_param.value("q_init_str", "0,0,0,0,0,0"));
|
||||
std::string robot_uuid = req_param.value("robot_uuid", "default");
|
||||
double singular_threshold = req_param.value("singular_threshold", 1e-4);
|
||||
double warning_threshold = req_param.value("warning_threshold", 1e-2);
|
||||
double condition_threshold = req_param.value("condition_threshold", 1e6);
|
||||
double condition_warning_threshold = req_param.value("condition_warning_threshold", 1e4);
|
||||
|
||||
auto robot = RobotManager::getRobot(robot_uuid);
|
||||
if (!robot || !robot->isInitialized())
|
||||
{
|
||||
res_data = {{"error", "Robot not found or not initialized"}};
|
||||
}
|
||||
else
|
||||
{
|
||||
res_data = robot->checkSingularity(
|
||||
joints_str,
|
||||
singular_threshold,
|
||||
warning_threshold,
|
||||
condition_threshold,
|
||||
condition_warning_threshold);
|
||||
}
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
res_data = {{"error", "Failed to check singularity: " + std::string(e.what())}};
|
||||
}
|
||||
}
|
||||
else if (req_cmd == "Cmd_InitRobot")
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user