catkin package cannot find own message type (python)
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
UPDATE ...
Was it built successfully? Your Python message file should be in your workspace at: devel/lib/python2.7/dist-packages/skeleton_markers/msg/_Skeleton.py
Yes, the package builds successfully and the msg file you refer to does exist in the correct location.