[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ROS installation with pure Debian Packages + some Source Packages



Hello list, hello Jochen,

thanks for your fast reply.


On Fri, Jun 15, 2018 at 04:32:26PM +0200, Jochen Sprickerhof wrote:
> do you need more information or help with ROS?

Well, yes, i think so.

> Would be really great to see
> more users of these packages.

Yes! I would very much like to use Debian for development and not be forced to
use Ubuntu in a VM or something...


First of all: To use rosinstall_generator with --exclude RPP and --exclude-path
/usr/share was a very good hint.
I haven't found anything about that in the documentation. I thought the options
were for something completely different.


Ok. Here is what i've done and what worked so far. Spoiler: compiling moveit! fails
because of some boost:shared_ptr and std::shared_ptr issues. I had that error
before. It's a simple fix, but i don't know the right way to do it.

Anyway, let's start upfront. Here is my log:


$ rosinstall_generator desktop_full moveit --rosdistro kinetic --exclude RPP --exclude-path /usr/share --deps --wet-only > kinetic_debian_moveit.rosinstall

  * remove "ompl" from rosinstall because it's packaged as libompl12
  * remove "stage" don't need it, does not work with catkin (cmake project)
  * remove "*_tutorials" dependency on stage, compile errors, etc. no idea, don't want tutorials

$ wstool  init -j 8 src kinetic_debian_moveit.rosinstall

$ catkin_make
  => error with gennodejs (import gennodejs fails)
  * source ./devel/setup.bash fixed it

  => compile error: srdfdom needs a newer version
  * debian package libconsole-bridge0.4 has different macros
  * CONSOLE_BRIDGE_logError <=> logError
  * update .rosinstall with:
  - git:
    local-name: srdfdom
    uri: https://github.com/ros-gbp/srdfdom-release.git
    version: release/melodic/srdfdom/0.5.0-0

$ catkin_make
  => error with diagnostics: uses pluginlib with different version, all .h
     renamed to .hpp :-/
  * updated the debian package to ros-pluginlib-1.12-1
  * then you need ros-class-loader in newer version => updated package to 0.4.1
  * then you need to rebuild ros-image-common, ros-nodelet-core, ros-robot-model
  * done => lots of linker errors ;-) well build again....

$ catkin_make
  => moveit_kinematics*plugin fails to build
  * missing virtual function in kdl::chainsolvervel
  * Debian Buster uses liborocos-kdl1.4, moveit wants 1.3 (???)
  * updated moveit_kinematics and moveit_setup_assistant via git checkout to
    melodic/0.10.1-0

$ caktin_make
[...]
[ 93%] Built target moveit_planning_scene_rviz_plugin_autogen
[ 93%] Built target moveit_motion_planning_rviz_plugin_core_autogen
[ 93%] Built target moveit_robot_state_rviz_plugin
[ 94%] Built target moveit_planning_scene_rviz_plugin
[ 95%] Built target moveit_trajectory_rviz_plugin_core
[ 95%] Automatic MOC for target moveit_trajectory_rviz_plugin
[ 95%] Built target moveit_trajectory_rviz_plugin_autogen
[ 95%] Built target moveit_trajectory_rviz_plugin
[ 96%] Built target moveit_motion_planning_rviz_plugin_core
[ 96%] Automatic MOC for target moveit_setup_assistant_tools
[ 96%] Automatic MOC for target moveit_motion_planning_rviz_plugin
[ 96%] Built target moveit_motion_planning_rviz_plugin_autogen
[ 96%] Built target moveit_setup_assistant_tools_autogen
[ 96%] Built target moveit_motion_planning_rviz_plugin
[ 96%] Building CXX object moveit/moveit_setup_assistant/CMakeFiles/moveit_setup_assistant_tools.dir/src/tools/moveit_config_data.cpp.o
/home/jkur/ros_new/src/moveit/moveit_setup_assistant/src/tools/moveit_config_data.cpp: In member function ‘moveit::core::RobotModelConstPtr moveit_setup_assistant::MoveItConfigData::getRobotModel()’:
/home/jkur/ros_new/src/moveit/moveit_setup_assistant/src/tools/moveit_config_data.cpp:89:83: error: no matching function for call to ‘moveit::core::RobotModel::RobotModel(urdf::ModelSharedPtr&, srdf::ModelSharedPtr&)’
     robot_model_.reset(new robot_model::RobotModel(urdf_model_, srdf_->srdf_model_));
                                                                                   ^
In file included from /home/jkur/ros_new/src/moveit/moveit_core/planning_scene/include/moveit/planning_scene/planning_scene.h:40:0,
                 from /home/jkur/ros_new/src/moveit/moveit_setup_assistant/include/moveit/setup_assistant/tools/moveit_config_data.h:44,
                 from /home/jkur/ros_new/src/moveit/moveit_setup_assistant/src/tools/moveit_config_data.cpp:37:
/home/jkur/ros_new/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:71:3: note: candidate: moveit::core::RobotModel::RobotModel(const ModelInterfaceSharedPtr&, const ModelConstSharedPtr&)
   RobotModel(const urdf::ModelInterfaceSharedPtr& urdf_model, const srdf::ModelConstSharedPtr& srdf_model);
   ^~~~~~~~~~
