123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- .. Copyright 2016 The Cartographer Authors
- .. Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- .. http://www.apache.org/licenses/LICENSE-2.0
- .. Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ==========================
- Frequently asked questions
- ==========================
- Why is laser data rate in the 3D bags higher than the maximum reported 20 Hz rotation speed of the VLP-16?
- ----------------------------------------------------------------------------------------------------------
- The VLP-16 in the example bags is configured to rotate at 20 Hz. However, the
- frequency of UDP packets the VLP-16 sends is much higher and independent of
- the rotation frequency. The example bags contain a `sensor_msgs/PointCloud2`__
- per UDP packet, not one per revolution.
- __ http://www.ros.org/doc/api/sensor_msgs/html/msg/PointCloud2.html
- In the `corresponding Cartographer configuration file`__ you see
- `TRAJECTORY_BUILDER_3D.num_accumulated_range_data = 160` which means we
- accumulate 160 per-UDP-packet point clouds into one larger point cloud, which
- incorporates motion estimation by combining constant velocity and IMU
- measurements, for matching. Since there are two VLP-16s, 160 UDP packets is
- enough for roughly 2 revolutions, one per VLP-16.
- __ https://github.com/googlecartographer/cartographer_ros/blob/master/cartographer_ros/configuration_files/backpack_3d.lua
- Why is IMU data required for 3D SLAM but not for 2D?
- ----------------------------------------------------
- In 2D, Cartographer supports running the correlative scan matcher, which is normally used for finding loop closure constraints, for local SLAM.
- It is computationally expensive but can often render the incorporation of odometry or IMU data unnecessary.
- 2D also has the benefit of assuming a flat world, i.e. up is implicitly defined.
- In 3D, an IMU is required mainly for measuring gravity.
- Gravity is an attractive quantity to measure since it does not drift and is a very strong signal and typically comprises most of any measured accelerations.
- Gravity is needed for two reasons:
- 1. There are no assumptions about the world in 3D.
- To properly world align the resulting trajectory and map, gravity is used to define the z-direction.
- 2. Roll and pitch can be derived quite well from IMU readings once the direction of gravity has been established.
- This saves work for the scan matcher by reducing the search window in these dimensions.
- How do I build cartographer_ros without rviz support?
- -----------------------------------------------------
- The simplest solution is to create an empty file named `CATKIN_IGNORE`__ in the `cartographer_rviz` package directory.
- __ http://wiki.ros.org/catkin/workspaces
- How do I fix the "You called InitGoogleLogging() twice!" error?
- ---------------------------------------------------------------
- Building `rosconsole` with the `glog` back end can lead to this error.
- Use the `log4cxx` or `print` back end, selectable via the `ROSCONSOLE_BACKEND` CMake argument, to avoid this issue.
|