From 59944d6c0d26e19c37f7ecdf7d43d80efaabc976 Mon Sep 17 00:00:00 2001 From: linbo <1034003879@qq.com> Date: Wed, 17 Jun 2026 14:15:49 +0800 Subject: [PATCH] update --- cmvr-es/data_center/src/motors_info.cpp | 10 ++++++++-- .../robot/humanoid_robot/src/humanoid_robot.cpp | 2 +- cmvr-es/main.cpp | 3 ++- cmvr-es/service/grpc/include/server_runner.h | 7 ++++--- cmvr-es/service/grpc/src/server_runner.cpp | 16 ++++++++++------ 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/cmvr-es/data_center/src/motors_info.cpp b/cmvr-es/data_center/src/motors_info.cpp index 0a5af0b2..7cfa7855 100644 --- a/cmvr-es/data_center/src/motors_info.cpp +++ b/cmvr-es/data_center/src/motors_info.cpp @@ -96,7 +96,10 @@ void MotorsInfo::init(const XmlNode &cfg) { }; // 创建 MotorManager - motor_manager_ = std::make_shared(); + if (!motor_manager_) + { + motor_manager_ = std::make_shared(); + } std::vector > tasks; @@ -234,7 +237,10 @@ void MotorsInfo::init(const cmvr::config::HumanRobotConfig& config) { {"HEAD", head_enabled_, head_can_client_, head_can_sender_, head_can_receiver_, head_message_manager_, head_motors_cfg} }; - motor_manager_ = std::make_shared(); + if (!motor_manager_) + { + motor_manager_ = std::make_shared(); + } std::vector> tasks; for (auto &limb : limbs) { diff --git a/cmvr-es/devices/robot/humanoid_robot/src/humanoid_robot.cpp b/cmvr-es/devices/robot/humanoid_robot/src/humanoid_robot.cpp index 601125cc..9cc52666 100644 --- a/cmvr-es/devices/robot/humanoid_robot/src/humanoid_robot.cpp +++ b/cmvr-es/devices/robot/humanoid_robot/src/humanoid_robot.cpp @@ -140,7 +140,7 @@ void HumanoidRobot::init() { std::vector(7, 1.0)); - ik_solver_ = std::make_shared("/home/lgv/cmvr/cmvr-es/model/xiaoyan_description/dual_arm.urdf", + ik_solver_ = std::make_shared("/home/cmvr/Projects/cmvr-es/model/xiaoyan_description/dual_arm.urdf", "PELVIS_S", "R_WRIST_R_S", "R_FINGER_TIP_FIXED"); diff --git a/cmvr-es/main.cpp b/cmvr-es/main.cpp index b659f177..24f189a5 100644 --- a/cmvr-es/main.cpp +++ b/cmvr-es/main.cpp @@ -29,7 +29,8 @@ int main(int argc, char* argv[]) { } ServerRunner runner; - runner.start(); + const XmlNode config(config_path); + runner.start(config); runner.join(); google::ShutdownGoogleLogging(); return 0; diff --git a/cmvr-es/service/grpc/include/server_runner.h b/cmvr-es/service/grpc/include/server_runner.h index e148c811..7ad0706e 100644 --- a/cmvr-es/service/grpc/include/server_runner.h +++ b/cmvr-es/service/grpc/include/server_runner.h @@ -18,7 +18,7 @@ namespace cmvr::service { class ServerRunner { public: ServerRunner(); - ServerRunner(const cmvr::config::ServerConfig& config); + explicit ServerRunner(XmlNode cfg); ~ServerRunner(); ServerRunner(const ServerRunner&) = delete; @@ -26,7 +26,7 @@ namespace cmvr::service { ServerRunner(ServerRunner&&) = delete; ServerRunner& operator=(ServerRunner&&) = delete; - void start(); + void start(XmlNode cfg); void stop(); void join(); @@ -41,7 +41,8 @@ namespace cmvr::service { std::condition_variable cv_; std::thread worker_; - cmvr::config::ServerConfig cfg_; + XmlNode cfg_; + cmvr::config::ServerConfig servercfg_; std::unique_ptr server_; std::string address_; diff --git a/cmvr-es/service/grpc/src/server_runner.cpp b/cmvr-es/service/grpc/src/server_runner.cpp index ec04091a..ba3d0ce1 100644 --- a/cmvr-es/service/grpc/src/server_runner.cpp +++ b/cmvr-es/service/grpc/src/server_runner.cpp @@ -25,21 +25,23 @@ using namespace cmvr::service; ServerRunner::ServerRunner() = default; -ServerRunner::ServerRunner(const cmvr::config::ServerConfig& config):cfg_(config) -{ - // start(); +ServerRunner::ServerRunner(XmlNode cfg) { + start(std::move(cfg)); } + ServerRunner::~ServerRunner() { stop(); join(); } -void ServerRunner::start() { +void ServerRunner::start(XmlNode cfg) { std::unique_lock lk(mtx_); if (worker_.joinable()) { throw std::runtime_error("ServerRunner already started"); } + + cfg_ = std::move(cfg); stop_requested_ = false; started_ = false; start_failed_ = false; @@ -101,9 +103,11 @@ void ServerRunner::threadMain() { std::call_once(reflection_once, []() { grpc::reflection::InitProtoReflectionServerBuilderPlugin(); }); - DeviceManager::getInstance(); - std::string port = cfg_.grpc_server().port(); + auto dmgr_cfg = cfg_.getChild("DeviceManager"); + DeviceManager::getInstance(dmgr_cfg); + + std::string port = servercfg_.grpc_server().port(); std::string local_address = "0.0.0.0:" + port; auto camera_service = std::make_unique();