Giter VIP home page Giter VIP logo

bathymetric_slam's Introduction

Bathymetric Graph SLAM

Baseline SLAM framework for underwater vehicles. The algorithm gets a set of bathymetric submaps as input and corrects the global map constructed while refining the vehicle trajectory through a map-to-map registration followed by a pose graph optimization.

real_data_example

Paper introducing and applying the method

The method implemented is described in this paper and used in this one

@inproceedings{torroba2019towards,
  title={Towards Autonomous Industrial-Scale Bathymetric Surveying},
  author={Torroba, Ignacio and Bore, Nils and Folkesson, John},
  booktitle={2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={6377--6382},
  year={2019},
  organization={IEEE}
}

@article{torroba2020pointnetkl,
  title={PointNetKL: Deep Inference for GICP Covariance Estimation in Bathymetric SLAM},
  author={Torroba, Ignacio and Sprague, Christopher Iliffe and Bore, Nils and Folkesson, John},
  journal={IEEE Robotics and Automation Letters},
  volume={5},
  number={3},
  pages={4078--4085},
  year={2020},
  publisher={IEEE}
}

Dependencies (tested on Ubuntu 16.04 and 18.04)

Note that for G2O to be used by this repo you need to install it at a system level. From the G2O build folder, run

sudo make install

Building

Clone this repository and create a build folder under the root, then execute

cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install ..
make -j4
make install

Finally, add the following line to your ~/.bashrc file adapted to your own installation

export PATH=$PATH:/path/to/folder/bathymetric_slam/install/share

Available apps

Under bin folder. The process outputs .png images with the maps of bathymetry and consistency error. The current script optimizes the graph with Ceres, but the app outputs a "graph.g2o" file which you can solve with G2O if preferred.

SLAM with simulated data

In order to test the framework with data from the SMARC simulator, use the toy dataset map_small under sim_data. You can visualize both the ground truth map and vehicle trajectory in the visualizer. To start the optimization process, hit "q".

./bathy_slam_real --simulation yes --bathy_survey ../sim_data/map_small/

The simulation outputs a measure of the error contained in the map, as well as the height maps and error plots as .png files. To increase the complexity of the sim dataset, increase the Gaussian noise to the vehicle's position estimate. In order to adapt the performance of the algorithm to the dataset, adjust the weights of the edges of the pose-graph accordingly and tune the GICP and the Ceres solver parameters. The algorithm is not by default tuned for the toy example map_small.

SLAM with real data

To run the SLAM solution with real data from a bathymetric survey, currently the input is in the form of a cereal file containing all the necessary information from your data files. You can find a real survey carried out with an ROV here. Download it, adjust the framework values, and test it.

./bathy_slam_real --simulation no --bathy_survey /path/to/datasets/mbes_pings.cereal 

Generating your own cereal files from real surveys

Take a look at the AUVLIB toolbox in order to parse real MBES, SSS, navigation, etc data from the most common formats into .cereal files.

bathymetric_slam's People

Contributors

ignaciotb avatar luxiya01 avatar maxlarsson2 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

Watchers

 avatar  avatar  avatar  avatar  avatar

bathymetric_slam's Issues

Inconsistent with auvlib

Hi Ignacio,

I am a phd student from Zhejiang university. Recently I cloned your github project, but when I build it, there are many errors. For example

/bathymetric-slam/src/apps/src/test_slam_real.cpp:202:139: error: no matching function for call to ‘benchmark::track_error_benchmark::track_error_benchmark(const char [10], int, int)’ benchmark::track_error_benchmark benchmark("real_data", config["benchmark_nbr_rows"].as(), config["benchmark_nbr_cols"].as()); ^ 

In file included from /home/ubuntu/Bathymetric-SLAM/src/bathymetric-slam/src/apps/src/test_slam_real.cpp:21:0: /home/ubuntu/Bathymetric-SLAM/src/auvlib/install/include/data_tools/benchmark.h:64:5: note: candidate: benchmark::track_error_benchmark::track_error_benchmark(const string&) track_error_benchmark(const std::string& dataset_name) : dataset_name(dataset_name) ^~~~~~~~~~~~~~~~~~~~~ /home/ubuntu/Bathymetric-SLAM/src/auvlib/install/include/data_tools/benchmark.h:64:5: note: candidate expects 1 argument, 3 provided /home/ubuntu/Bathymetric-SLAM/src/auvlib/install/include/data_tools/benchmark.h:58:5: note: candidate: benchmark::track_error_benchmark::track_error_benchmark() track_error_benchmark() : dataset_name("default") ^~~~~~~~~~~~~~~~~~~~~ /home/ubuntu/Bathymetric-SLAM/src/auvlib/install/include/data_tools/benchmark.h:58:5: note: candidate expects 0 arguments, 3 provided /home/ubuntu/Bathymetric-SLAM/src/auvlib/install/include/data_tools/benchmark.h:21:8: note: candidate: benchmark::track_error_benchmark::track_error_benchmark(const benchmark::track_error_benchmark&) struct track_error_benchmark { ^~~~~~~~~~~~~~~~~~~~~ /home/ubuntu/Bathymetric-SLAM/src/auvlib/install/include/data_tools/benchmark.h:21:8: note: candidate expects 1 argument, 3 provided /home/ubuntu/Bathymetric-SLAM/src/auvlib/install/include/data_tools/benchmark.h:21:8: note: candidate: benchmark::track_error_benchmark::track_error_benchmark(benchmark::track_error_benchmark&&) /home/ubuntu/Bathymetric-SLAM/src/auvlib/install/include/data_tools/benchmark.h:21:8: note: candidate expects 1 argument, 3 provided

In the example above, it seems that the defined track_error_benchmark function does not take any int number as input
It seems that the provided bathymetric_slam project is not consistent with the version of auvlib. Similar errors were reported for the convert_matched_entries function and so forth.

I would appreciate it if you could provide some suggestions in terms of inconsistency with Auvlib. Thanks so much for your time!

ceres version

I want to learn this project, but I encountered many problems during compilation. I would like to know what version of Ceres you are using for this project

Compilation Failed

Some errors like these. Please help :(

[ 21%] Built target submaps_tools
[ 21%] Built target utils_g2o
[ 21%] Building CXX object src/graph_optimization/CMakeFiles/graph_construction.dir/src/graph_construction.cpp.o
In file included from /usr/local/include/g2o/core/base_binary_edge.h:30:0,
from /usr/local/include/g2o/types/slam3d/edge_se3.h:30,
from /home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/include/graph_optimization/graph_construction.hpp:16,
from /home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/src/graph_construction.cpp:12:
/usr/local/include/g2o/core/base_fixed_sized_edge.h:192:32: error: ‘index_sequence’ is not a member of ‘std’
struct HessianTupleType<std::index_sequence<Ints...>> {
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:192:32: error: ‘index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.h:192:51: error: expected parameter pack before ‘...’
struct HessianTupleType<std::index_sequence<Ints...>> {
^~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:192:51: error: template argument 1 is invalid
/usr/local/include/g2o/core/base_fixed_sized_edge.h:192:54: error: expected unqualified-id before ‘>’ token
struct HessianTupleType<std::index_sequence<Ints...>> {
^~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:199:38: error: ‘make_index_sequence’ is not a member of ‘std’
typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::type;
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:199:38: error: ‘make_index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.h:199:58: error: template argument 1 is invalid
typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::type;
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:199:16: error: expected nested-name-specifier
typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::type;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:201:38: error: ‘make_index_sequence’ is not a member of ‘std’
typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::typeTransposed;
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:201:38: error: ‘make_index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.h:201:58: error: template argument 1 is invalid
typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::typeTransposed;
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:201:16: error: expected nested-name-specifier
typename HessianTupleType<std::make_index_sequence<_nr_of_vertex_pairs>>::typeTransposed;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:222:32: error: ‘std::index_sequence’ has not been declared
bool allVerticesFixedNs(std::index_sequence<Ints...>) const;
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:222:46: error: expected ‘,’ or ‘...’ before ‘<’ token
bool allVerticesFixedNs(std::index_sequence<Ints...>) const;
^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:227:75: error: ‘std::index_sequence’ has not been declared
void linearizeOplus_allocate(JacobianWorkspace& jacobianWorkspace, std::index_sequence<Ints...>);
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:227:89: error: expected ‘,’ or ‘...’ before ‘<’ token
void linearizeOplus_allocate(JacobianWorkspace& jacobianWorkspace, std::index_sequence<Ints...>);
^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:235:30: error: ‘std::index_sequence’ has not been declared
void linearizeOplusNs(std::index_sequence<Ints...>);
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:235:44: error: expected ‘,’ or ‘...’ before ‘<’ token
void linearizeOplusNs(std::index_sequence<Ints...>);
^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:259:38: error: ‘std::index_sequence’ has not been declared
std::index_sequence<Ints...>);
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:259:52: error: expected ‘,’ or ‘...’ before ‘<’ token
std::index_sequence<Ints...>);
^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:264:65: error: ‘std::index_sequence’ has not been declared
void constructOffDiagonalQuadraticFormMs(const AtOType&, std::index_sequence<>);
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:264:79: error: expected ‘,’ or ‘...’ before ‘<’ token
void constructOffDiagonalQuadraticFormMs(const AtOType&, std::index_sequence<>);
^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:267:69: error: ‘std::index_sequence’ has not been declared
void constructOffDiagonalQuadraticFormMs(const AtOType& AtO, std::index_sequence<Ints...>);
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:267:83: error: expected ‘,’ or ‘...’ before ‘<’ token
void constructOffDiagonalQuadraticFormMs(const AtOType& AtO, std::index_sequence<Ints...>);
^
/usr/local/include/g2o/core/base_fixed_sized_edge.h:284:3: error: ‘HessianTuple’ does not name a type; did you mean ‘HessianTupleType’?
HessianTuple _hessianTuple;
^~~~~~~~~~~~
HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.h:285:3: error: ‘HessianTupleTransposed’ does not name a type; did you mean ‘HessianTupleType’?
HessianTupleTransposed _hessianTupleTransposed;
^~~~~~~~~~~~~~~~~~~~~~
HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.h: In constructor ‘g2o::BaseFixedSizedEdge<D, E, VertexTypes>::BaseFixedSizedEdge()’:
/usr/local/include/g2o/core/base_fixed_sized_edge.h:207:9: error: class ‘g2o::BaseFixedSizedEdge<D, E, VertexTypes>’ does not have any field named ‘_hessianTuple’
_hessianTuple(internal::createHessianMaps(_hessianTuple)),
^~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:207:51: error: ‘_hessianTuple’ was not declared in this scope
_hessianTuple(internal::createHessianMaps(_hessianTuple)),
^~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:207:51: note: suggested alternative: ‘HessianTupleType’
_hessianTuple(internal::createHessianMaps(_hessianTuple)),
^~~~~~~~~~~~~
HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.h:208:9: error: class ‘g2o::BaseFixedSizedEdge<D, E, VertexTypes>’ does not have any field named ‘_hessianTupleTransposed’
_hessianTupleTransposed(internal::createHessianMaps(_hessianTupleTransposed)),
^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:208:61: error: ‘_hessianTupleTransposed’ was not declared in this scope
_hessianTupleTransposed(internal::createHessianMaps(_hessianTupleTransposed)),
^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.h:208:61: note: suggested alternative: ‘HessianTupleType’
_hessianTupleTransposed(internal::createHessianMaps(_hessianTupleTransposed)),
^~~~~~~~~~~~~~~~~~~~~~~
HessianTupleType
In file included from /usr/local/include/g2o/core/base_fixed_sized_edge.h:292:0,
from /usr/local/include/g2o/core/base_binary_edge.h:30,
from /usr/local/include/g2o/types/slam3d/edge_se3.h:30,
from /home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/include/graph_optimization/graph_construction.hpp:16,
from /home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/src/graph_construction.cpp:12:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: At global scope:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:36:10: error: ‘bool g2o::BaseFixedSizedEdge<D, E, VertexTypes>::allVerticesFixedNs’ is not a static data member of ‘class g2o::BaseFixedSizedEdge<D, E, VertexTypes>’
std::index_sequence<Ints...>) const {
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:36:10: error: template definition of non-template ‘bool g2o::BaseFixedSizedEdge<D, E, VertexTypes>::allVerticesFixedNs’
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:36:10: error: ‘index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual bool g2o::BaseFixedSizedEdge<D, E, VertexTypes>::allVerticesFixed() const’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:43:34: error: ‘make_index_sequence’ is not a member of ‘std’
return allVerticesFixedNs(std::make_index_sequence<_nr_of_vertices>());
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:43:71: error: expected primary-expression before ‘)’ token
return allVerticesFixedNs(std::make_index_sequence<_nr_of_vertices>());
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::constructQuadraticForm()’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:55:35: error: ‘make_index_sequence’ is not a member of ‘std’
std::make_index_sequence<_nr_of_vertices>());
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:55:72: error: expected primary-expression before ‘)’ token
std::make_index_sequence<_nr_of_vertices>());
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:58:35: error: ‘make_index_sequence’ is not a member of ‘std’
std::make_index_sequence<_nr_of_vertices>());
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:58:72: error: expected primary-expression before ‘)’ token
std::make_index_sequence<_nr_of_vertices>());
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: At global scope:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:65:74: error: ‘std::index_sequence’ has not been declared
const InformationType& omega, const ErrorVector& weightedError, std::index_sequence<Ints...>) {
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:65:88: error: expected ‘,’ or ‘...’ before ‘<’ token
const InformationType& omega, const ErrorVector& weightedError, std::index_sequence<Ints...>) {
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:75:26: error: ‘std::index_sequence’ has not been declared
const AtOType&, std::index_sequence<>) {}
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:75:40: error: expected ‘,’ or ‘...’ before ‘<’ token
const AtOType&, std::index_sequence<>) {}
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:80:30: error: ‘std::index_sequence’ has not been declared
const AtOType& AtO, std::index_sequence<Ints...>) {
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:80:44: error: expected ‘,’ or ‘...’ before ‘<’ token
const AtOType& AtO, std::index_sequence<Ints...>) {
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::constructOffDiagonalQuadraticFormM(const AtOType&)’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:99:45: error: ‘_hessianTupleTransposed’ was not declared in this scope
auto& hessianTransposed = std::get(_hessianTupleTransposed);
^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:99:45: note: suggested alternative: ‘hessianTransposed’
auto& hessianTransposed = std::get(_hessianTupleTransposed);
^~~~~~~~~~~~~~~~~~~~~~~
hessianTransposed
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:102:35: error: ‘_hessianTuple’ was not declared in this scope
auto& hessian = std::get(_hessianTuple);
^~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:102:35: note: suggested alternative: ‘HessianTupleType’
auto& hessian = std::get(_hessianTuple);
^~~~~~~~~~~~~
HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::constructQuadraticFormN(const InformationType&, const ErrorVector&)’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:123:54: error: ‘make_index_sequence’ is not a member of ‘std’
constructOffDiagonalQuadraticFormMs(AtO, std::make_index_sequence<_nr_of_vertices - N - 1>());
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:123:99: error: expected primary-expression before ‘)’ token
constructOffDiagonalQuadraticFormMs(AtO, std::make_index_sequence<_nr_of_vertices - N - 1>());
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::linearizeOplus(g2o::JacobianWorkspace&)’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:130:51: error: ‘make_index_sequence’ is not a member of ‘std’
linearizeOplus_allocate(jacobianWorkspace, std::make_index_sequence<_nr_of_vertices>());
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:130:88: error: expected primary-expression before ‘)’ token
linearizeOplus_allocate(jacobianWorkspace, std::make_index_sequence<_nr_of_vertices>());
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: At global scope:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:137:48: error: ‘std::index_sequence’ has not been declared
JacobianWorkspace& jacobianWorkspace, std::index_sequence<Ints...>) {
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:137:62: error: expected ‘,’ or ‘...’ before ‘<’ token
JacobianWorkspace& jacobianWorkspace, std::index_sequence<Ints...>) {
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:191:70: error: variable or field ‘linearizeOplusNs’ declared void
void BaseFixedSizedEdge<D, E, VertexTypes...>::linearizeOplusNs(std::index_sequence<Ints...>) {
^~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:191:70: error: ‘index_sequence’ is not a member of ‘std’
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::linearizeOplus()’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:200:25: error: ‘make_index_sequence’ is not a member of ‘std’
linearizeOplusNs(std::make_index_sequence<_nr_of_vertices>());
^~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:200:62: error: expected primary-expression before ‘)’ token
linearizeOplusNs(std::make_index_sequence<_nr_of_vertices>());
^
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp: In member function ‘virtual void g2o::BaseFixedSizedEdge<D, E, VertexTypes>::mapHessianMemory(number_t*, int, int, bool)’:
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:228:57: error: ‘_hessianTupleTransposed’ was not declared in this scope
tuple_apply_i(MapHessianMemoryK{d, vj_dim, vi_dim}, _hessianTupleTransposed, k);
^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:228:57: note: suggested alternative: ‘HessianTupleType’
tuple_apply_i(MapHessianMemoryK{d, vj_dim, vi_dim}, _hessianTupleTransposed, k);
^~~~~~~~~~~~~~~~~~~~~~~
HessianTupleType
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:230:57: error: ‘_hessianTuple’ was not declared in this scope
tuple_apply_i(MapHessianMemoryK{d, vi_dim, vj_dim}, _hessianTuple, k);
^~~~~~~~~~~~~
/usr/local/include/g2o/core/base_fixed_sized_edge.hpp:230:57: note: suggested alternative: ‘HessianTupleType’
tuple_apply_i(MapHessianMemoryK{d, vi_dim, vj_dim}, _hessianTuple, k);
^~~~~~~~~~~~~
HessianTupleType
In file included from /usr/include/pcl-1.8/pcl/io/boost.h:54:0,
from /usr/include/pcl-1.8/pcl/io/file_io.h:43,
from /usr/include/pcl-1.8/pcl/io/pcd_io.h:44,
from /home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/submaps_tools/include/submaps_tools/submaps.hpp:21,
from /home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/include/graph_optimization/graph_construction.hpp:22,
from /home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/src/graph_construction.cpp:12:
/usr/local/include/boost/bind.hpp: At global scope:
/usr/local/include/boost/bind.hpp:41:1: note: #pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
)
^
/home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/src/graph_construction.cpp: In member function ‘void GraphConstructor::findLoopClosures(SubmapObj&, const SubmapsVec&, double)’:
/home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/src/graph_construction.cpp:128:48: warning: unused parameter ‘info_thres’ [-Wunused-parameter]
double info_thres){
^~~~~~~~~~
/home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/src/graph_construction.cpp: In member function ‘void GraphConstructor::addNoiseToGraph(GaussianGen&, GaussianGen&)’:
/home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/src/graph_optimization/src/graph_construction.cpp:162:53: warning: unused parameter ‘transSampler’ [-Wunused-parameter]
void GraphConstructor::addNoiseToGraph(GaussianGen& transSampler, GaussianGen& rotSampler){
^~~~~~~~~~~~
src/graph_optimization/CMakeFiles/graph_construction.dir/build.make:62: recipe for target 'src/graph_optimization/CMakeFiles/graph_construction.dir/src/graph_construction.cpp.o' failed
make[2]: *** [src/graph_optimization/CMakeFiles/graph_construction.dir/src/graph_construction.cpp.o] Error 1
CMakeFiles/Makefile2:230: recipe for target 'src/graph_optimization/CMakeFiles/graph_construction.dir/all' failed
make[1]: *** [src/graph_optimization/CMakeFiles/graph_construction.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

make.log

Sorry to bother you again. I meet a question:

l@lb:~/bathymetric_slam/bin$ ./bathy_slam_real --simulation yes --bathy_survey ../sim_data/map_small/
terminate called after throwing an instance of 'YAML::BadFile'
what(): bad file
已放弃 (核心已转储)
thank you for your help!

are missing: auvlib_glad

I am trying to build bathy_metric slam (on uBuntu 16.04). I have the latest auvlib built and install. However, I got the following errors during cmake regarding auvlib_glad. Am I missing anything? Any suggestion? Thanks. C. Chien

CMake Error at src/CMakeLists.txt:42 (find_package):
Found package configuration file:

/usr/local/share/BathyMaps/cmake/BathyMapsConfig.cmake

but it set BathyMaps_FOUND to FALSE so package "BathyMaps" is considered to
be NOT FOUND. Reason given by package:

The following imported targets are referenced, but are missing: auvlib_glad

-- Configuring incomplete, errors occurred!

Compilation fails because of missing functions

@ignaciotb can you take a look at this?

Discovered by C. Chien:

Scanning dependencies of target gicp_registration
[ 73%] Building CXX object src/registration/CMakeFiles/gicp_registration.dir/src/gicp_reg.cpp.o
/home/chchien/SLAM/bathymetric_slam/src/registration/src/gicp_reg.cpp: In member function ‘double SubmapRegistration::consistencyErrorOverlap(const SubmapObj&, const SubmapObj&)’:
/home/chchien/SLAM/bathymetric_slam/src/registration/src/gicp_reg.cpp:76:76: error: ‘struct benchmark::track_error_benchmark’ has no member named ‘create_grids_from_matrices’
std::vector<std::vector<std::vector>> grid_maps = benchmark_.create_grids_from_matrices(submaps);
^
/home/chchien/SLAM/bathymetric_slam/src/registration/src/gicp_reg.cpp:77:57: error: ‘struct benchmark::track_error_benchmark’ has no member named ‘compute_consistency_error’
tie(consistency_rms_error, error_vals) = benchmark_.compute_consistency_error(grid_maps);
^
src/registration/CMakeFiles/gicp_registration.dir/build.make:62: recipe for target 'src/registration/CMakeFiles/gicp_registration.dir/src/gicp_reg.cpp.o' failed
make[2]: *** [src/registration/CMakeFiles/gicp_registration.dir/src/gicp_reg.cpp.o] Error 1
CMakeFiles/Makefile2:439: recipe for target 'src/registration/CMakeFiles/gicp_registration.dir/all' failed
make[1]: *** [src/registration/CMakeFiles/gicp_registration.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Segment error (core dumped)

I encountered the following problem when running the example data, and I would like to ask how to solve it../bathy_slam_real --simulation no --bathy_survey ../img/pipeline.cereal --config ../config.yaml
Config file: ../config.yaml
Input data "../img/pipeline.cereal"
Number of pings in survey 0
Number of submaps 0
Benchmark nbr rows and cols: 200, 1000
段错误 (核心已转储)

version problem

I encountered a lot of errors during compilation, and I think this should be a version issue. May I ask what versions the authors AUVLIB, PCL, G2O, Ceres, and Ubuntu are using? I would greatly appreciate it if you could answer me

Segmentation Fault

/home/krill/BATHY_SLAM_IGNACIOTB/bathymetric_slam/bin/bathy_slam_real --simulation no --bathy_survey real_data/pipeline.cereal"
Input data "real_data/pipeline.cereal"
Number of pings in survey 0
Number of submaps 0
Segmentation fault

pls help, thx :(
(Guess if there's something wrong with memory alignment in Eigen?)

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.