Skip to content

Commit 844026b

Browse files
authored
Merge pull request #413 from stereolabs/add_disable_depth_service
Add disable depth service
2 parents 27e6f77 + fc13a0e commit 844026b

File tree

10 files changed

+450
-222
lines changed

10 files changed

+450
-222
lines changed

CHANGELOG.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
LATEST CHANGES
22
==============
33

4+
2026-02-04
5+
----------
6+
- Add `enable_depth` service to disable depth processing at runtime
7+
- When using GEN_3 with ZED SDK v5.2 or newer, Positional Tracking continues to provide localization feedback even if depth is disabled at runtime or when the node starts by setting the `depth.depth_mode` parameter to `NONE`.
8+
- New diagnostic information regarding Positional Tracking status: "Mode", "Odometry Status", "Spatial Memory Status", "Tracking Fusion Status".
9+
410
2026-01-30
511
----------
612
- Add the `zed_debug` package for debugging ZED Components by loading them in a single C++ process.

zed_components/src/tools/include/sl_types.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@
6666
#include <zed_msgs/srv/set_pose.hpp>
6767
#include <zed_msgs/srv/set_roi.hpp>
6868
#include <zed_msgs/srv/start_svo_rec.hpp>
69-
// #include <zed_msgs/srv/save_area_memory.hpp> TODO(Walter): Uncomment when
70-
// available in `zed_msgs` package from APT
69+
#include <zed_msgs/srv/save_area_memory.hpp>
7170

7271
#ifdef FOUND_ISAAC_ROS_NITROS
7372
#include "isaac_ros_managed_nitros/managed_nitros_publisher.hpp"
@@ -154,12 +153,12 @@ typedef rclcpp::Subscription<geometry_msgs::msg::PointStamped>::SharedPtr clicke
154153
typedef rclcpp::Subscription<sensor_msgs::msg::NavSatFix>::SharedPtr gnssFixSub;
155154
typedef rclcpp::Subscription<rosgraph_msgs::msg::Clock>::SharedPtr clockSub;
156155

156+
typedef rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr enableDepthPtr;
157+
157158
typedef rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr resetOdomSrvPtr;
158159
typedef rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr resetPosTrkSrvPtr;
159160
typedef rclcpp::Service<zed_msgs::srv::SetPose>::SharedPtr setPoseSrvPtr;
160-
// typedef rclcpp::Service<zed_msgs::srv::SaveAreaMemory>::SharedPtr saveAreaMemorySrvPtr; TODO(Walter): Uncomment when available in `zed_msgs` package from APT
161-
typedef rclcpp::Service<zed_msgs::srv::SetROI>::SharedPtr saveAreaMemorySrvPtr;
162-
161+
typedef rclcpp::Service<zed_msgs::srv::SaveAreaMemory>::SharedPtr saveAreaMemorySrvPtr;
163162
typedef rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr enableObjDetPtr;
164163
typedef rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr enableBodyTrkPtr;
165164
typedef rclcpp::Service<std_srvs::srv::SetBool>::SharedPtr enableMappingPtr;

zed_components/src/zed_camera/include/zed_camera_component.hpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ class ZedCamera : public rclcpp::Node
133133
void callback_updateDiagnostic(
134134
diagnostic_updater::DiagnosticStatusWrapper & stat);
135135

