1.10.0
Description
Abstract
Added customization point CustomNoiseApplicator
for Autoware developers to implement a method for calculating the positional noise that simple_sensor_simulator
's DetectionSensor
applies to detected_objects
.
This pull request also includes the following three bug fixes found in its implementation.
- A bug that makes the actual recognition distance 300 m when DetectionSensor is set to 300 m or more
- A bug that causes invalid (empty)
detected_objects
to be published from the start of the simulation until the number of seconds set for the sensor's recognition delay time has elapsed - A bug that causes invalid (empty) ground truth objects to be published from the start of the simulation until the number of seconds set for the sensor's recognition delay time has elapsed
In addition, the process by which DetectionSensor lists entities that are within the sensor's range was extremely inefficient and was refactored.
Background
The developer of Autoware asked us to try an arbitrary method of applying position noise for planner development, such as "increasing the position noise according to the distance between Autoware and the recognition target". In order to make it easy for them to do this, it became necessary to provide a customization point that would allow them to easily replace the existing default noise application functionality while keeping it in place.
Details
DefaultNoiseApplicator and CustomNoiseApplicator
The DefaultNoiseApplicator
implements conventional noise handling and the CustomNoiseApplicator
inherits it. DetectionSensor<>::update
uses CustomNoiseApplicator
, but Custom
only inherits from DefaultNoiseApplicator
and does not define any member functions, so the actual work is done by DefaultNoiseApplicator
.
And (as the comments in the code indicate) the contents of the CustomNoiseApplicator
are intended to be implemented by Autoware developers as needed.
Refactoring
The process by which DetectionSensor lists entities that are within range of the sensor originally looked like this:
- List the names of entities that are within 300 m (this is a fixed value, one of the bugs fixed) of the sensor.
- List the names of the entities listed in 1 that are within X m (this is an externally given parameter) of the sensor.
- Copy the data of the entities whose names match the names listed in 2 to a new vector.
The above has been changed by this pull request to "iterate (not copy) on non-Ego entities that are within a distance of X meters".