Skip to content

Commit 071dd21

Browse files
authored
Noetic low bandwidth fixes (#648)
1 parent 816cfcc commit 071dd21

File tree

29 files changed

+120
-58
lines changed

29 files changed

+120
-58
lines changed

depthai-ros/CHANGELOG.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22
Changelog for package depthai-ros
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
2.10.5 (2025-01-09)
6+
-------------------
7+
* Fix low bandwidth issues
8+
* New stereo filters
9+
* Diagnostics update
10+
* Fix IR calculation
11+
12+
2.10.4 (2024-11-07)
13+
-------------------
14+
* Fix rectified topic names
15+
* Fix pointcloud launch
16+
* Add sensor parameters for max autoexposure, sharpness, luma and chroma denoise
17+
518
2.10.3 (2024-10-14)
619
-------------------
720
* Allow setting USB speed without specifying device information

depthai-ros/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required (VERSION 3.10.2) # CMake version in Ubuntu 18.04 LTS
22

3-
project(depthai-ros VERSION 2.10.3 LANGUAGES CXX C)
3+
project(depthai-ros VERSION 2.10.5 LANGUAGES CXX C)
44

55
set(CMAKE_CXX_STANDARD 14)
66

depthai-ros/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package format="3">
33
<name>depthai-ros</name>
4-
<version>2.10.3</version>
4+
<version>2.10.5</version>
55
<description>The depthai-ros package</description>
66

77
<maintainer email="[email protected]">Adam Serafin</maintainer>

depthai_bridge/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required (VERSION 3.10.2) # CMake version in Ubuntu 18.04 LTS
22
set (CMAKE_POSITION_INDEPENDENT_CODE ON)
33

4-
project(depthai_bridge VERSION 2.10.3 LANGUAGES CXX C)
4+
project(depthai_bridge VERSION 2.10.5 LANGUAGES CXX C)
55

66
set(CMAKE_CXX_STANDARD 14)
77
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -12,6 +12,9 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
1212
if(POLICY CMP0057)
1313
cmake_policy(SET CMP0057 NEW)
1414
endif()
15+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
16+
add_compile_options(-Wall -Wextra -Wpedantic -Wno-deprecated-declarations -Wno-maybe-uninitialized -Wno-reorder -Wno-unused-parameter)
17+
endif()
1518

1619
set(opencv_version 4)
1720
find_package(OpenCV ${opencv_version} QUIET COMPONENTS imgproc highgui calib3d)

depthai_bridge/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package format="3">
33
<name>depthai_bridge</name>
4-
<version>2.10.3</version>
4+
<version>2.10.5</version>
55
<description>The depthai_bridge package</description>
66

77
<maintainer email="[email protected]">Adam Serafin</maintainer>

depthai_bridge/src/TFPublisher.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ std::string TFPublisher::getURDF() {
246246
ROS_DEBUG("Xacro command: %s", cmd.c_str());
247247
std::array<char, 128> buffer;
248248
std::string result;
249-
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"), pclose);
249+
std::unique_ptr<FILE, int (*)(FILE*)> pipe(popen(cmd.c_str(), "r"), pclose);
250250
if(!pipe) {
251251
throw std::runtime_error("popen() failed!");
252252
}

depthai_descriptions/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.10.2)
2-
project(depthai_descriptions VERSION 2.10.3 LANGUAGES CXX C)
2+
project(depthai_descriptions VERSION 2.10.5 LANGUAGES CXX C)
33

44

55
find_package(catkin REQUIRED

depthai_descriptions/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package format="2">
33
<name>depthai_descriptions</name>
4-
<version>2.10.3</version>
4+
<version>2.10.5</version>
55
<description>The depthai_descriptions package</description>
66

77
<maintainer email="[email protected]">Adam Serafin</maintainer>

depthai_examples/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
cmake_minimum_required (VERSION 3.10.2) # CMake version in Ubuntu 18.04 LTS
2-
project(depthai_examples VERSION 2.10.3 LANGUAGES CXX C)
2+
project(depthai_examples VERSION 2.10.5 LANGUAGES CXX C)
33

44
set(CMAKE_CXX_STANDARD 14)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
7-
add_compile_options(-g)
87

98
## is used, also find other catkin packages
109
if(POLICY CMP0057)
1110
cmake_policy(SET CMP0057 NEW)
1211
endif()
12+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
13+
add_compile_options(-Wall -Wextra -Wpedantic -Wno-deprecated-declarations -Wno-maybe-uninitialized)
14+
endif()
1315

1416
set(_opencv_version 4)
1517
find_package(OpenCV 4 QUIET COMPONENTS imgproc highgui)

depthai_examples/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package format="3">
33
<name>depthai_examples</name>
4-
<version>2.10.3</version>
4+
<version>2.10.5</version>
55
<description>The depthai_examples package</description>
66

77
<maintainer email="[email protected]">Adam Serafin</maintainer>

depthai_examples/src/rgb_stereo_node.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ int main(int argc, char** argv) {
118118
auto stereoQueue = device.getOutputQueue("depth", 30, false);
119119
auto previewQueue = device.getOutputQueue("video", 30, false);
120120

121-
bool latched_cam_info = true;
122121
std::string stereo_uri = camera_param_uri + "/" + "right.yaml";
123122
std::string color_uri = camera_param_uri + "/" + "color.yaml";
124123

depthai_filters/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.10.2)
2-
project(depthai_filters VERSION 2.10.3 LANGUAGES CXX C)
2+
project(depthai_filters VERSION 2.10.5 LANGUAGES CXX C)
33

44
set(CMAKE_CXX_STANDARD 14)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)

depthai_filters/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package format="2">
33
<name>depthai_filters</name>
4-
<version>2.10.3</version>
4+
<version>2.10.5</version>
55
<description>The depthai_filters package</description>
66

77
<maintainer email="[email protected]">Adam Serafin</maintainer>

depthai_ros_driver/CMakeLists.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
cmake_minimum_required(VERSION 3.16.3)
2-
project(depthai_ros_driver VERSION 2.10.3)
2+
project(depthai_ros_driver VERSION 2.10.5)
33
if(NOT CMAKE_C_STANDARD)
44
set(CMAKE_C_STANDARD 99)
55
endif()
66
if(NOT CMAKE_CXX_STANDARD)
7-
set(CMAKE_CXX_STANDARD 11)
7+
set(CMAKE_CXX_STANDARD 14)
88
endif()
99

1010
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
11-
add_compile_options(-Wall -Wextra -Wpedantic)
11+
add_compile_options(-Wall -Wextra -Wpedantic -Wno-deprecated-declarations -Wno-maybe-uninitialized -Wno-reorder -Wno-unused-parameter)
1212
endif()
1313

1414
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
15-
add_compile_options(-g)
1615
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
1716
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
1817
set(BUILD_SHARED_LIBS ON)

depthai_ros_driver/include/depthai_ros_driver/camera.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ namespace depthai_ros_driver {
1919
using Trigger = std_srvs::Trigger;
2020
class Camera : public nodelet::Nodelet {
2121
public:
22+
/**
23+
* @brief Destructor of the class Camera. Stops the device and destroys the pipeline.
24+
*/
25+
~Camera();
2226
void onInit() override;
2327
/**
2428
* @brief Creates the pipeline and starts the device. Also sets up parameter callback and services.
@@ -92,4 +96,4 @@ class Camera : public nodelet::Nodelet {
9296
double laserDotBrightness;
9397
std::unique_ptr<dai::ros::TFPublisher> tfPub;
9498
};
95-
} // namespace depthai_ros_driver
99+
} // namespace depthai_ros_driver

depthai_ros_driver/include/depthai_ros_driver/dai_nodes/sensors/sensor_helpers.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ extern const std::unordered_map<std::string, dai::ColorCameraProperties::SensorR
5353
extern const std::unordered_map<std::string, dai::CameraControl::FrameSyncMode> fSyncModeMap;
5454
extern const std::unordered_map<std::string, dai::CameraImageOrientation> cameraImageOrientationMap;
5555
bool rsCompabilityMode(ros::NodeHandle node);
56+
std::string tfPrefix(ros::NodeHandle node);
5657
std::string getSocketName(ros::NodeHandle node, dai::CameraBoardSocket socket);
5758
std::string getNodeName(ros::NodeHandle node, NodeNameEnum name);
5859
void basicCameraPub(const std::string& /*name*/,

depthai_ros_driver/include/depthai_ros_driver/utils.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ struct ImgConverterConfig {
4747
bool getBaseDeviceTimestamp = false;
4848
bool updateROSBaseTimeOnRosMsg = false;
4949
bool lowBandwidth = false;
50+
bool isStereo = false;
5051
dai::RawImgFrame::Type encoding = dai::RawImgFrame::Type::BGR888i;
5152
bool addExposureOffset = false;
5253
dai::CameraExposureOffset expOffset = dai::CameraExposureOffset::START;

depthai_ros_driver/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
33
<package format="3">
44
<name>depthai_ros_driver</name>
5-
<version>2.10.3</version>
5+
<version>2.10.5</version>
66
<description>Depthai ROS Monolithic node.</description>
77
<maintainer email="[email protected]">Adam Serafin</maintainer>
88
<author>Adam Serafin</author>

depthai_ros_driver/src/camera.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "depthai_ros_driver/camera.hpp"
22

3+
#include <XLink/XLinkPublicDefines.h>
4+
35
#include <fstream>
46
#include <memory>
57

@@ -52,6 +54,10 @@ void Camera::onInit() {
5254
diagSub = pNH.subscribe("/diagnostics", 1, &Camera::diagCB, this);
5355
}
5456

57+
Camera::~Camera() {
58+
stop();
59+
}
60+
5561
void Camera::diagCB(const diagnostic_msgs::DiagnosticArray::ConstPtr& msg) {
5662
for(const auto& status : msg->status) {
5763
std::string nodeletName = pNH.getNamespace() + "_nodelet_manager";
@@ -241,7 +247,7 @@ void Camera::startDevice() {
241247
}
242248
} else if(!ip.empty() && info.name == ip) {
243249
ROS_INFO("Connecting to the camera using ip: %s", ip.c_str());
244-
if(info.state == X_LINK_UNBOOTED || info.state == X_LINK_BOOTLOADER) {
250+
if(info.state == X_LINK_UNBOOTED || info.state == X_LINK_BOOTLOADER || info.state == X_LINK_ANY_STATE) {
245251
device = std::make_shared<dai::Device>(info);
246252
camRunning = true;
247253
} else if(info.state == X_LINK_BOOTED) {

depthai_ros_driver/src/dai_nodes/base_node.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ std::string BaseNode::getSocketName(dai::CameraBoardSocket socket) {
3232
return sensor_helpers::getSocketName(getROSNode(), socket);
3333
}
3434
std::string BaseNode::getTFPrefix(const std::string& frameName) {
35-
auto prefix = std::string(getROSNode().getNamespace()) + "_" + frameName;
35+
auto prefix = sensor_helpers::tfPrefix(getROSNode()) + "_" + frameName;
3636
prefix.erase(0, 1);
3737
return prefix;
3838
}
@@ -48,22 +48,22 @@ dai::Node::Input BaseNode::getInput(int /*linkType*/) {
4848
}
4949
dai::Node::Input BaseNode::getInputByName(const std::string& /*name*/) {
5050
throw(std::runtime_error("getInputByName() not implemented"));
51-
};
51+
}
5252

5353
void BaseNode::closeQueues() {
5454
throw(std::runtime_error("closeQueues() not implemented"));
5555
}
5656
std::shared_ptr<dai::node::XLinkOut> BaseNode::setupXout(std::shared_ptr<dai::Pipeline> pipeline, const std::string& name) {
5757
return utils::setupXout(pipeline, name);
58-
};
58+
}
5959

6060
std::shared_ptr<sensor_helpers::ImagePublisher> BaseNode::setupOutput(std::shared_ptr<dai::Pipeline> pipeline,
6161
const std::string& qName,
6262
std::function<void(dai::Node::Input input)> nodeLink,
6363
bool isSynced,
6464
const utils::VideoEncoderConfig& encoderConfig) {
6565
return std::make_shared<sensor_helpers::ImagePublisher>(getROSNode(), pipeline, qName, nodeLink, isSynced, encoderConfig);
66-
};
66+
}
6767

6868
void BaseNode::setNames() {
6969
throw(std::runtime_error("setNames() not implemented"));
@@ -82,7 +82,7 @@ void BaseNode::link(dai::Node::Input /*in*/, int /*linkType = 0*/) {
8282
}
8383
std::vector<std::shared_ptr<sensor_helpers::ImagePublisher>> BaseNode::getPublishers() {
8484
return std::vector<std::shared_ptr<sensor_helpers::ImagePublisher>>();
85-
};
85+
}
8686

8787
void BaseNode::updateParams(parametersConfig& /*config*/) {
8888
return;

depthai_ros_driver/src/dai_nodes/sensors/img_pub.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ ImagePublisher::ImagePublisher(ros::NodeHandle node,
2121
std::function<void(dai::Node::Input in)> linkFunc,
2222
bool synced,
2323
const utils::VideoEncoderConfig& encoderConfig)
24-
: node(node), encConfig(encoderConfig), qName(qName), synced(synced), it(node) {
24+
: node(node), it(node), encConfig(encoderConfig), qName(qName), synced(synced) {
2525
if(!synced) {
2626
xout = utils::setupXout(pipeline, qName);
2727
}
@@ -89,7 +89,7 @@ void ImagePublisher::createImageConverter(std::shared_ptr<dai::Device> device) {
8989
if(convConfig.alphaScalingEnabled) {
9090
converter->setAlphaScaling(convConfig.alphaScaling);
9191
}
92-
if(convConfig.outputDisparity) {
92+
if(convConfig.isStereo && !convConfig.outputDisparity) {
9393
auto calHandler = device->readCalibration();
9494
double baseline = calHandler.getBaselineDistance(pubConfig.leftSocket, pubConfig.rightSocket, false);
9595
if(convConfig.reverseSocketOrder) {
@@ -105,8 +105,10 @@ std::shared_ptr<dai::node::VideoEncoder> ImagePublisher::createEncoder(std::shar
105105
auto enc = pipeline->create<dai::node::VideoEncoder>();
106106
enc->setQuality(encoderConfig.quality);
107107
enc->setProfile(encoderConfig.profile);
108-
enc->setBitrate(encoderConfig.bitrate);
109-
enc->setKeyframeFrequency(encoderConfig.frameFreq);
108+
if(encoderConfig.profile != dai::VideoEncoderProperties::Profile::MJPEG) {
109+
enc->setBitrate(encoderConfig.bitrate);
110+
enc->setKeyframeFrequency(encoderConfig.frameFreq);
111+
}
110112
return enc;
111113
}
112114
void ImagePublisher::createInfoManager(std::shared_ptr<dai::Device> device) {
@@ -122,10 +124,10 @@ void ImagePublisher::createInfoManager(std::shared_ptr<dai::Device> device) {
122124
} else {
123125
infoManager->loadCameraInfo(pubConfig.calibrationFile);
124126
}
125-
};
127+
}
126128
ImagePublisher::~ImagePublisher() {
127129
closeQueue();
128-
};
130+
}
129131

130132
void ImagePublisher::closeQueue() {
131133
if(dataQ) dataQ->close();

depthai_ros_driver/src/dai_nodes/sensors/sensor_helpers.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,15 @@ bool rsCompabilityMode(ros::NodeHandle node) {
9595
node.getParam("camera_i_rs_compat", compat);
9696
return compat;
9797
}
98+
std::string tfPrefix(ros::NodeHandle node) {
99+
bool pubTF = false;
100+
std::string tfPrefix = node.getNamespace();
101+
node.getParam("camera_i_publish_tf_from_calibration", pubTF);
102+
if(pubTF) {
103+
node.getParam("camera_i_tf_base_frame", tfPrefix);
104+
}
105+
return tfPrefix;
106+
}
98107
std::string getNodeName(ros::NodeHandle node, NodeNameEnum name) {
99108
if(rsCompabilityMode(node)) {
100109
return rsNodeNameMap.at(name);

depthai_ros_driver/src/dai_nodes/sensors/stereo.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@ void Stereo::setNames() {
7575

7676
void Stereo::setXinXout(std::shared_ptr<dai::Pipeline> pipeline) {
7777
bool outputDisparity = ph->getParam<bool>("i_output_disparity");
78+
bool lowBandwidth = ph->getParam<bool>("i_low_bandwidth");
7879
std::function<void(dai::Node::Input)> stereoLinkChoice;
79-
if(outputDisparity) {
80+
if(outputDisparity || lowBandwidth) {
8081
stereoLinkChoice = [&](auto input) { stereoCamNode->disparity.link(input); };
8182
} else {
8283
stereoLinkChoice = [&](auto input) { stereoCamNode->depth.link(input); };
@@ -87,7 +88,7 @@ void Stereo::setXinXout(std::shared_ptr<dai::Pipeline> pipeline) {
8788
encConf.bitrate = ph->getParam<int>("i_low_bandwidth_bitrate");
8889
encConf.frameFreq = ph->getParam<int>("i_low_bandwidth_frame_freq");
8990
encConf.quality = ph->getParam<int>("i_low_bandwidth_quality");
90-
encConf.enabled = ph->getParam<bool>("i_low_bandwidth");
91+
encConf.enabled = lowBandwidth;
9192

9293
stereoPub = setupOutput(pipeline, stereoQName, stereoLinkChoice, ph->getParam<bool>("i_synced"), encConf);
9394
}
@@ -188,6 +189,7 @@ void Stereo::setupStereoQueue(std::shared_ptr<dai::Device> device) {
188189
convConfig.alphaScaling = ph->getParam<double>("i_alpha_scaling");
189190
}
190191
convConfig.outputDisparity = ph->getParam<bool>("i_output_disparity");
192+
convConfig.isStereo = true;
191193

192194
utils::ImgPublisherConfig pubConf;
193195
pubConf.daiNodeName = getName();

depthai_ros_driver/src/dai_nodes/sys_logger.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,22 @@ void SysLogger::produceDiagnostics(diagnostic_updater::DiagnosticStatusWrapper&
7272
auto logData = loggerQ->get<dai::SystemInformation>(std::chrono::seconds(5), timeout);
7373
if(!timeout) {
7474
stat.summary(diagnostic_msgs::DiagnosticStatus::OK, "System Information");
75-
stat.add("System Information", sysInfoToString(*logData));
75+
auto sysInfo = *logData;
76+
stat.add("Leon CSS CPU Usage", sysInfo.leonCssCpuUsage.average * 100);
77+
stat.add("Leon MSS CPU Usage", sysInfo.leonMssCpuUsage.average * 100);
78+
stat.add("Ddr Memory Usage", sysInfo.ddrMemoryUsage.used / (1024.0f * 1024.0f));
79+
stat.add("Ddr Memory Total", sysInfo.ddrMemoryUsage.total / (1024.0f * 1024.0f));
80+
stat.add("Cmx Memory Usage", sysInfo.cmxMemoryUsage.used / (1024.0f * 1024.0f));
81+
stat.add("Cmx Memory Total", sysInfo.cmxMemoryUsage.total);
82+
stat.add("Leon CSS Memory Usage", sysInfo.leonCssMemoryUsage.used / (1024.0f * 1024.0f));
83+
stat.add("Leon CSS Memory Total", sysInfo.leonCssMemoryUsage.total / (1024.0f * 1024.0f));
84+
stat.add("Leon MSS Memory Usage", sysInfo.leonMssMemoryUsage.used / (1024.0f * 1024.0f));
85+
stat.add("Leon MSS Memory Total", sysInfo.leonMssMemoryUsage.total / (1024.0f * 1024.0f));
86+
stat.add("Average Chip Temperature", sysInfo.chipTemperature.average);
87+
stat.add("Leon CSS Chip Temperature", sysInfo.chipTemperature.css);
88+
stat.add("Leon MSS Chip Temperature", sysInfo.chipTemperature.mss);
89+
stat.add("UPA Chip Temperature", sysInfo.chipTemperature.upa);
90+
stat.add("DSS Chip Temperature", sysInfo.chipTemperature.dss);
7691
} else {
7792
stat.summary(diagnostic_msgs::DiagnosticStatus::ERROR, "No Data");
7893
}

0 commit comments

Comments
 (0)