Skip to content

Commit bf30648

Browse files
Release 0.19.1 (#799)
* updated registration timeout * updated gl duration * updated brisk params * added vl runtime to msg * fixed loc nodelet read params bug * Release 0.19.1 * don't publish haz cam in sim by default * added scaling when changing threshold ratios for teblid * added rounding when casting interest point dynamic thresholds * updated teblid default thres * added toomany/toofew ratios as params * adding adjusting num similar images * fixed loc header * remove else for adjust num similar * visual landmarks adding field bmr rule * updated loc min success rate config * set valid to true * localizer parameter in test changed * fixing release spaces and # * fixed recording toomany and toofew ratios during mapping * avoid adjusting thresholds if success history size is 0 --------- Co-authored-by: Ryan Soussan <[email protected]>
1 parent 8234583 commit bf30648

File tree

18 files changed

+393
-121
lines changed

18 files changed

+393
-121
lines changed

RELEASE.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Releases
22

3+
## Release 0.19.1
4+
5+
* Updated Map Matching with TEBLID and CLAHE
6+
37
## Release 0.19.0
48

59
* New split localizer
@@ -8,23 +12,23 @@
812

913
* Astrobee now using OpenCV 4! Please see install updates in INSTALL.md
1014

11-
# Release 0.17.3
15+
## Release 0.17.3
1216

1317
* Comms bridge added rate feature
1418
* Bug fixes
1519
* User feedback improvements
1620

17-
# Release 0.17.2
21+
## Release 0.17.2
1822

1923
* Adding Generic comms bridge
2024
* Multiple bug fixes
2125
* Ubuntu 20 only supported now
2226

23-
# Release 0.17.1
27+
## Release 0.17.1
2428

2529
* Multiple bug fixes
2630

27-
# Release 0.17.0
31+
## Release 0.17.0
2832

2933
* Full compatibility and debians built for Ubuntu 20
3034
* Deleted all simulink autocode for ctl and fam

astrobee.doxyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ PROJECT_NAME = "NASA Astrobee Robot Software"
3939
# control system is used.
4040

4141

42-
PROJECT_NUMBER = 0.19.0
42+
PROJECT_NUMBER = 0.19.1
4343

4444
# Using the PROJECT_BRIEF tag one can provide an optional one line description
4545
# for a project that appears at the top of each page and should give viewer a

astrobee/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
cmake_minimum_required(VERSION 3.0)
1919
project(astrobee)
2020

21-
set(ASTROBEE_VERSION 0.19.0)
21+
set(ASTROBEE_VERSION 0.19.1)
2222

2323
## Compile as C++14, supported in ROS Kinetic and newer
2424
add_compile_options(-std=c++14)

astrobee/config/localization.config

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ brisk_num_ransac_iterations = 100
2929
brisk_early_break_landmarks = 100
3030
brisk_histogram_equalization = 1
3131
brisk_check_essential_matrix = false
32-
brisk_essential_ransac_iterations = 2000
32+
brisk_essential_ransac_iterations = 0
3333
brisk_add_similar_images = false
3434
brisk_add_best_previous_image = false
3535
brisk_hamming_distance = 90
36-
brisk_goodness_ratio = 0.8
36+
brisk_goodness_ratio = 10000
3737
brisk_use_clahe = false
3838
brisk_num_extra_localization_db_images = 0
3939
-- Detection Params
@@ -42,14 +42,16 @@ brisk_default_threshold = 90.0
4242
brisk_max_threshold = 110.0
4343
brisk_min_features = 200
4444
brisk_max_features = 800
45+
brisk_too_many_ratio = 1.25
46+
brisk_too_few_ratio = 0.8
4547
brisk_detection_retries = 1
4648
-- Localizer Threshold Params
47-
brisk_success_history_size = 10
49+
brisk_success_history_size = 0
4850
brisk_min_success_rate = 0
4951
brisk_max_success_rate = 1
50-
brisk_adjust_hamming_distance = false
51-
brisk_min_hamming_distance = 90
52-
brisk_max_hamming_distance = 90
52+
brisk_adjust_num_similar = false
53+
brisk_min_num_similar = 20
54+
brisk_max_num_similar = 20
5355

5456
-- TEBLID512
5557
teblid512_num_similar = 20
@@ -69,19 +71,21 @@ teblid512_num_extra_localization_db_images = 0
6971

7072
-- Detection Params
7173
teblid512_min_threshold = 20.0
72-
teblid512_default_threshold = 60.0
74+
teblid512_default_threshold = 72.0
7375
teblid512_max_threshold = 110.0
7476
teblid512_min_features = 1000
7577
teblid512_max_features = 3000
78+
teblid512_too_many_ratio = 1.05
79+
teblid512_too_few_ratio = 0.95
7680
teblid512_detection_retries = 1
7781

7882
-- Localizer Threshold Params
7983
teblid512_success_history_size = 10
80-
teblid512_min_success_rate = 0.3
84+
teblid512_min_success_rate = 0.5
8185
teblid512_max_success_rate = 0.9
82-
teblid512_adjust_hamming_distance = false
83-
teblid512_min_hamming_distance = 85
84-
teblid512_max_hamming_distance = 85
86+
teblid512_adjust_num_similar = true
87+
teblid512_min_num_similar = 15
88+
teblid512_max_num_similar = 20
8589

8690
-- TEBLID256
8791
teblid256_num_similar = 20
@@ -101,16 +105,18 @@ teblid256_num_extra_localization_db_images = 0
101105

102106
-- Detection Params
103107
teblid256_min_threshold = 20.0
104-
teblid256_default_threshold = 60.0
108+
teblid256_default_threshold = 72.0
105109
teblid256_max_threshold = 110.0
106110
teblid256_min_features = 1000
107111
teblid256_max_features = 3000
112+
teblid256_too_many_ratio = 1.05
113+
teblid256_too_few_ratio = 0.95
108114
teblid256_detection_retries = 1
109115

110116
-- Localizer Threshold Params
111117
teblid256_success_history_size = 10
112-
teblid256_min_success_rate = 0.3
118+
teblid256_min_success_rate = 0.5
113119
teblid256_max_success_rate = 0.9
114-
teblid256_adjust_hamming_distance = false
115-
teblid256_min_hamming_distance = 85
116-
teblid256_max_hamming_distance = 85
120+
teblid256_adjust_num_similar = true
121+
teblid256_min_num_similar = 15
122+
teblid256_max_num_similar = 20

astrobee/config/localization/graph_localizer.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ gl_na_pose_starting_prior_translation_stddev = 0.02
6161
gl_na_pose_starting_prior_quaternion_stddev = 0.01
6262
gl_na_pose_huber_k = world_huber_k
6363
gl_na_pose_add_priors = true
64-
gl_na_pose_ideal_duration = 4
64+
gl_na_pose_ideal_duration = 15
6565
gl_na_pose_min_num_states = 3
6666
gl_na_pose_max_num_states = 5
6767
gl_na_pose_model_huber_k = world_huber_k

astrobee/config/localization/localization_manager.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ pipelines = {
108108
{ id = "ml", name = "Sparse map", ekf_input = 0,
109109
needs_filter = true, optical_flow = true, timeout = 1.0, max_confidence = 0,
110110
enable_topic = "loc/ml/enable", enable_timeout = 20.0,
111-
reg_topic = "loc/ml/registration", reg_timeout = 3.0,
111+
reg_topic = "loc/ml/registration", reg_timeout = 30.0,
112112
feat_topic = "loc/ml/features", feat_timeout = 600.0, feat_threshold = 3 },
113113
-- AR Tags
114114
{ id = "ar", name = "AR Tags", ekf_input = 1,

astrobee/config/simulation/simulation.config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ disable_cameras_on_speedup = true;
3030

3131
nav_cam_rate = 0.0;
3232
dock_cam_rate = 0.0;
33-
perch_cam_rate = 5.0;
34-
haz_cam_rate = 5.0;
33+
perch_cam_rate = 0.0;
34+
haz_cam_rate = 0.0;
Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
class update_ff_msgs_VisualLandmarks_bc9fc09f69d7758225ed41ee26f6375e(MessageUpdateRule):
2+
old_type = "ff_msgs/VisualLandmarks"
3+
old_full_text = """
4+
# Copyright (c) 2017, United States Government, as represented by the
5+
# Administrator of the National Aeronautics and Space Administration.
6+
#
7+
# All rights reserved.
8+
#
9+
# The Astrobee platform is licensed under the Apache License, Version 2.0
10+
# (the "License"); you may not use this file except in compliance with the
11+
# License. You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18+
# License for the specific language governing permissions and limitations
19+
# under the License.
20+
#
21+
# The observation from a camera image, of image coordinates
22+
# and associated 3D coordinates. Used for sparse mapping and AR tags.
23+
24+
Header header # header with timestamp
25+
uint32 camera_id # image ID, associated with registration pulse
26+
geometry_msgs/Pose pose # estimated camera pose from features
27+
ff_msgs/VisualLandmark[] landmarks # list of all landmarks
28+
29+
================================================================================
30+
MSG: std_msgs/Header
31+
# Standard metadata for higher-level stamped data types.
32+
# This is generally used to communicate timestamped data
33+
# in a particular coordinate frame.
34+
#
35+
# sequence ID: consecutively increasing ID
36+
uint32 seq
37+
#Two-integer timestamp that is expressed as:
38+
# * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')
39+
# * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')
40+
# time-handling sugar is provided by the client library
41+
time stamp
42+
#Frame this data is associated with
43+
string frame_id
44+
45+
================================================================================
46+
MSG: geometry_msgs/Pose
47+
# A representation of pose in free space, composed of position and orientation.
48+
Point position
49+
Quaternion orientation
50+
51+
================================================================================
52+
MSG: geometry_msgs/Point
53+
# This contains the position of a point in free space
54+
float64 x
55+
float64 y
56+
float64 z
57+
58+
================================================================================
59+
MSG: geometry_msgs/Quaternion
60+
# This represents an orientation in free space in quaternion form.
61+
62+
float64 x
63+
float64 y
64+
float64 z
65+
float64 w
66+
67+
================================================================================
68+
MSG: ff_msgs/VisualLandmark
69+
# Copyright (c) 2017, United States Government, as represented by the
70+
# Administrator of the National Aeronautics and Space Administration.
71+
#
72+
# All rights reserved.
73+
#
74+
# The Astrobee platform is licensed under the Apache License, Version 2.0
75+
# (the "License"); you may not use this file except in compliance with the
76+
# License. You may obtain a copy of the License at
77+
#
78+
# http://www.apache.org/licenses/LICENSE-2.0
79+
#
80+
# Unless required by applicable law or agreed to in writing, software
81+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
82+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
83+
# License for the specific language governing permissions and limitations
84+
# under the License.
85+
#
86+
# A single observation of a feature, with an image coordinate
87+
# and known 3D coordinate
88+
89+
float32 x # known 3D position x
90+
float32 y # known 3D position y
91+
float32 z # known 3D position z
92+
float32 u # feature image coordinate x
93+
float32 v # feature image coordinate y
94+
"""
95+
96+
new_type = "ff_msgs/VisualLandmarks"
97+
new_full_text = """
98+
# Copyright (c) 2017, United States Government, as represented by the
99+
# Administrator of the National Aeronautics and Space Administration.
100+
#
101+
# All rights reserved.
102+
#
103+
# The Astrobee platform is licensed under the Apache License, Version 2.0
104+
# (the "License"); you may not use this file except in compliance with the
105+
# License. You may obtain a copy of the License at
106+
#
107+
# http://www.apache.org/licenses/LICENSE-2.0
108+
#
109+
# Unless required by applicable law or agreed to in writing, software
110+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
111+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
112+
# License for the specific language governing permissions and limitations
113+
# under the License.
114+
#
115+
# The observation from a camera image, of image coordinates
116+
# and associated 3D coordinates. Used for sparse mapping and AR tags.
117+
118+
Header header # header with timestamp
119+
uint32 camera_id # image ID, associated with registration pulse
120+
geometry_msgs/Pose pose # estimated camera pose from features
121+
ff_msgs/VisualLandmark[] landmarks # list of all landmarks
122+
float32 runtime # Time it took to calculate the pose and matching landmarks
123+
124+
================================================================================
125+
MSG: std_msgs/Header
126+
# Standard metadata for higher-level stamped data types.
127+
# This is generally used to communicate timestamped data
128+
# in a particular coordinate frame.
129+
#
130+
# sequence ID: consecutively increasing ID
131+
uint32 seq
132+
#Two-integer timestamp that is expressed as:
133+
# * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')
134+
# * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')
135+
# time-handling sugar is provided by the client library
136+
time stamp
137+
#Frame this data is associated with
138+
string frame_id
139+
140+
================================================================================
141+
MSG: geometry_msgs/Pose
142+
# A representation of pose in free space, composed of position and orientation.
143+
Point position
144+
Quaternion orientation
145+
146+
================================================================================
147+
MSG: geometry_msgs/Point
148+
# This contains the position of a point in free space
149+
float64 x
150+
float64 y
151+
float64 z
152+
153+
================================================================================
154+
MSG: geometry_msgs/Quaternion
155+
# This represents an orientation in free space in quaternion form.
156+
157+
float64 x
158+
float64 y
159+
float64 z
160+
float64 w
161+
162+
================================================================================
163+
MSG: ff_msgs/VisualLandmark
164+
# Copyright (c) 2017, United States Government, as represented by the
165+
# Administrator of the National Aeronautics and Space Administration.
166+
#
167+
# All rights reserved.
168+
#
169+
# The Astrobee platform is licensed under the Apache License, Version 2.0
170+
# (the "License"); you may not use this file except in compliance with the
171+
# License. You may obtain a copy of the License at
172+
#
173+
# http://www.apache.org/licenses/LICENSE-2.0
174+
#
175+
# Unless required by applicable law or agreed to in writing, software
176+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
177+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
178+
# License for the specific language governing permissions and limitations
179+
# under the License.
180+
#
181+
# A single observation of a feature, with an image coordinate
182+
# and known 3D coordinate
183+
184+
float32 x # known 3D position x
185+
float32 y # known 3D position y
186+
float32 z # known 3D position z
187+
float32 u # feature image coordinate x
188+
float32 v # feature image coordinate y
189+
"""
190+
191+
order = 0
192+
migrated_types = [
193+
("Header","Header"),
194+
("geometry_msgs/Pose","geometry_msgs/Pose"),
195+
("VisualLandmark","VisualLandmark"),]
196+
197+
valid = True
198+
199+
def update(self, old_msg, new_msg):
200+
self.migrate(old_msg.header, new_msg.header)
201+
new_msg.camera_id = old_msg.camera_id
202+
self.migrate(old_msg.pose, new_msg.pose)
203+
self.migrate_array(old_msg.landmarks, new_msg.landmarks, "ff_msgs/VisualLandmark")
204+
#No matching field name in old message
205+
new_msg.runtime = 0.

communications/ff_msgs/msg/VisualLandmarks.msg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ Header header # header with timestamp
2222
uint32 camera_id # image ID, associated with registration pulse
2323
geometry_msgs/Pose pose # estimated camera pose from features
2424
ff_msgs/VisualLandmark[] landmarks # list of all landmarks
25+
float32 runtime # Time it took to calculate the pose and matching landmarks

debian/changelog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
astrobee (0.19.1) testing; urgency=medium
2+
3+
* Updated Map Matching with TEBLID and CLAHE
4+
5+
-- Astrobee Flight Software <[email protected]> Sun, 30 Jun 2024 15:20:46 -0700
6+
17
astrobee (0.19.0) testing; urgency=medium
28

39
* New split localizer

0 commit comments

Comments
 (0)