moveit / moveit_robots

MoveIt! configurations for different robots
48 stars 77 forks source link

apt error "trying to overwrite '/opt/ros/indigo/include/ikfast.h', which is also in package ros-indigo-baxter-ikfast-right" #37

Closed 130s closed 9 years ago

130s commented 9 years ago

Installing baxter_moveit_config deb fails since its dependency baxter-ikfast-{left, right}-arm-plugin both tries to install /opt/ros/indigo/include/ikfast.h and apt seems to not be able to handle it.

$ sudo apt-get install ros-indigo-baxter-ikfast-right-arm-plugin 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  ros-indigo-baxter-ikfast-right-arm-plugin
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/299 kB of archives.
After this operation, 1,359 kB of additional disk space will be used.
(Reading database ... 550155 files and directories currently installed.)
Preparing to unpack .../ros-indigo-baxter-ikfast-right-arm-plugin_1.0.2-0trusty-20150922-1144-+0000_amd64.deb ...
Unpacking ros-indigo-baxter-ikfast-right-arm-plugin (1.0.2-0trusty-20150922-1144-+0000) ...
Setting up ros-indigo-baxter-ikfast-right-arm-plugin (1.0.2-0trusty-20150922-1144-+0000) ...
$ sudo apt-get install ros-indigo-baxter-ikfast-left-arm-plugin 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  ros-indigo-baxter-ikfast-left-arm-plugin
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/299 kB of archives.
After this operation, 1,359 kB of additional disk space will be used.
Selecting previously unselected package ros-indigo-baxter-ikfast-left-arm-plugin.
(Reading database ... 550166 files and directories currently installed.)
Preparing to unpack .../ros-indigo-baxter-ikfast-left-arm-plugin_1.0.2-0trusty-20150922-1144-+0000_amd64.deb ...
Unpacking ros-indigo-baxter-ikfast-left-arm-plugin (1.0.2-0trusty-20150922-1144-+0000) ...
dpkg: error processing archive /var/cache/apt/archives/ros-indigo-baxter-ikfast-left-arm-plugin_1.0.2-0trusty-20150922-1144-+0000_amd64.deb (--unpack):
 trying to overwrite '/opt/ros/indigo/include/ikfast.h', which is also in package ros-indigo-baxter-ikfast-right-arm-plugin 1.0.2-0trusty-20150922-1144-+0000
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/ros-indigo-baxter-ikfast-left-arm-plugin_1.0.2-0trusty-20150922-1144-+0000_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

With catkin_make install, this isn't an issue since I assume either package just overwrites the .h file that's installed by the other?

I don't know what's the best solution for this. Apparently we can extract the shared portion as a common package but that may sound a bit overkill.

130s commented 9 years ago

@rethink-imcmahon any ideas how to solve this?

rethink-imcmahon commented 9 years ago

Yep, this looks like a header name collision issue. The two ikfast.h header files are identical (and copied from openrave itself). We can either

or

What would you consider to be more desirable/cleaner?

k-okada commented 9 years ago

I think we should put ikfast.h to the package local include directories, /opt/ros/indigo/baxter_ikfast_left_arm_plugin. I'm also afraid this could happens in all other ikfast plugin debs.

◉ Kei Okada

On Fri, Oct 16, 2015 at 4:59 AM, Ian McMahon notifications@github.com wrote:

Yep, this looks like a namespace collision issue. The two ikfast.h header files are identical (and copied from openrave itself). We can either

  • rename both of the header files to be unique

or

  • create another package, baxter_ikfast, which only has an include directory with ikfast.h inside of it and have the left and right arm packages depend on this new package for their headers

What would you consider to be more desirable/cleaner?

— Reply to this email directly or view it on GitHub https://github.com/ros-planning/moveit_robots/issues/37#issuecomment-148504376 .

rethink-imcmahon commented 9 years ago

Great point @k-okada. That seems like the cleanest solution, and could be applied to all ikfast packages.

k-okada commented 9 years ago

we may have to manually change _solve.cpp file because that is auto generated by opnerave program. http://wiki.ros.org/Industrial/Tutorials/Create_a_Fast_IK_Solution/moveit_plugin

rethink-imcmahon commented 9 years ago

Oh, yes. change_solve.cpp will need to be changed. I think moving the ikfast.h location works as a solution for the baxter and nextage packages, but if anyone wants to create a custom IKFast, they will need to move the files / edit the resulting cpp by hand.

k-okada commented 9 years ago

I'm not sure who to ask but we may better to change tutorials at http://wiki.ros.org/Industrial/Tutorials/Create_a_Fast_IK_Solution/moveit_plugin . And also I'm not sure if https://github.com/ros-planning/moveit_ikfast/blob/jade-devel/scripts/create_ikfast_moveit_plugin.py is related to the ros-i tutorials but this package seems to use file like 'include/ikfast.h' ( https://github.com/ros-planning/moveit_ikfast/blob/jade-devel/scripts/create_ikfast_moveit_plugin.py#L203) and it may better to fix this.

◉ Kei Okada

On Tue, Nov 3, 2015 at 1:13 AM, Isaac I.Y. Saito notifications@github.com wrote:

Closed #37 https://github.com/ros-planning/moveit_robots/issues/37 via

38 https://github.com/ros-planning/moveit_robots/pull/38.

— Reply to this email directly or view it on GitHub https://github.com/ros-planning/moveit_robots/issues/37#event-452144559.

130s commented 9 years ago

Fyi @shaun-edwards @gavanderhoorn the last comment about ROS-I tutorial. I tried to update the wiki but wasn't sure if I should make a change there.

shaun-edwards commented 9 years ago

@130s, the comment at the top of the wiki says that the MoveIt tutorial should be used instead. I updated the link to the new tutorials location, here. I would recommend making the changes to the moveit wiki (and perhaps the Industrial wiki should redirect there automatically in order to avoid confusion). @gavanderhoorn, thoughts?

gavanderhoorn commented 9 years ago

Bit late, but still.

In recent moveit_ikfast generated pkgs, we don't actually install that header (see CMakeLists.txt, removed in ros-planning/moveit_ikfast#19), as the typical use case is for those packages to provide a MoveIt IKFast plugin that just gets loaded via pluginlib et al.

That being said, if there is a desire to actually install it, I would agree with @k-okada and install it in an include dir relative to the providing package (in this case include/baxter_ikfast_left_arm_plugin). That would automatically namespace things and would seem to avoid the issue reported here. It would of course need an update to the generated .cpp as well.

Installing things without namespacing into the global include dir is never a good idea (as is done now in baxter/baxter_ikfast_left_arm_plugin/CMakeLists.txt).