Ask Your Question
0

catkin package cannot find its own message type (python) [closed]

asked 2013-12-29 04:35:22 -0500

Pi Robot gravatar image

updated 2013-12-29 04:48:13 -0500

Hello,

I have a package called skeleton_markers that I am in the process of converting from rosbuild to catkin. The package builds fine and I remembered to do a 'source devel/setup.bash' after compiling. But when I try to run a Python node (in the same package) that imports a message type defined in my package, I get the error:

Traceback (most recent call last):
  File "/home/patrick/catkin_ws/src/skeleton_markers/nodes/skeleton_markers.py", line 24, in <module>
    from skeleton_markers.msg import Skeleton
  File "/home/patrick/Dropbox/Robotics/catkin_ws/src/skeleton_markers/nodes/skeleton_markers.py", line 24, in <module>
    from skeleton_markers.msg import Skeleton
ImportError: No module named msg

When I run rosmsg on the message type, I get back the correct response:

$ rosmsg show skeleton_markers/Skeleton std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
int32 user_id
string[] name
float32[] confidence
geometry_msgs/Vector3[] position
  float64 x
  float64 y
  float64 z
geometry_msgs/Quaternion[] orientation
  float64 x
  float64 y
  float64 z
  float64 w

So I'm guessing I'm missing a key ingredient that allows a Python node to import my message type. Here are my package.xml and CMakeLists.txt files. The Python node I am trying to run is skeleton_markers.py.

My package.xml file:

<package>
  <name>skeleton_markers</name>
  <version>0.4.0</version>
  <description>
   Skeleton Markers: Publish a list of joint markers 
   for viewing in RViz.
  </description>

  <maintainer <a href="mailto:email="patrick@pirobot.org">Patrick">email="patrick@pirobot.org">Patrick</a> Goebel</maintainer>
  <license>BSD</license>
  <url type="website">http://ros.org/wiki/skeleton_markers</url>
  <url type="https://github.com/pirobot/skeleton_markers/issues"></url>
  <author <a href="mailto:email="patrick@pirobot.org">Patrick">email="patrick@pirobot.org">Patrick</a> Goebel</author>

  <buildtool_depend>catkin</buildtool_depend>

  <build_depend>libopenni-dev</build_depend>
  <build_depend>libopenni-nite-dev</build_depend>
  <build_depend>libopenni-sensor-primesense-dev</build_depend>
  <build_depend>geometry_msgs</build_depend>
  <build_depend>tf</build_depend>
  <build_depend>orocos_kdl</build_depend>
  <build_depend>message_generation</build_depend>
  <build_depend>visualization_msgs</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_depend>geometry_msgs</build_depend>
  <build_depend>openni_camera</build_depend>
  <build_depend>openni_tracker</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>roscpp</build_depend>

  <run_depend>libopenni-dev</run_depend>
  <run_depend>libopenni-nite-dev</run_depend>
  <run_depend>libopenni-sensor-primesense-dev</run_depend>
  <run_depend>geometry_msgs</run_depend>
  <run_depend>orocos_kdl</run_depend>
  <run_depend>message_runtime</run_depend>
  <run_depend>visualization_msgs</run_depend>
  <run_depend>std_msgs</run_depend>
  <run_depend>geometry_msgs</run_depend>
  <run_depend>tf</run_depend>
  <run_depend>openni_camera</run_depend>
  <run_depend>openni_tracker</run_depend>
  <run_depend>rospy</run_depend>
  <run_depend>roscpp</run_depend>

</package>

My CMakeLists.txt file:

cmake_minimum_required(VERSION 2.8.3)
project(skeleton_markers)

find_package(orocos_kdl REQUIRED)
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  tf
  geometry_msgs
  message_generation)

# Find OpenNI
find_package(PkgConfig)
pkg_check_modules(OpenNI REQUIRED libopenni)

# Find Nite
find_path(Nite_INCLUDEDIR
          NAMES XnVNite.h
          HINTS /usr/include/nite /usr/local/include/nite)
find_library(Nite_LIBRARY
             NAMES XnVNite_1_3_1
             HINTS /usr/lib /usr/local/lib
             PATH_SUFFIXES lib) 

link_directories(
  ${catkin_LIBRARY_DIRS}
  ${Boost_LIBRARY_DIRS}
  ${orocos_kdl_LIBRARY_DIRS}
  ${OpenNI_LIBRARIES}
  ${Nite_LIBRARY}
)

include_directories(${catkin_INCLUDEDIR}
                    ${OpenNI_INCLUDEDIR}
                    ${Nite_INCLUDEDIR}
                    ${orocos_kdl_INCLUDE_DIRS})

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

add_message_files (
  FILES
  Skeleton.msg
)

generate_messages(
  DEPENDENCIES geometry_msgs std_msgs
)

catkin_package(
    DEPENDS rospy roscpp visualization_msgs std_msgs geometry_msgs
    openni_camera openni_tracker tf
    CATKIN-DEPENDS message_runtime
    INCLUDE_DIRS # TODO
    LIBRARIES # TODO
)

add_executable(skeleton_tracker
  src/skeleton_tracker.cpp
  src/KinectController.cpp
  src/KinectDisplay.cpp)

target_link_libraries(skeleton_tracker
  glut
  ${catkin_LIBRARIES}
  ${OpenNI_LIBRARIES}
  ${Nite_LIBRARY}
  ${orocos_kdl_LIBRARIES})

install(TARGETS skeleton_tracker RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

Thanks!
patrick

edit retag flag offensive reopen merge delete

Closed for the following reason duplicate question by Pi Robot
close date 2014-01-02 06:03:49

1 Answer

Sort by ยป oldest newest most voted
0

answered 2014-01-01 10:57:00 -0500

Chengarda gravatar image

When you are importing, Python is looking for, but not finding a folder called msg, which has to be in the exact spot it expects, which is (I think):

"/home/patrick/Dropbox/Robotics/catkin_ws/src/skeleton_markers/msg"

If you have put your msg folder inside your 'nodes' folder, it might not find it. You could move the folder, or change the import to from skeleton_markers.nodes.msg

edit flag offensive delete link more

Comments

Thanks @Chengarda. I'm not sure how this question got re-posted since it was already answered here (http://answers.ros.org/question/113671/catkin-package-cannot-find-own-message-type-python/). So I will close this copy.

Pi Robot gravatar imagePi Robot ( 2014-01-02 06:03:44 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2013-12-29 04:35:22 -0500

Seen: 303 times

Last updated: Jan 01 '14