-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmc-veo.orogen
129 lines (97 loc) · 4.36 KB
/
mc-veo.orogen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
name "mc_veo"
# Optionally declare the version number
# version "0.1"
# If new data types need to be defined, they have to be put in a separate C++
# header, and this header will be loaded here
import_types_from "mc-veoTypes.hpp"
# Finally, it is pretty common that headers are directly loaded from an external
# library. In this case, the library must be first used (the name is the
# library's pkg-config name) and then the header can be used. Following Rock
# conventions, a common use-case would be:
using_library "mc-veo" # Event and Frame based Visual Odometry
using_library "yaml-cpp" # yaml
using_library "frame_helper" # Image Frames
# If this project uses data types that are defined in other oroGen projects,
# these projects should be imported there as well.
import_types_from "std"
import_types_from "base"
# Declare a new task context (i.e., a component)
#
# The corresponding C++ class can be edited in tasks/Task.hpp and
# tasks/Task.cpp, and will be put in the mc-veo namespace.
task_context "Task" do
# This is the default from now on, and should not be removed. Rock will
# transition to a setup where all components use a configuration step.
needs_configuration
#*************************
#****Task Properties *****
#*************************
property "config_file", "std::string"
doc "Yaml file for MC-VEO configuration"
property "calib_file", "std::string"
doc "Camera calibration file"
property "frame_interrupt", "bool"
doc "Interrupt frames by user input (reconfigure). FALSE by default"
#*****************************
#******* Input Ports *********
#*****************************
input_port('events', 'base::samples::EventArray').
doc 'array of events'
input_port('frame', ro_ptr('base::samples::frame::Frame')).
doc 'RGB Image frame'
input_port('imu', 'base::samples::IMUSensors').
doc 'Inertial measurements'
input_port('depthmap', ro_ptr('base::samples::DistanceImage')).
#input_port('depthmap', ro_ptr('base::samples::frame::Frame')).
doc 'Depth map (optional for debug)'
input_port('groundtruth', 'base::samples::RigidBodyState').
doc 'Ground truth camera pose w.r.t world (optional for debug)'
#************************
# aggregator parameters
#************************
stream_aligner do
align_port('events', 0)
align_port('frame', 0)
align_port('imu', 0)
align_port('groundtruth', 0)
max_latency(0.05)
end
#******************************
#******* Output Ports *********
#******************************
####### Frames #########
output_port('event_frame', ro_ptr('base::samples::frame::Frame')).
doc 'Events image frame'
output_port('residuals_frame', ro_ptr('base::samples::frame::Frame')).
doc 'Residuals image frame'
output_port('of_frame', ro_ptr('base::samples::frame::Frame')).
doc 'Optical flow frame'
output_port('model_frame', ro_ptr('base::samples::frame::Frame')).
doc 'Bightness Model Image'
output_port('inv_depth_frame', ro_ptr('base::samples::frame::Frame')).
doc 'Inverse depth frame'
output_port('keyframes_frame', ro_ptr('base::samples::frame::Frame')).
doc 'Mosaic of all Keyframes with the inverse depth of active points'
####### Poses #########
output_port('pose_w_kfs', 'mc_veo::VectorKFs').
doc 'Sliding window of keyframe poses w.r.t world (T_w_kf[i])'
output_port('pose_w_ef', '/base/samples/RigidBodyState').
doc 'Camera egomotion eventframe w.r.t world (T_w_ef)'
####### Maps #########
output_port('local_map', '/base/samples/Pointcloud').
doc 'Local map in the current key frame'
output_port('global_map', '/base/samples/Pointcloud').
doc 'Global map in the world frame'
####### Maps #########
output_port('model_frame_vector', 'mc_veo::ModelFrameVector').
doc 'Model in vector form (with timestamp)'
output_port('event_frame_vector', 'mc_veo::EventFrameVector').
doc 'Event frame in vector form (with timestamp)'
####### Infos #########
output_port('tracker_info', 'mc_veo::TrackerInfo').
doc 'Tracker information'
output_port('bundles_info', 'mc_veo::PBAInfo').
doc 'Bundle Adjustement information'
runtime_states :INITIALIZING, :OPTIMIZING, :LOGGING
port_driven
end