Skip to content

Commit

Permalink
Release 0.19.1 (#799)
Browse files Browse the repository at this point in the history
* 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 <ryan.soussan@gmail.com>
  • Loading branch information
marinagmoreira and rsoussan authored Jul 3, 2024
1 parent 8234583 commit bf30648
Show file tree
Hide file tree
Showing 18 changed files with 393 additions and 121 deletions.
12 changes: 8 additions & 4 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Releases

## Release 0.19.1

* Updated Map Matching with TEBLID and CLAHE

## Release 0.19.0

* New split localizer
Expand All @@ -8,23 +12,23 @@

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

# Release 0.17.3
## Release 0.17.3

* Comms bridge added rate feature
* Bug fixes
* User feedback improvements

# Release 0.17.2
## Release 0.17.2

* Adding Generic comms bridge
* Multiple bug fixes
* Ubuntu 20 only supported now

# Release 0.17.1
## Release 0.17.1

* Multiple bug fixes

# Release 0.17.0
## Release 0.17.0

* Full compatibility and debians built for Ubuntu 20
* Deleted all simulink autocode for ctl and fam
Expand Down
2 changes: 1 addition & 1 deletion astrobee.doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ PROJECT_NAME = "NASA Astrobee Robot Software"
# control system is used.


PROJECT_NUMBER = 0.19.0
PROJECT_NUMBER = 0.19.1

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
2 changes: 1 addition & 1 deletion astrobee/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
cmake_minimum_required(VERSION 3.0)
project(astrobee)

set(ASTROBEE_VERSION 0.19.0)
set(ASTROBEE_VERSION 0.19.1)

## Compile as C++14, supported in ROS Kinetic and newer
add_compile_options(-std=c++14)
Expand Down
38 changes: 22 additions & 16 deletions astrobee/config/localization.config
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ brisk_num_ransac_iterations = 100
brisk_early_break_landmarks = 100
brisk_histogram_equalization = 1
brisk_check_essential_matrix = false
brisk_essential_ransac_iterations = 2000
brisk_essential_ransac_iterations = 0
brisk_add_similar_images = false
brisk_add_best_previous_image = false
brisk_hamming_distance = 90
brisk_goodness_ratio = 0.8
brisk_goodness_ratio = 10000
brisk_use_clahe = false
brisk_num_extra_localization_db_images = 0
-- Detection Params
Expand All @@ -42,14 +42,16 @@ brisk_default_threshold = 90.0
brisk_max_threshold = 110.0
brisk_min_features = 200
brisk_max_features = 800
brisk_too_many_ratio = 1.25
brisk_too_few_ratio = 0.8
brisk_detection_retries = 1
-- Localizer Threshold Params
brisk_success_history_size = 10
brisk_success_history_size = 0
brisk_min_success_rate = 0
brisk_max_success_rate = 1
brisk_adjust_hamming_distance = false
brisk_min_hamming_distance = 90
brisk_max_hamming_distance = 90
brisk_adjust_num_similar = false
brisk_min_num_similar = 20
brisk_max_num_similar = 20

-- TEBLID512
teblid512_num_similar = 20
Expand All @@ -69,19 +71,21 @@ teblid512_num_extra_localization_db_images = 0

-- Detection Params
teblid512_min_threshold = 20.0
teblid512_default_threshold = 60.0
teblid512_default_threshold = 72.0
teblid512_max_threshold = 110.0
teblid512_min_features = 1000
teblid512_max_features = 3000
teblid512_too_many_ratio = 1.05
teblid512_too_few_ratio = 0.95
teblid512_detection_retries = 1

-- Localizer Threshold Params
teblid512_success_history_size = 10
teblid512_min_success_rate = 0.3
teblid512_min_success_rate = 0.5
teblid512_max_success_rate = 0.9
teblid512_adjust_hamming_distance = false
teblid512_min_hamming_distance = 85
teblid512_max_hamming_distance = 85
teblid512_adjust_num_similar = true
teblid512_min_num_similar = 15
teblid512_max_num_similar = 20

-- TEBLID256
teblid256_num_similar = 20
Expand All @@ -101,16 +105,18 @@ teblid256_num_extra_localization_db_images = 0

-- Detection Params
teblid256_min_threshold = 20.0
teblid256_default_threshold = 60.0
teblid256_default_threshold = 72.0
teblid256_max_threshold = 110.0
teblid256_min_features = 1000
teblid256_max_features = 3000
teblid256_too_many_ratio = 1.05
teblid256_too_few_ratio = 0.95
teblid256_detection_retries = 1

-- Localizer Threshold Params
teblid256_success_history_size = 10
teblid256_min_success_rate = 0.3
teblid256_min_success_rate = 0.5
teblid256_max_success_rate = 0.9
teblid256_adjust_hamming_distance = false
teblid256_min_hamming_distance = 85
teblid256_max_hamming_distance = 85
teblid256_adjust_num_similar = true
teblid256_min_num_similar = 15
teblid256_max_num_similar = 20
2 changes: 1 addition & 1 deletion astrobee/config/localization/graph_localizer.config
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ gl_na_pose_starting_prior_translation_stddev = 0.02
gl_na_pose_starting_prior_quaternion_stddev = 0.01
gl_na_pose_huber_k = world_huber_k
gl_na_pose_add_priors = true
gl_na_pose_ideal_duration = 4
gl_na_pose_ideal_duration = 15
gl_na_pose_min_num_states = 3
gl_na_pose_max_num_states = 5
gl_na_pose_model_huber_k = world_huber_k
Expand Down
2 changes: 1 addition & 1 deletion astrobee/config/localization/localization_manager.config
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ pipelines = {
{ id = "ml", name = "Sparse map", ekf_input = 0,
needs_filter = true, optical_flow = true, timeout = 1.0, max_confidence = 0,
enable_topic = "loc/ml/enable", enable_timeout = 20.0,
reg_topic = "loc/ml/registration", reg_timeout = 3.0,
reg_topic = "loc/ml/registration", reg_timeout = 30.0,
feat_topic = "loc/ml/features", feat_timeout = 600.0, feat_threshold = 3 },
-- AR Tags
{ id = "ar", name = "AR Tags", ekf_input = 1,
Expand Down
4 changes: 2 additions & 2 deletions astrobee/config/simulation/simulation.config
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,5 @@ disable_cameras_on_speedup = true;

nav_cam_rate = 0.0;
dock_cam_rate = 0.0;
perch_cam_rate = 5.0;
haz_cam_rate = 5.0;
perch_cam_rate = 0.0;
haz_cam_rate = 0.0;
205 changes: 205 additions & 0 deletions communications/ff_msgs/bmr/2023_07_01_VisualLandmarks_add_field.bmr
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
class update_ff_msgs_VisualLandmarks_bc9fc09f69d7758225ed41ee26f6375e(MessageUpdateRule):
old_type = "ff_msgs/VisualLandmarks"
old_full_text = """
# Copyright (c) 2017, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
# All rights reserved.
#
# The Astrobee platform is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# The observation from a camera image, of image coordinates
# and associated 3D coordinates. Used for sparse mapping and AR tags.

Header header # header with timestamp
uint32 camera_id # image ID, associated with registration pulse
geometry_msgs/Pose pose # estimated camera pose from features
ff_msgs/VisualLandmark[] landmarks # list of all landmarks

================================================================================
MSG: std_msgs/Header
# Standard metadata for higher-level stamped data types.
# This is generally used to communicate timestamped data
# in a particular coordinate frame.
#
# sequence ID: consecutively increasing ID
uint32 seq
#Two-integer timestamp that is expressed as:
# * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')
# * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')
# time-handling sugar is provided by the client library
time stamp
#Frame this data is associated with
string frame_id

================================================================================
MSG: geometry_msgs/Pose
# A representation of pose in free space, composed of position and orientation.
Point position
Quaternion orientation

================================================================================
MSG: geometry_msgs/Point
# This contains the position of a point in free space
float64 x
float64 y
float64 z

================================================================================
MSG: geometry_msgs/Quaternion
# This represents an orientation in free space in quaternion form.

float64 x
float64 y
float64 z
float64 w

================================================================================
MSG: ff_msgs/VisualLandmark
# Copyright (c) 2017, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
# All rights reserved.
#
# The Astrobee platform is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# A single observation of a feature, with an image coordinate
# and known 3D coordinate

float32 x # known 3D position x
float32 y # known 3D position y
float32 z # known 3D position z
float32 u # feature image coordinate x
float32 v # feature image coordinate y
"""

new_type = "ff_msgs/VisualLandmarks"
new_full_text = """
# Copyright (c) 2017, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
# All rights reserved.
#
# The Astrobee platform is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# The observation from a camera image, of image coordinates
# and associated 3D coordinates. Used for sparse mapping and AR tags.

Header header # header with timestamp
uint32 camera_id # image ID, associated with registration pulse
geometry_msgs/Pose pose # estimated camera pose from features
ff_msgs/VisualLandmark[] landmarks # list of all landmarks
float32 runtime # Time it took to calculate the pose and matching landmarks

================================================================================
MSG: std_msgs/Header
# Standard metadata for higher-level stamped data types.
# This is generally used to communicate timestamped data
# in a particular coordinate frame.
#
# sequence ID: consecutively increasing ID
uint32 seq
#Two-integer timestamp that is expressed as:
# * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')
# * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')
# time-handling sugar is provided by the client library
time stamp
#Frame this data is associated with
string frame_id

================================================================================
MSG: geometry_msgs/Pose
# A representation of pose in free space, composed of position and orientation.
Point position
Quaternion orientation

================================================================================
MSG: geometry_msgs/Point
# This contains the position of a point in free space
float64 x
float64 y
float64 z

================================================================================
MSG: geometry_msgs/Quaternion
# This represents an orientation in free space in quaternion form.

float64 x
float64 y
float64 z
float64 w

================================================================================
MSG: ff_msgs/VisualLandmark
# Copyright (c) 2017, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
# All rights reserved.
#
# The Astrobee platform is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# A single observation of a feature, with an image coordinate
# and known 3D coordinate

float32 x # known 3D position x
float32 y # known 3D position y
float32 z # known 3D position z
float32 u # feature image coordinate x
float32 v # feature image coordinate y
"""

order = 0
migrated_types = [
("Header","Header"),
("geometry_msgs/Pose","geometry_msgs/Pose"),
("VisualLandmark","VisualLandmark"),]

valid = True

def update(self, old_msg, new_msg):
self.migrate(old_msg.header, new_msg.header)
new_msg.camera_id = old_msg.camera_id
self.migrate(old_msg.pose, new_msg.pose)
self.migrate_array(old_msg.landmarks, new_msg.landmarks, "ff_msgs/VisualLandmark")
#No matching field name in old message
new_msg.runtime = 0.
1 change: 1 addition & 0 deletions communications/ff_msgs/msg/VisualLandmarks.msg
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ Header header # header with timestamp
uint32 camera_id # image ID, associated with registration pulse
geometry_msgs/Pose pose # estimated camera pose from features
ff_msgs/VisualLandmark[] landmarks # list of all landmarks
float32 runtime # Time it took to calculate the pose and matching landmarks
6 changes: 6 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
astrobee (0.19.1) testing; urgency=medium

* Updated Map Matching with TEBLID and CLAHE

-- Astrobee Flight Software <astrobee-fsw@nx.arc.nasa.gov> Sun, 30 Jun 2024 15:20:46 -0700

astrobee (0.19.0) testing; urgency=medium

* New split localizer
Expand Down
Loading

0 comments on commit bf30648

Please sign in to comment.