Skip to content

Commit a666d67

Browse files
authored
Merge pull request #735 from stereolabs/fix_zed2i_support
Fix ZED2i support
2 parents 44f9d93 + b83c672 commit a666d67

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

latest_changes.md

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

4+
ZED2i support fix (2021-06-17)
5+
------------------------------
6+
- Fix sensors topics pubblication for ZED2i. The support for the new camera was not complete
7+
48
OpenNI mode fix (2021-06-15)
59
----------------------------
610
- Fix sensor_msgs type for depth image in OpenNI mode, from `sensor_msgs::image_encodings::mono16` to `sensor_msgs::image_encodings::TYPE_16UC1`. Depth image in OpenNI mode is now compatible with the nodelet `depthimage_to_laserscan`

zed_nodelets/src/zed_nodelet/src/zed_wrapper_nodelet.cpp

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,22 @@ void ZEDWrapperNodelet::onInit()
323323
"the value of the parameter 'camera_model' to 'zed2'");
324324
}
325325

326+
#if ZED_SDK_MAJOR_VERSION == 3 && ZED_SDK_MINOR_VERSION < 1
327+
mSlCamImuTransf = mZed.getCameraInformation().camera_imu_transform;
328+
#else
329+
mSlCamImuTransf = mZed.getCameraInformation().sensors_configuration.camera_imu_transform;
330+
#endif
331+
332+
NODELET_INFO("Camera-IMU Transform: \n %s", mSlCamImuTransf.getInfos().c_str());
333+
}
334+
else if (mZedRealCamModel == sl::MODEL::ZED2i)
335+
{
336+
if (mZedUserCamModel != mZedRealCamModel)
337+
{
338+
NODELET_WARN("Camera model does not match user parameter. Please modify "
339+
"the value of the parameter 'camera_model' to 'zed2i'");
340+
}
341+
326342
#if ZED_SDK_MAJOR_VERSION == 3 && ZED_SDK_MINOR_VERSION < 1
327343
mSlCamImuTransf = mZed.getCameraInformation().camera_imu_transform;
328344
#else
@@ -526,7 +542,7 @@ void ZEDWrapperNodelet::onInit()
526542
mPubImuMag = mNhNs.advertise<sensor_msgs::MagneticField>(imu_mag_topic, 1 /*MAG_FREQ*/);
527543
NODELET_INFO_STREAM("Advertised on topic " << mPubImuMag.getTopic());
528544

529-
if (mZedRealCamModel == sl::MODEL::ZED2)
545+
if (mZedRealCamModel == sl::MODEL::ZED2 || mZedRealCamModel == sl::MODEL::ZED2i)
530546
{
531547
// IMU temperature sensor
532548
mPubImuTemp = mNhNs.advertise<sensor_msgs::Temperature>(imu_temp_topic, 1 /*static_cast<int>(mSensPubRate)*/);
@@ -1478,9 +1494,9 @@ void ZEDWrapperNodelet::stop_3d_mapping()
14781494

14791495
bool ZEDWrapperNodelet::start_obj_detect()
14801496
{
1481-
if (mZedRealCamModel != sl::MODEL::ZED2)
1497+
if (mZedRealCamModel != sl::MODEL::ZED2 && mZedRealCamModel != sl::MODEL::ZED2i)
14821498
{
1483-
NODELET_ERROR_STREAM("Object detection not started. OD is available only using a ZED2 camera model");
1499+
NODELET_ERROR_STREAM("Object detection not started. OD is available only using a ZED2/ZED2i camera model");
14841500
return false;
14851501
}
14861502

@@ -2963,7 +2979,7 @@ void ZEDWrapperNodelet::publishSensData(ros::Time t)
29632979
uint32_t tempLeftSubNumber = 0;
29642980
uint32_t tempRightSubNumber = 0;
29652981

2966-
if (mZedRealCamModel == sl::MODEL::ZED2)
2982+
if (mZedRealCamModel == sl::MODEL::ZED2 || mZedRealCamModel == sl::MODEL::ZED2i)
29672983
{
29682984
imu_TempSubNumber = mPubImuTemp.getNumSubscribers();
29692985
imu_MagSubNumber = mPubImuMag.getNumSubscribers();
@@ -3055,7 +3071,7 @@ void ZEDWrapperNodelet::publishSensData(ros::Time t)
30553071
}
30563072
// <---- Publish odometry tf only if enabled
30573073

3058-
if (mZedRealCamModel == sl::MODEL::ZED2)
3074+
if (mZedRealCamModel == sl::MODEL::ZED2 || mZedRealCamModel == sl::MODEL::ZED2i)
30593075
{
30603076
// Update temperatures for Diagnostic
30613077
sens_data.temperature.get(sl::SensorsData::TemperatureData::SENSOR_LOCATION::ONBOARD_LEFT, mTempLeft);
@@ -4240,7 +4256,7 @@ void ZEDWrapperNodelet::callback_updateDiagnostic(diagnostic_updater::Diagnostic
42404256
stat.add("IMU", "Topics not subscribed");
42414257
}
42424258

4243-
if (mZedRealCamModel == sl::MODEL::ZED2)
4259+
if (mZedRealCamModel == sl::MODEL::ZED2 || mZedRealCamModel == sl::MODEL::ZED2i)
42444260
{
42454261
stat.addf("Left CMOS Temp.", "%.1f °C", mTempLeft);
42464262
stat.addf("Right CMOS Temp.", "%.1f °C", mTempRight);
@@ -4538,12 +4554,12 @@ bool ZEDWrapperNodelet::on_start_object_detection(zed_interfaces::start_object_d
45384554
{
45394555
NODELET_INFO("Called 'start_object_detection' service");
45404556

4541-
if (mZedRealCamModel != sl::MODEL::ZED2)
4557+
if (mZedRealCamModel != sl::MODEL::ZED2 && mZedRealCamModel != sl::MODEL::ZED2i)
45424558
{
45434559
mObjDetEnabled = false;
45444560
mObjDetRunning = false;
45454561

4546-
NODELET_ERROR_STREAM("Object detection not started. OD is available only using a ZED2 camera model");
4562+
NODELET_ERROR_STREAM("Object detection not started. OD is available only using a ZED2/ZED2i camera model");
45474563
res.done = false;
45484564
return res.done;
45494565
}

0 commit comments

Comments
 (0)