136+
void callback_enableDepth(
137+
const std::shared_ptr<rmw_request_id_t> request_header,
138+
const std::shared_ptr<std_srvs::srv::SetBool_Request> req,
139+
std::shared_ptr<std_srvs::srv::SetBool_Response> res);
136140
void callback_resetOdometry(
137141
const std::shared_ptr<rmw_request_id_t> request_header,
138142
const std::shared_ptr<std_srvs::srv::Trigger_Request> req,
@@ -145,14 +149,10 @@ class ZedCamera : public rclcpp::Node
145149
const std::shared_ptr<rmw_request_id_t> request_header,
146150
const std::shared_ptr<zed_msgs::srv::SetPose_Request> req,
147151
std::shared_ptr<zed_msgs::srv::SetPose_Response> res);
148-
/*void callback_saveAreaMemory(
149-
const std::shared_ptr<rmw_request_id_t> request_header,
150-
const std::shared_ptr<zed_msgs::srv::SaveAreaMemory_Request> req,
151-
std::shared_ptr<zed_msgs::srv::SaveAreaMemory_Response> res);*/// TODO(Walter): Uncomment when available in `zed_msgs` package from APT
152152
void callback_saveAreaMemory(
153153
const std::shared_ptr<rmw_request_id_t> request_header,
154-
const std::shared_ptr<zed_msgs::srv::SetROI_Request> req,
155-
std::shared_ptr<zed_msgs::srv::SetROI_Response> res);
154+
const std::shared_ptr<zed_msgs::srv::SaveAreaMemory_Request> req,
155+
std::shared_ptr<zed_msgs::srv::SaveAreaMemory_Response> res);
156156
void callback_enableObjDet(
157157
const std::shared_ptr<rmw_request_id_t> request_header,
158158
const std::shared_ptr<std_srvs::srv::SetBool_Request> req,
@@ -527,7 +527,7 @@ class ZedCamera : public rclcpp::Node
527527
double mCamMaxDepth = 15.0;
528528
sl::DEPTH_MODE mDepthMode = sl::DEPTH_MODE::NEURAL;
529529
PcRes mPcResolution = PcRes::COMPACT;
530-
bool mDepthDisabled = false; // Indicates if depth calculation is not required (DEPTH_MODE::NONE)
530+
std::atomic<bool> mDepthDisabled = false; // Indicates if depth calculation is not required (DEPTH_MODE::NONE)
531531
int mDepthStabilization = 0;
532532

533533
int mCamTimeoutSec = 5;
@@ -987,6 +987,8 @@ class ZedCamera : public rclcpp::Node
987987
int mSvoFrameId = 0;
988988
int mSvoFrameCount = 0;
989989
bool mPosTrackingStarted = false;
990+
std::atomic_bool mPoseLocked = false;
991+
std::atomic<uint64_t> mPoseLockCount{0};
990992
bool mVdPublishing = false; // Indicates if video and depth data are
991993
// subscribed and then published
992994
bool mPcPublishing =
@@ -1026,6 +1028,7 @@ class ZedCamera : public rclcpp::Node
10261028

10271029
// ----> Positional Tracking
10281030
sl::Pose mLastZedPose;
1031+
sl::Pose mLastZedDeltaOdom;
10291032
sl::Transform mInitialPoseSl;
10301033
std::vector<geometry_msgs::msg::PoseStamped> mOdomPath;
10311034
std::vector<geometry_msgs::msg::PoseStamped> mPosePath;
@@ -1117,6 +1120,7 @@ class ZedCamera : public rclcpp::Node
11171120
// <---- SVO Recording parameters
11181121

11191122
// ----> Services
1123+
enableDepthPtr mEnableDepthSrv;
11201124
resetOdomSrvPtr mResetOdomSrv;
11211125
resetPosTrkSrvPtr mResetPosTrkSrv;
11221126
setPoseSrvPtr mSetPoseSrv;
@@ -1138,6 +1142,7 @@ class ZedCamera : public rclcpp::Node
11381142
// <---- Services
11391143

11401144
// ----> Services names
1145+
const std::string mSrvEnableDepthName = "enable_depth";
11411146
const std::string mSrvResetOdomName = "reset_odometry";
11421147
const std::string mSrvResetPoseName = "reset_pos_tracking";
11431148
const std::string mSrvSetPoseName = "set_pose";

zed_components/src/zed_camera/src/zed_camera_component_bodytrk.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,8 +259,7 @@ bool ZedCamera::startBodyTracking()
259259
if (mDepthDisabled) {
260260
RCLCPP_WARN(
261261
get_logger(),
262-
"Cannot start Body Tracking if "
263-
"`depth.depth_mode` is set to `0` [NONE]");
262+
"Cannot start Body Tracking if Depth processing is disabled");
264263
return false;
265264
}
266265

0 commit comments

Comments
 (0)