Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
wolf
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mobile_robotics
wolf_projects
wolf_lib
wolf
Commits
1530eb11
Commit
1530eb11
authored
3 years ago
by
Joan Solà Ortega
Browse files
Options
Downloads
Patches
Plain Diff
[skip ci] Document PrcTrkr::processCapture
parent
627f138e
No related branches found
No related tags found
1 merge request
!451
After cmake and const refactor
Pipeline
#10992
skipped
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/processor/processor_tracker.cpp
+26
-17
26 additions, 17 deletions
src/processor/processor_tracker.cpp
with
26 additions
and
17 deletions
src/processor/processor_tracker.cpp
+
26
−
17
View file @
1530eb11
...
...
@@ -112,15 +112,15 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
incoming_ptr_
->
link
(
keyframe
);
// Process info
// TrackerFeature: We only process new features in Last, here last = nullptr, so we do not have anything to do.
// TrackerLandmark: If we have been given a map, all landmarks in the map are known. Process them.
processKnown
();
// We only process new features in Last, here last = nullptr, so we do not have anything to do.
// Issue KF callback with new KF
getProblem
()
->
keyFrameCallback
(
keyframe
,
shared_from_this
());
resetDerived
();
// Update pointers
resetDerived
();
origin_ptr_
=
incoming_ptr_
;
last_ptr_
=
incoming_ptr_
;
incoming_ptr_
=
nullptr
;
...
...
@@ -130,9 +130,17 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
case
SECOND_TIME_WITH_KEYFRAME
:
{
// No-break case only for debug. Next case will be executed too.
FrameBasePtr
keyframe_from_callback
=
buffer_frame_
.
select
(
incoming
_ptr_
->
getTimeStamp
(),
FrameBasePtr
keyframe_from_callback
=
buffer_frame_
.
select
(
last
_ptr_
->
getTimeStamp
(),
params_tracker_
->
time_tolerance
);
// This received KF is discarded since it is most likely the same KF we createed in FIRST_TIME, ...
// ... only that in FIRST_TIME we checked for incominig, and now we checked for last.
// Such KF however should have been removed from the buffer of keyframes with the call to buffer_frame_.removeUpTo()
// The debug line is here to check if this is really the same KF
// or it is rather a new KF created by some other processor,
// which happens to be within tolerance of timestamps.
// In this case we discard it anyway because we already have a KF in last
// and we can't link a capture to two KFs.
WOLF_DEBUG
(
"PT "
,
getName
(),
" SECOND_TIME_WITH_KEYFRAME: KF"
,
keyframe_from_callback
->
id
()
,
" callback unpacked with ts= "
,
keyframe_from_callback
->
getTimeStamp
()
);
}
// Fall through
...
...
@@ -140,14 +148,16 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
{
WOLF_DEBUG
(
"PT "
,
getName
(),
" SECOND_TIME_WITHOUT_KEYFRAME"
);
// Make a NON KEY Frame to hold incoming capture
FrameBasePtr
keyframe
=
std
::
make_shared
<
FrameBase
>
(
incoming_ptr_
->
getTimeStamp
(),
getProblem
()
->
getFrameStructure
(),
getProblem
()
->
getState
());
incoming_ptr_
->
link
(
keyframe
);
// We have a last_ Capture with no features, so we do not process known features, and we do not vote for KF.
// Process info
// TrackerLandmark: If we have been given a map, all landmarks in the map are known. Process them.
processKnown
();
// Both Trackers: We have a last_ Capture with not enough features, so populate it.
processNew
(
params_tracker_
->
max_new_features
);
// Establish factors
...
...
@@ -177,13 +187,13 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
last_ptr_
->
move
(
keyframe_from_callback
);
last_old_frame
->
remove
();
// Create new frame for incoming
// Create new
NON KEY
frame for incoming
FrameBasePtr
frame
=
std
::
make_shared
<
FrameBase
>
(
incoming_ptr_
->
getTimeStamp
(),
getProblem
()
->
getFrameStructure
(),
getProblem
()
->
getState
());
incoming_ptr_
->
link
(
frame
);
// Detect new Features, initialize Landmarks,
create Factors,
...
// Detect new Features, initialize Landmarks, ...
processNew
(
params_tracker_
->
max_new_features
);
// Establish factors
...
...
@@ -209,8 +219,6 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
// process
processNew
(
params_tracker_
->
max_new_features
);
//TODO abort KF if known_features_last_.size() < params_tracker_->min_features_for_keyframe
// We create a KF
// set KF on last
last_ptr_
->
getFrame
()
->
setState
(
getProblem
()
->
getState
(
last_ptr_
->
getTimeStamp
()));
...
...
@@ -222,14 +230,15 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
// Call the new keyframe callback in order to let the other processors to establish their factors
getProblem
()
->
keyFrameCallback
(
last_ptr_
->
getFrame
(),
shared_from_this
());
// Update pointers
resetDerived
();
// make
F
; append incoming to new
F
// make
NON KEY frame
; append incoming to new
frame
FrameBasePtr
frame
=
std
::
make_shared
<
FrameBase
>
(
incoming_ptr_
->
getTimeStamp
(),
getProblem
()
->
getFrameStructure
(),
getProblem
()
->
getState
(
incoming_ptr_
->
getTimeStamp
()));
incoming_ptr_
->
link
(
frame
);
// Update pointers
resetDerived
();
origin_ptr_
=
last_ptr_
;
last_ptr_
=
incoming_ptr_
;
last_frame_ptr_
=
frame
;
...
...
@@ -243,7 +252,7 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
// Advance this
advanceDerived
();
// Replace last frame for a new
on
e in incoming
// Replace last frame for a new
NON KEY fram
e in incoming
FrameBasePtr
frame
=
std
::
make_shared
<
FrameBase
>
(
incoming_ptr_
->
getTimeStamp
(),
getProblem
()
->
getFrameStructure
(),
getProblem
()
->
getState
(
incoming_ptr_
->
getTimeStamp
()));
...
...
@@ -278,7 +287,7 @@ void ProcessorTracker::computeProcessingStep()
// Then combine with the existence (or not) of a keyframe callback pack
switch
(
step
)
{
case
FIRST_TIME
:
case
FIRST_TIME
:
// We check for KF in incoming
if
(
buffer_frame_
.
select
(
incoming_ptr_
->
getTimeStamp
(),
params_tracker_
->
time_tolerance
))
processing_step_
=
FIRST_TIME_WITH_KEYFRAME
;
...
...
@@ -286,7 +295,7 @@ void ProcessorTracker::computeProcessingStep()
processing_step_
=
FIRST_TIME_WITHOUT_KEYFRAME
;
break
;
case
SECOND_TIME
:
case
SECOND_TIME
:
// We check for KF in last
if
(
buffer_frame_
.
select
(
last_ptr_
->
getTimeStamp
(),
params_tracker_
->
time_tolerance
))
processing_step_
=
SECOND_TIME_WITH_KEYFRAME
;
...
...
@@ -294,7 +303,7 @@ void ProcessorTracker::computeProcessingStep()
processing_step_
=
SECOND_TIME_WITHOUT_KEYFRAME
;
break
;
case
RUNNING
:
case
RUNNING
:
// We check for KF in last
default
:
if
(
buffer_frame_
.
select
(
last_ptr_
->
getTimeStamp
(),
params_tracker_
->
time_tolerance
))
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment