last_msg_time_ 变量在多线程环境下没有同步保护
This commit is contained in:
parent
a5aef93432
commit
c928d5f225
@ -131,7 +131,13 @@ class RemoteCtrlNode : public rclcpp::Node
|
||||
auto now = std::chrono::steady_clock::now();
|
||||
|
||||
// 超时阈值:建议 800ms ~ 1500ms
|
||||
if (now - last_msg_time_ > 800ms)
|
||||
std::chrono::steady_clock::time_point last;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(last_msg_time_mtx_);
|
||||
last = last_msg_time_;
|
||||
}
|
||||
|
||||
if (now - last > 800ms)
|
||||
{
|
||||
// 只在第一次进入“失活”时打印日志
|
||||
if (remote_alive_.exchange(false))
|
||||
@ -286,7 +292,10 @@ class RemoteCtrlNode : public rclcpp::Node
|
||||
LOG_INFO("[REMOTE] ✓ control recovered");
|
||||
}
|
||||
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(last_msg_time_mtx_);
|
||||
last_msg_time_ = std::chrono::steady_clock::now();
|
||||
}
|
||||
|
||||
LOG_DEBUG("[REMOTE] Processing command: %s", cmd.c_str());
|
||||
|
||||
@ -399,6 +408,7 @@ class RemoteCtrlNode : public rclcpp::Node
|
||||
std::atomic<bool> remote_authorized_{false}; // 是否允许远控(锁存)
|
||||
std::atomic<bool> remote_alive_{false}; // 是否活跃(心跳)
|
||||
std::chrono::steady_clock::time_point last_msg_time_;
|
||||
std::mutex last_msg_time_mtx_; // 保护 last_msg_time_
|
||||
|
||||
float current_feedback_angle_{0.0f};
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user