fixed stop cause crash

This commit is contained in:
Joe Dong
2023-10-13 21:40:32 +08:00
parent ab77864452
commit 6d397e3e3a
3 changed files with 5 additions and 4 deletions
@@ -137,6 +137,9 @@ class OBCameraNode {
void clean(); void clean();
void startStreams(); void startStreams();
void startIMU();
private: private:
struct IMUData { struct IMUData {
@@ -161,8 +164,6 @@ class OBCameraNode {
void setupCameraCtrlServices(); void setupCameraCtrlServices();
void startIMU();
void stopStreams(); void stopStreams();
void stopIMU(); void stopIMU();
+1 -2
View File
@@ -92,6 +92,7 @@ void OBCameraNode::clean() {
} }
RCLCPP_WARN_STREAM(logger_, "stop streams"); RCLCPP_WARN_STREAM(logger_, "stop streams");
stopStreams(); stopStreams();
stopIMU();
RCLCPP_WARN_STREAM(logger_, "Destroy ~OBCameraNode DONE"); RCLCPP_WARN_STREAM(logger_, "Destroy ~OBCameraNode DONE");
if (rgb_buffer_) { if (rgb_buffer_) {
delete[] rgb_buffer_; delete[] rgb_buffer_;
@@ -259,7 +260,6 @@ void OBCameraNode::startStreams() {
pipeline_->enableFrameSync(); pipeline_->enableFrameSync();
} }
pipeline_started_.store(true); pipeline_started_.store(true);
startIMU();
} }
void OBCameraNode::startIMU() { void OBCameraNode::startIMU() {
@@ -316,7 +316,6 @@ void OBCameraNode::stopStreams() {
} }
try { try {
pipeline_->stop(); pipeline_->stop();
stopIMU();
} catch (const ob::Error &e) { } catch (const ob::Error &e) {
RCLCPP_ERROR_STREAM(logger_, "Failed to stop pipeline: " << e.getMessage()); RCLCPP_ERROR_STREAM(logger_, "Failed to stop pipeline: " << e.getMessage());
} }
@@ -310,6 +310,7 @@ void OBCameraNodeDriver::initializeDevice(const std::shared_ptr<ob::Device> &dev
} }
ob_camera_node_ = std::make_unique<OBCameraNode>(this, device_, parameters_); ob_camera_node_ = std::make_unique<OBCameraNode>(this, device_, parameters_);
ob_camera_node_->startStreams(); ob_camera_node_->startStreams();
ob_camera_node_->startIMU();
device_connected_ = true; device_connected_ = true;
device_info_ = device_->getDeviceInfo(); device_info_ = device_->getDeviceInfo();
CHECK_NOTNULL(device_info_.get()); CHECK_NOTNULL(device_info_.get());