PlotJuggler
PlotJuggler copied to clipboard
PlotJuggler does not build with fast-CDR version 2.x.x
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)
- 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);
| ^~~~~~~
- 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.
- 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.
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