-
Notifications
You must be signed in to change notification settings - Fork 130
689 add raytracerview config #699
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
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would not merge before clarifying if we write "ray tracer" or "raytracer" and we should correct the other small typos.
Additionally, I raised some additional questions to be answered before merging.
osi_sensorview.proto
Outdated
|
||
// Raytracer-specific View(s). | ||
// | ||
repeated RaytracerView raytarcer_view = 1005; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo. Should be raytracer_view
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As more as I think about it, I even assume repeated RayTracerView ray_tracer_view
would be correct.
And if this is correct, this would mean to write ray tracing
and ray tracer
separated all over the file, not?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Absolutely right. Changes done in osi_sensorviewconfiguration and osi_sensorview
osi_sensorview.proto
Outdated
// The raw raytracer data in the memory layout and order specified by the | ||
// raytracer input configuration. | ||
// | ||
optional bytes raytarcer_data = 2; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo. This should be raytracer_data
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As written in the comment above, we should clarify whether ray tracing should be written separately or not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Corrected and changed to ray_tracer_data
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, I guess, it's fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should probably rewrite the section between line 34 to 46 in osi_sensorviewconfiguration.proto as the number of rays is not included in any of the configurations anymore? Were these number_of_rays fields removed on purpose? In the current OSI version they are marked as raytracer specific characteristic, so I was just wondering where they went...
osi_sensorviewconfiguration.proto
Outdated
// | ||
// \note Rotation is defined analog Spherical3d |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This note on the rotation got lost in the new SpatialSignalGain message which replaces the AntennaDiagramEntry message. Maybe we should add it again just to be clear?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then we should add this note it in the osi_common, where the message is defined. What is not completly clear is the note itself, because we dont have the type Spherical3d here and one dimension less. Therefore the rotation can't be analog to Spherical3d. What do you think, @thomassedlmayer ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it should be added in osi_common. I just added the note to the removed line.
You're right, we have one dimension less. But we should still determine the direction of the angles, right? E.g. right hand rule
osi_sensorviewconfiguration.proto
Outdated
// | ||
optional uint32 max_number_of_interactions = 8; | ||
optional double beam_divergence_horizontal = 7; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe also rename the field of view-fields in RadarSensorViewConfiguration/Ultrasonic to beam divergence then? Does this make sense there too?
Also, the note that the rotation is as defined in Spherical3d is missing again.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beam_divergence is typically a parameter in the datasheet of the lidar sensor. In the case of radar the continious character of the electromagnetic wave together with the antenna diagramm characteristics define the beam_divergence. Therefore this field should not be added to radar. In case of ultrasonic I'm not shure. Can you help @PhRosenberger?
osi_sensorviewconfiguration.proto
Outdated
// | ||
repeated Vector3d directions = 11; | ||
optional MountingPosition receiver_pose = 10; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could maybe be consistent with the naming. In RayTracerSensorViewConfig these fields are called receiver_position/transmitter_position. Maybe also move these position fields up to the mounting position if we already move fields around anyway?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good suggestion. I also added als explanation in transmitter_position // In case of lidar sensors this could be e.g. a mirror position.
and for receiver_position // In case of lidar sensors this could be e.g. a photodiode.
osi_sensorview.proto
Outdated
// | ||
// The signal can be received from a different angle than it has been emitted to. | ||
// | ||
// \note Data is in sensor coordinate system. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Specify that it is the physical sensor coordinate system and not the virtual sensor coordinate system
The corresponding issue #689 is assigned to milestone 3.6.0. This will not work as this PR breaks backwards compatibility. Can the PR be split into a compatible part for 3.6.0 and an incompatible part for 4.0? |
osi_sensorviewconfiguration.proto
Outdated
|
||
// Different predefined ray tracer formats | ||
// | ||
enum RayTracerFormat |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not agree to have a raytracer format for every project. What's next? GaiaX format, Pegasus format? We need to come to an agreement here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I fully agree. Wouldn't it be possible to merge the four different raytracer types?
“unknown” and “other” have no attributes anyway. Usage of those types will incorporate ambiguities and doesn't contribute to harmonization.
The approaches of DIVP and Vivaldi largely overlap:
- distance (which should be further elaborated) may coincide or be calculated form intersection_path_length + hitpoints
- relative_speed is included in both approaches
- polarized_attenuation can be calculated (afaik) from the Jones Vector
- independent (optional?) parameters incorporate angles of incidence/reflection as well as first/last hit points...
Shouldn't it be possible to reach an agreement here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sensor Modeling Project Meeting (16.04.2025): Maybe describe the types in a technical way, not project name-based.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we change the jones vector to a jones matrix
float4 -> float8 (4 complex values)
M = VV VH
HV HH
jones_matrix (float8; in V/m; jones matrix of the ray with information of the electromagnetic wave`s phase, signal strength and polarisation, which gives you additonaly the projection to the subset of the jones vectors )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sensor Modeling Project Meeting (16.04.2025): Maybe describe the types in a technical way, not project name-based.
The various ray tracing formats were developed in the VIVID project and have enabled a connection between different tool worlds, with project names inserted as placeholders. I agree that not every ray tracer or tool provider can simply open a format here, and the technical specifications must be in the foreground.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As commented, I'd suggest to merge the four proposed RayTracerFormats.
osi_sensorviewconfiguration.proto
Outdated
|
||
// Different predefined ray tracer formats | ||
// | ||
enum RayTracerFormat |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I fully agree. Wouldn't it be possible to merge the four different raytracer types?
“unknown” and “other” have no attributes anyway. Usage of those types will incorporate ambiguities and doesn't contribute to harmonization.
The approaches of DIVP and Vivaldi largely overlap:
- distance (which should be further elaborated) may coincide or be calculated form intersection_path_length + hitpoints
- relative_speed is included in both approaches
- polarized_attenuation can be calculated (afaik) from the Jones Vector
- independent (optional?) parameters incorporate angles of incidence/reflection as well as first/last hit points...
Shouldn't it be possible to reach an agreement here?
9b5b2d0
to
0c65e35
Compare
Signed-off-by: @lukas.elster <lukas.elster@tu-darmstadt.de>
0c65e35
to
70d4dea
Compare
I've refactored to only contain the raytracerview-specific content. Likely the device-type enum should move to the configuration to take part in auto-negotiation. This can be handled via further commits going forward - spell-check-changes etc. will also go in later commits. |
Reference to a related issue in the repository
#689
Add a description
PR adds RaytracerViewConfig to SensorView fpr raytracinf interfaces and changes Lidar/RadarSensorView in interfaces without rendering techniques related fields. Changes in Lidar and RadarSensorView are not backward compatible.
Take this checklist as orientation for yourself, if this PR is ready for the Change Control Board:
If you can’t check all of them, please explain why.
If all boxes are checked or commented and you have achieved at least one positive review, you can assign the label ReadyForCCBReview!