Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ars548): updated the driver according to new documentation #253

Merged
merged 21 commits into from
Feb 18, 2025

Conversation

knzo25
Copy link
Collaborator

@knzo25 knzo25 commented Jan 20, 2025

PR Type

  • Improvement

Related Links

Description

  • Added a frequency check on the input signals
  • Refactored radar configuration

Review Procedure

Remarks

Pre-Review Checklist for the PR Author

PR Author should check the checkboxes below when creating the PR.

  • Assign PR to reviewer

Checklist for the PR Reviewer

Reviewers should check the checkboxes below before approval.

  • Commits are properly organized and messages are according to the guideline
  • (Optional) Unit tests have been written for new behavior
  • PR title describes the changes

Post-Review Checklist for the PR Author

PR Author should check the checkboxes below before merging.

  • All open points are addressed and tracked via issues or tickets

CI Checks

  • Build and test for PR: Required to pass before the merge.

Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
@knzo25 knzo25 requested a review from mojomex January 20, 2025 07:23
@knzo25 knzo25 self-assigned this Jan 20, 2025
@knzo25 knzo25 marked this pull request as draft January 20, 2025 07:24
@knzo25
Copy link
Collaborator Author

knzo25 commented Jan 20, 2025

Will open the PR once I confirm it works on the bench (need to delete some prints as well)

Copy link

codecov bot commented Jan 20, 2025

Codecov Report

Attention: Patch coverage is 0% with 64 lines in your changes missing coverage. Please review.

Project coverage is 28.75%. Comparing base (c4e9dd9) to head (bec4751).
Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
...nental/continental_ars548_hw_interface_wrapper.cpp 0.00% 33 Missing ⚠️
..._hw_interfaces/continental_ars548_hw_interface.cpp 0.00% 14 Missing ⚠️
..._common/include/nebula_common/util/ring_buffer.hpp 0.00% 9 Missing ⚠️
...common/include/nebula_common/util/rate_checker.hpp 0.00% 7 Missing ⚠️
...ontinental/decoders/continental_ars548_decoder.cpp 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #253      +/-   ##
==========================================
- Coverage   28.89%   28.75%   -0.15%     
==========================================
  Files         105      107       +2     
  Lines        9465     9512      +47     
  Branches     3114     3126      +12     
==========================================
  Hits         2735     2735              
- Misses       6240     6287      +47     
  Partials      490      490              
Flag Coverage Δ
differential 28.75% <0.00%> (?)
total ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
@knzo25 knzo25 marked this pull request as ready for review January 21, 2025 10:00
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Copy link
Collaborator

@mojomex mojomex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the PR!
Functionality looks good (I still have to test it with real HW), I just have a few style-related comments 🙏

@mojomex
Copy link
Collaborator

mojomex commented Feb 4, 2025

@knzo25 Friendly ping -- this TIER IV INTERNAL discussion reminded me of this PR.

Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
@knzo25 knzo25 requested a review from mojomex February 10, 2025 10:59
@knzo25
Copy link
Collaborator Author

knzo25 commented Feb 10, 2025

@mojomex
Sorry for the delay 🙇

Copy link
Collaborator

@mojomex mojomex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the implemented changes!

I have a few more readability-related requests and one related to the behavior on startup (possible rate spike for the first 99 input messages).

Please have a look when you find the time 🙇

Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
@knzo25 knzo25 requested a review from mojomex February 12, 2025 09:39
Copy link
Collaborator

@mojomex mojomex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks mostly good to me, I found one edge case (no real sensor tests yet 🙇, trying to get that done by wednesday night):

When testing wIth no sensor connected and

ros2 launch nebula_ros nebula_launch.py sensor_model:=ARS548 odometry_topic:=/localization/twist_estimator/twist_with_covariance acceleration_topic:=/localization/acceleration steering_angle_topic:=/vehicle/status/steering_status_scalar

# [...]
# [...] Current acceleration rate is 50.04 Hz. The sensor requires a rate in the range of 10Hz to 50Hz

I'm getting a segfault here:

bool UdpSocket::isOpen() const
{
  return m_udp_socket.is_open();
  //     ^ nullptr
}

