Git Product home page Git Product logo

iris's Introduction

Modifications are underway.

Iris

  • Visual localization in pre-build pointcloud maps.
  • OpenVSLAM and VINS-mono can be used. Modifications are underway.

Video

Submodule

original repository (xdspacelab)

Dependency

If you are using ROS, you only need to install g2o and DBoW2.

see also: openvslam. Modifications are underway.

How to Build

mkdir -p catkin_ws/src
cd catkin_ws/src
git clone --recursive https://github.com/MapIV/iris.git
cd ..
catkin_make

How to Run with Sample Data

Download sample data

  1. visual feature file: orb_vocab.dbow from URL
  2. pointcloud map : kitti_00.pcd from URL
  3. rosbag : kitti_00_stereo.bag from URL

Run with sample data

Stereo camera sample

roscd iris/../../../
# download sample data to here (orb_voceb.dbow, kitti_00.pcd, kitti_00_stereo.bag)
ls # > build devel install src orb_vocab.dbow kitti_00.pcd kitti_00_stereo.bag
roslaunch iris stereo_kitti00.launch
roslaunch iris rviz.launch # (on another terminal)
rosbag play kitti_00_stereo.bag # (on another terminal)

If the estimated position is misaligned, it can be corrected using 2D Pose Estimate in rviz.

Monocular camera sample

roscd iris/../../../
# download sample data to here (orb_voceb.dbow, kitti_00.pcd, kitti_00_stereo.bag)
ls # > build devel install src orb_vocab.dbow kitti_00.pcd kitti_00_stereo.bag
roslaunch iris mono_kitti00.launch
roslaunch iris rviz.launch # (on another terminal)
rosbag play kitti_00_stereo.bag # (on another terminal)

If the estimated position is misaligned, it can be corrected using 2D Pose Estimate in rviz.

How to Run with Your Data

All you need to prepare

  1. pointcloud map file (*.pcd)
  2. rosbag (*.bag)
  3. Config file for iris such as config/sample_iris_config.yaml
  4. (only if you use OpenVSLAM) Config file for vSLAM such as config/sample_openvslam_config.yaml

Run

roslaunch iris openvslam.launch iris_config_path:=... 
rosbag play yours.bag # (on another terminal)

License

Iris is provided under the BSD 3-Clause License. Modifications are underway.

The following files are derived from third-party libraries.

  • iris/src/optimize/types_gicp.hpp : part of g2o (BSD)
  • iris/src/optimize/types_gicp.cpp : part of g2o (BSD)
  • iris/src/pcl_/correspondence_estimator.hpp : part of pcl (BSD)
  • iris/src/pcl_/correspondence_estimator.cpp : part of pcl (BSD)
  • iris/src/pcl_/normal_estimator.hpp : part of pcl (BSD)
  • iris/src/pcl_/normal_estimator.cpp : part of pcl (BSD)

Reference

  • T. Caselitz, B. Steder, M. Ruhnke, and W. Burgard, “Monocular camera localization in 3d lidar maps,” in 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2016, pp. 1926–1931.

http://www.lifelong-navigation.eu/files/caselitz16iros.pdf

iris's People

Contributors

kyabuuchi avatar rsasaki0109 avatar tomoya-sato 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

iris's Issues

MAPⅣ/iris build error

catkin_make of "https://github.com/MapIV/iris" fails.
An error like the one below appears. 
I would like to know how to solve it.
The environment and actions taken are described below.

■Error(See attached file for full text of error)

