Skip to content

AMCL change map / first_map_only = false #2931

@mrmara

Description

@mrmara

Bug report

Required Info:

  • Operating System:
    • Ubuntu 20.04
  • ROS2 Version:
    • Foxy

Steps to reproduce issue

set first_map_only to false
load a newmap with map server
Ensure that amcl accepted and loaded the new map (log to appear: Received a %d X %d map @ %.3f m/pix) and that it is receiving laserscan data

Expected behavior

AMCL should load the new map and start localizing in it

Actual behavior

AMCL crashes

Additional information

Backtrace:

Thread 13 "amcl" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff0920700 (LWP 28300)]
0x00007ffff7413d8c in map_calc_range ()
   from /home/mrmara/ws//install/nav2_amcl/lib/libmap_lib.so
(gdb) backtrace
#0  0x00007ffff7413d8c in map_calc_range ()
   from /home/mrmara/ws//install/nav2_amcl/lib/libmap_lib.so
#1  0x00007ffff74d9ff7 in nav2_amcl::BeamModel::sensorFunctionWithRejection(nav2_amcl::LaserData*, _pf_sample_set_t*, bool*) ()
   from /home/mrmara/ws//install/nav2_amcl/lib/libsensors_lib.so
#2  0x00007ffff740a95d in pf_update_sensor ()
   from /home/mrmara/ws//install/nav2_amcl/lib/libpf_lib.so
#3  0x00007ffff74da465 in nav2_amcl::BeamModel::sensorUpdate(_pf_t*, nav2_amcl::LaserData*, bool, bool*) ()
   from /home/mrmara/ws//install/nav2_amcl/lib/libsensors_lib.so
#4  0x00007ffff7d16889 in nav2_amcl::AmclNode::updateFilter(int const&, std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const> const&, pf_vector_t const&, pf_vector_t const&) ()
   from /home/mrmara/ws//install/nav2_amcl/lib/libamcl_core.so
#5  0x00007ffff7d18a47 in nav2_amcl::AmclNode::laserReceived(std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>) ()
--Type <RET> for more, q to quit, c to continue without paging--ibamcl_core.so
#6  0x00007ffff7d32b8c in std::_Function_handler<void (std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const> const&), std::_Bind<void (nav2_amcl::AmclNode::*(nav2_amcl::AmclNode*, std::_Placeholder<1>))(std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>)> >::_M_invoke(std::_Any_data const&, std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const> const&) () from /home/mrmara/ws//install/nav2_amcl/lib/libamcl_core.so
#7  0x00007ffff7d6cb66 in message_filters::CallbackHelper1T<std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const> const&, sensor_msgs::msg::LaserScan_<std::allocator<void> > >::call(message_filters::MessageEvent<sensor_msgs::msg::LaserScan_<std::allocator<void> > const> const&, bool) () from /home/mrmara/ws//install/nav2_amcl/lib/libamcl_core.so
#8  0x00007ffff7d692e3 in tf2_ros::MessageFilter<sensor_msgs::msg::LaserScan_<std::allocator<void> >, tf2_ros::Buffer>::transformReadyCallback(std::shared_future<geometry_msgs::msg::TransformStamped_<std::allocator<void> > > const&, unsigned long) () from /home/mrmara/ws//install/nav2_amcl/lib/libamcl_core.so
#9  0x00007ffff754a368 in std::function<void (std::shared_future<geometry_msgs::msg::TransformStamped_<std::allocator<void> > > const&)>::operator()(std::shared_future<geometry_msgs::msg::TransformStamped_<std::allocator<void> > > const&) const (__args#0=..., this=0x7fffc4003728) at /usr/include/c++/9/bits/std_function.h:683
#10 tf2_ros::Buffer::<lambda(tf2::TransformableRequestHandle, const string&, const string&, tf2::TimePoint, tf2::TransformableResult)>::operator() (result=<optimized out>, time=..., source_frame=..., 
    target_frame=..., request_handle=<optimized out>, __closure=0x7fffc4003710) at ./src/buffer.cpp:263
#11 std::_Function_handler<void(long unsigned int, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, tf2::TransformableResult), tf2_ros::Buffer::waitForTransform(const string&, const string&, const TimePoint&, const Duration&, tf2_ros::TransformReadyCallback)::<lambda(tf2::TransformableRequestHandle, const string&, const string&, tf2::TimePoint, tf2::TransformableResult)> >::_M_invoke(const std::_Any_data &, unsigned long &&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > &, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > &, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1, 1000000000> > > &&, tf2::TransformableResult &&) (
    __functor=..., __args#0=<optimized out>, __args#1=..., __args#2=..., __args#3=..., __args#4=<optimized out>) at /usr/include/c++/9/bits/std_function.h:300
#12 0x00007ffff7363331 in std::function<void (unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, tf2::TransformableResult)>::operator()(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, tf2::TransformableResult) const (__args#4=<optimized out>, __args#3=..., __args#2="camera_link_right", 
    __args#1=..., __args#0=<optimized out>, this=0x7fffc40035d0) at /usr/include/c++/9/bits/std_function.h:683
#13 tf2::BufferCore::testTransformableRequests (this=0x5555559e4a80) at ./src/buffer_core.cpp:1510
#14 0x00007ffff73645c4 in tf2::BufferCore::setTransformImpl (this=0x5555559e4a80, transform_in=..., frame_id=..., child_frame_id=..., stamp=..., authority="Authority undetectable", is_static=false)
    at ./src/buffer_core.cpp:337

#15 0x00007ffff73663fd in tf2::BufferCore::setTransform (this=0x5555559e4a80, transform=..., authority="Authority undetectable", is_static=is_static@entry=false)
    at /usr/include/c++/9/bits/basic_string.h:936
#16 0x00007ffff7551716 in tf2_ros::TransformListener::subscription_callback (this=0x555555a41cc0, msg=..., is_static=<optimized out>) at /usr/include/c++/9/bits/stl_vector.h:1058
#17 0x00007ffff755926d in std::__invoke_impl<void, void (tf2_ros::TransformListener::*&)(std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >, bool), tf2_ros::TransformListener*&, std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >, bool&> (__t=<optimized out>, __f=<optimized out>) at /usr/include/c++/9/bits/shared_ptr_base.h:756
#18 std::__invoke<void (tf2_ros::TransformListener::*&)(std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >, bool), tf2_ros::TransformListener*&, std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >, bool&> (__fn=<optimized out>) at /usr/include/c++/9/bits/invoke.h:95
#19 std::_Bind<void (tf2_ros::TransformListener::*(tf2_ros::TransformListener*, std::_Placeholder<1>, bool))(std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >, bool)>::__call<void, std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >&&, 0ul, 1ul, 2ul>(std::tuple<std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >&&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (
    __args=..., this=<optimized out>) at /usr/include/c++/9/functional:400
#20 std::_Bind<void (tf2_ros::TransformListener::*(tf2_ros::TransformListener*, std::_Placeholder<1>, bool))(std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >, bool)>::operator()<std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >, void>(std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >&&) (this=<optimized out>) at /usr/include/c++/9/functional:484
#21 std::_Function_handler<void (std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >), std::_Bind<void (tf2_ros::TransformListener::*(tf2_ros::TransformListener*, std::_Placeholder<1>, bool))(std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >, bool)> >::_M_invoke(std::_Any_data const&, std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >&&) (__functor=..., 
    __args#0=...) at /usr/include/c++/9/bits/std_function.h:300
#22 0x00007ffff7565ca1 in std::function<void (std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >)>::operator()(std::shared_ptr<tf2_msgs::msg::TFMessage_<std::allocator<void> > >) const (
    __args#0=std::shared_ptr<struct tf2_msgs::msg::TFMessage_<std::allocator<void> >> (empty) = {...}, this=0x555555abee90) at /usr/include/c++/9/bits/std_function.h:683
#23 rclcpp::AnySubscriptionCallback<tf2_msgs::msg::TFMessage_<std::allocator<void> >, std::allocator<void> >::dispatch (this=0x555555abee90, 
    message=std::shared_ptr<struct tf2_msgs::msg::TFMessage_<std::allocator<void> >> (use count 4, weak count 0) = {...}, message_info=...)
    at /opt/ros/foxy/include/rclcpp/any_subscription_callback.hpp:163
#24 0x00007ffff756650f in rclcpp::Subscription<tf2_msgs::msg::TFMessage_<std::allocator<void> >, std::allocator<void>, rclcpp::message_memory_strategy::MessageMemoryStrategy<tf2_msgs::msg::TFMessage_<std::allocator<void> >, std::allocator<void> > >::handle_message (this=0x555555abedb0, message=..., message_info=...) at /usr/include/c++/9/ext/atomicity.h:96
#25 0x00007ffff7ed066c in ?? () from /opt/ros/foxy/lib/librclcpp.so
#26 0x00007ffff7ed0f2b in rclcpp::Executor::execute_subscription(std::shared_ptr<rclcpp::SubscriptionBase>) () from /opt/ros/foxy/lib/librclcpp.so
#27 0x00007ffff7ed16e5 in rclcpp::Executor::execute_any_executable(rclcpp::AnyExecutable&) () from /opt/ros/foxy/lib/librclcpp.so
#28 0x00007ffff7ed696c in rclcpp::executors::SingleThreadedExecutor::spin() () from /opt/ros/foxy/lib/librclcpp.so
#29 0x00007ffff7551962 in tf2_ros::TransformListener::<lambda(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)>::operator() (node_base_interface=..., __closure=0x555555abed58)
    at /usr/include/c++/9/bits/shared_ptr_base.h:1020
#30 std::__invoke_impl<void, tf2_ros::TransformListener::initThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)>, std::shared_ptr<rclcpp::node_interfaces::NodeBaseInterface> > (__f=...) at /usr/include/c++/9/bits/invoke.h:60
--Type <RET> for more, q to quit, c to continue without paging--
#31 std::__invoke<tf2_ros::TransformListener::initThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)>, std::shared_ptr<rclcpp::node_interfaces::NodeBaseInterface> > (__fn=...) at /usr/include/c++/9/bits/invoke.h:95
#32 std::thread::_Invoker<std::tuple<tf2_ros::TransformListener::initThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)>, std::shared_ptr<rclcpp::node_interfaces::NodeBaseInterface> > >::_M_invoke<0, 1> (this=0x555555abed48) at /usr/include/c++/9/thread:244
#33 std::thread::_Invoker<std::tuple<tf2_ros::TransformListener::initThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)>, std::shared_ptr<rclcpp::node_interfaces::NodeBaseInterface> > >::operator() (this=0x555555abed48) at /usr/include/c++/9/thread:251
#34 std::thread::_State_impl<std::thread::_Invoker<std::tuple<tf2_ros::TransformListener::initThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)>, std::shared_ptr<rclcpp::node_interfaces::NodeBaseInterface> > > >::_M_run(void) (this=0x555555abed40) at /usr/include/c++/9/thread:195
#35 0x00007ffff7b22de4 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#36 0x00007ffff7824609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#37 0x00007ffff795e163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions