小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
ros2有时publish失败程序异常退出
-
使用ros2 发布一个Localization数据,有时候会突然异常退出,通过堆栈信息最后退出在发送函数,具体信息如下,多次运行程序,有一定几率出现。
clcpp::exceptions::throw_from_rcl_error(int, std::cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rcutils_error_state_s const*, void (*)()) ()
from /opt/ros/humble/lib/librclcpp.so
No symbol table info available.
#7 0x0000aaaaab08799c in std::enable_if<rosidl_generator_traits::is_message<roscpp_tutorials::msg::Localization<std::allocator<void> > >::value&&std::is_same<roscpp_tutorials::msg::Localization<std::allocator<void> >, roscpp_tutorials::msg::Localization_<std::allocator<void> > >::value, void>::type rclcpp::Publisher<roscpp_tutorials::msg::Localization_<std::allocator<void> >, std::allocator<void> >::publish<roscpp_tutorials::msg::Localization_<std::allocator<void> > >(roscpp_tutorials::msg::Localization_<std::allocator<void> > const&) () -
进一步定位是在LoanedMessage,这个是ros2 bug?
rclcpp::LoanedMessage<roscpp_tutorials::msg::Localization_<std::allocator<void> >, std::allocator<void> >::LoanedMessage(rclcpp::PublisherBase const&, std::allocator<roscpp_tutorials::msg::Localization_<std::allocator<void> > >) + 704 in section .text -
发布的消息类型是POD类型,可以使用零拷贝
-
怀疑是使用的共享内存数据太小,不到100Byte,内存申请异常,改为使用TCP后正常