vmatos / rosserial

A ROS client library for small, embedded devices, such as Arduino. See: http://wiki.ros.org/rosserial
0 stars 0 forks source link

Generated message headers are not included #2

Open vmatos opened 8 years ago

vmatos commented 8 years ago

Message headers on devel/include/rosserial_tivac_tutorials/ are not being included. Possibly related to issue: #1

vmatos commented 8 years ago

Actually in my Ubuntu14.04+Jade + jade-devel, message headers are included from: build/rosserial_tivac_tutorials/ros_lib/rosserial_tivac_tutorials/<msgheader>.

Todo: Check if in Kinetic the generated headers are copied there.

vmatos commented 8 years ago
Exporting rosserial_tivac_tutorials

  Messages:
    Buttons,[rosserial_tivac_tutorials]: Unable to build messages: 'NoneType' object has no attribute '_md5sum'

Traceback (most recent call last):
  File "/home/vmatos/ros/rosserial_ws/install/lib/python2.7/dist-packages/rosserial_client/make_library.py", line 578, in rosserial_generate
    MakeLibrary(p, path, rospack)
  File "/home/vmatos/ros/rosserial_ws/install/lib/python2.7/dist-packages/rosserial_client/make_library.py", line 510, in MakeLibrary
    md5sum = roslib.message.get_message_class(package+'/'+f[0:-4])._md5sum
AttributeError: 'NoneType' object has no attribute '_md5sum
vmatos commented 8 years ago

roslib.message.get_message_class(package+'/'+f[0:-4]) returns None

vmatos commented 8 years ago

When I source devel of the package which contains my msg definition, it works. On Jade was not needed.

vmatos commented 8 years ago

On Jade, the message class is found here:

def get_message_class(message_type, reload_on_error=False):
(...)
    # try w/o bootstrapping
    cls = genpy.message.get_message_class(message_type, reload_on_error=reload_on_error)
(...)
    return cls
vmatos commented 8 years ago

Example: Package rosserial_tivac_tutorials contains custom messages, and a rosserial_client project. The project depends on the custom messages contained on the package.

On Jade, with cmake 2.8 on Ubuntu 14.04:

  1. Target _rosserial_tivac_tutorials_generate_messages_check_deps_ColorRGBA is built
  2. Target _rosserial_tivac_tutorials_generate_messages_check_deps_Buttons is built.
  3. Targets <deps+rosserial_tiva_c>_generate_messages_py/cpp/lisp/eus are built.
  4. At this point all message definitions are present on devel folder.
  5. Target rosserial_tivac_tutorials_ros_lib is then built. On this target, a rosserial_clientpython script is run, on make_library.MakeLibrary(), on roslib.message.get_message_class(package+'/'+f[0:-4]), the custom messages are found by genpy through roslib.
  6. Then the firmware project is built rosserial_tivac_tutorials_buttons
  7. Success!

On Kinetic, with cmake 3.5.1 on Ubuntu 16.04:

  1. Target _rosserial_tivac_tutorials_generate_messages_check_deps_ColorRGBA is built
  2. Target _rosserial_tivac_tutorials_generate_messages_check_deps_Buttons is built.
  3. Targets <deps+rosserial_tiva_c>_generate_messages_py/cpp/lisp/eus are built.
  4. At this point all message definitions are present on devel folder.
  5. Target rosserial_tivac_tutorials_ros_lib fails! Custom messages are not found by the script on rosserial_client, on make_library.MakeLibrary(). The error is described in the previous comments.