feat:完善了自动标定车间的环境
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <grpcpp/grpcpp.h>
|
||||
// 包含刚才手动翻译出的头文件
|
||||
#include "agv_calib_control.grpc.pb.h"
|
||||
|
||||
using namespace agv::calibration::control;
|
||||
|
||||
// 继承并实现定义在 .proto 里的服务契约
|
||||
class AgvCalibServiceImpl final : public AgvCalibControlService::Service {
|
||||
|
||||
// 覆盖接管控制权的方法
|
||||
grpc::Status SetControlMode(grpc::ServerContext* context,
|
||||
const ModeRequest* request,
|
||||
StandardResponse* reply) override {
|
||||
|
||||
if (request->target_mode() == ModeRequest::OPEN_LOOP_MODE) {
|
||||
std::cout << "\n[Windows底层] 收到 Linux 指令: 进入开环提线木偶模式" << std::endl;
|
||||
// TODO: 在这里调用 Windows 原有的底盘驱动 DLL 或 CAN 接口,切断避障算法
|
||||
|
||||
reply->set_success(true);
|
||||
reply->set_message("Windows 已交出控制权,避障与运动学逆解已关闭");
|
||||
}
|
||||
return grpc::Status::OK;
|
||||
}
|
||||
// TODO: 接着 override 实现 ExecuteOpenLoopCmd 等其他函数...
|
||||
};
|
||||
|
||||
void RunServer() {
|
||||
// 🚨 关键排雷:必须绑定 0.0.0.0,千万不要写 localhost 或 127.0.0.1,否则 ROS2 连不上!
|
||||
std::string server_address("0.0.0.0:50051");
|
||||
AgvCalibServiceImpl service;
|
||||
|
||||
grpc::ServerBuilder builder;
|
||||
builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
|
||||
builder.RegisterService(&service);
|
||||
|
||||
std::unique_ptr<grpc::Server> server(builder.BuildAndStart());
|
||||
std::cout << "🚀 Windows 车端 gRPC 代理已启动,监听外部请求: " << server_address << std::endl;
|
||||
server->Wait();
|
||||
}
|
||||
|
||||
int main() {
|
||||
RunServer();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user