ros-interactive-manipulation / pr2_object_manipulation

PR2-specific functionality related to pickup and place tasks.
20 stars 32 forks source link

Dependencies problem --- any support? #61

Open mbforbes opened 10 years ago

mbforbes commented 10 years ago

Hello,

First of all, thanks for writing this great library!

I'm hoping to 1) catkin-ize this 2) hydro-ize this

But the first step is just to get it to build (with rosbuild and groovy), and I'm seeing:

$ rosdep check pr2_object_manipulation
All system dependencies have been satisified
ERROR[pr2_tabletop_manipulation_launch]: resource not found [mongodb]
ERROR[pr2_interactive_manipulation]: resource not found [common_msgs]

mongodb for ROS doesn't seem to be available anywhere (can't find with apt-get and the repository that the wiki points to is unreachable.

As far as common_msgs go, apt-get says it's already there:

$ sudo apt-get install ros-groovy-common-msgs 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ros-groovy-common-msgs is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 181 not upgraded.

I know that this hasn't been worked on in almost a year, but is anyone willing to answer quick questions or update a readme? I'll give a pull request if/when I get a catkin and then hydro branch working.

mbforbes commented 10 years ago

Update: fixed mongodb problem with

$ sudo apt-get install ros-groovy-warehousewg

common_msgs question still stands!

mateiciocarlie commented 10 years ago

Thanks for the interest!

I am however seeing the same problem... It's interesting - after doing apt-get install pr2_object_manipulation I had to apt-get a bunch more packages by hand. I wonder how the build farm succeeds in building this...

Anyways, at some point I also get stuck with common_msgs. When trying to rosbuild pr2_interactive_object_detection, I get the following:

[  7%] Generating ../src/pr2_interactive_object_detection/msg/_UserCommandFeedback.py
Traceback (most recent call last):
  File "/opt/ros/groovy/share/rospy/rosbuild/scripts/genutil.py", line 131, in genmain
    retcode = generate_messages(rospack, package, msg_file, subdir)
  File "/opt/ros/groovy/share/rospy/rosbuild/scripts/genutil.py", line 90, in generate_messages
    for d in rospack.get_depends(package):
  File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 227, in get_depends
    s.update(self.get_depends(p, implicit))
  File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 227, in get_depends
    s.update(self.get_depends(p, implicit))
  File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 227, in get_depends
    s.update(self.get_depends(p, implicit))
  File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 227, in get_depends
    s.update(self.get_depends(p, implicit))
  File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 221, in get_depends
    names = [p.name for p in self.get_manifest(name).depends]
  File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 159, in get_manifest
    return self._load_manifest(name)
  File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 198, in _load_manifest
    retval = self._manifests[name] = parse_manifest_file(self.get_path(name), self._manifest_name)
  File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 190, in get_path
    raise ResourceNotFound(name, ros_paths=self._ros_paths)
ResourceNotFound: common_msgs
ROS path [0]=/opt/ros/groovy/share/ros
ROS path [1]=/home/matei/sandbox/pr2_manipulation
ROS path [2]=/opt/ros/groovy/share
ROS path [3]=/opt/ros/groovy/stacks
ERROR: common_msgs
ROS path [0]=/opt/ros/groovy/share/ros
ROS path [1]=/home/matei/sandbox/pr2_manipulation
ROS path [2]=/opt/ros/groovy/share
ROS path [3]=/opt/ros/groovy/stacks
make[3]: *** [../src/pr2_interactive_object_detection/msg/_UserCommandFeedback.py] Error 3

It is fairly strange, as I do have common-msgs installed. If I put an explicit dependency on it manifest.xml, I get the good old:

[rospack] Error: package/stack 'pr2_interactive_object_detection' depends on non-existent package 'common_msgs' and rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling 'rosdep update'

What am I missing? Haven't done rosbuild in a while, maybe it's something obvious :)

@wjwwood, @dirk-thomas - any thoughts?

wjwwood commented 10 years ago

Did you source the /opt/ros/groovy/setup.bash? Do you have common_msgs from groovy installed, i.e. ros-groovy-common-msgs and not ros-hydro-common-msgs?

Have you done sudo rosdep init and rosdep update?

mbforbes commented 10 years ago

