-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathodometry.orogen
171 lines (120 loc) · 4.74 KB
/
odometry.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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
name "odometry"
version '0.1'
import_types_from 'base'
using_library "odometry"
import_types_from 'odometry/Configuration.hpp'
import_types_from 'odometry/ContactState.hpp'
import_types_from 'odometry/BodyState.hpp'
typekit.export_types '/odometry/Configuration', '/odometry/BodyContactState'
task_context 'Generic' do
abstract
needs_configuration
##########################
# configuration parameters
##########################
property('odometry_config', '/odometry/Configuration').
doc 'configuration struct for the asguard odometry class'
property('body_frame_output_name', '/std/string', '').
doc "This property is deprecated and no longer used. Use the body_frame property generated by the transformer."
property('odometry_frame_output_name', '/std/string', 'odometry').
doc "the frame name for the odometry frame"
property('start_pose', '/base/samples/RigidBodyState').
doc "starting position for odometry"
##########################
# i/o ports
##########################
output_port('odometry_samples', '/base/samples/RigidBodyState').
doc 'timestamped absolute odometry given in an arbitrary fixed frame'
output_port('odometry_delta_samples', '/base/samples/RigidBodyState').
doc 'timestamped odometry sample given as relative transformation since the last orientation sample. The transformation is from the current body frame to the previous frame.'
end
task_context 'LatOdom' do
doc "Advanced skid-steering odometry for any number of omnidirectional skid steering wheels able to drive lateral"
subclasses "Generic"
##########################
# configuration parameters
##########################
property('wheelRadiusAvg', 'double').
doc 'wheel radius avarage'
property('trackWidth', 'double').
doc 'track width'
property('wheelBase', 'double').
doc 'wheel base'
property('leftWheelNames', 'std/vector<std/string>').
doc 'left wheel jointnames'
property('rightWheelNames', 'std/vector<std/string>').
doc 'right wheel jointnames'
property('leftSteeringNames', 'std/vector<std/string>').
doc 'left steering jointnames'
property('rightSteeringNames', 'std/vector<std/string>').
doc 'right steering jointnames'
##########################
# i/o ports
##########################
input_port('actuator_samples', '/base/samples/Joints').
needs_reliable_connection.
doc 'timestamped motor state samples providing also steering odometry information.'
##########################
# aggregator parameters
##########################
transformer() do
transformation("body", "imu_world")
align_port("actuator_samples", 0.001)
max_latency(0.1)
end
port_driven 'dynamic_transformations'
end
task_context 'Skid' do
doc "normal skid-steering odometry for any number of skid steering wheels"
subclasses "Generic"
##########################
# configuration parameters
##########################
property('wheelRadiusAvg', 'double').
doc 'wheel radius avarage'
property('trackWidth', 'double').
doc 'track width'
property('wheelBase', 'double').
doc 'wheel base'
property('leftWheelNames', 'std/vector<std/string>').
doc 'wheel base'
property('rightWheelNames', 'std/vector<std/string>').
doc 'wheel base'
property('usePosition', 'bool').
doc 'If this value is set to true, the position field of the actuator samples will be used to calculate the translation'
##########################
# i/o ports
##########################
input_port('actuator_samples', '/base/samples/Joints').
needs_reliable_connection.
doc 'timestamped motor state samples providing odometry information.'
##########################
# aggregator parameters
##########################
transformer() do
transformation("body", "imu_world")
align_port("actuator_samples", 0.001)
max_latency(0.1)
end
port_driven 'dynamic_transformations'
end
task_context 'ContactPointTask' do
doc "contact-point odometry"
subclasses "Generic"
##########################
# i/o ports
##########################
input_port('contact_samples', '/odometry/BodyContactState').
needs_reliable_connection.
doc 'samples providing information on the contact of the body with the environment'
##########################
# aggregator parameters
##########################
transformer() do
transform("body", "imu_enu")
align_port("contact_samples", 0.01)
max_latency(0.1)
transform_priority(10)
end
port_driven 'dynamic_transformations'
end