uzh-rpg / flightmare

An Open Flexible Quadrotor Simulator
https://uzh-rpg.github.io/flightmare/
Other
1.02k stars 347 forks source link

Eigen assertion thrown when generating trajectories in racing example #86

Open lukeopteran opened 3 years ago

lukeopteran commented 3 years ago

Hi I am getting an assertion every time I run the racing.launch example. This only occurs running on Ubuntu 20.04LTS and ROS Noetic. It runs fine on Ubuntu 18.04 ROS Melodic. All using the default / example trajectory.

Here is the gdb backtrace:

[UnityBridge] Initializing ZMQ connection! [UnityBridge] Initializing ZMQ connections done! racing: /usr/local/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:180: Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType Eigen::DenseCoeffsBase<Derived, 0>::operator()(Eigen::Index) const [with Derived = Eigen::Matrix<double, -1, 1>; Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType = const double&; Eigen::Index = long int]: Assertion `index >= 0 && index < size()' failed.

Thread 1 "racing" received signal SIGABRT, Aborted. __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) bt

0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50

1 0x00007ffff7691859 in __GI_abort () at abort.c:79

2 0x00007ffff7691729 in __assert_fail_base (fmt=0x7ffff7827588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7ffff7ef338c "index >= 0 && index < size()",

file=0x7ffff7ef2478 "/usr/local/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h", line=180, function=<optimized out>) at assert.c:92

3 0x00007ffff76a2f36 in __GI___assert_fail (assertion=0x7ffff7ef338c "index >= 0 && index < size()",

file=0x7ffff7ef2478 "/usr/local/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h", line=180, 
function=0x7ffff7ef2f30 "Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType Eigen::DenseCoeffsBase<Derived, 0>::operator()(Eigen::Index) const [with Derived = Eigen::Matrix<double, -1, 1>; Eigen::DenseCoeffsBase<Derived, 0>:"...) at assert.c:101

4 0x00007ffff7ecec4d in polynomial_trajectories::minimum_snap_trajectories::implementation::generateFVector(polynomial_trajectories::PolynomialTrajectorySettings const&, Eigen::Matrix<double, -1, 1, 0, -1, 1> const&, int) () from /home/luke/catkin_ws/devel/lib/libpolynomial_trajectories.so

5 0x00007ffff7ed1ecf in polynomial_trajectories::minimum_snap_trajectories::generateMinimumSnapRingTrajectory(Eigen::Matrix<double, -1, 1, 0, -1, 1> const&, polynomial_trajectories::PolynomialTrajectorySettings const&) () from /home/luke/catkin_ws/devel/lib/libpolynomial_trajectories.so

6 0x00007ffff7ed6cd5 in polynomial_trajectories::minimum_snap_trajectories::generateMinimumSnapRingTrajectory(Eigen::Matrix<double, -1, 1, 0, -1, 1> const&, polynomial_trajectories::PolynomialTrajectorySettings const&, double, double, double) () from /home/luke/catkin_ws/devel/lib/libpolynomial_trajectories.so

7 0x000055555556c4a3 in main ()

I cannot get gdb to give me information from the Eigen matrices so will have to print it out...

I have tried multiple different libraries:

  1. In the Flightmare install-guide it says to use Google's Protobuffer Compiler 3.0.0 . However as Noetic is using Gazebo 11, the Gazebo messages appear to be built using v3.6.1. I have tried running with built from source 3.0.0 and latest 3.15.6. However I am using 3.6.1 to match Gazebo. Still getting the same error.
  2. Eigen > I have tried the default 3.3.7 (installed with flightmare), 3.3.4 (Melodic default) and the latest RC 3.4.99 but all throw the same assertion.

Any help (how to debug?) much appreciated, the Unity / graphics runs best in Ubuntu 20.04 so would prefer not to downgrade.

Thanks

slimeth commented 3 years ago

@lukeopteran the error happens within rpg_quadrotor_control when computing the polynomial trajectory. So I would suggest you check this out and see if you might need to adapt anything for the more recent Eigen version. That project as well as Flightmare are optimized for Ubuntu 18.04 and Eigen 3.3.4.