Thanks so much for the reply! (I also asked this a few minutes before you posted on ROS answers, so we'll see if there are any takers...) I'm not sure if it's comforting or not that you have the same problem :-)

@wjwwood regrettably my answer is yes to all questions; roscd common_msgs takes me to /opt/ros/groovy/share/common_msgs, which contains just a lonely package.xml file.

mateiciocarlie commented 10 years ago

@wjwwood - thanks for pitching in!

My answer is also yes to all your questions...

wjwwood commented 10 years ago

Oh, common_msgs is actually a metapackage (formerly a stack), and a package cannot depend on a stack nor a metapackage. Therefore, I think pr2_interactive_object_detection should not depend on common_msgs, but instead on one or more of the packages in common_msgs:

http://wiki.ros.org/common_msgs

mateiciocarlie commented 10 years ago

Oh - it does not explicitly depend on it (I just tried adding that to see if it fixes the problem). In fact, the only mention of common_msgs in the entire stack is actually in stack.xml:

matei@lga:~/sandbox/pr2_manipulation$ grep -r common_msgs .
./pr2_object_manipulation/stack.xml:  <depend stack="common_msgs" /> <!-- nav_msgs, stereo_msgs, actionlib_msgs, trajectory_msgs, sensor_msgs, geometry_msgs, visualization_msgs, diagnostic_msgs -->
wjwwood commented 10 years ago

I dunno the problem seems to be during compile time which is weird, I think we need the value of package from line in the tracebacks:

File "/opt/ros/groovy/share/rospy/rosbuild/scripts/genutil.py", line 90, in generate_messages
    for d in rospack.get_depends(package):

What ever package was set to when the exception occurred is the probably the issue. I think this may be bubbling up from dynamic reconfigure generation, but I don't know.

dirk-thomas commented 10 years ago

I checkout this repo (1ab5d0f131a891d1ee84b0d460bd1ca9d962453c) and installed all dependencies (rosdep check ouputting only All system dependencies have been satisified).

The following rosmake pr2_object_manipulation failed with the following plain compile errors:

/opt/ros/groovy/include/geometric_shapes/bodies.h:159:16: note:   no known conversion for argument 1 from ‘tf::Vector3’ to ‘const Vector3d& {aka const Eigen::Matrix<double, 3, 1>&}’
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp: In member function ‘int robot_self_filter_color::SelfMask::getMaskContainment(const tf::Vector3&) const’:
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:441:42: error: no matching function for call to ‘bodies::Body::containsPoint(const tf::Vector3&)’
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:441:42: note: candidates are:
In file included from /tmp/pr2_object_manipulation/perception/robot_self_filter_color/include/robot_self_filter_color/self_mask_color.h:34:0,
                 from /tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:30:
/opt/ros/groovy/include/geometric_shapes/bodies.h:152:8: note: bool bodies::Body::containsPoint(double, double, double, bool) const
/opt/ros/groovy/include/geometric_shapes/bodies.h:152:8: note:   candidate expects 4 arguments, 1 provided
/opt/ros/groovy/include/geometric_shapes/bodies.h:159:16: note: virtual bool bodies::Body::containsPoint(const Vector3d&, bool) const
/opt/ros/groovy/include/geometric_shapes/bodies.h:159:16: note:   no known conversion for argument 1 from ‘const tf::Vector3’ to ‘const Vector3d& {aka const Eigen::Matrix<double, 3, 1>&}’
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp: In member function ‘int robot_self_filter_color::SelfMask::getMaskIntersection(const tf::Vector3&, const boost::function<void(const tf::Vector3&)>&) const’:
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:459:50: error: no matching function for call to ‘bodies::Body::containsPoint(const tf::Vector3&)’
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:459:50: note: candidates are:
In file included from /tmp/pr2_object_manipulation/perception/robot_self_filter_color/include/robot_self_filter_color/self_mask_color.h:34:0,
                 from /tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:30:
/opt/ros/groovy/include/geometric_shapes/bodies.h:152:8: note: bool bodies::Body::containsPoint(double, double, double, bool) const
/opt/ros/groovy/include/geometric_shapes/bodies.h:152:8: note:   candidate expects 4 arguments, 1 provided
/opt/ros/groovy/include/geometric_shapes/bodies.h:159:16: note: virtual bool bodies::Body::containsPoint(const Vector3d&, bool) const
/opt/ros/groovy/include/geometric_shapes/bodies.h:159:16: note:   no known conversion for argument 1 from ‘const tf::Vector3’ to ‘const Vector3d& {aka const Eigen::Matrix<double, 3, 1>&}’
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:475:70: error: no matching function for call to ‘bodies::Body::intersectsRay(const tf::Vector3&, tf::Vector3&, std::vector<tf::Vector3>*, int)’
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:475:70: note: candidate is:
In file included from /tmp/pr2_object_manipulation/perception/robot_self_filter_color/include/robot_self_filter_color/self_mask_color.h:34:0,
                 from /tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:30:
/opt/ros/groovy/include/geometric_shapes/bodies.h:165:16: note: virtual bool bodies::Body::intersectsRay(const Vector3d&, const Vector3d&, EigenSTL::vector_Vector3d*, unsigned int) const
/opt/ros/groovy/include/geometric_shapes/bodies.h:165:16: note:   no known conversion for argument 1 from ‘const tf::Vector3’ to ‘const Vector3d& {aka const Eigen::Matrix<double, 3, 1>&}’
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:487:48: error: no matching function for call to ‘bodies::Body::containsPoint(const tf::Vector3&)’
/tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:487:48: note: candidates are:
In file included from /tmp/pr2_object_manipulation/perception/robot_self_filter_color/include/robot_self_filter_color/self_mask_color.h:34:0,
                 from /tmp/pr2_object_manipulation/perception/robot_self_filter_color/src/self_mask_color.cpp:30:
/opt/ros/groovy/include/geometric_shapes/bodies.h:152:8: note: bool bodies::Body::containsPoint(double, double, double, bool) const
/opt/ros/groovy/include/geometric_shapes/bodies.h:152:8: note:   candidate expects 4 arguments, 1 provided
/opt/ros/groovy/include/geometric_shapes/bodies.h:159:16: note: virtual bool bodies::Body::containsPoint(const Vector3d&, bool) const
/opt/ros/groovy/include/geometric_shapes/bodies.h:159:16: note:   no known conversion for argument 1 from ‘const tf::Vector3’ to ‘const Vector3d& {aka const Eigen::Matrix<double, 3, 1>&}’
mbforbes commented 10 years ago

Thanks @wjwwood and @dirk-thomas for checking this out.

@dirk-thomas did you also run into the common_msgs problem, and if so, were you able to overcome it merely via apt-get?

I've had two others in my lab try this out as well; one person got as far as I did (common_msgs), while the other didn't have the problem but wound up with the compile errors that @dirk-thomas did.

My thought now is to try to overlay a catkin workspace with a common_msgs groovy-devel build and get pr2_object_manipulation to use that, then tackle the compile errors, but no dice so far (too many versions of build tools, something's wrong). Any additional tips would be greatly appreciated!

KaijenHsiao commented 10 years ago

robot_self_filter_color is just a copy of robot_self_filter with xyz points changed to xyzrgb points, so whatever has changed about robot_self_filter that allows it to compile needs to be done to robot_self_filter_color also. (Check if robot_self_filter compiles first.)

dirk-thomas commented 10 years ago

I did not run into any problem with common_msgs. I had everything installed from Debian packages and only this repo checked out.

mateiciocarlie commented 10 years ago

Is it maybe a problem of what else is installed on the machine?

I have hydro installed as well (although I do start with a clean bash environment every time with). @mbforbes : maybe the folks who managed to compile do not have hydro at all?

The robot_self_filter problem I think is caused by having MoveIt! installed instead of / along with the old arm_navigation.

mbforbes commented 10 years ago

Ah, thank you @mateiciocarlie, after a bit of checking the hydro installation seems likely to be the problem. I also have MoveIt!, so I'd likely get that error as well. I appreciate the help. I'll try these out when I get to a fresh machine.

jstnhuang commented 10 years ago

(I'm Max's labmate). I'm having the same compiler errors as Dirk. If I just try to compile the package I want to modify (pr2_marker_control), there's actually a different error, which is that pr2_marker_control uses the arm_navigation stack, which tries to use shapes::StaticShape, which appears to be in fuerte but not groovy.

Not a big deal, just trying things out :)

pxlong commented 10 years ago

Hi @dirk-thomas, have you already compiled this stack successfully?

If you still got the [error: no matching function for call to ‘bodies::Body::containsPoint(const tf::Vector3&)’], you can try to run "sudo apt-get remove ros-groovy-geometric-shapes", it will fix this problem. I have tried this : )

Hope that can help.

pxlong commented 10 years ago

Hi @mbforbes, @mateiciocarlie and @KaijenHsiao, I would like to help you catkin-ize and hydro-ize this stack.

I have already successfully built (rosmake) it today (Ubuntu 12.04, ROS Groovy, and git-cloned it this morning).

But I don't what to do next if I want to hydro-ize it, so if you can give me some guidance, I will try my best.

Thank you :)

dirk-thomas commented 10 years ago

I only tried the build mentioned above and are not looking into this any further since it boiled down to simple compiler errors and not any dependency related problems.