[ 2%] Building CXX object iris/iris/CMakeFiles/iris_node.dir/src/optimize/aligner.cpp.o
[ 2%] Building CXX object iris/iris/CMakeFiles/iris_node.dir/src/optimize/types_gicp.cpp.o
[ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/graph_optimizer.cc.o
[ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/local_bundle_adjuster.cc.o
[ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/transform_optimizer.cc.o
[ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/pose_optimizer.cc.o
[ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/global_bundle_adjuster.cc.o
[ 8%] Building CXX object iris/openvslam_bridge/3rd/openvslam/src/openvslam/CMakeFiles/openvslam.dir/optimize/g2o/se3/shot_vertex.cc.o
In file included from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.cc:1:
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:28:26: error: ‘number_t’ does not name a type
28 | void oplusImpl(const number_t* update_) override {
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:28:10: error: ‘void openvslam::optimize::g2o::se3::shot_vertex::oplusImpl(const int*)’ marked ‘override’, but does not override
28 | void oplusImpl(const number_t* update_) override {
| ^~~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h: In member function ‘void openvslam::optimize::g2o::se3::shot_vertex::oplusImpl(const int*)’:
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:29:48: error: no matching function for call to ‘Eigen::Map<const Eigen::Matrix<double, 6, 1, 0, 6, 1>, 0, Eigen::Stride<0, 0> >::Map(const int*&)’
29 | Eigen::Map update(update_);
| ^
In file included from /usr/include/eigen3/Eigen/Core:88,
from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/type.h:10,
from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:4,
from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.cc:1:
/usr/include/eigen3/Eigen/src/Core/Map.h:162:5: note: candidate: ‘Eigen::Map<MatrixType, MapOptions, StrideType>::Map(const Eigen::Map<MatrixType, MapOptions, StrideType>&) [with PlainObjectType = const Eigen::Matrix<double, 6, 1, 0, 6, 1>; int MapOptions = 0; StrideType = Eigen::Stride<0, 0>]’
162 | EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/Map.h:162:5: note: no known conversion for argument 1 from ‘const int*’ to ‘const Eigen::Map<const Eigen::Matrix<double, 6, 1, 0, 6, 1>, 0, Eigen::Stride<0, 0> >&’
162 | EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/eigen3/Eigen/Core:470,
from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/type.h:10,
from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.h:4,
from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/se3/shot_vertex.cc:1:
/usr/include/eigen3/Eigen/src/Core/Map.h:156:12: note: candidate: ‘Eigen::Map<MatrixType, MapOptions, StrideType>::Map(Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType, Eigen::Index, Eigen::Index, const StrideType&) [with PlainObjectType = const Eigen::Matrix<double, 6, 1, 0, 6, 1>; int MapOptions = 0; StrideType = Eigen::Stride<0, 0>; Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType = const double*; Eigen::Index = long int]’
156 | inline Map(PointerArgType dataPtr, Index rows, Index cols, const StrideType& stride = StrideType())
| ^~~
/usr/include/eigen3/Eigen/src/Core/Map.h:156:12: note: candidate expects 4 arguments, 1 provided
/usr/include/eigen3/Eigen/src/Core/Map.h:142:12: note: candidate: ‘Eigen::Map<MatrixType, MapOptions, StrideType>::Map(Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType, Eigen::Index, const StrideType&) [with PlainObjectType = const Eigen::Matrix<double, 6, 1, 0, 6, 1>; int MapOptions = 0; StrideType = Eigen::Stride<0, 0>; Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType = const double*; Eigen::Index = long int]’
142 | inline Map(PointerArgType dataPtr, Index size, const StrideType& stride = StrideType())
| ^~~
/usr/include/eigen3/Eigen/src/Core/Map.h:142:12: note: candidate expects 3 arguments, 1 provided
/usr/include/eigen3/Eigen/src/Core/Map.h:129:21: note: candidate: ‘Eigen::Map<MatrixType, MapOptions, StrideType>::Map(Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType, const StrideType&) [with PlainObjectType = const Eigen::Matrix<double, 6, 1, 0, 6, 1>; int MapOptions = 0; StrideType = Eigen::Stride<0, 0>; Eigen::Map<MatrixType, MapOptions, StrideType>::PointerArgType = const double*]’
129 | explicit inline Map(PointerArgType dataPtr, const StrideType& stride = StrideType())
| ^~~
/usr/include/eigen3/Eigen/src/Core/Map.h:129:40: note: no known conversion for argument 1 from ‘const int*’ to ‘Eigen::Map<const Eigen::Matrix<double, 6, 1, 0, 6, 1>, 0, Eigen::Stride<0, 0> >::PointerArgType’ {aka ‘const double*’}
129 | explicit inline Map(PointerArgType dataPtr, const StrideType& stride = StrideType())
| ~~~~~~~~~~~~~~~^~~~~~~
In file included from /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:26:
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:63:17: error: ‘number_t’ has not been declared
63 | Matrix3 prec0(number_t e); // for target
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:64:17: error: ‘number_t’ has not been declared
64 | Matrix3 prec1(number_t e); // for source
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:67:16: error: ‘number_t’ has not been declared
67 | Matrix3 cov0(number_t e); // for target
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:68:16: error: ‘number_t’ has not been declared
68 | Matrix3 cov1(number_t e); // for source
| ^~~~~~~~
In file included from /home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/transform_optimizer.cc:4:
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:28:26: error: ‘number_t’ does not name a type
28 | void oplusImpl(const number_t* update_) override {
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:28:10: error: ‘void openvslam::optimize::g2o::sim3::transform_vertex::oplusImpl(const int*)’ marked ‘override’, but does not override
28 | void oplusImpl(const number_t* update_) override {
| ^~~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h: In member function ‘void openvslam::optimize::g2o::sim3::transform_vertex::oplusImpl(const int*)’:
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:29:46: error: ‘number_t’ does not name a type
29 | Eigen::Map<Vec7_t> update(const_cast<number_t*>(update_));
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:29:54: error: expected ‘>’ before ‘’ token
29 | Eigen::Map<Vec7_t> update(const_cast<number_t
>(update_));
| ^
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:29:54: error: expected ‘(’ before ‘’ token
29 | Eigen::Map<Vec7_t> update(const_cast<number_t
>(update_));
| ^
| (
/home/cool4/catkin_iris_ws/src/iris/openvslam_bridge/3rd/openvslam/src/openvslam/optimize/g2o/sim3/transform_vertex.h:29:55: error: expected primary-expression before ‘>’ token
29 | Eigen::Map<Vec7_t> update(const_cast<number_t*>(update_));
| ^
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:64:9: error: ‘g2o::Matrix3 iris::optimize::EdgeGICP::prec0’ is not a static data member of ‘class iris::optimize::EdgeGICP’
64 | Matrix3 EdgeGICP::prec0(number_t e)
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:64:25: error: ‘number_t’ was not declared in this scope; did you mean ‘g2o::number_t’?
64 | Matrix3 EdgeGICP::prec0(number_t e)
| ^~~~~~~~
| g2o::number_t
In file included from /usr/local/include/g2o/core/jacobian_workspace.h:34,
from /usr/local/include/g2o/core/optimizable_graph.h:39,
from /usr/local/include/g2o/core/base_edge.h:36,
from /usr/local/include/g2o/core/base_fixed_sized_edge.h:35,
from /usr/local/include/g2o/core/base_binary_edge.h:30,
from /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.hpp:28,
from /home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:26:
/usr/local/include/g2o/core/eigen_types.h:36:7: note: ‘g2o::number_t’ declared here
36 | using number_t = double;
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:65:1: error: expected ‘,’ or ‘;’ before ‘{’ token
65 | {
| ^
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:74:9: error: ‘g2o::Matrix3 iris::optimize::EdgeGICP::prec1’ is not a static data member of ‘class iris::optimize::EdgeGICP’
74 | Matrix3 EdgeGICP::prec1(number_t e)
| ^~~~~~~~
/home/cool4/catkin_iris_ws/src/iris/iris/src/optimize/types_gicp.cpp:74:25: error: ‘number_t’ was not declared in this scope; did you mean ‘g2o::number_t’?
74 | Matrix3 EdgeGICP::prec1(number_t e)
| ^~~~~~~~
| g2o::number_t
・・・・・・

iris_build_log.txt

■environment
・Ubuntu20.04
・ROS1(ROS Noetic Ninjemys)
・g2o(https://github.com/RainerKuemmerle/g2o)
・DBoW2(https://github.com/shinsumicco/DBoW2)
・The hardware is “Jestone AGX Orin"

■procedure
1.
Launching the "Ubuntu20.04" environment

2.
ROS1 install
https://wiki.ros.org/noetic/Installation/Ubuntu

3.
g2o install
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make
sudo make install

4.
DBoW2 install
mkdir DBow2_ws
cd DBow2_ws
git clone https://github.com/shinsumicco/DBoW2.git
cd DBoW2
mkdir build
cd build
cmake ..
make sudo make install

5.
MapⅣ/iris build
https://github.com/MapIV/iris.git
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone --recursive https://github.com/MapIV/iris.git
cd ..
catkin_make
An error occurs!!

It looks like the error is that the header on the g2o(version 1.0.0) side cannot be referenced at build time...
g2o libraries and headers are properly stored in include and lib under /usr/local.
No changes have been made to the source code of "MAPⅣ/iris".

Wrong estimate when using my data

Hi @rsasaki0109 , It is an amazing job. Thanks for sharing this package. I am successfully run your demo with openvslam in kitti data. When I change to my data, it seems wrong. I think maybe it is the tf's problem. Can you kindly point out how to prepare the .pcd and .bag?
Screenshot from 2021-07-05 17-04-23

My equipment:
Lidar : Velodyne 16
Camera : usb camera monocular

My data:
Lidar : lego-loam /laser_cloud_surround pcl_ros bag_to_pcd
Camera : usb_cam /usbcam/image_raw

build error

with a problem of g2o?or ?
this is the error on terminal Window:
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:40:12: error: ‘g2o::Matrix3’ has not been declared
using g2o::Matrix3;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:41:12: error: ‘g2o::Vector3’ has not been declared
using g2o::Vector3;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:49:3: error: ‘Vector3’ does not name a type
Vector3 pos0, pos1;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:51:3: error: ‘Vector3’ does not name a type
Vector3 normal0, normal1;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:53:3: error: ‘Matrix3’ does not name a type
Matrix3 R0, R1;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:64:3: error: ‘Matrix3’ does not name a type
Matrix3 prec0(number_t e); // for target
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:65:3: error: ‘Matrix3’ does not name a type
Matrix3 prec1(number_t e); // for source
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:68:3: error: ‘Matrix3’ does not name a type
Matrix3 cov0(number_t e); // for target
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:69:3: error: ‘Matrix3’ does not name a type
Matrix3 cov1(number_t e); // for source
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.hpp:77:3: error: ‘Matrix3’ does not name a type
Matrix3 cov0, cov1;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp: In constructor ‘iris::optimize::EdgeGICP::EdgeGICP()’:
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:34:3: error: ‘pos0’ was not declared in this scope
pos0.setZero();
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:35:3: error: ‘pos1’ was not declared in this scope
pos1.setZero();
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:36:3: error: ‘normal0’ was not declared in this scope
normal0 << 0, 0, 1;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:37:3: error: ‘normal1’ was not declared in this scope
normal1 << 0, 0, 1;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:38:3: error: ‘R0’ was not declared in this scope
R0.setIdentity();
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:39:3: error: ‘R1’ was not declared in this scope
R1.setIdentity();
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp: In member function ‘void iris::optimize::EdgeGICP::makeRot0()’:
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:44:3: error: ‘Vector3’ was not declared in this scope
Vector3 y;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:45:3: error: ‘y’ was not declared in this scope
y << 0, 1, 0;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:46:3: error: ‘R0’ was not declared in this scope
R0.row(2) = normal0;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:46:15: error: ‘normal0’ was not declared in this scope
R0.row(2) = normal0;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp: In member function ‘void iris::optimize::EdgeGICP::makeRot1()’:
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:55:3: error: ‘Vector3’ was not declared in this scope
Vector3 y;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:56:3: error: ‘y’ was not declared in this scope
y << 0, 1, 0;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:57:3: error: ‘R1’ was not declared in this scope
R1.row(2) = normal1;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:57:15: error: ‘normal1’ was not declared in this scope
R1.row(2) = normal1;
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp: At global scope:
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:64:1: error: ‘Matrix3’ does not name a type
Matrix3 EdgeGICP::prec0(number_t e)
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:74:1: error: ‘Matrix3’ does not name a type
Matrix3 EdgeGICP::prec1(number_t e)
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:84:1: error: ‘Matrix3’ does not name a type
Matrix3 EdgeGICP::cov0(number_t e)
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:93:1: error: ‘Matrix3’ does not name a type
Matrix3 EdgeGICP::cov1(number_t e)
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp: In member function ‘virtual void iris::optimize::Edge_Sim3_GICP::computeError()’:
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:108:3: error: ‘Vector3’ was not declared in this scope
Vector3 p1 = vp0->estimate().map(measurement().pos1);
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:110:36: error: ‘p1’ was not declared in this scope
_error = measurement().weight * (p1 - measurement().pos0);
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:110:55: error: ‘const Measurement {aka const class iris::optimize::EdgeGICP}’ has no member named ‘pos0’
_error = measurement().weight * (p1 - measurement().pos0);
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:116:9: error: ‘Matrix3’ does not name a type
const Matrix3 R = vp0->estimate().rotation().matrix();
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:117:20: error: ‘cov0’ was not declared in this scope
information() = (cov0 + R * cov1 * R.transpose()).inverse();
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:117:27: error: ‘R’ was not declared in this scope
information() = (cov0 + R * cov1 * R.transpose()).inverse();
^
/home/zlj/catkin_iris/src/iris/iris/src/optimize/types_gicp.cpp:117:31: error: ‘cov1’ was not declared in this scope
information() = (cov0 + R * cov1 * R.transpose()).inverse();
^

catkin_make error

hi i want to try to use your research but i got catkin_make error.
can you help me out it?

/home/chan/Project/test_ws/src/src/iris/openvslam_bridge/src/bridge.cpp:102:56: error: ‘using element_type = class openvslam::publish::map_publisher’ {aka ‘class openvslam::publish::map_publisher’} has no member named ‘get_max_keyframe_id’; did you mean ‘get_keyframes’?
  102 |   unsigned int max_id = SLAM_ptr->get_map_publisher()->get_max_keyframe_id();
      |                                                        ^~~~~~~~~~~~~~~~~~~
      |                                                        get_keyframes
/home/chan/Project/test_ws/src/src/iris/openvslam_bridge/src/bridge.cpp:105:47: error: ‘class openvslam::data::landmark’ has no member named ‘last_observed_keyfrm_id_’
  105 |     unsigned int last_observed_id = local_lm->last_observed_keyfrm_id_;
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~
/home/chan/Project/test_ws/src/src/iris/openvslam_bridge/src/bridge.cpp:104:18: warning: unused variable ‘first_observed_id’ [-Wunused-variable]
  104 |     unsigned int first_observed_id = local_lm->first_keyfrm_id_;
      |                  ^~~~~~~~~~~~~~~~~
/home/chan/Project/test_ws/src/src/iris/openvslam_bridge/src/bridge.cpp: In member function ‘int iris::BridgeOpenVSLAM::getState() const’:
/home/chan/Project/test_ws/src/src/iris/openvslam_bridge/src/bridge.cpp:144:60: error: ‘using element_type = class openvslam::publish::frame_publisher’ {aka ‘class openvslam::publish::frame_publisher’} has no member named ‘get_tracking_state’; did you mean ‘openvslam::tracker_state_t openvslam::publish::frame_publisher::tracking_state_’? (not accessible from this context)
  144 |   return static_cast<int>(SLAM_ptr->get_frame_publisher()->get_tracking_state());
      |                                                            ^~~~~~~~~~~~~~~~~~

The posiitoning error is not normal

Hi @rsasaki0109 , Thanks for sharing such a good package. I am replicating the demo that you provide. I got the results as follows:

image

The data that I use are as follows:
image

I found that the provided rosbag name is the kitti_00_video.bag, but the bag file you instruct to play is the "rosbag play kitti_00.bag # (on another terminal)".

I also try to slow down the rosbag play speed with 0.2 rates but it still gets large error, Could you please kindly help to point out the reason behind this?

My computer setup is as follows:
Ubuntu 18.04
-- PCL version:
1.7.2
-- OpenCV version:
3.2
-- Eigen3 version:
3.3.7
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libGL.so
-- g2o version:
1.0.0

try to set init pose by lidar odometry

Hi!

Thank you for your great work, I really enjoy and have fun with that on my project.

I have a 3d point cloud map constructed by lidar and I have a global localization module which is we loaded 3d point cloud map at somewhere and find a localization pose by scan matching. and start Localization.

what I want to do is set the pose of global localization to the init pose of your project and start its visual odometry.

I tried to do this work but because of my weak math knowledge, I m struggling with it.

can you point out where should I look and any recommendations?

thank you!

have a nice day.

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.