-
Notifications
You must be signed in to change notification settings - Fork 65
Add noise for pose #1727
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add noise for pose #1727
Conversation
Checklist for reviewers ☑️All references to "You" in the following text refer to the code reviewer.
|
|
This PR has failed the SonarQube scan. Please check the details in the SonarQube dashboard. |
047ffa0 to
7a57224
Compare
Signed-off-by: Mateusz Palczuk <[email protected]>
Signed-off-by: Mateusz Palczuk <[email protected]>
Signed-off-by: Mateusz Palczuk <[email protected]>
…arameters file Signed-off-by: Mateusz Palczuk <[email protected]>
7a57224 to
126b895
Compare
Failure optional scenariosNote This is an experimental check and does not block merging the pull-request. scenario failed: execution_time_test <failure type="SimulationFailure" message="CustomCommandAction typed "exitFailure" was triggered by the named Conditions {"update time checker", "avoid startup"}: {"update time checker": Is the /simulation/interpreter/execution_time/update (= 0.005144000000000000134836586341) is greaterThan 0.005?}, {"avoid startup": Is the simulation time (= 2.299999999999999822364316059975) is greaterThan 1.000000000000000000000000000000?}" /> |
Failure optional scenariosNote This is an experimental check and does not block merging the pull-request. scenario failed: execution_time_test <failure type="SimulationFailure" message="CustomCommandAction typed "exitFailure" was triggered by the named Conditions {"evaluate time checker", "avoid startup"}: {"evaluate time checker": Is the /simulation/interpreter/execution_time/evaluate (= 0.005166999999999999718114374048) is greaterThan 0.001?}, {"avoid startup": Is the simulation time (= 1.850000000000000976996261670138) is greaterThan 1.000000000000000000000000000000?}" /> |
…hen_all_parameters_are_given test
…ulti_axes_check test
|



Abstract
This pull-request is a part of #1577 by @TauTheLepton
In this pull-request, the noise for
/localization/pose_estimator/pose_with_covariancetopic is introduced.Background
Details
The following folding document is copied from #1577 and are closely related to this pull request:
Concealer noise
The
NormalDistribution<nav_msgs::msg::Odometry>has been adjusted to the changes mentioned above.The noise adding framework from
concealer::Publisherhas been used implementing additional concealer noise, that is noise applied to topics/vehicle/status/velocity_status/localization/pose_estimator/pose_with_covarianceFor this reason, the
NormalDistribution<autoware_vehicle_msgs::msg::VelocityReport>andNormalDistribution<geometry_msgs::msg::PoseWithCovarianceStamped>have been implemented and used inAutowareUniverseclass.Additionally, the unit tests for new
NormalDistributionspecializations have been implemented.Simple sensor simulator noise
Noise adding framework from
concealer::Publisherhas been used implementing simple sensor simulator noise, that is the noise applied to topic/sensing/imu/imu_dataApplying noise to this topic has been slightly more complicated, because the sensor already had some noise implementation.
The older noise implementation is incompatible with the normal distribution noise framework from
concealer::Publisher.For this reason, and the fact we want to keep the simulator backward compatible - the new noise adding method has been added "on top" of the old implementation with a switch enabling to choose which implementation should be used.
This means the original implementation is used by default and only when user specifies the parameter
/sensing/imu/imu_data.override_legacy_configurationto be true the legacy method is switched off and the new method is switched on (part of this process involves calculating new covariance matrices, because they depend on the new noise parameters).Additionally, unit tests (testing only the noise application correctness) for
ImuSensorwith both noise configurations (legacy and new) have been implemented.Additional development from #1577
Fix rotation bug
The original implementation applies rotation roll-pitch-yaw order, but yaw-pitch-roll order is widely used in ROS context.
And in implementations where noise is applied to each axis independently, applying noise to multiple axes may affect other axes.
So, in this pull-request, I applies rotation noise using quaternion with
tf2library functions.Stop publishing /tf when simulate_localization=false
If
simulate_localizationis set to false, the/tfforbase_linkis published from/localization/pose_twist_fusion_filter/ekf_localizernode.So, I fix scenario_simulator to change
/tfpublishing target frombase_linktobase_link_ground_truththen.covariance noise
Add noises for covariance diagnal elements.
The parameter naming convention can be extended beyond the diagonal elements.
parameters
You can set the
additive/multiplicativeerrors with specifyingmean/standard_deviationparameters for position , orientation and covariance.The position parameters are
local_x,local_yandlocal_z, and the orientation parameters arer,pandyfor ease of use.Details
References
Regression Test: OK
Destructive Changes
None
The default parameter is zero.
So the default behavior is not changed
Known Limitations