// // Created by lgv on 2025/8/15. // #include "service/grpc_humanoid_robot_service.h" #include #include "robot/humanoid_robot/humanoid_robot.h" using namespace cmvr::service; using namespace cmvr::device; using namespace cmvr::api; using google::protobuf::util::TimeUtil; gRPCHumanoidRobotServiceImpl::gRPCHumanoidRobotServiceImpl():dmgr_(DeviceManager::getInstance()){} grpc::Status gRPCHumanoidRobotServiceImpl::torqueOff(grpc::ServerContext *context, const cmvr::api::CommandHeader_Request *request, cmvr::api::CommandHeader_Feedback *response) { grpc::Status ret = grpc::Status::OK; try { auto robot = dmgr_.getDevice(request->device_id()); robot->torqueOff(); response->set_success(true); response->set_error_message(""); }catch (const std::exception& e) { response->set_success(false); response->set_error_message(e.what()); ret = grpc::Status(grpc::StatusCode::INTERNAL, e.what()); } *response->mutable_timestamp() = TimeUtil::GetCurrentTime(); return ret; } grpc::Status gRPCHumanoidRobotServiceImpl::torqueOn(grpc::ServerContext *context, const cmvr::api::CommandHeader_Request *request, cmvr::api::CommandHeader_Feedback *response) { grpc::Status ret = grpc::Status::OK; try { auto robot = dmgr_.getDevice(request->device_id()); robot->torqueOn(); response->set_success(true); response->set_error_message(""); }catch (const std::exception& e) { response->set_success(false); response->set_error_message(e.what()); ret = grpc::Status(grpc::StatusCode::INTERNAL, e.what()); } *response->mutable_timestamp() = TimeUtil::GetCurrentTime(); return ret; } grpc::Status gRPCHumanoidRobotServiceImpl::moveJ(grpc::ServerContext *context, const cmvr::api::MoveJ_Request *request, cmvr::api::MoveJ_Response *response) { grpc::Status ret = grpc::Status::OK; try { auto robot = dmgr_.getDevice(request->header().device_id()); std::vector cmds{}; for (const auto& jc : request->cmds()) { cmds.emplace_back(jc.joint_name(),jc.rad(),jc.vel()); } robot->moveJ(cmds,request->vel(),request->acc()); response->mutable_header()->set_success(true); response->mutable_header()->set_error_message(""); }catch (const std::exception& e) { response->mutable_header()->set_success(false); response->mutable_header()->set_error_message(e.what()); ret = grpc::Status(grpc::StatusCode::INTERNAL, e.what()); } *response->mutable_header()->mutable_timestamp() = TimeUtil::GetCurrentTime(); return ret; }