PlotJuggler icon indicating copy to clipboard operation
PlotJuggler copied to clipboard

PlotJuggler does not build with fast-CDR version 2.x.x

Open manuelValch opened this issue 1 year ago • 1 comments

Problem description

With latest version of fast-CDR: https://github.com/eProsima/Fast-CDR installed on the dev PC plotjuggler does not build. Mainly because eProsima updated API name, namespaces and so on.

As a Sw developer I need to be able to compile plotJuggler with latest Fast-CDR so that I can have the data visualizer plugin from eProsima.

Answer these questions (or I will ignore your issue)

  1. Describe your platform / Operative System and the version of PlotJuggler you are using.
Static hostname: ubuntu-H610M-S2H-DDR4
       Icon name: computer-desktop
         Chassis: desktop
      Machine ID: f15bb09bbaa74f77be0ee3e9db35aca0
         Boot ID: ec841c97061f43a89768b3b36538327f
Operating System: Ubuntu 22.04.3 LTS              
          Kernel: Linux 6.5.0-14-generic
    Architecture: x86-64
 Hardware Vendor: Gigabyte Technology Co., Ltd.
  Hardware Model: H610M S2H DDR4

Version of PlotJuggler is the latest from main (3.8.8), commit hash: 92f7389b0112780cd9282522c1a348d5e54dd5c5 2. Compile and try the latest version in the main branch and check if the problem persists.

Yes it does persist.

/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp: In member function ‘virtual RosMsgParser::Span<const unsigned char> RosMsgParser::FastCDR_Deserializer::deserializeByteSequence()’:
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp:196:21: error: ‘using element_type = class eprosima::fastcdr::Cdr’ {aka ‘class eprosima::fastcdr::Cdr’} has no member named ‘getCurrentPosition’; did you mean ‘get_current_position’?
  196 |   auto* ptr = _cdr->getCurrentPosition();
      |                     ^~~~~~~~~~~~~~~~~~
      |                     get_current_position
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp:202:61: error: could not convert ‘{<expression error>, seqLength}’ from ‘<brace-enclosed initializer list>’ to ‘RosMsgParser::Span<const unsigned char>’ {aka ‘nonstd::span_lite::span<const unsigned char, 18446744073709551615>’}
  202 |   return { reinterpret_cast<const uint8_t*>(ptr), seqLength };
      |                                                             ^
      |                                                             |
      |                                                             <brace-enclosed initializer list>
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp: In member function ‘virtual const uint8_t* RosMsgParser::FastCDR_Deserializer::getCurrentPtr() const’:
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp:207:49: error: ‘using element_type = class eprosima::fastcdr::Cdr’ {aka ‘class eprosima::fastcdr::Cdr’} has no member named ‘getBufferPointer’; did you mean ‘get_buffer_pointer’?
  207 |   return reinterpret_cast<const uint8_t*>(_cdr->getBufferPointer());
      |                                                 ^~~~~~~~~~~~~~~~
      |                                                 get_buffer_pointer
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp: In member function ‘virtual void RosMsgParser::FastCDR_Deserializer::reset()’:
/home/zorglub/plotjuggler_ws/src/PlotJuggler/plotjuggler_plugins/ParserROS/rosx_introspection/src/deserializer.cpp:222:72: error: ‘DDS_CDR’ is not a member of ‘eprosima::fastcdr::Cdr’
  222 |   _cdr = std::make_shared<Cdr>(*_cdr_buffer, Cdr::DEFAULT_ENDIAN, Cdr::DDS_CDR);
      |                                                                        ^~~~~~~

  1. Check if the problem can be reproduced using the dummy data created by the command line argument "-t" or one of the files in the folder "datasamples".

Would say this is not applicable.

  1. If it can't be reproduced with the dummy data, please share the CSV file or the rosbag that can be used to reproduce the problem.

Not applicable, though will test fast-DDS visualizer plugin with the demo example from eProsima

Note that I would like to contribute to the repo to help solve this issue.

manuelValch avatar Jan 21 '24 11:01 manuelValch

Your PR fixed it for the latest version, but it is broken for the current on.

Unless it is fixed, I can not add your changes

facontidavide avatar Jan 26 '24 15:01 facontidavide