Skip to content

Conversation

@MiguelCompany
Copy link
Contributor

This is part of a PoC towards achieving the goals of ros2/rclcpp#2201

  • On rosidl_runtime_cpp, a new class has been added that behaves as a bounded string but can be considered POD by the underlying middleware.
  • On rosidl_generator_cpp, processing of a new cdr_plain annotation has been introduced, so string members with that annotation will be generated using the new class.
  • On rosidl_adapter, strings can be annotated with this new annotation depending on the contents of a YAML file specified in the environment variable ROS2_TYPE_FIXED_SIZE_FILE.

@narol1024
Copy link

narol1024 commented Oct 21, 2024

This PR code migrated into the Humble version, but it encountered this error. I’m not sure if it’s an issue with my environment.

In file included from /root/ros_ws/build_arm/build/xbrain_shm_msgs/rosidl_typesupport_fastrtps_cpp/xbrain_shm_msgs/msg/detail/fixed_strings__rosidl_typesupport_fastrtps_cpp.hpp:25,
                 from /root/ros_ws/build_arm/build/xbrain_shm_msgs/rosidl_typesupport_fastrtps_cpp/xbrain_shm_msgs/msg/detail/dds_fastrtps/fixed_strings__type_support.cpp:4:
/cross_compile/arm/opt/ros/humble/include/fastcdr/fastcdr/Cdr.h: In instantiation of ‘eprosima::fastcdr::Cdr& eprosima::fastcdr::Cdr::serializeArray(const _T*, size_t) [with _T = rosidl_runtime_cpp::CDRCompatibleFixedCapacityString<16>; size_t = long unsigned int]’:
/cross_compile/arm/opt/ros/humble/include/fastcdr/fastcdr/Cdr.h:1257:30:   required from ‘eprosima::fastcdr::Cdr& eprosima::fastcdr::Cdr::serialize(const std::array<_Tp, _Nm>&) [with _T = rosidl_runtime_cpp::CDRCompatibleFixedCapacityString<16>; long unsigned int _Size = 10]’
/cross_compile/arm/opt/ros/humble/include/fastcdr/fastcdr/Cdr.h:502:36:   required from ‘eprosima::fastcdr::Cdr& eprosima::fastcdr::Cdr::operator<<(const std::array<_Tp, _Nm>&) [with _T = rosidl_runtime_cpp::CDRCompatibleFixedCapacityString<16>; long unsigned int _Size = 10]’
/root/ros_ws/build_arm/build/xbrain_shm_msgs/rosidl_typesupport_fastrtps_cpp/xbrain_shm_msgs/msg/detail/dds_fastrtps/fixed_strings__type_support.cpp:38:24:   required from here
/cross_compile/arm/opt/ros/humble/include/fastcdr/fastcdr/Cdr.h:1932:27: error: ‘const class rosidl_runtime_cpp::CDRCompatibleFixedCapacityString<16>’ has no member named ‘serialize’
 1932 |             type_t[count].serialize(*this);
      |             ~~~~~~~~~~~~~~^~~~~~~~~
/cross_compile/arm/opt/ros/humble/include/fastcdr/fastcdr/Cdr.h: In instantiation of ‘eprosima::fastcdr::Cdr& eprosima::fastcdr::Cdr::deserializeArray(_T*, size_t) [with _T = rosidl_runtime_cpp::CDRCompatibleFixedCapacityString<16>; size_t = long unsigned int]’:
/cross_compile/arm/opt/ros/humble/include/fastcdr/fastcdr/Cdr.h:2528:32:   required from ‘eprosima::fastcdr::Cdr& eprosima::fastcdr::Cdr::deserialize(std::array<_Tp, _Nm>&) [with _T = rosidl_runtime_cpp::CDRCompatibleFixedCapacityString<16>; long unsigned int _Size = 10]’
/cross_compile/arm/opt/ros/humble/include/fastcdr/fastcdr/Cdr.h:767:38:   required from ‘eprosima::fastcdr::Cdr& eprosima::fastcdr::Cdr::operator>>(std::array<_Tp, _Nm>&) [with _T = rosidl_runtime_cpp::CDRCompatibleFixedCapacityString<16>; long unsigned int _Size = 10]’
/root/ros_ws/build_arm/build/xbrain_shm_msgs/rosidl_typesupport_fastrtps_cpp/xbrain_shm_msgs/msg/detail/dds_fastrtps/fixed_strings__type_support.cpp:51:24:   required from here
/cross_compile/arm/opt/ros/humble/include/fastcdr/fastcdr/Cdr.h:3219:27: error: ‘class rosidl_runtime_cpp::CDRCompatibleFixedCapacityString<16>’ has no member named ‘deserialize’
 3219 |             type_t[count].deserialize(*this);
      |             ~~~~~~~~~~~~~~^~~~~~~~~~~
gmake[2]: *** [CMakeFiles/xbrain_shm_msgs__rosidl_typesupport_fastrtps_cpp.dir/build.make:93: CMakeFiles/xbrain_shm_msgs__rosidl_typesupport_fastrtps_cpp.dir/rosidl_typesupport_fastrtps_cpp/xbrain_shm_msgs/msg/detail/dds_fastrtps/fixed_strings__type_support.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:291: CMakeFiles/xbrain_shm_msgs__rosidl_typesupport_fastrtps_cpp.dir/all] Error 2

@MiguelCompany
Copy link
Contributor Author

@narol1024 Bear in mind that this is a draft PR over rolling, so it might depend on changes in Fast CDR that are not present in Humble

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants