ros-industrial/universal_robot

"stack smashing detected" error in MoveIt (ROS Noetic) when generating collision matrix with URDF which contains colliding link geometries

Closed this issue · 5 comments

Issue:
When generating collision matrix in MoveIt Setup Assistant using the URDF which contains colliding link geometries, the "stack smashing detected" error happens and the Setup Assistant terminates. It would be really helpful if you could update the URDF files to resolve the issue.

Tests:

  • The issue is experienced when both creating new or editing the existing MoveIt configuration packages.
  • The issue is not experienced when the link geometries in URDF do not collide. For example the default URDF of jackal robot have the same issue but when the "track" property is changed from "0.37559" to "0.38" (which slightly moves the tires away from the main chassis), the collision matrix can be successfully generated using the Setup Assistant.
  • The issue is not experienced using the (unofficial) URDF of another robot arm, Franka Emika's Panda robot](https://github.com/justagist/franka_panda_description/blob/master/robots/panda_arm.urdf.xacro). However, when the official URDF of the same robot arm is used in franka_ros, the same error is happened.

System details:

  • Ubuntu 20.04 with ROS Noetic (desktop full) installation
  • universal_robot branches: kinetic-devel and melodic-devel
  • URDF files: ur{3,5,10}{-.e}_robot.urdf.xacro
  • MoveIt configs: ur{3,5,10}{-,_e}_moveit_config

GDB settings:

  • catkin config --extend /opt/ros/${ROS_DISTRO} --cmake-args --cmake-args -DCMAKE_BUILD_TYPE=Debug
  • <arg name="debug" default="true" /> in setup_assistant.launch

GDB output:

process[moveit_setup_assistant-2]: started with pid [138707]
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/akmandor/ws_moveit/devel/lib/moveit_setup_assistant/moveit_setup_assistant...
Starting program: /home/akmandor/ws_moveit/devel/lib/moveit_setup_assistant/moveit_setup_assistant __name:=moveit_setup_assistant __log:=/home/akmandor/.ros/log/ffc51fec-c4cb-11ec-a88b-25436de2d46c/moveit_setup_assistant-2.log
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Detaching after vfork from child process 138880]
[ INFO] [1650914126.001929545]: Loaded ur5 robot model.
[ INFO] [1650914126.002811882]: Setting Param Server with Robot Description
[ INFO] [1650914126.005020206]: Robot semantic model successfully loaded.
[ INFO] [1650914126.005078133]: Setting Param Server with Robot Semantic Description
[ INFO] [1650914126.017237137]: Loading robot model 'ur5'...
[ INFO] [1650914126.017278145]: No root/virtual joint specified in SRDF. Assuming fixed joint
[ INFO] [1650914126.589893475]: Stereo is NOT SUPPORTED
[ INFO] [1650914126.589941000]: OpenGL device: Mesa Intel(R) UHD Graphics 630 (CFL GT2)
[ INFO] [1650914126.589956634]: OpenGl version: 4.6 (GLSL 4.6) limited to GLSL 1.4 on Mesa system.
[ INFO] [1650914126.771406347]: Loading robot model 'ur5'...
[ INFO] [1650914126.771434275]: No root/virtual joint specified in SRDF. Assuming fixed joint
[New Thread 0x7fff3fb40700 (LWP 138930)]
[ INFO] [1650914127.062969031]: Loading Setup Assistant Complete
*** stack smashing detected ***: terminated
--Type <RET> for more, q to quit, c to continue without paging--c

Thread 39 "moveit_setup_as" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fff3ec9f700 (LWP 138958)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) next
Program terminated with signal SIGABRT, Aborted.
The program no longer exists.`
(gdb) quit
================================================================================REQUIRED process [moveit_setup_assistant-2] has died!
process has finished cleanly
log file: /home/akmandor/.ros/log/ffc51fec-c4cb-11ec-a88b-25436de2d46c/moveit_setup_assistant-2*.log
Initiating shutdown!
================================================================================
[moveit_setup_assistant-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

While I thank you for the (more) detailed report, I still believe this is a problem with the MSA, not with the URDF here. It's possible #527 and #570 are other instances of this same problem.

The URDF specs don't state that collision geometry cannot overlap, and due to the fact that yours is only the second (or third) report about this, I'm inclined to believe (at this point) it's not a widespread / fundamental problem with the models here.

I would recommend to open an issue on the MoveIt issue tracker, and providing them with as much information as possible. You probably have a gdb backtrace, which I would include.

If, after analysis there, it turns out there is a problem with the models in ur_description here, we can try to address it of course.

For now I'm going to close this, but as I wrote in my previous comment, we can certainly come back to this and re-open if/when needed.

Thanks @gavanderhoorn and personally I agree with your comment that "The URDF specs don't state that collision geometry cannot overlap". I think it is more meaningful to expect from the MSA implementation to handle such overlapping geometries. However, in an ideal simulation, I also don't expect the physical entities collapse. Anyway, this is obviously a gray area :) As you suggested, I wrote my observations under a similar issue in MoveIt.

I would suggest to include a backtrace of an example crash.

I expect that to be one of the first questions you'll receive from the MoveIt maintainers.

Added 👍

Someone in my lab pointed me out that there is another (Unofficial) universal_robot repository (branch: calibration_devel) which does not give the error. I just wanted to add here if someone needs to create moveit config files for UR arms from scratch.