with this stack trace:

libboost_udp_driver.so!drivers::udp_driver::UdpSocket::isOpen(const drivers::udp_driver::UdpSocket * const this) (/home/maxschmeller/nebula/transport_drivers/udp_driver/src/udp_socket.cpp:250)
libnebula_hw_interfaces_continental.so!nebula::drivers::continental_ars548::ContinentalARS548HwInterface::set_acceleration_lateral_cog(nebula::drivers::continental_ars548::ContinentalARS548HwInterface * const this, float lateral_acceleration) (/usr/include/c++/11/bits/shared_ptr_base.h:1295)
libcontinental_ars548_ros_wrapper.so!nebula::ros::ContinentalARS548HwInterfaceWrapper::acceleration_callback(nebula::ros::ContinentalARS548HwInterfaceWrapper * const this, const geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >::SharedPtr msg) (/usr/include/c++/11/bits/shared_ptr_base.h:1295)
libcontinental_ars548_ros_wrapper.so!std::__invoke_impl<void, void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*&)(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >), nebula::ros::ContinentalARS548HwInterfaceWrapper*&, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >( __f,  __t) (/usr/include/c++/11/bits/invoke.h:74)
libcontinental_ars548_ros_wrapper.so!std::__invoke<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*&)(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >), nebula::ros::ContinentalARS548HwInterfaceWrapper*&, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >( __fn) (/usr/include/c++/11/bits/invoke.h:96)
libcontinental_ars548_ros_wrapper.so!std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>::__call<void, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >&&, 0ul, 1ul>(std::tuple<std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >&&>&&, std::_Index_tuple<0ul, 1ul>)(std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)> * const this) (/usr/include/c++/11/functional:420)
libcontinental_ars548_ros_wrapper.so!std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>::operator()<std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, void>(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >&&)(std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)> * const this) (/usr/include/c++/11/functional:503)
libcontinental_ars548_ros_wrapper.so!std::__invoke_impl<void, std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >(std::__invoke_other, std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >&&)( __f) (/usr/include/c++/11/bits/invoke.h:61)
libcontinental_ars548_ros_wrapper.so!std::__invoke_r<void, std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >(std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >&&)( __fn) (/usr/include/c++/11/bits/invoke.h:111)
libcontinental_ars548_ros_wrapper.so!std::_Function_handler<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >), std::_Bind<void (nebula::ros::ContinentalARS548HwInterfaceWrapper::*(nebula::ros::ContinentalARS548HwInterfaceWrapper*, std::_Placeholder<1>))(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)> >::_M_invoke(std::_Any_data const&, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >&&)( __functor,  __args#0) (/usr/include/c++/11/bits/std_function.h:290)
libcontinental_ars548_ros_wrapper.so!std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>::operator()(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >) const( __args#0) (/usr/include/c++/11/bits/std_function.h:590)
libcontinental_ars548_ros_wrapper.so!rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}::operator()<std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&>(std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&) const(const struct {...} * const __closure) (/opt/ros/humble/include/rclcpp/rclcpp/any_subscription_callback.hpp:556)
libcontinental_ars548_ros_wrapper.so!std::__invoke_impl<void, rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&>(std::__invoke_other, rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}&&, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&)() (/usr/include/c++/11/bits/invoke.h:61)
libcontinental_ars548_ros_wrapper.so!std::__invoke<rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&>(rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}&&, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>&)() (/usr/include/c++/11/bits/invoke.h:96)
libcontinental_ars548_ros_wrapper.so!std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}&&, std::variant<std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&)>, std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&, rclcpp::MessageInfo const&)>, std::function<void (rclcpp::SerializedMessage const&)>, std::function<void (rclcpp::SerializedMessage const&, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>, rclcpp::MessageInfo const&)> >&)>, std::integer_sequence<unsigned long, 16ul> >::__visit_invoke(rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}&&, std::variant<std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&)>, std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&, rclcpp::MessageInfo const&)>, std::function<void (rclcpp::SerializedMessage const&)>, std::function<void (rclcpp::SerializedMessage const&, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>, rclcpp::MessageInfo const&)> >&)( __visitor,  __vars#0) (/usr/include/c++/11/variant:1016)
libcontinental_ars548_ros_wrapper.so!std::__do_visit<std::__detail::__variant::__deduce_visit_result<void>, rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}, std::variant<std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&)>, std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&, rclcpp::MessageInfo const&)>, std::function<void (rclcpp::SerializedMessage const&)>, std::function<void (rclcpp::SerializedMessage const&, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>, rclcpp::MessageInfo const&)> >&>(rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}&&, std::variant<std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&)>, std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&, rclcpp::MessageInfo const&)>, std::function<void (rclcpp::SerializedMessage const&)>, std::function<void (rclcpp::SerializedMessage const&, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>, rclcpp::MessageInfo const&)> >&)(struct {...} && __visitor) (/usr/include/c++/11/variant:844)
libcontinental_ars548_ros_wrapper.so!std::visit<rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}, std::variant<std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&)>, std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&, rclcpp::MessageInfo const&)>, std::function<void (rclcpp::SerializedMessage const&)>, std::function<void (rclcpp::SerializedMessage const&, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>, rclcpp::MessageInfo const&)> >&>(rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)::{lambda(auto:1&&)#1}&&, std::variant<std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&)>, std::function<void (geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const&, rclcpp::MessageInfo const&)>, std::function<void (rclcpp::SerializedMessage const&)>, std::function<void (rclcpp::SerializedMessage const&, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >)>, std::function<void (std::unique_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::default_delete<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > >, rclcpp::MessageInfo const&)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >)>, std::function<void (std::unique_ptr<rclcpp::SerializedMessage, std::default_delete<rclcpp::SerializedMessage> >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const>, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage const> const&, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >)>, std::function<void (std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > >, rclcpp::MessageInfo const&)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>)>, std::function<void (std::shared_ptr<rclcpp::SerializedMessage>, rclcpp::MessageInfo const&)> >&)(struct {...} && __visitor) (/usr/include/c++/11/variant:1761)
libcontinental_ars548_ros_wrapper.so!rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> >::dispatch(const rclcpp::MessageInfo & message_info, std::shared_ptr<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> > > message, rclcpp::AnySubscriptionCallback<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> > * const this) (/opt/ros/humble/include/rclcpp/rclcpp/any_subscription_callback.hpp:504)
libcontinental_ars548_ros_wrapper.so!rclcpp::Subscription<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void>, geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, rclcpp::message_memory_strategy::MessageMemoryStrategy<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> > >::handle_message(rclcpp::Subscription<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void>, geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, rclcpp::message_memory_strategy::MessageMemoryStrategy<geometry_msgs::msg::AccelWithCovarianceStamped_<std::allocator<void> >, std::allocator<void> > > * const this,  message, const rclcpp::MessageInfo & message_info) (/opt/ros/humble/include/rclcpp/rclcpp/subscription.hpp:343)
librclcpp.so!rclcpp::Executor::execute_subscription(std::shared_ptr<rclcpp::SubscriptionBase>) (Unknown Source:0)

@knzo25
Copy link
Collaborator Author

knzo25 commented Feb 18, 2025

@mojomex
Did you modify any code in nebula to perform such a test?
Usually those callbacks are disconnected when there is no sensor (no sensor -> no sockets)
I have done that to test this feature with no sensor, but of course it will fail, so I just commented out the parts that send info to the sensor

@mojomex
Copy link
Collaborator

mojomex commented Feb 18, 2025

@knzo25 No I didn't modify anything, just launched as described (with implicit launch_hw:=true) and no sensor connected.
I would expect Nebula to exit with an exception or to wait for any connection to come online, but it segfaults, which is not good.

I did some searching and it's basically triggered by the try/catch around the code initializing the UDP driver. Since this has been done in equal manner for all vendors using transport drivers, this PR is not at fault, and the issue will be gone with #267.

@mojomex mojomex merged commit 4a2037c into tier4:main Feb 18, 2025
9 of 11 checks passed
@mojomex mojomex mentioned this pull request Feb 18, 2025
5 tasks
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.

2 participants