Giter Club home page Giter Club logo

hand_eye_calibration's Introduction

Hand-Eye-Calibration

Description

Python tools to perform hand-eye calibration.

If you are using these tools, please cite our paper:

@Inbook{Furrer2017FSR,
author="Furrer, Fadri
and Fehr, Marius
and Novkovic, Tonci
and Sommer, Hannes
and Gilitschenski, Igor
and Siegwart, Roland",
editor="Siegwart, Roland
and Hutter, Marco",
title="Evaluation of Combined Time-Offset Estimation and Hand-Eye Calibration on Robotic Datasets",
bookTitle="Field and Service Robotics: Results of the 11th International Conference",
year="2017",
publisher="Springer International Publishing",
address="Cham",
isbn="978-3-319-67361-5"
}

It includes time alignment of sets of poses, the implementation of a dual-quaternion based approach to solve the hand eye calibration, pre-filtering and filtering of poses, as well as the integration of a pose refinement step using batch optimization from oomact.

There are also classes that implement quaternions and dual-quaternions a set of plotting tools that were used to generate the plots in the paper.

The datasets where these algorithms are evaluated on can be found here.

Installation

System Dependencies - Ubuntu 16.04

# Install ROS repository
sudo apt-get install software-properties-common libv4l-dev
sudo add-apt-repository "deb http://packages.ros.org/ros/ubuntu xenial main"
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
sudo apt-get update

# Install system depdendencies [INCOMPLETE]
sudo apt-get install ros-kinetic-desktop-full doxygen python-catkin-tools

Workspace - OSX / Ubuntu 16.04 / Ubuntu 14.04

# Create catkin workspace.
export CATKIN_WS=~/catkin_ws
mkdir -p $CATKIN_WS/src
cd $CATKIN_WS
catkin init
catkin config --merge-devel
catkin config --extend /opt/ros/<YOUR_ROS_DISTRO>
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

# Clone the repositories and its dependencies.
cd src
git clone https://github.com/ethz-asl/hand_eye_calibration.git
wstool init
wstool merge hand_eye_calibration/all_dependencies.rosinstall
wstool update -j 8

# Build hand_eye_calibration_package
catkin build hand_eye_calibration hand_eye_calibration_target_extractor hand_eye_calibration_batch_estimation

Tutorial

Formats

Our hand-eye calibration expects timestamped poses with Hamiltonian quaternions in the following format, where [.] denotes the unit:

p = [t[s], x[m], y[m], z[m], q_x, q_y, q_z, q_w]

Our scripts expect CSV files with the following format:

t, x, y, z, q_x, q_y, q_z, q_w

Frames

In our hand-eye calibration we use the following frames:

  • H: Hand — The frame of the robot end-effector (or the vicon output pose).
  • B: Base — The robot's base frame, usually the end-effector poses are expressed with respect to this frame.
  • E: Eye — The frame of the camera.
  • W: World - The frame of the target.

Usage

All our tools can either be run via ROS, using

rosrun hand_eye_calibration <tool>.py [arguments]

or directly by changing into this directory (e.g. ~/catkin_ws/src/hand_eye_calibration/hand_eye_calibration) and executing:

./bin/<tool>.py [arguments]

Step-by-Step Calibration

A typical use case consists of the following steps (here using ROS):

  • Extract poses from tf (ROS transformation type) messages (with time stamps):
    rosrun hand_eye_calibration tf_to_csv.py --bag calibration.bag --tf_source_frame end_effector --tf_target_frame base_link --csv_output_file tf_poses_timestamped.csv
  • Extract poses from images (with time stamps):
    rosrun hand_eye_calibration target_extractor_interface.py \
      --bag calibration.bag \
      --calib_file_camera calib/camera_intrinsics.yaml \
      --calib_file_target calib/target.yaml \
      --image_topic /camera/rgb/image_raw \
      --output_file camera_poses_timestamped.csv
  • Time alignment of the poses and interpolate the two sets at given time stamps:
    rosrun hand_eye_calibration compute_aligned_poses.py \
      --poses_B_H_csv_file tf_poses_timestamped.csv \
      --poses_W_E_csv_file camera_poses_timestamped.csv \ --aligned_poses_B_H_csv_file tf_aligned.csv \
      --aligned_poses_W_E_csv_file camera_aligned.csv \
      --time_offset_output_csv_file time_offset.csv
  • Perform the dual-quaternion-based hand-eye calibration:
    rosrun hand_eye_calibration compute_hand_eye_calibration.py \
      --aligned_poses_B_H_csv_file tf_aligned.csv  \
      --aligned_poses_W_E_csv_file camera_aligned.csv \
      --time_offset_input_csv_file time_offset.csv \
      --calibration_output_json_file calibration.json \
      --visualize True
  • Run optimization to refine the calibration:
 rosrun hand_eye_calibration_batch_estimation batch_estimator \
   --v 1 \
   --pose1_csv tf_poses_timestamped.csv \
   --pose2_csv camera_poses_timestamped.csv \
   --init_guess_file calibration.json \
   --output_file calibration_optimized.json

End-to-End Calibration

If you already have the CSV files ready as described above you can use the end-to-end calibration script as follows:

rosrun hand_eye_calibration compute_complete_handeye_calibration.sh \
poses_B_H.csv poses_W_E.csv

Running the Tests

Tests are all python unittests and can be run with the following command:

python test/test_<test_filename>.py

or you can directly invoke the tests with catkin:

catkin run_tests hand_eye_calibration

hand_eye_calibration's People

Contributors

christian-rauch avatar fabianbl avatar farrutapps avatar ffurrer avatar hannessommer avatar huberya avatar mbreyer avatar mfehr avatar ntonci avatar panjekm 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

hand_eye_calibration's Issues

catkin_build error: ‘loadFromYaml’ is not a member of ‘aslam::Camera’

Hello
There is an error when I catkin_build this package:

/home/wang/imta_project/ethz_hand_eye_ws/src/hand_eye_calibration/hand_eye_calibration_target_extractor/src/target_extractor.cc:236:9: error: ‘loadFromYaml’ is not a member of ‘aslam::Camera’
         aslam::Camera::loadFromYaml(FLAGS_eval_camera_yaml);
         ^

I check the aslam_cv2/src/camera.cc, there is no loadFromYaml function. I don't know how to fix this issue, Could you please provide some advice? Thanks a lot!

calibration FAILED in pure rotation scenarios

Hello,

I'm trying to use the hand-eye calibration to calculate the transformation between two trajectories. These two trajectories are pure rotation, that is, the translation part are all zeros.

When I run "compute_hand_eye_calibration.py", the calibration FAILED. Then I modified the "all-zero" translation with non-zero value, this still occur, but just sometimes.

While debugging, I learnt that the dual-quaternion based calibration algorithm you implemented has a precondition as " assert a != 0.0, "This would involve division by zero." " When I set "all translations = zero", the value "a" exactly equals 0. When I set "all translations = a non-zero value", the value "a" sometimes becomes very small (e.g., 1.0e-15). This seems to be the reason of the failure.

I found a temporary solution as
image

but I am not sure whether this is a right way. Or, maybe this " calibration FAILED" is just because of my improper understanding. I will appreciate any of your help.

catkin build error: aslam optimizer/sparse_block_matrix

Hello,

I've been unable to install on an Ubuntu 16.04 / ROS Kinetic. I think the issue is with the suiteparse and aslam optimizer dependency.

Running
catkin build hand_eye_calibration hand_eye_calibration_target_extractor hand_eye_calibration_batch_estimation
results in the following error:
cholmod.h: No such file or directory

When I searched for the error, this PR came up which appears to fix the issue. Would appreciate any assistance you can offer.

Thanks!

Error message:

Errors     << sparse_block_matrix:make /home/robot/catkin_ws/logs/sparse_block_matrix/build.make.001.log
In file included from /home/robot/catkin_ws/src/aslam_optimizer/sparse_block_matrix/src/sparse_helper.cpp:1:0:
/home/robot/catkin_ws/src/aslam_optimizer/sparse_block_matrix/include/sparse_block_matrix/sparse_helper.h:27:21: fatal error: cholmod.h: No such file or directory
compilation terminated.
make[2]: *** [CMakeFiles/sparse_block_matrix.dir/src/sparse_helper.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /home/robot/catkin_ws/src/aslam_optimizer/sparse_block_matrix/include/sparse_block_matrix/sparse_block_matrix.h:30:0,
                 from /home/robot/catkin_ws/src/aslam_optimizer/sparse_block_matrix/include/sparse_block_matrix/marginal_covariance_cholesky.h:21,
                 from /home/robot/catkin_ws/src/aslam_optimizer/sparse_block_matrix/src/marginal_covariance_cholesky.cpp:17:
/home/robot/catkin_ws/src/aslam_optimizer/sparse_block_matrix/include/sparse_block_matrix/sparse_helper.h:27:21: fatal error: cholmod.h: No such file or directory
compilation terminated.
make[2]: *** [CMakeFiles/sparse_block_matrix.dir/src/marginal_covariance_cholesky.cpp.o] Error 1
make[1]: *** [CMakeFiles/sparse_block_matrix.dir/all] Error 2
make: *** [all] Error 2

Installing in ROS environment

Hello,

I am using Ubuntu 18.04.
While following the installation instruction, I have encountered the following.

(ros_env) uav@uav-ThinkPad-T430s3:~/catkin_ws/src$ catkin build hand_eye_calibration hand_eye_calibration_target_extractor hand_eye_calibration_batch_estimation

Profile: default
Extending: [cached] /home/uav/miniconda3/envs/ros_env
Workspace: /home/uav/catkin_ws

Build Space: [exists] /home/uav/catkin_ws/build
Devel Space: [exists] /home/uav/catkin_ws/devel
Install Space: [unused] /home/uav/catkin_ws/install
Log Space: [exists] /home/uav/catkin_ws/logs
Source Space: [exists] /home/uav/catkin_ws/src
DESTDIR: [unused] None

Devel Space Layout: merged
Install Space Layout: None

Additional CMake Args: -DCMAKE_BUILD_TYPE=Release
Additional Make Args: None
Additional catkin Make Args: None
Internal Make Job Server: True
Cache Job Environments: False

Buildlisted Packages: None
Skiplisted Packages: None

Workspace configuration appears valid.

[build] Found 64 packages in 0.0 seconds.
[build] Package table is up to date.
Starting >>> catkin_simple
Starting >>> doxygen_catkin
Starting >>> libnabo
Starting >>> system_suitesparse
Finished <<< catkin_simple [ 0.1 seconds ]
Starting >>> asl_cmake_modules
Finished <<< doxygen_catkin [ 0.2 seconds ]
Starting >>> eigen_catkin
Finished <<< system_suitesparse [ 0.2 seconds ]
Finished <<< asl_cmake_modules [ 0.2 seconds ]
Starting >>> gflags_catkin
Starting >>> hand_eye_calibration
Finished <<< eigen_catkin [ 0.2 seconds ]
Starting >>> opencv3_catkin


Warnings << libnabo:make /home/uav/catkin_ws/logs/libnabo/build.make.004.log
warning: Tag SYMBOL_CACHE_SIZE' at line 289 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag SHOW_DIRECTORIES' at line 473 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag HTML_ALIGN_MEMBERS' at line 799 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag XML_SCHEMA' at line 1136 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag XML_DTD' at line 1142 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: doxygen no longer ships with the FreeSans font.
You may want to clear or change DOT_FONTNAME.
Otherwise you run the risk that the wrong font is being used for dot generated graphs.
warning: the dot tool could not be found at /home/uav/miniconda3/envs/ros_env/bin
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:199: warning: multiple use of section label 'ANN' while adding anchor, (first occurrence: /home/uav/catkin_ws/src/libnabo/nabo/nabo.h, line 170)
/home/uav/catkin_ws/src/libnabo/nabo/nabo.cpp:50: warning: Compound Nabo::runtime_error is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/third_party/any.hpp:36: warning: Compound linb::any is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/third_party/any.hpp:27: warning: Compound linb::bad_any_cast is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:217: warning: Member invalidIndex() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:223: warning: Member invalidValue() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:217: warning: Member invalidIndex() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:223: warning: Member invalidValue() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/third_party/any.hpp:29: warning: Member what() const noexcept override (function) of class linb::bad_any_cast is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:217: warning: Member invalidIndex() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:223: warning: Member invalidValue() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:74: warning: Member Vector (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:75: warning: Member Matrix (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:76: warning: Member Index (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:77: warning: Member IndexVector (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:78: warning: Member IndexMatrix (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:88: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Index k, const T epsilon, const unsigned optionFlags, const T maxRadius) const (function) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:89: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:260: warning: Member Vector (typedef) of class Nabo::BruteForceSearchOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:261: warning: Member Matrix (typedef) of class Nabo::BruteForceSearchOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:262: warning: Member Index (typedef) of class Nabo::BruteForceSearchOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:224: warning: Member Vector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:225: warning: Member Matrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:226: warning: Member Index (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:227: warning: Member IndexVector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:228: warning: Member IndexMatrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:253: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:274: warning: Member Vector (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:275: warning: Member Matrix (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:276: warning: Member Index (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:277: warning: Member IndexVector (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:278: warning: Member IndexMatrix (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:224: warning: Member Vector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:225: warning: Member Matrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:226: warning: Member Index (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:227: warning: Member IndexVector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:228: warning: Member IndexMatrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:253: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:350: warning: Member Vector (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:351: warning: Member Matrix (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:352: warning: Member Index (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:353: warning: Member IndexVector (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:354: warning: Member IndexMatrix (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:224: warning: Member Vector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:225: warning: Member Matrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:226: warning: Member Index (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:227: warning: Member IndexVector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:228: warning: Member IndexMatrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:253: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:96: warning: Member Vector (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:97: warning: Member Matrix (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:98: warning: Member Index (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:99: warning: Member IndexVector (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:100: warning: Member IndexMatrix (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:224: warning: Member Vector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:225: warning: Member Matrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:226: warning: Member Index (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:227: warning: Member IndexVector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:228: warning: Member IndexMatrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:253: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.cpp:53: warning: Member operator<<(const T &t) (function) of class Nabo::runtime_error is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.cpp:64: warning: Member runtime_error(const runtime_error &re) (function) of class Nabo::runtime_error is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.cpp:51: warning: Member ss (variable) of class Nabo::runtime_error is not documented.
cd /home/uav/catkin_ws/build/libnabo; catkin build --get-env libnabo | catkin env -si /home/uav/miniconda3/envs/ros_env/bin/make --jobserver-auth=4,5; cd -

.................................................................................................................................................................................................................................
Finished <<< gflags_catkin [ 0.2 seconds ]
Starting >>> glog_catkin
Finished <<< hand_eye_calibration [ 0.2 seconds ]
Starting >>> opengv


Warnings << libnabo:install /home/uav/catkin_ws/logs/libnabo/build.install.004.log
warning: Tag SYMBOL_CACHE_SIZE' at line 289 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag SHOW_DIRECTORIES' at line 473 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag HTML_ALIGN_MEMBERS' at line 799 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag XML_SCHEMA' at line 1136 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag XML_DTD' at line 1142 of file /home/uav/catkin_ws/build/libnabo/Doxyfile' has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: doxygen no longer ships with the FreeSans font.
You may want to clear or change DOT_FONTNAME.
Otherwise you run the risk that the wrong font is being used for dot generated graphs.
warning: the dot tool could not be found at /home/uav/miniconda3/envs/ros_env/bin
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:199: warning: multiple use of section label 'ANN' while adding anchor, (first occurrence: /home/uav/catkin_ws/src/libnabo/nabo/nabo.h, line 170)
/home/uav/catkin_ws/src/libnabo/nabo/nabo.cpp:50: warning: Compound Nabo::runtime_error is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/third_party/any.hpp:36: warning: Compound linb::any is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/third_party/any.hpp:27: warning: Compound linb::bad_any_cast is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:217: warning: Member invalidIndex() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:223: warning: Member invalidValue() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:217: warning: Member invalidIndex() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:223: warning: Member invalidValue() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/third_party/any.hpp:29: warning: Member what() const noexcept override (function) of class linb::bad_any_cast is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:217: warning: Member invalidIndex() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.h:223: warning: Member invalidValue() (function) of namespace Nabo is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:74: warning: Member Vector (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:75: warning: Member Matrix (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:76: warning: Member Index (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:77: warning: Member IndexVector (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:78: warning: Member IndexMatrix (typedef) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:88: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Index k, const T epsilon, const unsigned optionFlags, const T maxRadius) const (function) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:89: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::BruteForceSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:260: warning: Member Vector (typedef) of class Nabo::BruteForceSearchOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:261: warning: Member Matrix (typedef) of class Nabo::BruteForceSearchOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:262: warning: Member Index (typedef) of class Nabo::BruteForceSearchOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:224: warning: Member Vector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:225: warning: Member Matrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:226: warning: Member Index (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:227: warning: Member IndexVector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:228: warning: Member IndexMatrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:253: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:274: warning: Member Vector (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:275: warning: Member Matrix (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:276: warning: Member Index (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:277: warning: Member IndexVector (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:278: warning: Member IndexMatrix (typedef) of class Nabo::KDTreeBalancedPtInLeavesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:224: warning: Member Vector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:225: warning: Member Matrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:226: warning: Member Index (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:227: warning: Member IndexVector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:228: warning: Member IndexMatrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:253: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:350: warning: Member Vector (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:351: warning: Member Matrix (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:352: warning: Member Index (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:353: warning: Member IndexVector (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:354: warning: Member IndexMatrix (typedef) of class Nabo::KDTreeBalancedPtInNodesStackOpenCL is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:224: warning: Member Vector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:225: warning: Member Matrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:226: warning: Member Index (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:227: warning: Member IndexVector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:228: warning: Member IndexMatrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:253: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:96: warning: Member Vector (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:97: warning: Member Matrix (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:98: warning: Member Index (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:99: warning: Member IndexVector (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:100: warning: Member IndexMatrix (typedef) of class Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:224: warning: Member Vector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:225: warning: Member Matrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:226: warning: Member Index (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:227: warning: Member IndexVector (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:228: warning: Member IndexMatrix (typedef) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo_private.h:253: warning: Member knn(const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const (function) of class Nabo::OpenCLSearch is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.cpp:53: warning: Member operator<<(const T &t) (function) of class Nabo::runtime_error is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.cpp:64: warning: Member runtime_error(const runtime_error &re) (function) of class Nabo::runtime_error is not documented.
/home/uav/catkin_ws/src/libnabo/nabo/nabo.cpp:51: warning: Member ss (variable) of class Nabo::runtime_error is not documented.
cd /home/uav/catkin_ws/build/libnabo; catkin build --get-env libnabo | catkin env -si /home/uav/miniconda3/envs/ros_env/bin/make install; cd -

.................................................................................................................................................................................................................................
Finished <<< libnabo [ 1.2 seconds ]
Starting >>> protobuf_catkin


Errors << glog_catkin:make /home/uav/catkin_ws/logs/glog_catkin/build.make.005.log
make[3]: warning: -j8 forced in submake: resetting jobserver mode.
libtool: Version mismatch error. This is libtool 2.4.7, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.7
libtool: and run autoconf again.
make[3]: *** [Makefile:1187: src/libglog_la-raw_logging.lo] Error 63
make[3]: *** Waiting for unfinished jobs....
libtool: Version mismatch error. This is libtool 2.4.7, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.7
libtool: and run autoconf again.
make[3]: *** [Makefile:1180: src/libglog_la-logging.lo] Error 63
libtool: Version mismatch error. This is libtool 2.4.7, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.7
libtool: and run autoconf again.
make[3]: *** [Makefile:1194: src/libglog_la-vlog_is_on.lo] Error 63
libtool: Version mismatch error. This is libtool 2.4.7, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.7
libtool: and run autoconf again.
make[3]: *** [Makefile:1208: src/libglog_la-demangle.lo] Error 63
libtool: Version mismatch error. This is libtool 2.4.7, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.7
libtool: and run autoconf again.
make[3]: *** [Makefile:1222: src/libglog_la-signalhandler.lo] Error 63
libtool: Version mismatch error. This is libtool 2.4.7, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.7
libtool: and run autoconf again.
make[3]: *** [Makefile:1215: src/libglog_la-symbolize.lo] Error 63
libtool: Version mismatch error. This is libtool 2.4.7, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.7
libtool: and run autoconf again.
make[3]: *** [Makefile:1201: src/libglog_la-utilities.lo] Error 63
In file included from src/symbolize_unittest.cc:41:0:
src/googletest.h:579:33: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
void* operator new(size_t size) throw(std::bad_alloc) {
^~~~~
src/googletest.h:586:35: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
void* operator new[](size_t size) throw(std::bad_alloc) {
^~~~~
make[2]: *** [CMakeFiles/glog_src.dir/build.make:86: glog_src-prefix/src/glog_src-stamp/glog_src-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:272: CMakeFiles/glog_src.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
cd /home/uav/catkin_ws/build/glog_catkin; catkin build --get-env glog_catkin | catkin env -si /home/uav/miniconda3/envs/ros_env/bin/make --jobserver-auth=4,5; cd -

.................................................................................................................................................................................................................................
Failed << glog_catkin:make [ Exited with code 2 ]
Failed <<< glog_catkin [ 1.3 seconds ]
Abandoned <<< sm_common [ Unrelated job failed ]
Abandoned <<< sm_deprecation [ Unrelated job failed ]
Abandoned <<< sm_logging [ Unrelated job failed ]
Abandoned <<< sm_random [ Unrelated job failed ]
Abandoned <<< yaml_cpp_catkin [ Unrelated job failed ]
Abandoned <<< eigen_checks [ Unrelated job failed ]
Abandoned <<< minkindr [ Unrelated job failed ]
Abandoned <<< ethzasl_apriltag2 [ Unrelated job failed ]
Abandoned <<< sm_boost [ Unrelated job failed ]
Abandoned <<< sm_matrix_archive [ Unrelated job failed ]
Abandoned <<< sm_property_tree [ Unrelated job failed ]
Abandoned <<< sm_eigen [ Unrelated job failed ]
Abandoned <<< sm_kinematics [ Unrelated job failed ]
Abandoned <<< sm_timing [ Unrelated job failed ]
Abandoned <<< sm_value_store [ Unrelated job failed ]
Abandoned <<< sparse_block_matrix [ Unrelated job failed ]
Abandoned <<< aslam_backend [ Unrelated job failed ]
Abandoned <<< aslam_backend_expressions [ Unrelated job failed ]
Abandoned <<< bsplines [ Unrelated job failed ]
Abandoned <<< aslam_splines [ Unrelated job failed ]
Abandoned <<< oomact [ Unrelated job failed ]
Abandoned <<< hand_eye_calibration_batch_estimation [ Unrelated job failed ]
Abandoned <<< aslam_cv_common [ Unrelated job failed ]
Abandoned <<< aslam_cv_cameras [ Unrelated job failed ]
Abandoned <<< aslam_cv_frames [ Unrelated job failed ]
Abandoned <<< aslam_cv_matcher [ Unrelated job failed ]
Abandoned <<< aslam_cv_geometric_vision [ Unrelated job failed ]
Abandoned <<< aslam_cv_calibration [ Unrelated job failed ]
Abandoned <<< hand_eye_calibration_target_extractor [ Unrelated job failed ]


Errors << opengv:check /home/uav/catkin_ws/logs/opengv/build.check.004.log
Found catkin. Creating opengv package with catkin
CMake Error at modules/FindEigen.cmake:33 (file):
file failed to open for reading (No such file or directory):

/home/uav/miniconda3/envs/ros_env/include/eigen3/Eigen/src/Core/util/Macros.h

Call Stack (most recent call first):
modules/FindEigen.cmake:59 (_eigen3_check_version)
CMakeLists.txt:162 (find_package)

CMake Warning at CMakeLists.txt:165 (message):
Eigen: /home/uav/miniconda3/envs/ros_env/include/eigen3

make: *** [Makefile:3242: cmake_check_build_system] Error 1
cd /home/uav/catkin_ws/build/opengv; catkin build --get-env opengv | catkin env -si /home/uav/miniconda3/envs/ros_env/bin/make cmake_check_build_system; cd -

.................................................................................................................................................................................................................................
Failed << opengv:check [ Exited with code 2 ]
Failed <<< opengv [ 1.5 seconds ]
^C[build] Interrupted by user!
[build] Summary: 8 of 41 packages succeeded.
[build] Ignored: 23 packages were skipped or are skiplisted.
[build] Warnings: 1 packages succeeded with warnings.
[build] Abandoned: 31 packages were abandoned.
[build] Failed: 2 packages failed.
[build] Runtime: 4.7 seconds total.

I have reinstalled libtool to no avail. How might I resolve thiis?

aslam_cv_common compilation fails.

Hello,

Thank you very much for that package, looks like a great way to do the calibration!

I am having some issues with compiling aslam_cv_common :
Running catkin build hand_eye_calibration hand_eye_calibration_target_extractor hand_eye_calibration_batch_estimation

gives:

___________________________________________________________________________________________________________________________________________________________________________________________________________
Errors     << aslam_backend_expressions:make /home/Projects/extrinsics_calibration/logs/aslam_backend_expressions/build.make.001.log                                                                
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_solve'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_l_transpose'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_analyze'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_l_scale'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_l_start'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_l_free_dense'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_l_allocate_dense'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_free_dense'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_l_free_sparse'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_finish'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_start'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `int SuiteSparseQR_numeric<double>(double, cholmod_sparse_struct*, SuiteSparseQR_factorization<double>*, cholmod_common_struct*)'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_factorize'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `SuiteSparseQR_factorization<double>* SuiteSparseQR_symbolic<double>(int, int, cholmod_sparse_struct*, cholmod_common_struct*)'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_free_factor'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `int SuiteSparseQR_free<double>(SuiteSparseQR_factorization<double>**, cholmod_common_struct*)'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_l_finish'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_dense_struct* SuiteSparseQR_solve<double>(int, SuiteSparseQR_factorization<double>*, cholmod_dense_struct*, cholmod_common_struct*)'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_change_factor'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_amd'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_analyze_p'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `long SuiteSparseQR<double>(int, double, long, int, cholmod_sparse_struct*, cholmod_sparse_struct*, cholmod_dense_struct*, cholmod_sparse_struct**, cholmod_dense_struct**, cholmod_sparse_struct**, long**, cholmod_sparse_struct**, long**, cholmod_dense_struct**, cholmod_common_struct*)'
/home/Projects/extrinsics_calibration/devel/lib/libaslam_backend.so: undefined reference to `cholmod_dense_struct* SuiteSparseQR_qmult<double>(int, SuiteSparseQR_factorization<double>*, cholmod_dense_struct*, cholmod_common_struct*)'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/Projects/extrinsics_calibration/devel/lib/aslam_backend_expressions/aslam_backend_expressions-profiling] Error 1
make[1]: *** [CMakeFiles/aslam_backend_expressions-profiling.dir/all] Error 2
make: *** [all] Error 2
cd /home/Projects/extrinsics_calibration/build/aslam_backend_expressions; catkin build --get-env aslam_backend_expressions | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
...........................................................................................................................................................................................................
Failed     << aslam_backend_expressions:make                       [ Exited with code 2 ]                                                                                                                  
Failed    <<< aslam_backend_expressions                            [ 0.4 seconds ]                                                                                                                         
Abandoned <<< aslam_splines                                        [ Unrelated job failed ]                                                                                                                
Abandoned <<< oomact                                               [ Unrelated job failed ]                                                                                                                
Abandoned <<< hand_eye_calibration_batch_estimation                [ Unrelated job failed ]                                                                                                                
Abandoned <<< aslam_cv_cameras                                     [ Unrelated job failed ]                                                                                                                
Abandoned <<< aslam_cv_frames                                      [ Unrelated job failed ]                                                                                                                
Abandoned <<< aslam_cv_matcher                                     [ Unrelated job failed ]                                                                                                                
Abandoned <<< aslam_cv_geometric_vision                            [ Unrelated job failed ]                                                                                                                
Abandoned <<< aslam_cv_calibration                                 [ Unrelated job failed ]                                                                                                                
Abandoned <<< hand_eye_calibration_target_extractor                [ Unrelated job failed ]                                                                                                                
___________________________________________________________________________________________________________________________________________________________________________________________________________
Errors     << aslam_cv_common:cmake /home/Projects/extrinsics_calibration/logs/aslam_cv_common/build.cmake.014.log                                                                                  
CMake Error at /home/Projects/extrinsics_calibration/devel/share/catkin_simple/cmake/catkin_simple-extras.cmake:38 (find_package):
  By not providing "Findprotobuf_catkin.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "protobuf_catkin", but CMake did not find one.

  Could not find a package configuration file provided by "protobuf_catkin"
  with any of the following names:

    protobuf_catkinConfig.cmake
    protobuf_catkin-config.cmake

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


cd /home/Projects/extrinsics_calibration/build/aslam_cv_common; catkin build --get-env aslam_cv_common | catkin env -si  /usr/bin/cmake /home/Projects/extrinsics_calibration/src/aslam_cv2/aslam_cv_common --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/Projects/extrinsics_calibration/devel -DCMAKE_INSTALL_PREFIX=/home/Projects/extrinsics_calibration/install -DCMAKE_BUILD_TYPE=Release; cd -
...........................................................................................................................................................................................................
Failed     << aslam_cv_common:cmake                                [ Exited with code 1 ]                                                                                                                  
Failed    <<< aslam_cv_common                                      [ 0.6 seconds ]                                                                                                                         
[build] Summary: 29 of 40 packages succeeded.                                                                                                                                                              
[build]   Ignored:   24 packages were skipped or are blacklisted.                                                                                                                                          
[build]   Warnings:  None.                                                                                                                                                                                 
[build]   Abandoned: 9 packages were abandoned.                                                                                                                                                            
[build]   Failed:    2 packages failed.                                                                                                                                                                    
[build] Runtime: 3.5 seconds total.        ```











Any Idea how to fix this or what could be causing this compilation error? 

Thanks!

Relation to trajectory_toolkit

Could you maybe say a few words of how this project is related to https://github.com/ethz-asl/trajectory_toolkit, also from ASL?

Looks like there is a bit of overlap, for example trajectory_toolkit also implements similar time-alignment and also a simple version of hand-eye calibration.

Maybe these are just completely independent projects by different people? Maybe there was very specific reasons to develop this independently?

It would be great if you would share your insights, if you can.

CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30

I am following the install steps in the Readme. It is failing in the last step catkin build
catkin build hand_eye_calibration hand_eye_calibration_target_extractor hand_eye_calibration_batch_estimation

---------------------------------------------------------------
Profile:                     default
Extending:        [explicit] /opt/ros/noetic
Workspace:                   /home/menonsandu/catkin_ws
---------------------------------------------------------------
Build Space:        [exists] /home/menonsandu/catkin_ws/build
Devel Space:        [exists] /home/menonsandu/catkin_ws/devel
Install Space:      [unused] /home/menonsandu/catkin_ws/install
Log Space:          [exists] /home/menonsandu/catkin_ws/logs
Source Space:       [exists] /home/menonsandu/catkin_ws/src
DESTDIR:            [unused] None
---------------------------------------------------------------
Devel Space Layout:          merged
Install Space Layout:        None
---------------------------------------------------------------
Additional CMake Args:       -DCMAKE_BUILD_TYPE=Release
Additional Make Args:        None
Additional catkin Make Args: None
Internal Make Job Server:    True
Cache Job Environments:      False
---------------------------------------------------------------
Whitelisted Packages:        None
Blacklisted Packages:        None
---------------------------------------------------------------
Workspace configuration appears valid.
---------------------------------------------------------------
[build] Found '64' packages in 0.0 seconds.                                    
[build] Package table is up to date.                                           
Starting  >>> catkin_simple                                                    
Starting  >>> doxygen_catkin                                                   
Starting  >>> libnabo                                                          
Starting  >>> system_suitesparse                                               
_______________________________________________________________________________
Errors     << system_suitesparse:cmake /home/menonsandu/catkin_ws/logs/system_suitesparse/build.cmake.002.log
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python3-empy'
Call Stack (most recent call first):
  /opt/ros/noetic/share/catkin/cmake/all.cmake:164 (include)
  /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:4 (find_package)


cd /home/menonsandu/catkin_ws/build/system_suitesparse; catkin build --get-env system_suitesparse | catkin env -si  /usr/bin/cmake /home/menonsandu/catkin_ws/src/suitesparse/system_suitesparse --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/menonsandu/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/menonsandu/catkin_ws/install -DCMAKE_BUILD_TYPE=Release; cd -

...............................................................................
Failed     << system_suitesparse:cmake                             [ Exited with code 1 ]
Failed    <<< system_suitesparse                                   [ 0.1 seconds ]
Abandoned <<< asl_cmake_modules                                    [ Unrelated job failed ]
Abandoned <<< eigen_catkin                                         [ Unrelated job failed ]
Abandoned <<< gflags_catkin                                        [ Unrelated job failed ]
Abandoned <<< glog_catkin                                          [ Unrelated job failed ]
Abandoned <<< eigen_checks                                         [ Unrelated job failed ]
Abandoned <<< hand_eye_calibration                                 [ Unrelated job failed ]
Abandoned <<< minkindr                                             [ Unrelated job failed ]
Abandoned <<< opencv3_catkin                                       [ Unrelated job failed ]
Abandoned <<< ethzasl_apriltag2                                    [ Unrelated job failed ]
Abandoned <<< opengv                                               [ Unrelated job failed ]
Abandoned <<< protobuf_catkin                                      [ Unrelated job failed ]
Abandoned <<< sm_common                                            [ Unrelated job failed ]
Abandoned <<< sm_boost                                             [ Unrelated job failed ]
Abandoned <<< sm_deprecation                                       [ Unrelated job failed ]
Abandoned <<< sm_logging                                           [ Unrelated job failed ]
Abandoned <<< sm_matrix_archive                                    [ Unrelated job failed ]
Abandoned <<< sm_property_tree                                     [ Unrelated job failed ]
Abandoned <<< sm_random                                            [ Unrelated job failed ]
Abandoned <<< sm_eigen                                             [ Unrelated job failed ]
Abandoned <<< sm_kinematics                                        [ Unrelated job failed ]
Abandoned <<< sm_timing                                            [ Unrelated job failed ]
Abandoned <<< sm_value_store                                       [ Unrelated job failed ]
Abandoned <<< sparse_block_matrix                                  [ Unrelated job failed ]
Abandoned <<< aslam_backend                                        [ Unrelated job failed ]
Abandoned <<< aslam_backend_expressions                            [ Unrelated job failed ]
Abandoned <<< bsplines                                             [ Unrelated job failed ]
Abandoned <<< aslam_splines                                        [ Unrelated job failed ]
Abandoned <<< oomact                                               [ Unrelated job failed ]
Abandoned <<< hand_eye_calibration_batch_estimation                [ Unrelated job failed ]
Abandoned <<< yaml_cpp_catkin                                      [ Unrelated job failed ]
Abandoned <<< aslam_cv_common                                      [ Unrelated job failed ]
Abandoned <<< aslam_cv_cameras                                     [ Unrelated job failed ]
Abandoned <<< aslam_cv_frames                                      [ Unrelated job failed ]
Abandoned <<< aslam_cv_matcher                                     [ Unrelated job failed ]
Abandoned <<< aslam_cv_geometric_vision                            [ Unrelated job failed ]
Abandoned <<< aslam_cv_calibration                                 [ Unrelated job failed ]
Abandoned <<< hand_eye_calibration_target_extractor                [ Unrelated job failed ]
_______________________________________________________________________________
Errors     << catkin_simple:cmake /home/menonsandu/catkin_ws/logs/catkin_simple/build.cmake.002.log
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python3-empy'
Call Stack (most recent call first):
  /opt/ros/noetic/share/catkin/cmake/all.cmake:164 (include)
  /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:4 (find_package)


cd /home/menonsandu/catkin_ws/build/catkin_simple; catkin build --get-env catkin_simple | catkin env -si  /usr/bin/cmake /home/menonsandu/catkin_ws/src/catkin_simple --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/menonsandu/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/menonsandu/catkin_ws/install -DCMAKE_BUILD_TYPE=Release; cd -

...............................................................................
Failed     << catkin_simple:cmake                                  [ Exited with code 1 ]
Failed    <<< catkin_simple                                        [ 0.1 seconds ]
_______________________________________________________________________________
Errors     << doxygen_catkin:cmake /home/menonsandu/catkin_ws/logs/doxygen_catkin/build.cmake.002.log
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python3-empy'
Call Stack (most recent call first):
  /opt/ros/noetic/share/catkin/cmake/all.cmake:164 (include)
  /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:4 (find_package)


cd /home/menonsandu/catkin_ws/build/doxygen_catkin; catkin build --get-env doxygen_catkin | catkin env -si  /usr/bin/cmake /home/menonsandu/catkin_ws/src/doxygen_catkin --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/menonsandu/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/menonsandu/catkin_ws/install -DCMAKE_BUILD_TYPE=Release; cd -

...............................................................................
Failed     << doxygen_catkin:cmake                                 [ Exited with code 1 ]
Failed    <<< doxygen_catkin                                       [ 0.1 seconds ]
Finished  <<< libnabo                                              [ 0.4 seconds ]
[build] Summary: 1 of 41 packages succeeded.                                   
[build]   Ignored:   23 packages were skipped or are blacklisted.              
[build]   Warnings:  None.                                                     
[build]   Abandoned: 37 packages were abandoned.                               
[build]   Failed:    3 packages failed.                                        
[build] Runtime: 0.5 seconds total.    

I tried installing
sudo apt install python3-empy
But its already in the latest version

Environment details

Ubuntu 20.04\
Rosdistro noetic
Python 3.8.10
GCC 9.3.0
python3-empy 3.3.2-5.1

Extrinsic calibration of non-overlapping cameras using hand-eye calibration

I have a system of two rigidly connected non-overlapping stereo cameras and I am doing ORB-SLAM to get the trajectories for both of them. I have the poses with the Hamiltonian quarternions at each timestamp as mentioned in this repository.
Then can I use the hand-eye calibration in this repo to get the extrinsics between the two cameras.

something about function calculate_time_offset

Get the two mean time steps. Take the smaller one for the interpolation.

dt_A = np.mean(np.diff(times_A))
dt_B = np.mean(np.diff(times_B))
if dt_A >= dt_B:
dt = dt_A
else:
dt = dt_B
I note that the comment take the smaller one, but the code takes the bigger one....

Docker

I had a hard time getting this package to build and work but did it in a docker.
I'll share it here because it might spare somebody the pain that is building this package.
you can get it using

docker pull bedaberner/handeye:working_small

then start the container using

docker  run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" bedaberner/handeye:working

which enables x forwarding and shows the display during the extraction process
I had to excecute

xhost local:root

on my host system to enable the x forwarding though.

or you can just use

docker  run -it  bedaberner/handeye:working

to get the console

once you started the docker you have to source the workspace

source /ws/devel/setup.bash

then you can copy your files into the docker and follow the tutorial from the readme

This docker image works for me and i thought i would share it, I will not update or support it at all.

about the trajectory to move the manipulator

Hi, I am trying to use your tool for hand-eye calibration but do not get a good result. I place a 4 by 5 Aruco board on the desk and move the manipulator around the Aruco board to create my own csv files. But when I run the code to calibrate the camera, it throw the following warning:
"The singular values of this solution are bad. Either the smallest two are too big or the first 6 are too small! "
And the result of the calibration is very poor. The resulting transformation matrix is totally different from the one I get using Tsai's method.

Is that because the trajectory I choose for the manipulator is not good enough, or I don't have enough data in the csv files? The trajectory is chosen randomly, and I have 40 poses in each csv file.

1869725925

Identify and open-source dependencies

Here is a complete list of all dependencies:

3rd-Party:

  • catkin_simple
  • eigen_catkin
  • gflags_catkin
  • glog_catkin
  • suitesparse
  • doxygen_catkin
  • opencv3_catkin
  • cv_bridge
  • opengv
  • yaml_cpp_catkin

ASL-Repositories:

aslam_optimizer

  • sparse_block_matrix
  • aslam_backend
  • aslam_backend_expressions

aslam_splines

  • bsplines
  • aslam_splines

oomact

  • oomact

SchweizerMesser

  • sm_common
  • sm_boost
  • sm_logging
  • sm_matrix_archive
  • sm_property_tree
  • sm_random
  • sm_eigen
  • sm_kinematics
  • sm_timing
  • sm_value_store

asl_cmake_modules

  • asl_cmake_modules

ethz_apriltag2

  • ethzasl_apriltag2

minkidrn

  • minkindr

aslam_cv2

  • aslam_cv_calibration
  • aslam_cv_geometric_vision
  • aslam_cv_matcher
  • aslam_cv_common_private
  • aslam_cv_common
  • aslam_cv_cameras
  • aslam_cv_frames

wrong spatial alignment for visual inertial poses (T_W_E) and laser poses (T_B_H)

Dear author,

Thank you for open sourcing the hand eye calibration algorithm.
Following the instructions at README.md, I built the hand eye calibration package in Ubuntu 16.04 + ROS kinetic. The data was collected with a lidar (laser range finder) and a camera and an IMU, the three mounted rigidly to a moving platform.

Then the poses of the camera(eye) expressed in a world frame (the camera frame at the start), T_W_E, was obtained by a visual inertial odometry method with loop closure. And the poses of the lidar (hand) expressed in a base frame (the lidar frame at the start), T_B_H, was computed with a 2d lidar package. The data files are in the input directory of the attached zip file.

mydata.zip

In the end, the below command was executed.

rosrun hand_eye_calibration compute_complete_handeye_calibration.sh \
poses_B_H.csv poses_W_E.csv

And the resulting log, figures, and data files are in the output directory of the attached zip file.
It appears that the temporal calibration is done well. However, the spatial calibration is wildly wrong.

Can you please look into the issue? Am I missing certain points?

YAML File ?

Hi everyone,

Can someone show me a standard camera-yaml file for this package because i actually using a yaml generate by the http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration
but it is not working.

image_width: 640
image_height: 480
camera_name: rgb_Astra_Orbbec
camera_matrix:
  rows: 3
  cols: 3
  data: [526.6908296825479, 0, 312.3333507245396, 0, 525.7542623070541, 246.2279496394374, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:
  rows: 1
  cols: 5
  data: [0.01864117263397289, -0.0807953154457166, 0.0006701578887838996, -0.001800282263098739, 0]
rectification_matrix:
  rows: 3
  cols: 3
  data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
  rows: 3
  cols: 4
  data: [516.2001953125, 0, 310.3634868958034, 0, 0, 514.0494995117188, 246.8852026000968, 0, 0, 0, 1, 0]

Bwaki

#QUESTION# My number of inliers is too low

Hello,

To explain it simple i run this command :

rosrun hand_eye_calibration target_extractor_interface.py --bag bagfiles/calibrationV1.bag --calib_file_camera camera_info/D435_Hand_Eye_Calib.yaml --calib_file_target camera_info/april.yaml --image_topic /image_raw --output_file csv_files/camera_poses_timestampedV1.csv

and i have modify target_extractor.cc to see what happen because each time this script finish i just get this result :

I0726 11:49:52.944243 21896 target_extractor.cc:361] #########################################
I0726 11:49:52.944249 21896 target_extractor.cc:362] Total # observations:     423
I0726 11:49:52.944252 21896 target_extractor.cc:363]       # successful:       271
I0726 11:49:52.944254 21896 target_extractor.cc:364]       # pnp successful:   271
I0726 11:49:52.944257 21896 target_extractor.cc:365]       # inlier count ok:  0
I0726 11:49:52.944278 21896 target_extractor.cc:366] Written reprojected corners to:  corner_reprojections.csv
I0726 11:49:52.944285 21896 target_extractor.cc:367] Written extracted camera poses to: csv_files/camera_poses_timestampedV1.csv
I0726 11:49:52.944289 21896 target_extractor.cc:369] #########################################

Which is not very helpful because i don't know what happened

So now each time this script will look an observation it will print this :

I0726 11:49:47.426782 21896 target_extractor.cc:255] observation number : 271/423
I0726 11:49:52.942883 21896 target_extractor.cc:274] number_inliers = 9
I0726 11:49:52.942906 21896 target_extractor.cc:275] number_keypoints = 144
I0726 11:49:52.942929 21896 target_extractor.cc:276] inlier_ratio = number_inliers / number_keypoints = 0.0625
I0726 11:49:52.942934 21896 target_extractor.cc:277] FLAGS_inlier_ratio_for_good_camera_pose = 0.4
I0726 11:49:52.942939 21896 target_extractor.cc:278] sufficient_inliers = inlier_ratio > FLAGS_inlier_ratio_for_good_camera_pose = 0

With that i can see how many point are detected on the pattern, the current number of the observation
and many others things.

And as we can see here 144 is the number of point detected on the pattern, it is good because it detect all the points on it.

But 9 is the number of the inliers point which is not good at all because you need o have at least 40% of 144 to have a good camera pose if not this observation doesn't count.

And that is the case for all my observation.

So i wanted to know if there is a way to improve the number of inlier.

Edit 1 :
I have try it with an other camera but the result is the same.

Thanks you in advance,

Bwaki

Using my own camera do I have to also add my camera calibration paramaters?

@ffurrer Hi. I have one small doubt. Do you use the calibration files available in calib folder when you do end to end calibration? I am asking you this doubt since, I have my own csv files with me (first one: time stamped pose from robot base to its end effector and second one: camera frame to the target aruco marker). But I have used different camera (realsense camera). I want to estiamte the tf between the end effector and camera mounted on end effector. So do I have to edit the code somewhere to add intrinsic and distortion parameters of realsense before I use end-to-end calibration script (to estimate the tf between end effector and the camera)?

Document code

Add missing docstrings to functions and document the input and output data format.

Optimization step ros::package::getPath("hand_eye_calibration_batch_estimation") throws error

I'm trying to run the optimization step, but when I call it I get following stacktrace:

*** Aborted at 1535531683 (unix time) try "date -d @1535531683" if you are using GNU date ***
PC: @     0x7fc660f627fd boost::filesystem::detail::status()
*** SIGSEGV (@0x0) received by PID 32162 (TID 0x7fc664490740) from PID 0; stack trace: ***
    @     0x7fc6623394b0 (unknown)
    @     0x7fc660f627fd boost::filesystem::detail::status()
    @     0x7fc65fbcef15 _ZN7rospack11Rosstackage12getCachePathB5cxx11Ev
    @     0x7fc65fbcf6e4 rospack::Rosstackage::validateCache()
    @     0x7fc65fbd11ba rospack::Rosstackage::readCache()
    @     0x7fc65fbd387c rospack::Rosstackage::crawl()
    @     0x7fc65fbe4d9b rospack::rospack_run()
    @     0x7fc65fbe1077 rospack::ROSPack::run()
    @     0x7fc65fbe154a rospack::ROSPack::run()
    @     0x7fc662e711e1 ros::package::command()
    @     0x7fc662e71389 ros::package::getPath()
    @           0x40ded9 loadConfigFile()
    @           0x40b87a main
    @     0x7fc662324830 __libc_start_main
    @           0x40c8f9 _start
Segmentation fault (core dumped)

I don't know what the problem could be. I relinked all my boost binaries to the 1.58(and checked) version so that is not an issue. Looked into this but couldn't solve it. But my fix was to simply hardcode the path instead of using ros::package::getPath.

lidar and gps calibration

Hi,
I have two sets of poses, one from lidar slam,and another from gps,can I use "hand_eye_calibration" to calibrate the params between lidar and gps? Thanks.

Apriltag parameters setting

I only have one April tag, how should I set the parameter april_tag_number_pixel_boarder and april_tag_gap_size_m ? By the way, how can I generate the april tag in your size?

Support nonlinear optimization step

This requires:

  • Output measurements CSVs with outliers replaced by empty lines / lines with timestamp only to feed to the NLOpt step
  • Output the resulting extrinsic calibration (including temporal offset) as files (decide on format, should be readable by the user. Candidates: YAML directly or Boost property tree + XML / YAML / Info / Ini)
  • Somehow communicate the type of sensor (relative or absolute pose measurements)

Failed during batch optimization

When doing the optimization by using 'rosrun hand_eye_calibration_batch_estimation batch_estimator', the following error comes out:

AbstractCalibrator.cpp:40] Using acceptConstantErrorTerms = true
F0926 09:11:04.321143 7084 batch_estimator.cc:102] Check failed: (1) >= (q.norm())-(1e-8) (1 vs. 1.00007)
*** Check failure stack trace: ***
@ 0x7ff50f6ae8ed google::LogMessage::Fail()
@ 0x7ff50f6b0791 google::LogMessage::SendToLog()
@ 0x7ff50f6ae41d google::LogMessage::Flush()
@ 0x7ff50f6b1149 google::LogMessageFatal::~LogMessageFatal()
@ 0x5603d7abf5be (unknown)
@ 0x5603d7abe05d (unknown)
@ 0x7ff50e264b97 __libc_start_main
@ 0x5603d7abe75a (unknown)
Aborted (core dumped)

Waiting for helps. Thanks very much.

Catkin_make compatibility

Hello,
I was wondering, if there is a possibility to make this toolbox compatible, so that it works by compiling with catkin_make?

Calculate W-E CSV

Hallo,
thank you for your work!
i was trying to do the calibration on a robot without ros. is it possible to calculate the w-e data from the image to calculate the calibration?(i thought bh data is easy to record)

Improve usability and documentation

After getting some feedback from our first "customers" there are serveral things that need to be improved:

  • Give the user a feedback of how good/bad the calibration is.
    Suggestions/Ideas:
    • Run the python evaluation step after the optimization and optionally plot the results
    • Write a summary pdf at the end of the calibration with the most important plots:
      • initial time alignment
      • initial 3D trajectory, after dual quaternion calibration, after optimization
      • RMSE plot after dual quaternion, after optimization
    • Provide a separate script to plot the 3D trajectory before and after some given calibration
    • Add a short wiki description that describes the 3 steps (time alignment, coarse initial calibration, optimization) and what the plots mean.

AprilTag estimates wrong pose

Hi, Thanks for your great contribution!
Here I use the target_extractor_interface.py to extract poses from image, and use evo_tool to plot the aligned pose of camera and wheel odometry. It seems that the estimated camera poses are wrong!
Anyone else also came across such problem? How can I solve it ? Or recommending another project to extract poses from images.

Thank you!

handeyecalibration

Add base_world transform matrix

Hi!
I've been using hand-eye calibration to find the transformation between two coordinate systems, but I am interested in the Base-World transformation, since in my setup they are fixed.
It would be a good idea to also return the base-World transform (and also output it in another calibration.json file).

compute-aligned-poses error !!=_=

hey ,thank you for your work , but i got some confusing problem , wish you to help me.
I am using this package to compute the extrinsic param between a realsense camera and the vicon marker segment stick on the camera.Indeed, it's a AX=XB problem. I use aruco_mapping to generate the poses(30Hz) of camera in the world(ArucoMarker) frame, and get the poses of the marker segment (100Hz)in the world(Vicon world) frame.Then i use the "compute_aligned_poses" to generate the time aligned data , it always shows
Screenshot from 2019-09-24 20-58-17,
it only has 2 matching poses,

I have tried to change the data frequence , but it seems like nothing differrent happen.
Here are my csv files,
data-vicon-calib-calib_convert.txt(vicon poses)
data-camera_pose_convert.txt(camera poses)
How to slove this confuing problem , thank you ~

Thank you for your answer~~

Wrong Hand-Eye Calibration Results

Thanks a lot for making the code / work publicly available !

After installing the packages I followed the Step-by-Step Calibration Tutorial.

I am using a UR5 Robot together with this ur driver, driving at various positions, recording the published transformations between the base link and the end-effector in a ros bag.
At the same time I have an aprilgrid board mounted at the robot and a camera placed next to the robot, recording frames in a ros bag ( the board looks a bit weird since it is truncated ).

From a camera viewpoint:

setup_calibration

Both transformation ( Base <-> Hand and World <-> Eye ) seem to be correct. However, performing the dual-quaternion-based hand-eye calibration results in a completely wrong calibration ( does not make any sense at all ).
I tried the same procedure with a camera mounted on the robot and the grid being fixed somewhere in the world, however the calibration does not make any sense either.

Am I using the calibration procedure as intended or am I missing something crucial ?
Thanks for your help !


All tests do pass.
When building the repository I had some linker issues:

linker_error

Which resolved after I added

target_link_libraries(${PROJECT_NAME} -lblas -llapack -lsuitesparseconfig)

to the CMakeLists.txt file in

[...]/workspace_calibration/src/aslam_optimizer/aslam_backend_expressions

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.