Ask Your Question
0

move_group on intel edison

asked 2015-09-01 14:43:42 -0500

updated 2015-09-02 22:00:21 -0500

Hello all,

I'm running the following distro on the intel edison:

Linux up1 3.10.17-yocto-standard-r2 #7 SMP PREEMPT Thu Feb 26 09:57:06 UTC 2015 i686 GNU/Linux

I compiled ros indigo from source as follows:

http://wiki.ros.org/indigo/Installati...

And added the moveit packages as per the "Adding released packages" section. I commented the rviz launch out of demo.launch in our moveit_config and it runs without issue on my desktop. With the exact same code checkout on the edison, I get the following error:

[move_group-5] process has died [pid 2648, exit code -11, cmd /opt/ros/indigo/lib/moveit_ros_move_group/move_group --debug __name:=move_group __log:=/home/edison/.ros/log/8b397c3a-50de-11e5-b896-fcc2de337ed5/move_group-5.log].

According to the MoveItErrorCodes documentation, -11 corresponds to START_STATE_VIOLATES_PATH_CONSTRAINTS, but I don't know why I would get that error on the edison, but not on my desktop. The only difference is that I compiled ros from source for the edison. I know the edison doesn't officially support moveit yet, but does anyone know if there is a specific reason why moveit can't work on it besides overall slow speed? Any ideas what specifically triggers that error? I dug into the logs and there wasn't any additional information. Turning on the debug flag in the launch file triggers another error:

gdb -x /home/edison/uproot/catkin_ws/src/up1_moveit_config/launch/gdb_settings.gdb --ex run --args /opt/ros/indigo/lib/moveit_ros_move_group/move_group --debug __name:=move_group __log:=/home/edison/.ros/log/3fee3b24-50e0-11e5-a834-fcc2de337ed5/move_group-5.log

Please make sure that all the executables in this command exist and have
executable permission. This is often caused by a bad launch-prefix.

Any help would be greatly appreciated.

Thanks! -Nate

* edit *

Turns out gdb wasn't installed on the edison by default. Launching demo.launch with debugging enabled causes a seg fault, here is the backtrace:

#0  0xb69f41d1 in free () from /lib/i386-linux-gnu/libc.so.6
#1  0xb7a11c35 in std::_Rb_tree<moveit::core::LinkModel const*, std::pair<moveit::core::LinkModel const* const, Eigen::Transform<double, 3, 2, 0> >, std::_Select1st<std::pair<moveit::core::LinkModel const* const, Eigen::Transform<double, 3, 2, 0> > >, std::less<moveit::core::LinkModel const*>, Eigen::aligned_allocator<std::pair<moveit::core::LinkModel const* const, Eigen::Transform<double, 3, 2, 0> > > >::_M_erase(std::_Rb_tree_node<std::pair<moveit::core::LinkModel const* const, Eigen::Transform<double, 3, 2, 0> > >*) () from /opt/ros/indigo/lib/libmoveit_robot_model.so
#2  0xb7a351cc in moveit::core::RobotModel::buildJointInfo() () from /opt/ros/indigo/lib/libmoveit_robot_model.so
#3  0xb7a35a5c in moveit::core::RobotModel::buildModel(urdf::ModelInterface const&, srdf::Model const&) () from /opt/ros/indigo/lib/libmoveit_robot_model.so
#4  0xb7a36028 in moveit::core::RobotModel::RobotModel(boost::shared_ptr<urdf::ModelInterface const> const&, boost::shared_ptr<srdf::Model const> const&) ()
   from /opt/ros/indigo/lib/libmoveit_robot_model.so
#5  0xb7f582e8 in robot_model_loader::RobotModelLoader::configure(robot_model_loader::RobotModelLoader::Options const&) () from /opt/ros/indigo/lib/libmoveit_robot_model_loader.so
#6  0xb7f59347 in robot_model_loader::RobotModelLoader::RobotModelLoader(std::string const&, bool) () from /opt/ros/indigo/lib/libmoveit_robot_model_loader.so
#7  0xb7d06f68 in planning_scene_monitor::PlanningSceneMonitor::PlanningSceneMonitor ...
(more)
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2015-09-02 01:54:21 -0500

updated 2015-09-03 03:36:19 -0500

What you see is the exit code of the move_group process. It has nothing to do with error codes inMoveItErrorCodes. See also this answer. A exit code of -11 essentially means that the process segfaulted. Now why it does that on Intel Edison is a interesting question.

Your second problem looks like some malformed launch-prefix line. Not completely sure, but it looks like you're trying to execute (-x) a "gdb_settings.gdb" file. which looks wrong. Have you tried using

launch-prefix="gdb -ex run --args"

as suggested on How to Roslaunch Nodes in Valgrind or GDB?

/edit: For Eigen to work correctly on 32 bit systems, allocators that properly align data always have to be used. Consistently adding that throughout all code can be a pretty big task (and in some cases is not trivial). See the Explanation of the assertion on unaligned arrays page. The easy thing you can try is switching off vectorization as explained on the bottom of the page.

edit flag offensive delete link more

Comments

Pro Tip: make sure gdb is installed. Whoops. Turns out it wasn't on the edison by default. Thanks for the suggestions, I'm still debugging.

nate_droid gravatar imagenate_droid ( 2015-09-02 18:24:52 -0500 )edit

Oops ;) Edited with suggestion for switching off vectorization.

Stefan Kohlbrecher gravatar imageStefan Kohlbrecher ( 2015-09-03 03:46:16 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2015-09-01 14:43:42 -0500

Seen: 237 times

Last updated: Sep 03 '15