/home/jkur/ros_new/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:71:3: note:   no known conversion for argument 1 from ‘urdf::ModelSharedPtr {aka boost::shared_ptr<urdf::Model>}’ to ‘const ModelInterfaceSharedPtr& {aka const std::shared_ptr<urdf::ModelInterface>&}’
/home/jkur/ros_new/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:67:7: note: candidate: moveit::core::RobotModel::RobotModel(const moveit::core::RobotModel&)
 class RobotModel
       ^~~~~~~~~~
/home/jkur/ros_new/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:67:7: note:   candidate expects 1 argument, 2 provided
/home/jkur/ros_new/src/moveit/moveit_setup_assistant/src/tools/moveit_config_data.cpp: In member function ‘void moveit_setup_assistant::MoveItConfigData::updateRobotModel()’:
/home/jkur/ros_new/src/moveit/moveit_setup_assistant/src/tools/moveit_config_data.cpp:107:81: error: no matching function for call to ‘moveit::core::RobotModel::RobotModel(urdf::ModelSharedPtr&, srdf::ModelSharedPtr&)’
   robot_model_.reset(new robot_model::RobotModel(urdf_model_, srdf_->srdf_model_));
                                                                                 ^
In file included from /home/jkur/ros_new/src/moveit/moveit_core/planning_scene/include/moveit/planning_scene/planning_scene.h:40:0,
                 from /home/jkur/ros_new/src/moveit/moveit_setup_assistant/include/moveit/setup_assistant/tools/moveit_config_data.h:44,
                 from /home/jkur/ros_new/src/moveit/moveit_setup_assistant/src/tools/moveit_config_data.cpp:37:
/home/jkur/ros_new/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:71:3: note: candidate: moveit::core::RobotModel::RobotModel(const ModelInterfaceSharedPtr&, const ModelConstSharedPtr&)
   RobotModel(const urdf::ModelInterfaceSharedPtr& urdf_model, const srdf::ModelConstSharedPtr& srdf_model);
   ^~~~~~~~~~
/home/jkur/ros_new/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:71:3: note:   no known conversion for argument 1 from ‘urdf::ModelSharedPtr {aka boost::shared_ptr<urdf::Model>}’ to ‘const ModelInterfaceSharedPtr& {aka const std::shared_ptr<urdf::ModelInterface>&}’
/home/jkur/ros_new/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:67:7: note: candidate: moveit::core::RobotModel::RobotModel(const moveit::core::RobotModel&)
 class RobotModel
       ^~~~~~~~~~
/home/jkur/ros_new/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:67:7: note:   candidate expects 1 argument, 2 provided
moveit/moveit_setup_assistant/CMakeFiles/moveit_setup_assistant_tools.dir/build.make:75: die Regel für Ziel „moveit/moveit_setup_assistant/CMakeFiles/moveit_setup_assistant_tools.dir/src/tools/moveit_config_data.cpp.o“ scheiterte
make[2]: *** [moveit/moveit_setup_assistant/CMakeFiles/moveit_setup_assistant_tools.dir/src/tools/moveit_config_data.cpp.o] Fehler 1
CMakeFiles/Makefile2:39892: die Regel für Ziel „moveit/moveit_setup_assistant/CMakeFiles/moveit_setup_assistant_tools.dir/all“ scheiterte
make[1]: *** [moveit/moveit_setup_assistant/CMakeFiles/moveit_setup_assistant_tools.dir/all] Fehler 2
Makefile:140: die Regel für Ziel „all“ scheiterte
make: *** [all] Fehler 2
Invoking "make -j8 -l8" failed


This is the problem with the boost::shared_ptr vs. std::shared_ptr

urdf/model.h:65:

typedef boost::shared_ptr<Model> ModelSharedPtr;
typedef boost::shared_ptr<const Model> ModelConstSharedPtr;
typedef boost::weak_ptr<Model> ModelWeakPtr;

I have no idea where the std::shared_ptr comes from.


And here starts the real problem:
in https://github.com/ros/robot_model/tree/kinetic-devel it says that
robot_model is deprecated and the the package is split.

The melodic branch has the repositories still in it (urdf, kdl_parser, etc) and
even better it has a urdf_compatibility.h.in which looks very much like a fix
for the moveit compile problem. But i have no idea, what to do next.
The urdf version in the debian ros-robot-model packages does not have this
compatibility header.


By the way https://github.com/ros/urdf uses the melodic-devel as HEAD, so now?

What would actually the way to go here? Is the
package splitted or not? This is the kind of questions where i'm always lost.
Maybe i could fix it in the code, but than every update would be a hassle.



>From what i understand so far, it would be necessary to split the
ros-robot-model debian package and package the other libraries as packages on
their own: collada_urdf, collada_parser, joint_state_publisher, kdl_parser,
kdl_parser_py and urdf but then of course all packages that depend on
ros-robot-model need to be updated too.


So, lots of stuff. Sorry, to put it all into one message. If there are sound
ways to split this all up and solve one problem by another i'm all for it.


I would be glad if i could write bug reports, but right now i didnt't know where
to start.

I joined #debian-science and #debian-robotics. Don't hesitate to contact me
directly. I'm "jkur" for now


Best regards,
   Jörg


Reply to: