The implementation of ring_outlier_filter seems to have incorrect part #8645
Labels
component:sensing
Data acquisition from sensors, drivers, preprocessing. (auto-assigned)
status:stale
Inactive or outdated issues. (auto-assigned)
type:bug
Software flaws or errors.
Checklist
Description
There appears to be some issues of the implementation of ring_outlier_filter, so I listed them below.
The target of this issue is this code.
1. The last point in each ring seems to be not processed
After exiting the for loop (starts from line 126),
walk_last_idx
isindices.size() - 2
. So even if it loops over[walk_first_idx, walk_last_idx]
, the last element will be ignored.2. The same point can be pushed back to
outlier_pcl
multiple timesIn the for loop (starts from line 185),
input_ptr
is always same, because the index is alwayswalk_first_idx
. I think the index should bei
.3. Incorrect type specification when copying point data
According to ring-outlier-filter.md, input is in PointXYZIRCAEDT format, so
channel
should beuint16_t
. However, when copying, it is read asuint8_t
. Also,intensity
should beuint8_t
, but it is read asfloat
in line 226.4. Same process
It's a matter of style, but I think the same processing can be unified.
Below is the psuedo code that shows the solution of problem 1 and 4.
before:
after:
It will change the output topic and it may be difficult for me to test, so I posted this as a issue.
Please let me know if the behavior is intended or if I've misunderstood something.
Expected behavior
None
Actual behavior
None
Steps to reproduce
None
Versions
No response
Possible causes
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: