Giter Club home page Giter Club logo

cartographer_ros's Introduction

Cartographer ROS Integration

Build Status Documentation Status Apache 2 license.

Purpose

Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations. This project provides Cartographer's ROS integration.

Getting started

Contributing

You can find information about contributing to Cartographer's ROS integration at our Contribution page.

cartographer_ros's People

Contributors

alireza-hosseini avatar bochen87 avatar damienrg avatar damonkohler avatar drigz avatar fprott avatar gaschler avatar jihoonl avatar macmason avatar mgladkova avatar michaelgrupp avatar mikaelarguedas avatar mitchallain avatar mlbo avatar mohamedsayed18 avatar ojura avatar pifon2a avatar redkite avatar rohbotics avatar rsmallegoor avatar schwoere avatar sebastianklose avatar sirver avatar skohlbr avatar spielawa avatar tfoote avatar thiagodefreitas avatar wohe avatar yutakaoka avatar zjwoody avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cartographer_ros's Issues

about the type of data

I just find a way to change the data to laserscan with the pkg of depthimage_to_laserscan.but no way I can find to change the data from depthimage to the MulitEchoLaserScan . if any easy way to change it to the type I want ,please tell me ~~

error using rplidar to implement cartographer

[FATAL] [1476869653.208618277]: F1019 17:34:13.000000 27060 lua_parameter_dictionary.cc:425] Check failed: HasKey(key) Key 'use_constant_odometry_variance' not in dictionary:

I modified demo_revo_lds.launch:
<param name="/use_sim_time" value="true" /> <node name="cartographer_node" pkg="cartographer_ros" type="cartographer_node" args=" -configuration_directory $(find cartographer_ros)/configuration_files -configuration_basename revo_lds.lua" output="screen"> <remap from="scan" to="scan" /> </node> <node name="rviz" pkg="rviz" type="rviz"required="true"args="-d$(find cartographer_ros)/configuration_files/demo_2d.rviz" /> </launch>
I modified revo_lds.lua:
options = { map_builder = MAP_BUILDER, sensor_bridge = { horizontal_laser_min_range = 0.3, horizontal_laser_max_range = 5.6, horizontal_laser_missing_echo_ray_length = 1.2, constant_odometry_translational_variance = 0., constant_odometry_rotational_variance = 0., }, map_frame = "map", tracking_frame = "laser", published_frame = "laser", odom_frame = "odom", provide_odom_frame = true, use_odometry_data = false, use_horizontal_laser = true, use_horizontal_multi_echo_laser = false, num_lasers_3d = 0, lookup_transform_timeout_sec = 0.2, submap_publish_period_sec = 0.3, pose_publish_period_sec = 5e-3, } MAP_BUILDER.use_trajectory_builder_2d = true TRAJECTORY_BUILDER_2D.use_imu_data = false TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true SPARSE_POSE_GRAPH.optimization_problem.huber_scale = 1e2 return options

Tf extrapolation warnings with some setups

I've been trying out the system with a simulated spinning lidar and get quite a bunch of tf related warnings when feeding bag data to cartographer_ros. I thus think there are some waitForTransform() calls missing. See console output here: tf_warnings_spinning_lidar.txt. As LIDARs are mounted fixed in most other example setups, the missing waits likely didn't appear there due to fixed joints being forward timestamped by robot_state_publisher per default.

To reproduce:

roslaunch cartographer_ros demo_robot_spin_lidar.launch bag_filename:=/home/kohlbrecher/Downloads/2016-08-04-15-17-14.bag 

Queue (0, scan) exceeds maximum size

I downloaded a bag from this dataset, specifically the "Sensors bag" here. It contains scans from a front facing laser scanner parallel to the floor and odometry. I remapped the topics accordingly and load the bag with the following launch file:

<launch>
  <arg name="bagfile" />
  <param name="/use_sim_time" value="true" />

  <node name="cartographer_node" pkg="cartographer_ros" type="cartographer_node"
        args="
          -configuration_directory $(find cartographer_navigation)/config
          -configuration_basename cartographer_config.lua"
      output="screen">
    <remap from="scan" to="scanfront" />
    <remap from="odom" to="pose" />
  </node>

  <node name="playbag" pkg="rosbag" type="play"
        args="--clock $(arg bagfile)" />
</launch>

Here is a copy of my configuration file:

include "map_builder.lua"

options = { 
  map_builder = MAP_BUILDER,
  sensor_bridge = { 
    horizontal_laser_min_range = 0., 
    horizontal_laser_max_range = 30.,
    horizontal_laser_missing_echo_ray_length = 5., 
    constant_odometry_translational_variance = 0., 
    constant_odometry_rotational_variance = 0., 
  },  
  map_frame = "map",
  tracking_frame = "base_link",
  published_frame = "odom",
  odom_frame = "odom",
  provide_odom_frame = false,
  use_odometry_data = true,
  use_horizontal_laser = true,
  use_horizontal_multi_echo_laser = false,
  num_lasers_3d = 0,
  lookup_transform_timeout_sec = 0.1,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
}

MAP_BUILDER.use_trajectory_builder_2d = true

return options

cartographer_node is subscribed to the correct topics, but I receive the following warnings (the last being repeated indefinetly) and no map is created. It doesn't seem to be related to the odometry topic since I can set use_odometry_data to false and get the same result. The TF tree also looks fine (sans map frame). I haven't had time to dig further.

PARAMETERS
 * /rosdistro: indigo
 * /rosversion: 1.11.20
 * /use_sim_time: True

NODES
  /
    cartographer_node (cartographer_ros/cartographer_node)
    playbag (rosbag/play)

auto-starting new master
process[master]: started with pid [11572]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 8c6ea576-9a5c-11e6-b5ab-acd1b8c150f9
process[rosout-1]: started with pid [11585]
started core service [/rosout]
process[cartographer_node-2]: started with pid [11593]
process[playbag-3]: started with pid [11597]
[ INFO] [1477363297.169694860]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/src/oberon_navigation/config/cartographer_config.lua' for 'cartographer_config.lua'.
[ INFO] [1477363297.170119139]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/devel/share/cartographer/configuration_files/map_builder.lua' for 'map_builder.lua'.
[ INFO] [1477363297.170175552]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/devel/share/cartographer/configuration_files/map_builder.lua' for 'map_builder.lua'.
[ INFO] [1477363297.170280031]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/devel/share/cartographer/configuration_files/trajectory_builder_2d.lua' for 'trajectory_builder_2d.lua'.
[ INFO] [1477363297.170330291]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/devel/share/cartographer/configuration_files/trajectory_builder_2d.lua' for 'trajectory_builder_2d.lua'.
[ INFO] [1477363297.170540981]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/devel/share/cartographer/configuration_files/trajectory_builder_3d.lua' for 'trajectory_builder_3d.lua'.
[ INFO] [1477363297.170594428]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/devel/share/cartographer/configuration_files/trajectory_builder_3d.lua' for 'trajectory_builder_3d.lua'.
[ INFO] [1477363297.170800371]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/devel/share/cartographer/configuration_files/sparse_pose_graph.lua' for 'sparse_pose_graph.lua'.
[ INFO] [1477363297.170850246]: I1024 19:41:37.000000 11593 configuration_file_resolver.cc:40] Found '../catkin_ws/devel/share/cartographer/configuration_files/sparse_pose_graph.lua' for 'sparse_pose_graph.lua'.
[ INFO] [1477363297.224451375]: I1024 19:41:37.000000 11593 submaps.cc:176] Added submap 1
[ WARN] [1477363297.614288202, 1398782509.836662936]: W1024 19:41:37.000000 11593 tf_bridge.cc:51] Lookup would require extrapolation at time 1398782509.745911000, but only time 1398782509.928337702 is in the buffer, when looking up transform from frame [laserfront] to frame [base_link]
[ WARN] [1477363297.614618512, 1398782509.836662936]: W1024 19:41:37.000000 11593 tf_bridge.cc:51] Lookup would require extrapolation at time 1398782509.770786000, but only time 1398782509.928337702 is in the buffer, when looking up transform from frame [laserfront] to frame [base_link]
[ WARN] [1477363297.614887091, 1398782509.836662936]: W1024 19:41:37.000000 11593 tf_bridge.cc:51] Lookup would require extrapolation at time 1398782509.795817000, but only time 1398782509.928337702 is in the buffer, when looking up transform from frame [laserfront] to frame [base_link]
[ WARN] [1477363297.620661721, 1398782509.836662936]: W1024 19:41:37.000000 11593 tf_bridge.cc:51] Lookup would require extrapolation at time 1398782509.820668000, but only time 1398782509.928337702 is in the buffer, when looking up transform from frame [laserfront] to frame [base_link]
[ WARN] [1477363297.646507840, 1398782509.866933562]: W1024 19:41:37.000000 11593 tf_bridge.cc:51] Lookup would require extrapolation at time 1398782509.845570000, but only time 1398782509.928337702 is in the buffer, when looking up transform from frame [laserfront] to frame [base_link]
[ WARN] [1477363297.671598891, 1398782509.887142529]: W1024 19:41:37.000000 11593 tf_bridge.cc:51] Lookup would require extrapolation at time 1398782509.870480000, but only time 1398782509.928337702 is in the buffer, when looking up transform from frame [laserfront] to frame [base_link]
[ WARN] [1477363297.696390327, 1398782509.917399640]: W1024 19:41:37.000000 11593 tf_bridge.cc:51] Lookup would require extrapolation at time 1398782509.895437000, but only time 1398782509.928337702 is in the buffer, when looking up transform from frame [laserfront] to frame [base_link]
[ WARN] [1477363297.721191995, 1398782509.937499099]: W1024 19:41:37.000000 11593 tf_bridge.cc:51] Lookup would require extrapolation into the past.  Requested time 1398782509.920326000 but the earliest data is at time 1398782509.928337702, when looking up transform from frame [laserfront] to frame [base_link]
[ WARN] [1477363310.247964591, 1398782522.467980409]: W1024 19:41:50.000000 11593 ordered_multi_queue.h:167] Queue (0, scan) exceeds maximum size.
[ WARN] [1477363311.456086525, 1398782523.670806252]: W1024 19:41:51.000000 11593 ordered_multi_queue.h:167] Queue (0, scan) exceeds maximum size.
[ WARN] [1477363312.641146897, 1398782524.863538378]: W1024 19:41:52.000000 11593 ordered_multi_queue.h:167] Queue (0, scan) exceeds maximum size.
[ WARN] [1477363313.841607745, 1398782526.057108239]: W1024 19:41:53.000000 11593 ordered_multi_queue.h:167] Queue (0, scan) exceeds maximum size.
[ WARN] [1477363315.042431701, 1398782527.259637737]: W1024 19:41:55.000000 11593 ordered_multi_queue.h:167] Queue (0, scan) exceeds maximum size.
[ WARN] [1477363316.233640223, 1398782528.452874894]: W1024 19:41:56.000000 11593 ordered_multi_queue.h:167] Queue (0, scan) exceeds maximum size.

Build Cartographer without RViz Plugin

It is a little annoying to have to build the Rviz plugin on embedded arm platforms.

Can there be some kind of build flag to disable it, or even better spin it out into its own package?

Running cartographer_ros with custom messages types

Hello. I am trying to run cartographer_ros with custom messages types and I would like to know which file I should work on and modify so that cartographer runs properly.

My messages are structured like follow,
ps_platform_motion_msg (imu messages)
ps_msg_header header
ps_sensor_descriptor sensor_descriptor
ps_timestamp timestamp
ps_native_timestamp native_timestamp
double position [3]
double orientation [4]
double rotation_rate [3]
double velocity [3]
double acceleration [3]
double heading
double latitude
double longitude
double altitude

ps_lidar_points_msg (3d lidar pointcloud messages)
ps_msg_header header
ps_sensor_descriptor sensor_descriptor
ps_timestamp start_timestamp
ps_timestamp end_timestamp
ps_native_timestamp native_start_timestamp
sequence< ps_lidar_point > points

ps_lidar_point
float position [3]
octet intensity

Thank you and keep up the good work.
Boris

IMU Accel and Gyro coordinate frames

I am using a VLP 16 Puck to input data to the Horizontal Lidar input. Everything seems OK but I think I still don't have the coordinate frames or the units right. Can anyone tell me the Accelerometer and Gyro coordinate frames and the units of measurement? Is there any relevant documentation I can look up?

Missing check for pcl_conversions library

On Debian unstable, installation of the libpcl-dev package lets the cmake configure step pass successfully. But during compilation I get:

[ 58%] Building CXX object cartographer_ros/CMakeFiles/msg_conversion.dir/msg_conversion.cc.o
In file included from /home/zft/cartographer/cartographer_ros/cartographer_ros/cartographer_ros/msg_conversion.cc:17:0:
/home/zft/cartographer/cartographer_ros/cartographer_ros/cartographer_ros/msg_conversion.h:30:45: fatal error: pcl_conversions/pcl_conversions.h: No such file or directory
 #include "pcl_conversions/pcl_conversions.h"
                                             ^
compilation terminated.
cartographer_ros/CMakeFiles/msg_conversion.dir/build.make:62: recipe for target 'cartographer_ros/CMakeFiles/msg_conversion.dir/msg_conversion.cc.o' failed
make[2]: *** [cartographer_ros/CMakeFiles/msg_conversion.dir/msg_conversion.cc.o] Error 1
CMakeFiles/Makefile2:1754: recipe for target 'cartographer_ros/CMakeFiles/msg_conversion.dir/all' failed
make[1]: *** [cartographer_ros/CMakeFiles/msg_conversion.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

This error is solved after installing the libpcl-conversions-dev package but the check for pcl_conversions.h should be done during the configuration step.

An error occurred while I was running 2D demo

when i was running 2d demo bag, I get the following erro:

process[robot_state_publisher-2]: started with pid [17777]
ERROR: cannot launch node of type [cartographer_ros/cartographer_node]: can't locate node [cartographer_node] in package [cartographer_ros]
process[rviz-4]: started with pid [17807]
process[playbag-5]: started with pid [17810]
[ERROR] [1472825523.736244580, 1432647017.705740264]: PluginlibFactory: The plugin for class 'Submaps' failed to load. Error: Could not find library corresponding to plugin Submaps. Make sure the plugin description XML file has the correct name of the library and that the library actually exists.

The warning about tf laser frame_id , check msg->header.frame_id

Is this a bug in following function, when i test it in default,(my /scan frame_id is "/camera_depth_frame").
Print the Warning:
Warning: Invalid argument "/camera_depth_frame" passed to canTransform argument source_frame in tf2 frame_ids cannot start with a '/' like:
at line 130 in /tmp/binarydeb/ros-indigo-tf2-0.5.13/src/buffer_core.cpp

Only I change code and using "camera_depth_frame" is fine. "/camera_depth_frame" and msg->header.frame_id all print warning .

If i not change, rosrun tf tf_echo /map /camera_depth_frame will not output the transform . Change it , OK.

void Node::LaserScanMessageCallback(
const sensor_msgs::LaserScan::ConstPtr& msg) {
auto sensor_data = ::cartographer::common::make_unique(
"camera_depth_frame"/* "/camera_depth_frame"//msg->header.frame_id/, ToCartographer(msg));
sensor_collator
.AddSensorData(
kTrajectoryId,
::cartographer::common::ToUniversal(FromRos(msg->header.stamp)),
laser_2d_subscriber
.getTopic(), std::move(sensor_data));

}

how to make the size of occupancy grid map lager?

I'm now using kobuki and rplidar to build map, and I could get occupancy grid map from cartographer node. But I want to use the map to do other work like navigation that the more unknown space in map is needed.
Is there any method could help me to solve this problem?
I just find the map size information in cartographer_ros/cartographer_ros/cartographer_ros/occupancy_grid.cc line 59-60.
occupancy_grid->info.width = cell_limits.num_y_cells; occupancy_grid->info.height = cell_limits.num_x_cells;
It couldn't help me that changing the info.width and info.height because it destroy the map.

Problems building and installing

I followed the instructions here but still have problems building.

My problem is really after this line :
catkin_make_isolated --install --use-ninja

Here's a couple of the errors I'm getting:

/usr/local/include/gmock/gmock-matchers.h:3451:7: error: provided for ‘template class testing::internal::UnorderedElementsAreMatcher’
class UnorderedElementsAreMatcher { ...
...
/usr/local/include/gmock/gmock-generated-matchers.h:968:5: error: ‘tuple’ is not a member of ‘testing’
::testing::tuple< ...
...
...
<== Failed to process package 'cartographer':

My system is configured as follows:
64-bit intel i7-4600U CPU
8GB RAM
Ubuntu 14.04 (Trusty)
gcc version 4.9.3
ROS Indigo

/usr/bin/ld: cannot find -lQt5::Widgets

On a Debian unstable system, I run into the following problem when compiling cartographer_ros:

[100%] Linking CXX executable ../devel/lib/cartographer_ros/cartographer_node
/usr/bin/ld: cannot find -lQt5::Widgets
collect2: error: ld returned 1 exit status
cartographer_ros/CMakeFiles/cartographer_node.dir/build.make:353: recipe for target 'devel/lib/cartographer_ros/cartographer_node' failed
make[2]: *** [devel/lib/cartographer_ros/cartographer_node] Error 1
CMakeFiles/Makefile2:2202: recipe for target 'cartographer_ros/CMakeFiles/cartographer_node.dir/all' failed
make[1]: *** [cartographer_ros/CMakeFiles/cartographer_node.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

The linking against Qt5::Widgets seems to come from the vtk library as is evident from looking through my CMakeFiles directory and into the vtk cmake files installed on my system. A shared library namey Qt5::Widgets does probably not exist - instead, this is the qt cmake way of linking against the Qt5 widgets library. Indeed the problem seems to be known:

http://www.vtk.org/pipermail/vtk-developers/2014-May/030456.html

As proposed, after adding find_package(Qt5Widgets REQUIRED) to the CMakeLists.txt of cartographer_ros, the linking process finishes successfully.

It is not obvious where the bug here is, whether it's a bug in cartographer_ros, which should add a find_package(Qt5Widgets REQUIRED) or whether vtk should do that instead. The fact is, that currently, because of this problem, cartographer_ros does not link successfully on Debian unstable.

There also seem to be a fix for this problem in vtk:

http://review.source.kitware.com/15372

how to set initial pose?

first to thank all of you for providing this great project. I am doing some developping work in service robot. Recently i am using laser for mapping based on cartographer, an having some problem in setting initial pose for cartographer. i want to get it started at some other pose than (0,0), but after ceres_match ,it get zero back, i can't find any configuration for this requirement. is there any restrictions for doing this? i checked the code and found somewhere like addsubmap, ExtrapolateSubmapTransforms, default all given (0,0).please help me how to get it work! thanks!

Difference in output using IMU vs CorrelativeScanMatch

Hi
I am getting following error on running code with custom bag file.

[FATAL] [1476292525.887607468, 1474547763.288452865]: F1012 22:45:25.000000 10585 sensor_bridge.cc:94] Check failed: sensor_to_tracking->translation().norm() < 1e-5 The IMU frame must be colocated with the tracking frame. Transforming linear acceleration into the tracking frame will otherwise be imprecise

What is significance of tracking frame? Is it IMU tracking frame?
From code:

// Keeps track of the orientation using angular velocities and linear
// accelerations from an IMU. Because averaged linear acceleration (assuming
// slow movement) is a direct measurement of gravity, roll/pitch does not drift,
// though yaw does.

After setting tracking frame to IMU frame, laser data shrinks slowly to one line as shown in image below. rviz_screenshot_2016_10_12-23_28_15

This error can be reproduced using (i) the rosbag
https://drive.google.com/open?id=0B9PcG8mxhHGUWTcwQ2IwQWxmNHM
(ii)and launch files https://drive.google.com/open?id=0B9PcG8mxhHGUaUoyRkRKcU1lRjA
This result in wrong map.
rviz_screenshot_2016_10_12-22_54_36

If in place of IMU tracker, correlative scan matching is used, following correct output is obtained
rviz_screenshot_correlativescanmatch
Why is this difference in output ? Is IMU producing incorrect readings?

Over multiple runs, it has been observed that cartographer is unable to recognize vehicle slip. I expected correlative scan matching to take care of such slipage. Cartographer is able to manage drift in angles as reported in odometry, but not able to recover from translation errors.
What are parameters which can avoid such behaviour? Is there one place where all parameters and their description is listed? At present, I am reading through code to understand.
I believe publication of current localization estimate will be beneficial for other activities such as exploration and path planning. I am planning to integrate ROS AMCL package for localization estimate in current published submap but it will be extra compute load. Please correct, if I am incorrect.
rviz_screenshot_2016_10_13-00_39_44
Thanks and Rgds

Stack smashing detected

@damonkohler This is the same issue that I sent over email, opening a ticket with more detail.

Platform: Ubuntu 16.04, ROS Kinetic, x86_64

When I try and run the turtlebot launch (off of the latest version of this repo) I get a
stack smashing error, and the program SIGABRTs.
I tried to debug this by running it in GCC's ASAN (https://github.com/google/sanitizers/wiki/AddressSanitizer), but then everything works.
(maybe it is a race condidtion being covered up because of ASANs overhead?)

I ran it in gdb to get this backtrace:

#0  0x00007ffff4b17418 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1  0x00007ffff4b1901a in __GI_abort () at abort.c:89
#2  0x00007ffff4b5972a in __libc_message (do_abort=do_abort@entry=1, fmt=fmt@entry=0x7ffff4c70c7f "*** %s ***: %s terminated\n") at ../sysdeps/posix/libc_fatal.c:175
#3  0x00007ffff4bfa89c in __GI___fortify_fail (msg=<optimized out>, msg@entry=0x7ffff4c70c61 "stack smashing detected") at fortify_fail.c:37
#4  0x00007ffff4bfa840 in __stack_chk_fail () at stack_chk_fail.c:28
#5  0x00007ffff7984596 in ceres::internal::CovarianceImpl::ComputeCovarianceValuesUsingSuiteSparseQR() () from /home/rohan/cartographer_catkin_ws/devel_isolated/ceres_catkin/lib/libceres.so.1
#6  0x00007ffff7989ea5 in ceres::internal::CovarianceImpl::ComputeCovarianceValues() () from /home/rohan/cartographer_catkin_ws/devel_isolated/ceres_catkin/lib/libceres.so.1
#7  0x00007ffff7989f59 in ceres::internal::CovarianceImpl::Compute(std::vector<std::pair<double const*, double const*>, std::allocator<std::pair<double const*, double const*> > > const&, ceres::internal::ProblemImpl*) ()
   from /home/rohan/cartographer_catkin_ws/devel_isolated/ceres_catkin/lib/libceres.so.1
#8  0x000000000061832a in cartographer::mapping_2d::scan_matching::CeresScanMatcher::Match(cartographer::transform::Rigid2<double> const&, cartographer::transform::Rigid2<double> const&, std::vector<Eigen::Matrix<float, 2, 1, 0, 2, 1>, std::allocator<Eigen::Matrix<float, 2, 1, 0, 2, 1> > > const&, cartographer::mapping_2d::ProbabilityGrid const&, cartographer::transform::Rigid2<double>*, Eigen::Matrix<double, 3, 3, 0, 3, 3>*, ceres::Solver::Summary*) const ()
#9  0x0000000000601df8 in cartographer::mapping_2d::LocalTrajectoryBuilder::ScanMatch(std::chrono::time_point<cartographer::common::UniversalTimeScaleClock, std::chrono::duration<long, std::ratio<1l, 10000000l> > >, cartographer::transform::Rigid3<double> const&, cartographer::transform::Rigid3<double> const&, cartographer::sensor::LaserFan const&, cartographer::transform::Rigid3<double>*, Eigen::Matrix<double, 6, 6, 0, 6, 6>*) ()
#10 0x0000000000602454 in cartographer::mapping_2d::LocalTrajectoryBuilder::AddHorizontalLaserFan(std::chrono::time_point<cartographer::common::UniversalTimeScaleClock, std::chrono::duration<long, std::ratio<1l, 10000000l> > >, cartographer::sensor::LaserFan3D const&) ()
#11 0x0000000000605197 in cartographer::mapping_2d::GlobalTrajectoryBuilder::AddHorizontalLaserFan(std::chrono::time_point<cartographer::common::UniversalTimeScaleClock, std::chrono::duration<long, std::ratio<1l, 10000000l> > >, cartographer::sensor::LaserFan3D const&) ()
#12 0x000000000053bf9f in cartographer_ros::(anonymous namespace)::Node::AddHorizontalLaserFan(long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cartographer::sensor::proto::LaserScan const&) ()
#13 0x000000000053f4b1 in cartographer_ros::(anonymous namespace)::Node::HandleSensorData(long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >) ()
#14 0x000000000053c800 in cartographer_ros::(anonymous namespace)::Node::Initialize()::{lambda(long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >)#2}::operator()(long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >) const ()
#15 0x000000000054263b in std::_Function_handler<void (long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >), cartographer_ros::(anonymous namespace)::Node::Initialize()::{lambda(long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >)#2}>::_M_invoke(std::_Any_data const&, long&&, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >&&) ()
#16 0x00000000005427cb in std::function<void (long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >)>::operator()(long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >) const ()
#17 0x0000000000541646 in cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::AddTrajectory(int, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >)>)::{lambda(std::unique_ptr<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value, std::default_delete<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value> >)#1}::operator()(std::unique_ptr<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value, std::default_delete<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value> >) const ()
#18 0x0000000000543d52 in std::_Function_handler<void (std::unique_ptr<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value, std::default_delete<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value> >), cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::AddTrajectory(int, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (long, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >)>)::{lambda(std::unique_ptr<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value, std::default_delete<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value> >)#1}>::_M_invoke(std::_Any_data const&, std::unique_ptr<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value, std::default_delete<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value> >&&) ()
#19 0x0000000000544a2d in std::function<void (std::unique_ptr<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value, std::default_delete<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value> >)>::operator()(std::unique_ptr<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value, std::default_delete<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value> >) const ()
#20 0x0000000000543719 in cartographer::common::OrderedMultiQueue<cartographer::mapping::SensorCollatorQueueKey, long, cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value>::Dispatch() ()
#21 0x00000000005421aa in cartographer::common::OrderedMultiQueue<cartographer::mapping::SensorCollatorQueueKey, long, cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value>::Add(cartographer::mapping::SensorCollatorQueueKey const&, long const&, std::unique_ptr<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value, std::default_delete<cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::Value> >) ()
#22 0x0000000000540652 in cartographer::mapping::SensorCollator<cartographer_ros::(anonymous namespace)::SensorData>::AddSensorData(int, long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<cartographer_ros::(anonymous namespace)::SensorData, std::default_delete<cartographer_ros::(anonymous namespace)::SensorData> >) ()
#23 0x000000000053bdae in cartographer_ros::(anonymous namespace)::Node::LaserScanMessageCallback(boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&) ()
#24 0x000000000054801c in boost::_mfi::mf1<void, cartographer_ros::(anonymous namespace)::Node, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>::operator()(cartographer_ros::(anonymous namespace)::Node*, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&) const ()
#25 0x000000000054777d in void boost::_bi::list2<boost::_bi::value<cartographer_ros::(anonymous namespace)::Node*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, cartographer_ros::(anonymous namespace)::Node, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>, boost::_bi::list1<boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&> >(boost::_bi::type<void>, boost::_mfi::mf1<void, cartographer_ros::(anonymous namespace)::Node, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>&, boost::_bi::list1<boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>&, int) ()
#26 0x000000000054694d in void boost::_bi::bind_t<void, boost::_mfi::mf1<void, cartographer_ros::(anonymous namespace)::Node, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<cartographer_ros::(anonymous namespace)::Node*>, boost::arg<1> > >::operator()<boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>(boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&) ()
#27 0x00000000005458e9 in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, cartographer_ros::(anonymous namespace)::Node, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<cartographer_ros::(anonymous namespace)::Node*>, boost::arg<1> > >, void, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&) ()
#28 0x00000000005738fd in boost::function1<void, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&>::operator()(boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&) const ()
#29 0x000000000056fbd1 in boost::detail::function::void_function_obj_invoker1<boost::function<void (boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&)>, void, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> >::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const>) ()
#30 0x000000000057fe46 in boost::function1<void, boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> >::operator()(boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const>) const ()
#31 0x000000000057dae9 in ros::SubscriptionCallbackHelperT<boost::shared_ptr<sensor_msgs::LaserScan_<std::allocator<void> > const> const&, void>::call(ros::SubscriptionCallbackHelperCallParams&) ()
#32 0x00007ffff63cf25d in ros::SubscriptionQueue::call() () from /opt/ros/kinetic/lib/libroscpp.so
#33 0x00007ffff6379880 in ros::CallbackQueue::callOneCB(ros::CallbackQueue::TLS*) () from /opt/ros/kinetic/lib/libroscpp.so
#34 0x00007ffff637ac83 in ros::CallbackQueue::callAvailable(ros::WallDuration) () from /opt/ros/kinetic/lib/libroscpp.so
#35 0x00007ffff63d29b9 in ros::SingleThreadedSpinner::spin(ros::CallbackQueue*) () from /opt/ros/kinetic/lib/libroscpp.so
#36 0x00007ffff63b83cb in ros::spin() () from /opt/ros/kinetic/lib/libroscpp.so
#37 0x000000000053f553 in cartographer_ros::(anonymous namespace)::Node::SpinForever() ()
#38 0x000000000053f6eb in cartographer_ros::(anonymous namespace)::Run() ()
#39 0x000000000054011a in main ()

eigen_conversions are required.

When following what the docker image is doing, I get the following error:

==> Processing catkin package: 'cartographer_ros'
==> Creating build directory: 'build_isolated/cartographer_ros'
==> Building with env: '/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer/env.sh'
==> cmake /usr/local/google/home/hrapp/prog/catkin_workspace/src/cartographer_ros/cartographer_ros -DCATKIN_DEVEL_PREFIX=/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer_ros -DCMAKE_INSTALL_PREFIX=/usr/local/google/home/hrapp/prog/catkin_workspace/install_isolated -G Unix Makefiles in '/usr/local/google/home/hrapp/prog/catkin_workspace/build_isolated/cartographer_ros'
-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Using CATKIN_DEVEL_PREFIX: /usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer_ros
-- Using CMAKE_PREFIX_PATH: /usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/ceres_catkin;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/glog_catkin;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/gflags_catkin;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/catkin_simple;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer_ros_msgs;/opt/ros/indigo
-- This workspace overlays: /usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/ceres_catkin;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/glog_catkin;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/gflags_catkin;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/catkin_simple;/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer_ros_msgs;/opt/ros/indigo
-- Found PythonInterp: /usr/bin/python (found version "2.7.6") 
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /usr/local/google/home/hrapp/prog/catkin_workspace/build_isolated/cartographer_ros/test_results
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.6.18
CMake Warning at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:76 (find_package):
  Could not find a package configuration file provided by "eigen_conversions"
  with any of the following names:

    eigen_conversionsConfig.cmake
    eigen_conversions-config.cmake

  Add the installation prefix of "eigen_conversions" to CMAKE_PREFIX_PATH or
  set "eigen_conversions_DIR" to a directory containing one of the above
  files.  If "eigen_conversions" provides a separate development package or
  SDK, be sure it has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:33 (find_package)


-- Could not find the required component 'eigen_conversions'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "eigen_conversions"
  with any of the following names:

    eigen_conversionsConfig.cmake
    eigen_conversions-config.cmake

  Add the installation prefix of "eigen_conversions" to CMAKE_PREFIX_PATH or
  set "eigen_conversions_DIR" to a directory containing one of the above
  files.  If "eigen_conversions" provides a separate development package or
  SDK, be sure it has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:33 (find_package)


-- Configuring incomplete, errors occurred!
See also "/usr/local/google/home/hrapp/prog/catkin_workspace/build_isolated/cartographer_ros/CMakeFiles/CMakeOutput.log".
See also "/usr/local/google/home/hrapp/prog/catkin_workspace/build_isolated/cartographer_ros/CMakeFiles/CMakeError.log".
<== Failed to process package 'cartographer_ros': 
  Command '['/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer/env.sh', 'cmake', '/usr/local/google/home/hrapp/prog/catkin_workspace/src/cartographer_ros/cartographer_ros', '-DCATKIN_DEVEL_PREFIX=/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer_ros', '-DCMAKE_INSTALL_PREFIX=/usr/local/google/home/hrapp/prog/catkin_workspace/install_isolated', '-G', 'Unix Makefiles']' returned non-zero exit status 1

Reproduce this error by running:
==> cd /usr/local/google/home/hrapp/prog/catkin_workspace/build_isolated/cartographer_ros && /usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer/env.sh cmake /usr/local/google/home/hrapp/prog/catkin_workspace/src/cartographer_ros/cartographer_ros -DCATKIN_DEVEL_PREFIX=/usr/local/google/home/hrapp/prog/catkin_workspace/devel_isolated/cartographer_ros -DCMAKE_INSTALL_PREFIX=/usr/local/google/home/hrapp/prog/catkin_workspace/install_isolated -G 'Unix Makefiles'

Command failed, exiting.

have a error while i add IMU date for backpack_2d

hi,
I have set the IMU drive in ros,and changed the launch,when i runned the launch i got the following warn:
[ WARN] [1478952719.408758831]: W1112 20:11:59.000000 5699 tf_bridge.cc:51] "base_imu_link" passed to lookupTransform argument target_frame does not exist.

This is the lua:

include "map_builder.lua"
options = {
  map_builder = MAP_BUILDER,
  sensor_bridge = {
    horizontal_laser_min_range = 0.,
    horizontal_laser_max_range = 20.,
    horizontal_laser_missing_echo_ray_length = 1.5,  constant_odometry_translational_variance = 0.,
    constant_odometry_rotational_variance = 0.,
  },
  map_frame = "map",
  tracking_frame = "base_imu_link",
  published_frame = "laser_link",
  odom_frame = "odom",
  provide_odom_frame = true,
  use_odometry_data = false,
  use_horizontal_laser = true,
  use_horizontal_multi_echo_laser = false,
  num_lasers_3d = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
}
MAP_BUILDER.use_trajectory_builder_2d = true
TRAJECTORY_BUILDER_2D.use_imu_data = true
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(0.1)
return options

This is the launch:

<launch>
  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory $(find cartographer_ros)/configuration_files
          -configuration_basename backpack_2d.lua"
      output="screen">
    <remap from="scan" to="/laser_scan" />
  </node>
<node pkg="razor_imu_9dof" type="imu_node.py" name="imu_node" output="screen">
   <param name="port" type="string" value="/dev/ttyUSB0"/>
   <param name="frame_id" type="string" value="base_imu_link" />
   <remap from="imu" to="/imu/data" />
</node>
</launch>

Build error on catkin_make_isolated --install --use-ninja

Hey! I am trying to build cartographer using these instructions but I get the following error. (my system is Ubuntu 14.04, gcc 4.8.4, ROS Indigo).

==> ninja -j1 in '/home/manos/Development/cartographer_ws/build_isolated/cartographer/install'
[2/296] Building CXX object cartographer/common/CMakeFiles/common_blocking_queue_test.dir/blocking_queue_test.cc.o
FAILED: /usr/bin/clang++    -O3 -DNDEBUG -I. -I/home/manos/Development/cartographer_ws/src/cartographer -isystem /usr/src/gmock/gtest/include -I/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/{Boost_INCLUDE_DIRS}     -pthread -std=c++11  -Wall -Wpedantic -Werror=format-security -Werror=missing-braces -Werror=reorder -Werror=return-type -Werror=uninitialized -O3 -DNDEBUG -MMD -MT cartographer/common/CMakeFiles/common_blocking_queue_test.dir/blocking_queue_test.cc.o -MF "cartographer/common/CMakeFiles/common_blocking_queue_test.dir/blocking_queue_test.cc.o.d" -o cartographer/common/CMakeFiles/common_blocking_queue_test.dir/blocking_queue_test.cc.o -c /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue_test.cc
In file included from /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue_test.cc:17:
In file included from /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue.h:24:
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:60:7: warning: unknown attribute 'capability' ignored [-Wattributes]
class CAPABILITY("mutex") Mutex {
      ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:36:53: note: expanded from macro 'CAPABILITY'
#define CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(capability(x))
                                                    ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:57: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                                        ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:67:26: warning: unknown attribute 'acquire_capability' ignored [-Wattributes]
    Locker(Mutex* mutex) ACQUIRE(mutex) : mutex_(mutex), lock_(mutex->mutex_) {}
                         ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:48:33: note: expanded from macro 'ACQUIRE'
  THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(__VA_ARGS__))
                                ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:57: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                                        ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:69:15: warning: unknown attribute 'release_capability' ignored [-Wattributes]
    ~Locker() RELEASE() {
              ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:51:33: note: expanded from macro 'RELEASE'
  THREAD_ANNOTATION_ATTRIBUTE__(release_capability(__VA_ARGS__))
                                ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:57: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                                        ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:75:46: error: invalid use of 'this' outside of a non-static member function
    void Await(Predicate predicate) REQUIRES(this) {
                                             ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:45:53: note: expanded from macro 'REQUIRES'
  THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
                                                    ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:57: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                                        ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:81:18: error: invalid use of 'this' outside of a non-static member function
        REQUIRES(this) {
                 ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:45:53: note: expanded from macro 'REQUIRES'
  THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
                                                    ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:57: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                                        ^
In file included from /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue_test.cc:17:
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue.h:110:33: warning: unknown attribute 'requires_capability' ignored [-Wattributes]
  bool QueueNotEmptyCondition() REQUIRES(mutex_) { return !deque_.empty(); }
                                ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:45:33: note: expanded from macro 'REQUIRES'
  THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
                                ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:57: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                                        ^
In file included from /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue_test.cc:17:
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue.h:113:32: warning: unknown attribute 'requires_capability' ignored [-Wattributes]
  bool QueueNotFullCondition() REQUIRES(mutex_) {
                               ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:45:33: note: expanded from macro 'REQUIRES'
  THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
                                ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:57: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                                        ^
In file included from /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue_test.cc:17:
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue.h:51:25: error: expected body of lambda expression
    lock.Await([this]() REQUIRES(mutex_) { return QueueNotFullCondition(); });
                        ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:45:3: note: expanded from macro 'REQUIRES'
  THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
  ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:42: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                         ^
In file included from /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue_test.cc:17:
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue.h:59:22: error: expected body of lambda expression
            [this]() REQUIRES(mutex_) { return QueueNotFullCondition(); },
                     ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:45:3: note: expanded from macro 'REQUIRES'
  THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
  ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:42: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                         ^
In file included from /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue_test.cc:17:
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue.h:70:25: error: expected body of lambda expression
    lock.Await([this]() REQUIRES(mutex_) { return QueueNotEmptyCondition(); });
                        ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:45:3: note: expanded from macro 'REQUIRES'
  THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
  ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:42: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                         ^
In file included from /home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue_test.cc:17:
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/blocking_queue.h:81:22: error: expected body of lambda expression
            [this]() REQUIRES(mutex_) { return QueueNotEmptyCondition(); },
                     ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:45:3: note: expanded from macro 'REQUIRES'
  THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
  ^
/home/manos/Development/cartographer_ws/src/cartographer/cartographer/common/mutex.h:31:42: note: expanded from macro 'THREAD_ANNOTATION_ATTRIBUTE__'
#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
                                         ^
5 warnings and 6 errors generated.
ninja: build stopped: subcommand failed.
<== Failed to process package 'cartographer': 
  Command '['/home/manos/Development/cartographer_ws/install_isolated/env.sh', 'ninja', '-j1']' returned non-zero exit status 1

Reproduce this error by running:
==> cd /home/manos/Development/cartographer_ws/build_isolated/cartographer && /home/manos/Development/cartographer_ws/install_isolated/env.sh ninja -j1

Command failed, exiting.

Any idea what goes wrong?
Thanks!

Difference in output using Odom

Hi,

Now, i have a small differential driving car with a scanning radius of 6 meters of laser radar. I want to draw a map of an area of 150 square meters. However, i got some mapping error due to radar too short scanning range radius using cartographer. So I would like to use odometry to make mapping more accurate less error. I have successfully provided the odometer data to the nav_msgs / Odometry node, then set use_odometry_data = true, and then ran the cartographer, but i found that there were more errors.

when i don't use odometry_data and use the config file https://drive.google.com/open?id=0B2-B3l8213hNejFDSVRKS0gtZ0U, the data record is the bag https://drive.google.com/open?id=0B2-B3l8213hNODk4ZWlwazFjUjA,and launch files https://drive.google.com/open?id=0B2-B3l8213hNVVJuOEtYNWltRVk .The final effect is relatively good, as follow,
screenshot from 2016-10-20 11 51 08

but, when i use odometry_data and use the config file https://drive.google.com/open?id=0B2-B3l8213hNX3FZLXhmX2JDcms, the data record is the bag https://drive.google.com/open?id=0B2-B3l8213hNVVJuOEtYNWltRVk, and launch files https://drive.google.com/open?id=0B2-B3l8213hNVVJuOEtYNWltRVk. The final effect is bad, as follow,
screenshot from 2016-10-20 12 00 36

I do not know which of the cartographer's algorithms is the primary reference: the lidar or the odometer, or both? After the introduction of odometer data, SLAM algorithm is local matching or global matching?

How to provided tf transforms from map to odom ? just as gmapping did to correct the accumulated error of the odometer

Owing to the accumulated errors of the odometer calculation, the map construction is misplaced and error, but the gmapping package provides an algorithm for reversely correcting odometer data by providing a continuous transition from map to odom, the map construction is very accurate
Whether or not a similar implementation is provided in the cartographer's package, it would be impossible to build an accurate map using odometer without such a conversion transform

Running error

It will have an error when I run the backpack_2d.launch or demo_revo_2d.launch if the data of laserscan transmit to the cartographer_node

Motion filter

Hello,
I get this Motion filter reduced the number of scans to -nan%.
I am using a rotating hokuyo laser that makes one rotation every 4 seconds.
How can solve this problem?

ninja: error: /usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8' needed by

When I built the source by using "catkin_make_isolated --install --use-ninja", there is an error:
_Error info_
ninja: error: '/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8', needed by '/home/cartographer/devel_isolated/cartographer_rviz/lib/libcartographer_rviz_submaps_visualization.so', missing and no known rule to make it.


Is opencv a necessary dependency for rviz?
How can I solve it?

Cartographer & Velodyne Lidar

Hi! i'm new working with slam and acquisition im in an internship working with a VLP16, also new in ROS, so i'm sorry is this is a dumb question, i want to know if theres a way to do the mapping by acquiring the data from the velodyne packets (velodyne_pointcloud), and if there is a way, how can i do it?

I can see that you work with diferent types of topics, nodes and msgs, can i modify something to get this working with my Velodyne?

Thank You

2D demo is not tuned

The global optimizer in the 2D demo right now is tuned for quality - mostly for internal corner cases on the Trolley platform. For the demo, the backpack settings would be sufficient and would reduce the CPU requirements for loop closing.

cartographer_node crash at Optimizing 74.4%

This has happened twice now on different data sets:

Optimizing: 74.4%...terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
[cartographer_node-4] process has died [pid 11556, exit code -6, cmd /home/joseph/Dev/google-cartographer/catkin_ws/install_isolated/lib/cartographer_ros/cartographer_node -configuration_directory /home/joseph/Dev/google-cartographer/catkin_ws/install_isolated/share/cartographer_ros/configuration_files -configuration_basename test_2d.lua __name:=cartographer_node __log:=/home/joseph/.ros/log/54cb7c3a-8bf1-11e6-a908-d8cb8a97cc31/cartographer_node-4.log].

Publish transforms at a fixed rate.

The odom <- map transform is published only when a matching step has been performed. This can result in the robot system being starved for valid transform data between map and odom.

Localization in Existing Map

First, off I just wanted to say thanks for this excellent work! I am part of a research group/class at the University of Pennsylvania and we are very interested in implementing this mapping software on a fleet of service robots that we are designing. However, after looking at the blog post about this project you said that localization in an existing map is not yet supported, which will actually be very important for us. I was just curious if you had any sort of rough estimate as to when that feature would be available (i.e. on the order of weeks or months?). I just need to figure out if waiting for that feature will fit into our timeline or if we should pursue other options. Thanks!

No submap_lists published if no data flows

The Cartographer node's global optimization can fall behind and if it does not see any more data coming in, it will stop updating the submap lists, though the optimization is still running.

Maybe also related to #41

Error building cartographer_rviz after latest update

Hi
I updated cartographer_ros from a previous version (Oct 6, commit 1418902) to the most up-to-date one (Oct 21, commit 2048702). While building completed without errors previously, I now get the following error:

Errors << cartographer_rviz:make /home/ros/catkin_ws/logs/cartographer_rviz/build.make.005.log
In file included from /home/ros/catkin_ws/build/cartographer_rviz/cartographer_rviz/../../../src/overlay/cartographer_ros/cartographer_rv
iz/cartographer_rviz/drawable_submap.h:35:0,
from /home/ros/catkin_ws/build/cartographer_rviz/cartographer_rviz/moc_drawable_submap.cpp:9,
from /home/ros/catkin_ws/build/cartographer_rviz/cartographer_rviz/drawable_submap_automoc.cpp:2:
/opt/ros/kinetic/include/rviz/display_context.h:34:19: fatal error: QObject: No such file or directory
compilation terminated.
make[2]: *** [cartographer_rviz/CMakeFiles/drawable_submap.dir/drawable_submap_automoc.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /home/ros/catkin_ws/src/overlay/cartographer_ros/cartographer_rviz/cartographer_rviz/drawable_submap.h:35:0,
from /home/ros/catkin_ws/src/overlay/cartographer_ros/cartographer_rviz/cartographer_rviz/drawable_submap.cc:17:
/opt/ros/kinetic/include/rviz/display_context.h:34:19: fatal error: QObject: No such file or directory
compilation terminated.
make[2]: *** [cartographer_rviz/CMakeFiles/drawable_submap.dir/drawable_submap.cc.o] Error 1
make[1]: *** [cartographer_rviz/CMakeFiles/drawable_submap.dir/all] Error 2
make: *** [all] Error 2

My setup:
Ubuntu 16.04
ROS Kinetic
x86_64

I do realize that you mention ROS Kinetic not being fully supported by cartographer_ros, however as there were no build errors previously and now there are, I thought I'd report this anyway.

Regards

I want to use cartographer_ros with one hokuyo laser

hi,
Thank you for this project!
I only use one HOKUYO laser, and no other robot hardware.Try to record a file bag.then runed this
file bag for mapping,but I get some error.
I runed the hokuyo.launch to record the data.then i runed the demo,but nothing in the rviz,and in the rviz prompt error :Globl Status was warn (Fixed Frame:No tf data. Actual error: Fixed Frame [map] does not exist)。
I would like to ask,the cartographer_ros must cooperate with the robot drive?look like turtlebot .
Can i only used the 2D Lidar for maping?

I modified the original launch configuration :
The lua file is here:
include "map_builder.lua"
options = {
map_builder = MAP_BUILDER,
sensor_bridge = {
horizontal_laser_min_range = 0.,
horizontal_laser_max_range = 30.,
horizontal_laser_missing_echo_ray_length = 5.,
constant_odometry_translational_variance = 0.,
constant_odometry_rotational_variance = 0.,
},
map_frame = "map",
tracking_frame = "base_link",
published_frame = "base_link",
odom_frame = "odom",
provide_odom_frame = true,
use_odometry_data = false,
use_horizontal_laser = true,
use_horizontal_multi_echo_laser = false,
num_lasers_3d = 0,
lookup_transform_timeout_sec = 0.2,
submap_publish_period_sec = 0.3,
pose_publish_period_sec = 5e-3,
}
MAP_BUILDER.use_trajectory_builder_2d = true
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(0.1)
return options

The hokuyo launch is here:











The demo launch is here

Spinning-Rotating 2D Lidar

Hi!
Thank you for this project!
I would like to ask, the imu is on the rotating-spinning lidar or on base robot frame?
Thank you!

how to limit memory in practical envoriment?

i guess, if i'm not wrong, carto will store every Effective laser scan and every some scans it add a submap. is this increase along with time going on? is this any mechanism such as, after loop closure we need merge some submaps and scans?

Add support for rotating, planar LIDAR

The 3D mode wants things via a a PointCloud2 topic and requires externally adding a conversion from scan data to PointCloud2. To remove that dependency and for convenience, supporting plain LaserScan input for 3D could be beneficial.

Additionally, this would allow Cartographer to handle the aggregation of partial revolutions, similar to how Velodyne data is handled.

Missing check for yaml-cpp library

Cmake configures successfully but during the build I get:

[ 51%] Building CXX object cartographer_ros/CMakeFiles/map_writer.dir/map_writer.cc.o
/home/zft/cartographer/cartographer_ros/cartographer_ros/cartographer_ros/map_writer.cc:22:27: fatal error: yaml-cpp/yaml.h: No such file or directory
 #include "yaml-cpp/yaml.h"
                           ^
compilation terminated.
cartographer_ros/CMakeFiles/map_writer.dir/build.make:62: recipe for target 'cartographer_ros/CMakeFiles/map_writer.dir/map_writer.cc.o' failed
make[2]: *** [cartographer_ros/CMakeFiles/map_writer.dir/map_writer.cc.o] Error 1
CMakeFiles/Makefile2:1615: recipe for target 'cartographer_ros/CMakeFiles/map_writer.dir/all' failed
make[1]: *** [cartographer_ros/CMakeFiles/map_writer.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

The CMakeLists.txt should not forget to check for the yaml-cpp library.

Build and install "gflags_catkin" error

when i bulid and install "gflags_catkin", I get the following error:

==> ninja -j1 -l1 in '/home/robot/catkin_ws/build_isolated/gflags_catkin'
ninja: error: '/home/robot/catkin_ws/devel_isolated/gflags_catkin/lib/libgflags.so', needed by '/home/robot/catkin_ws/devel_isolated/gflags_catkin/lib/libgflags_catkin.so', missing and no known rule to make it
<== Failed to process package 'gflags_catkin':
Command '['/home/robot/catkin_ws/install_isolated/env.sh', 'ninja', '-j1', '-l1']' returned non-zero exit status 1
Reproduce this error by running:
==> cd /home/robot/catkin_ws/build_isolated/gflags_catkin && /home/robot/catkin_ws/install_isolated/env.sh ninja -j1 -l1
Command failed, exiting.

Separate the concept of tracking frame from the published pose frame

Currently, the tracking frame is also used as the published pose frame. Since we require the tracking frame to be collocated with the IMU (assuming one is in use), this is very inflexible and does't match the typical ROS robot description.

Through a quirk of the code, the current setup works as long as the robot that provides its own /odom frame. In that case, we actually perform the necessary transformations to publish our pose as a map <- odom transform. So, in essence, we've selected "odom" to be the published pose frame.

error while installing cartographer on Kobuki platform

error was like:

Building CXX object cartograp...nary.dir/lua_parameter_dictionary.cc.o
FAILED: /usr/bin/c++ -O3 -DNDEBUG -isystem /usr/local/include -isystem /usr/include/eigen3 -I. -I.. -I../cartographer/common/{Boost_INCLUDE_DIRS} -O3 -DNDEBUG -std=c++11 -Wall -Wpedantic -Werror=format-security -Werror=return-type -Werror=uninitialized -MMD -MT cartographer/common/CMakeFiles/common_lua_parameter_dictionary.dir/lua_parameter_dictionary.cc.o -MF "cartographer/common/CMakeFiles/common_lua_parameter_dictionary.dir/lua_parameter_dictionary.cc.o.d" -o cartographer/common/CMakeFiles/common_lua_parameter_dictionary.dir/lua_parameter_dictionary.cc.o -c ../cartographer/common/lua_parameter_dictionary.cc
../cartographer/common/lua_parameter_dictionary.cc: In function 'void cartographer::common::{anonymous}::QuoteStringOnStack(lua_State*)':
../cartographer/common/lua_parameter_dictionary.cc:49:24: error: 'lua_pushglobaltable' was not declared in this scope
lua_pushglobaltable(L); // S: ... string globals

I tried to remove "Werror" in lua_parameter_dictionary.cc and compile again but it didn't work.....

how can I fix it? Thanks a lot!

Kinect with Google Cartographer

Hi,

I am struggling with configuring the code to work with two Kinect-like cameras instead of the Velodynes for 3D mapping. I also have an IMU providing the relevant data. The motion I get right now is not very smooth and it seems to be jumping around all the time. Can you spot some errors in my *.lua file? I should mention that in the default rviz visualizaiton the vertical Kinect point cloud doesn't seem to show up, and my point cloud doesn't seem to be levelled. But I have checked the IMU data and coordinate systems to make sure they are properly calibrated relative to the base_link. Also, if I check the box to visualize my vertical Kinect pointcloud2 message in rviz, I can see the data and it looks calibrated relative to the horizontal Kinect and IMU. Thanks in advance.

include "map_builder.lua"

options = {
map_builder = MAP_BUILDER,
sensor_bridge = {
horizontal_laser_min_range = 0.,
horizontal_laser_max_range = 5.,
horizontal_laser_missing_echo_ray_length = 5.,
constant_odometry_translational_variance = 0.,
constant_odometry_rotational_variance = 0.,
},
map_frame = "map",
tracking_frame = "base_link",
published_frame = "base_link",
odom_frame = "odom",
provide_odom_frame = true,
use_odometry_data = false,
use_horizontal_laser = false,
use_horizontal_multi_echo_laser = false,
num_lasers_3d = 2,
lookup_transform_timeout_sec = 0.2,
submap_publish_period_sec = 0.3,
pose_publish_period_sec = 5e-3,
}

TRAJECTORY_BUILDER_3D.scans_per_accumulation = 1

MAP_BUILDER.use_trajectory_builder_3d = true
MAP_BUILDER.num_background_threads = 7
MAP_BUILDER.sparse_pose_graph.optimization_problem.huber_scale = 5e2
MAP_BUILDER.sparse_pose_graph.optimize_every_n_scans = 2
MAP_BUILDER.sparse_pose_graph.constraint_builder.sampling_ratio = 0.03
MAP_BUILDER.sparse_pose_graph.optimization_problem.ceres_solver_options.max_num_iterations = 10
-- Reuse the coarser 3D voxel filter to speed up the computation of loop closure
-- constraints.
MAP_BUILDER.sparse_pose_graph.constraint_builder.adaptive_voxel_filter = TRAJECTORY_BUILDER_3D.high_resolution_adaptive_voxel_filter
MAP_BUILDER.sparse_pose_graph.constraint_builder.min_score = 0.62
MAP_BUILDER.sparse_pose_graph.constraint_builder.log_matches = true

return options

finish_trajectory service not saving map when called

I'm calling the service with:
rosservice call /finish_trajectory "stem: 'test'"

However I receive

ERROR: transport error completing service call: unable to receive data from sender, check sender's logs for details

On the Cartographer node:

Optimizing: Done.
Optimizing: Done.
[cartographer_node-5] process has finished cleanly

My .lua configuration is:

include "map_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  map_frame = "map",
  tracking_frame = "base_link",
  published_frame = "odom",
  odom_frame = "odom",
  provide_odom_frame = false,
  use_odometry_data = true,
  use_constant_odometry_variance = true,
  constant_odometry_translational_variance = 1e-2,
  constant_odometry_rotational_variance = 1e-1,
  use_horizontal_laser = true,
  use_horizontal_multi_echo_laser = false,
  horizontal_laser_min_range = 0.1,
  horizontal_laser_max_range = 30.,
  horizontal_laser_missing_echo_ray_length = 5.,
  num_lasers_3d = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
}

MAP_BUILDER.use_trajectory_builder_2d = true
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true

return options

drift problems even no movement?

when i let my robot in static status, i found that the estimate pose drift at very very little step, however, this give me cumulative total error 20cm after about 30min in bnoth x and y axis. maybe i set motion filter too sensitive or sometiong else wrong, how to debug my error?? thank you

and also, i found that the estimate pose will Influence by anything moves around it. some other slam algorithm, may consider abnormal characteristic points out of match process. how about carto, it seems that no obvious function in carto for this?thank you

Default topics should be relative, not absolute

Currently, the default topics we publish to are all specified with a leading slash. Instead, the slash should be removed so that all topics are namespaced according to the node name. They can then be remapped into the global space in the launch file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.