Closed fmessmer closed 2 years ago
the node crashes the first time, a transform becomes available in https://github.com/peci1/robot_body_filter/blob/master/src/RayCastingShapeMask.cpp#L138
but I still don't get what's going on there - as I see the filtered pointcloud before the transform is availalbe....so the robot_body_filter already did what I wanted it to do...and then it crashed because a tranform became available...
is this an issue of some kind of incompatibility with geometric_shapes
library?
is this possibly related to the PRs there?
@peci1 do you have any further insights here?
Hi, I'm sorry I ignored this issue when you first reported it, I had some problems with receiving emails from Github. We definitely use this library in sim time, so that should not be a problem.
Could you try to provide a minimal bag file and filter config so that I can try to reproduce the issue locally? And could you provide a stack trace when the library is built in debug mode (it would work super-slow, but for debugging purposes, it would be the best we could have)?
thanks for getting back to me!
I guess (part of) the issue was actually on my side
I figured out I had a source overlay of geometric_shapes
in my workspace chain - as part of my moveit (source) workspace
So once I removed that overlay of geometric_shapes
and compiled robot_body_filter
against the released version of geometric_shapes
(0.7.3
), I could use the robot_body_filter
in gazebo simulation - as expected!
Adding geometric_shapes
overlay again shows that everything still works with geometric_shapes
at tag 0.7.3
But I'm getting the same SIGSEGV, Segmentation fault.
once I switch geometric_shapes
to latest noetic-devel
Seems like there is a potential regression coming up - once the moveit team decides to release a new version of geometric_shapes
Can you confirm my argumentation makes sense?
Hmm, the noetic-devel branch has added FCL library as a new dependency. Can you check what version of libfcl-dev do you have installed? Is it the system one?
dpkg -l libfcl-dev
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-=============-============-==============================================
ii libfcl-dev 0.5.0-5build1 amd64 Flexible Collision Library - development files
I'm (pretty) sure I don't have a source overlay of libfcl
....
And ros-noetic-fcl
? Can you check against which is robot_body_filter linked? I.e. ldd devel/lib/librobot_body_filter.so | grep fcl
dpkg -l ros-noetic-fcl
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============================-============-===================================
ii ros-noetic-fcl 0.6.1-3focal.20220515.061114 amd64 FCL: the Flexible Collision Library
using geometric_shapes#0.7.3
:
ldd devel/lib/librobot_body_filter.so |grep fcl
libfcl.so.0.6 => /opt/ros/noetic/lib/x86_64-linux-gnu/libfcl.so.0.6 (0x00007fe410f15000)
using geometric_shapes#noetic-devel
now gives me a compilation error:
(not sure why I didn't see that before - possibly because my geometric_shapes
overlay was downstream of my robot_body_filter
overlay....
Starting >>> robot_body_filter
________________________________________________________________________________________________________________________________________________________________________________________
Errors << robot_body_filter:make /home/fxm/projects/default/robot_ws/logs/robot_body_filter/build.make.022.log
In file included from /home/fxm/projects/default/robot_ws/src/robot_body_filter/include/robot_body_filter/utils/bodies.h:7,
from /home/fxm/projects/default/robot_ws/src/robot_body_filter/src/utils/bodies.cpp:10:
/home/fxm/projects/default/robot_ws/src/robot_body_filter/include/robot_body_filter/utils/obb.h:53:7: error: redefinition of ‘class bodies::OBB’
53 | class OBB
| ^~~
In file included from /home/fxm/projects/default/robot_ws/src/geometric_shapes/include/geometric_shapes/bodies.h:45,
from /home/fxm/projects/default/robot_ws/src/robot_body_filter/src/utils/bodies.cpp:6:
/home/fxm/projects/default/robot_ws/src/geometric_shapes/include/geometric_shapes/obb.h:52:7: note: previous definition of ‘class bodies::OBB’
52 | class OBB
| ^~~
In file included from /home/fxm/projects/default/robot_ws/src/robot_body_filter/include/robot_body_filter/utils/bodies.h:7,
from /home/fxm/projects/default/robot_ws/src/robot_body_filter/src/utils/shapes.cpp:6:
/home/fxm/projects/default/robot_ws/src/robot_body_filter/include/robot_body_filter/utils/obb.h:53:7: error: redefinition of ‘class bodies::OBB’
53 | class OBB
| ^~~
In file included from /home/fxm/projects/default/robot_ws/src/geometric_shapes/include/geometric_shapes/bodies.h:45,
from /home/fxm/projects/default/robot_ws/src/robot_body_filter/include/robot_body_filter/utils/bodies.h:4,
from /home/fxm/projects/default/robot_ws/src/robot_body_filter/src/utils/shapes.cpp:6:
/home/fxm/projects/default/robot_ws/src/geometric_shapes/include/geometric_shapes/obb.h:52:7: note: previous definition of ‘class bodies::OBB’
52 | class OBB
| ^~~
make[2]: *** [CMakeFiles/robot_body_filter_utils.dir/build.make:102: CMakeFiles/robot_body_filter_utils.dir/src/utils/shapes.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/robot_body_filter_utils.dir/build.make:63: CMakeFiles/robot_body_filter_utils.dir/src/utils/bodies.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1873: CMakeFiles/robot_body_filter_utils.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
cd /home/fxm/projects/default/robot_ws/build/robot_body_filter; catkin build --get-env robot_body_filter | catkin env -si /usr/bin/make --jobserver-auth=42,43; cd -
........................................................................................................................................................................................
Failed << robot_body_filter:make [ Exited with code 2 ]
Failed <<< robot_body_filter [ 5.6 seconds ]
as I said: the issue was probably on my end having a messed up workspace and not cleaning/sourcing correctly...
Ahh, now I see it. There is a conflict between class bodies::OBB
defined in this package and the one that was added to geometric_shapes. I've put the local "copy" in the same namespace. This should be easily fixed on my side by moving it to a different namespace. I'll have a look at it.
Check the latest commit. It should fix the issue you are seeing.
thanks @peci1
I can confirm that with https://github.com/peci1/robot_body_filter/commit/7c7466bcbc1774fe0e97b35a57e268ecb34e8e82 I can now use the robot_body_filter
with both geometric_shapes#0.7.3
and geometric_shapes#noetic-devel
Thank you for reporting the issue!
I'm trying to use this filter on our robot to filter robot_body parts from a PointCloud
While I got it to work on real HW, I experience issues when using the same filter pipeline/config with sensor data simulated in gazebo - see "Details" below Has anybody used this filter together with gazebo, too?
First I thought the simulated PointCloud message might be the problem or it might be related to filtering meshes. But I get a filtered output PointCloud from the robot_body_filter before the SegFault - thus I dont think it's the data And I get the same SegFault when only filtering SolidPrimitives (i.e. Boxes)
So eventually, I think this is related to maybe
tf
being published at a slower rate in gazebo (real-time factor!)? Or maybe the robot_body_filter node not consideringsim_time: true
or somethingI also don't understand the log messages...
actually sounds like something good happening....but it SegFaults right after that!
Are there any parameters that I could play with to relax potential tf timeouts? Any additional hints to debug this SegFault? Thanks!