Skip to content

Commit f15ea59

Browse files
authored
Merge pull request #727 from stereolabs/r5.1.0
r5.1.0
2 parents e9ab262 + efe1922 commit f15ea59

File tree

170 files changed

+9702
-4759
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

170 files changed

+9702
-4759
lines changed

CMakeLists.txt

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,28 +27,25 @@ add_subdirectory("recording/export/svo/${TYPE}")
2727
add_subdirectory("recording/playback/single camera/${TYPE}")
2828
add_subdirectory("recording/recording/single camera/${TYPE}")
2929
if(${BUILD_CPP})
30-
add_subdirectory("recording/export/sensors/${TYPE}")
31-
add_subdirectory("recording/playback/multi camera/${TYPE}")
32-
add_subdirectory("recording/recording/multi camera/${TYPE}")
33-
add_subdirectory("spatial mapping/multi camera/${TYPE}")
34-
add_subdirectory("plane detection/floor plane/${TYPE}")
35-
add_subdirectory("global localization/live/${TYPE}")
36-
add_subdirectory("global localization/playback/${TYPE}")
37-
add_subdirectory("global localization/recording/${TYPE}")
38-
add_subdirectory("body tracking/multi-camera/${TYPE}")
39-
add_subdirectory("body tracking/export/fbx export/${TYPE}")
40-
add_subdirectory("depth sensing/image refocus/${TYPE}")
41-
add_subdirectory("depth sensing/automatic region of interest/${TYPE}")
42-
add_subdirectory("depth sensing/manual region of interest/${TYPE}")
43-
add_subdirectory("depth sensing/multi camera/${TYPE}")
44-
add_subdirectory("camera streaming/receiver/${TYPE}")
45-
add_subdirectory("camera streaming/single_sender/${TYPE}")
46-
add_subdirectory("camera streaming/multi_sender/${TYPE}")
47-
if(WIN32)
48-
message(STATUS "Skipping ZED One samples")
49-
else(WIN32)
30+
add_subdirectory("recording/export/sensors/${TYPE}")
31+
add_subdirectory("recording/playback/multi camera/${TYPE}")
32+
add_subdirectory("recording/recording/multi camera/${TYPE}")
33+
add_subdirectory("spatial mapping/multi camera/${TYPE}")
34+
add_subdirectory("plane detection/floor plane/${TYPE}")
35+
add_subdirectory("global localization/live/${TYPE}")
36+
add_subdirectory("global localization/playback/${TYPE}")
37+
add_subdirectory("global localization/recording/${TYPE}")
38+
add_subdirectory("body tracking/multi-camera/${TYPE}")
39+
add_subdirectory("body tracking/export/fbx export/${TYPE}")
40+
add_subdirectory("depth sensing/image refocus/${TYPE}")
41+
add_subdirectory("depth sensing/automatic region of interest/${TYPE}")
42+
add_subdirectory("depth sensing/manual region of interest/${TYPE}")
43+
add_subdirectory("depth sensing/multi camera/${TYPE}")
44+
add_subdirectory("camera streaming/receiver/${TYPE}")
45+
add_subdirectory("camera streaming/single_sender/${TYPE}")
46+
add_subdirectory("camera streaming/multi_sender/${TYPE}")
5047
add_subdirectory("zed one/${TYPE}")
51-
endif(WIN32)
48+
add_subdirectory("virtual stereo/${TYPE}")
5249
endif()
5350

5451
add_subdirectory("tutorials")

body tracking/body tracking/cpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.5)
22
PROJECT(ZED_Body_Tracking_Viewer)
33

4-
set(CMAKE_CXX_STANDARD 14)
4+
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66

77
option(LINK_SHARED_ZED "Link with the ZED SDK shared executable" ON)

body tracking/export/JSON export/cpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
22
PROJECT(ZED_Bodies_JSON_Export)
33

4-
set(CMAKE_CXX_STANDARD 14)
4+
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66
SET(CMAKE_BUILD_TYPE "Release")
77

body tracking/export/fbx export/cpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
22

33
PROJECT(ZED_Body_export_FBX)
44

5-
set(CMAKE_CXX_STANDARD 14)
5+
set(CMAKE_CXX_STANDARD 17)
66
set(CMAKE_CXX_STANDARD_REQUIRED ON)
77
SET(CMAKE_BUILD_TYPE "Release")
88

body tracking/multi-camera/cpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
22
PROJECT(ZED_BodyFusion)
33

4-
set(CMAKE_CXX_STANDARD 14)
4+
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66
SET(CMAKE_BUILD_TYPE "Release")
77

body tracking/multi-camera/cpp/include/GLViewer.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,6 @@ class GLViewer {
273273
static void keyReleasedCallback(unsigned char c, int x, int y);
274274
static void idle();
275275

276-
void addSKeleton(sl::BodyData &, Simple3DObject &, sl::float3 clr_id, bool raw);
277-
278276
sl::float3 getColor(int, bool);
279277

280278
bool available;

body tracking/multi-camera/cpp/src/GLViewer.cpp

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,11 @@ void GLViewer::init(int argc, char **argv) {
141141
shader.MVP_Mat = glGetUniformLocation(shader.it.getProgramId(), "u_mvpMatrix");
142142

143143
// Create the camera
144-
camera_ = CameraGL(sl::Translation(0, 2, 10), sl::Translation(0, 0, -1));
144+
camera_ = CameraGL(sl::Translation(0, 3, 3), sl::Translation(0, 0, -1));
145+
sl::float3 ea(-30,0,0);
146+
sl::Rotation rot;
147+
rot.setEulerAngles(ea, false);
148+
camera_.rotate(rot);
145149

146150
// Create the skeletons objects
147151
skeletons.setDrawingType(GL_LINES);
@@ -312,8 +316,13 @@ void GLViewer::render() {
312316

313317
void GLViewer::setCameraPose(int id, sl::Transform pose) {
314318
const std::lock_guard<std::mutex> lock(mtx);
315-
getColor(id, false);
319+
auto clr = getColor(id, false);
316320
poses[id] = pose;
321+
322+
if(viewers.find(id) == viewers.end()){
323+
sl::Mat view;
324+
viewers[id].initialize(view, clr);
325+
}
317326
}
318327

319328
inline bool renderBody(const sl::BodyData& i, const bool isTrackingON) {
@@ -324,9 +333,7 @@ inline bool renderBody(const sl::BodyData& i, const bool isTrackingON) {
324333
}
325334

326335
template<typename T>
327-
void createSKPrimitive(sl::BodyData& body, const std::vector<std::pair<T, T>>& map, Simple3DObject& skp, sl::float3 clr_id, bool raw) {
328-
const float cylinder_thickness = raw ? 0.01f : 0.025f;
329-
336+
void createSKPrimitive(sl::BodyData& body, const std::vector<std::pair<T, T>>& map, Simple3DObject& skp, sl::float3 clr_id) {
330337
for (auto& limb : map) {
331338
sl::float3 kp_1 = body.keypoint[getIdx(limb.first)];
332339
sl::float3 kp_2 = body.keypoint[getIdx(limb.second)];
@@ -335,16 +342,16 @@ void createSKPrimitive(sl::BodyData& body, const std::vector<std::pair<T, T>>& m
335342
}
336343
}
337344

338-
void GLViewer::addSKeleton(sl::BodyData& obj, Simple3DObject& simpleObj, sl::float3 clr_id, bool raw) {
345+
void addSKeleton(sl::BodyData& obj, Simple3DObject& simpleObj, sl::float3 clr_id) {
339346
switch (obj.keypoint.size()) {
340347
case 18:
341-
createSKPrimitive(obj, sl::BODY_18_BONES, simpleObj, clr_id, raw);
348+
createSKPrimitive(obj, sl::BODY_18_BONES, simpleObj, clr_id);
342349
break;
343350
case 34:
344-
createSKPrimitive(obj, sl::BODY_34_BONES, simpleObj, clr_id, raw);
351+
createSKPrimitive(obj, sl::BODY_34_BONES, simpleObj, clr_id);
345352
break;
346353
case 38:
347-
createSKPrimitive(obj, sl::BODY_38_BONES, simpleObj, clr_id, raw);
354+
createSKPrimitive(obj, sl::BODY_38_BONES, simpleObj, clr_id);
348355
break;
349356
}
350357
}
@@ -357,7 +364,7 @@ void GLViewer::updateBodies(sl::Bodies &bodies, std::map<sl::CameraIdentifier, s
357364
for(auto &it:bodies.body_list) {
358365
auto clr = getColor(it.id, true);
359366
if (renderBody(it, bodies.is_tracked))
360-
addSKeleton(it, skeletons, clr, false);
367+
addSKeleton(it, skeletons, clr);
361368
}
362369
}
363370

@@ -382,7 +389,7 @@ void GLViewer::updateBodies(sl::Bodies &bodies, std::map<sl::CameraIdentifier, s
382389

383390
for (auto& sk : it.second.body_list) {
384391
if(renderBody(sk, it.second.is_tracked))
385-
addSKeleton(sk, sk_r, clr, true);
392+
addSKeleton(sk, sk_r, clr);
386393
}
387394
}
388395

@@ -463,11 +470,15 @@ void GLViewer::draw() {
463470
glUniformMatrix4fv(shader.MVP_Mat, 1, GL_TRUE, vpMatrix.m);
464471

465472
floor_grid.draw();
473+
466474
skeletons.draw();
467475

468-
if (show_raw)
476+
if (show_raw){
477+
glLineWidth(1.f);
469478
for (auto& it : skeletons_raw)
470479
it.second.draw();
480+
glLineWidth(2.f);
481+
}
471482

472483
for (auto& it : viewers) {
473484
sl::Transform pose_ = vpMatrix * poses[it.first];
@@ -938,6 +949,9 @@ bool CameraViewer::initialize(sl::Mat &im, sl::float3 clr) {
938949
faces.push_back(sl::uint3(0,2,3));
939950

940951
ref = im;
952+
if(!ref.isInit())
953+
return 1;
954+
941955
shader.set(VERTEX_SHADER_TEXTURE, FRAGMENT_SHADER_TEXTURE);
942956
shMVPMatrixLocTex_ = glGetUniformLocation(shader.getProgramId(), "u_mvpMatrix");
943957

body tracking/multi-camera/cpp/src/main.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ int main(int argc, char **argv) {
4242
constexpr sl::COORDINATE_SYSTEM COORDINATE_SYSTEM = sl::COORDINATE_SYSTEM::RIGHT_HANDED_Y_UP;
4343
constexpr sl::UNIT UNIT = sl::UNIT::METER;
4444

45-
// Read json file containing the configuration of your multicamera setup.
45+
// Read json file containing the configuration of your multicamera setup.
4646
auto configurations = sl::readFusionConfigurationFile(argv[1], COORDINATE_SYSTEM, UNIT);
4747

4848
if (configurations.empty()) {
@@ -102,7 +102,6 @@ int main(int argc, char **argv) {
102102
sl::InitFusionParameters init_params;
103103
init_params.coordinate_units = UNIT;
104104
init_params.coordinate_system = COORDINATE_SYSTEM;
105-
init_params.verbose = true;
106105

107106
sl::Resolution low_res(512,360);
108107
init_params.maximum_working_resolution = low_res;
@@ -141,6 +140,7 @@ int main(int argc, char **argv) {
141140
body_tracking_runtime_parameters.skeleton_minimum_allowed_keypoints = 7;
142141
// we can also want to retrieve skeleton seen by multiple camera, in this case at least half of them
143142
body_tracking_runtime_parameters.skeleton_minimum_allowed_camera = cameras.size() / 2.;
143+
body_tracking_runtime_parameters.skeleton_smoothing = 0.1f;
144144

145145

146146
// creation of a 3D viewer
@@ -167,21 +167,22 @@ int main(int argc, char **argv) {
167167

168168
// run the fusion process (which gather data from all camera, sync them and process them)
169169
if (fusion.process() == sl::FUSION_ERROR_CODE::SUCCESS) {
170+
170171
// Retrieve fused body
171172
fusion.retrieveBodies(fused_bodies, body_tracking_runtime_parameters);
172-
173173
// for debug, you can retrieve the data sent by each camera
174174
for (auto& id : cameras) {
175175
fusion.retrieveBodies(camera_raw_data[id], body_tracking_runtime_parameters, id);
176-
sl::Pose pose;
177-
if(fusion.getPosition(pose, sl::REFERENCE_FRAME::WORLD, id, sl::POSITION_TYPE::RAW) == sl::POSITIONAL_TRACKING_STATE::OK)
178-
viewer.setCameraPose(id.sn, pose.pose_data);
179176

180177
auto state_view = fusion.retrieveImage(views[id], id, low_res);
181178
auto state_pc = fusion.retrieveMeasure(pointClouds[id], id, sl::MEASURE::XYZBGRA, low_res);
182179

183180
if (state_view == sl::FUSION_ERROR_CODE::SUCCESS && state_pc == sl::FUSION_ERROR_CODE::SUCCESS)
184181
viewer.updateCamera(id.sn, views[id], pointClouds[id]);
182+
183+
sl::Pose pose;
184+
if(fusion.getPosition(pose, sl::REFERENCE_FRAME::WORLD, id, sl::POSITION_TYPE::RAW) == sl::POSITIONAL_TRACKING_STATE::OK)
185+
viewer.setCameraPose(id.sn, pose.pose_data);
185186
}
186187

187188
// get metrics about the fusion process for monitoring purposes

camera control/cpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
22
PROJECT(ZED_Camera_Control)
33

4-
set(CMAKE_CXX_STANDARD 14)
4+
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66
SET(CMAKE_BUILD_TYPE "Release")
77

camera control/cpp/src/main.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ int main(int argc, char **argv) {
106106

107107
// Open the camera
108108
auto returned_state = zed.open(init_parameters);
109-
if (returned_state != ERROR_CODE::SUCCESS) {
109+
if (returned_state > ERROR_CODE::SUCCESS) {
110110
print("Camera Open", returned_state, "Exit program.");
111111
return EXIT_FAILURE;
112112
}
@@ -199,15 +199,15 @@ void updateCameraSettings(char key, sl::Camera &zed, sl::InitParameters& init_pa
199199
std::cout << " Current Value : " << current_value << std::endl;
200200
break;
201201

202-
// Increase camera settings value ('+' key)
202+
// Increase camera settings value ('+' key)
203203
case '+':
204204
zed.getCameraSettings(camera_settings_, current_value);
205205
zed.setCameraSettings(camera_settings_, current_value + step_camera_setting);
206206
zed.getCameraSettings(camera_settings_, current_value);
207207
print(str_camera_settings + ": " + std::to_string(current_value));
208208
break;
209209

210-
// Decrease camera settings value ('-' key)
210+
// Decrease camera settings value ('-' key)
211211
case '-':
212212
zed.getCameraSettings(camera_settings_, current_value);
213213
current_value = current_value > 0 ? current_value - step_camera_setting : 0; // take care of the 'default' value parameter: VIDEO_SETTINGS_VALUE_AUTO
@@ -216,16 +216,16 @@ void updateCameraSettings(char key, sl::Camera &zed, sl::InitParameters& init_pa
216216
print(str_camera_settings + ": " + std::to_string(current_value));
217217
break;
218218

219-
//switch LED On :
219+
//switch LED On :
220220
case 'l':
221221
led_on = !led_on;
222222
zed.setCameraSettings(sl::VIDEO_SETTINGS::LED_STATUS, led_on);
223223
break;
224224

225-
// Reset to default parameters
225+
// Reset to default parameters
226226
case 'r':
227227
print("Reset all settings to default\n");
228-
for (int s = (int) VIDEO_SETTINGS::BRIGHTNESS; s <= (int) VIDEO_SETTINGS::WHITEBALANCE_TEMPERATURE; s++)
228+
for (int s = (int) VIDEO_SETTINGS::BRIGHTNESS; s < (int) VIDEO_SETTINGS::LAST; s++)
229229
zed.setCameraSettings(static_cast<VIDEO_SETTINGS> (s), sl::VIDEO_SETTINGS_VALUE_AUTO);
230230
break;
231231

@@ -237,7 +237,7 @@ void updateCameraSettings(char key, sl::Camera &zed, sl::InitParameters& init_pa
237237
break;
238238

239239
case 'f':
240-
print("reset AEC_AGC_ROI to full res");
240+
print("reset AEC_AGC_ROI to full image");
241241
zed.setCameraSettings(VIDEO_SETTINGS::AEC_AGC_ROI, selection_rect, sl::SIDE::BOTH, true);
242242
break;
243243

0 commit comments

Comments
 (0)