ros-industrial / industrial_calibration Goto Github PK
View Code? Open in Web Editor NEWContains libraries/algorithms for calibration industrial systems
License: Apache License 2.0
Contains libraries/algorithms for calibration industrial systems
License: Apache License 2.0
The new API of yaml cpp is not backwards compatible. It appears Ubuntu 14.04 uses this new version. As a result, the calibration library will not compile under Indigo/14.04. Move detailed info can be found here.
@drchrislewis can you create a branch for ROS Kinetic?
industrial_calibration works under Kinetic with these fixes: #90
There are four different objects whose parameters are parsed explicitly by the calibration job definition. Because of this, should a developer decide to add a new object of any of these types, they must also add the parsing of any particular parameters to the calibraiton_job_definition's parser.
It makes more sense to have the parsing of object parameters be performed by each object.
The three objects which should have this change are:
Ideally, these classes will have minimal constructors and a virtual member function called either init() or parse_parameters() which will initialize all necessary member values using the yaml node.
In this way calibration_job_definition.cpp could simply instantiate the correct object type, and then call its parser/init function. This still does not eliminate the need to add code to calibration_job_definition to instantiate a new object when one is created. I see no way around this except to create plugins for each of these object types. However it does clean up the higher level parser and pushes the responsibility of parsing particular parameters to the object that needs them.
I noticed that there is an offset to the origin introduced in intrinsic calibration in this line
target_->pose_.setOrigin(0.011, 0.05, D0_);
What is the purpose of this offset? Has this code been specialized for some camera?
The tests for the industrial_extrinsic_cal package fail in travis and i am able to reproduce. However, the repo builds successfully.
If the calibration node is launched before the tf frames are available, the calibration node never finds the transform between the camera and the reference frame. This is due to an error in getPoseFromTF() in ros_transform_interface.cpp. now = ros::Time::now()
should be added inside the while loop so that the transform listener will try to look for the latest transform information rather than loop infinitely looking for a transform that never existed on startup.
A small bit of code was ported from CERES (here).
Because CERES is BSD licensed and industrial_calibration is Apache 2.0 licensed , there is a conflict. If the CERES code is required, then it must be isolated in it's own source file with the original CERES BSD license header.
The repo license must also be updated to reflect the multiple licenses.
As reported in Eigen not found on ROS Answers:
The industrial_extrinsic_cal
pkg is missing a dependency on cmake_modules
, causing the find_package(Eigen ..)
call to fail.
If a modified circle grid of non-symmetric size is specified, the grid cannot be found if it is rotated. The target definition file assumes that the origin circle is at the bottom left of the target so a simple switch in the rows/columns is not a valid fix. Thus, a 7x5 grid cannot be changed to a 5x7 due to the origin circle, but the cv::findCirclesGrid cannot find a 7x5 if it is rotated. Need to make the class find a target, origin, and point order regardless of calibration target orientation.
Hi,
I try to compile the pgk industrial_extrinsic_cal but i got this error (see under), i have try to uninstall install yaml-cpp but no change, i am lost i don't know how to solver this.
If someone have already kick this one can explain me how to resolve it.
Thanks you,
Bwaki
CMakeFiles/mutable_joint_state_publisher.dir/src/nodes/mutable_joint_state_publisher.cpp.o: In function `YAML::BadConversion::BadConversion(YAML::Mark const&)':
mutable_joint_state_publisher.cpp:(.text._ZN4YAML13BadConversionC2ERKNS_4MarkE[_ZN4YAML13BadConversionC5ERKNS_4MarkE]+0x7b): undefined reference to `vtable for YAML::BadConversion'
CMakeFiles/mutable_joint_state_publisher.dir/src/nodes/mutable_joint_state_publisher.cpp.o: In function `YAML::TypedBadConversion<double>::~TypedBadConversion()':
mutable_joint_state_publisher.cpp:(.text._ZN4YAML18TypedBadConversionIdED2Ev[_ZN4YAML18TypedBadConversionIdED5Ev]+0x18): undefined reference to `YAML::BadConversion::~BadConversion()'
CMakeFiles/mutable_joint_state_publisher.dir/src/nodes/mutable_joint_state_publisher.cpp.o: In function `YAML::TypedBadConversion<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~TypedBadConversion()':
mutable_joint_state_publisher.cpp:(.text._ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev[_ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED5Ev]+0x18): undefined reference to `YAML::BadConversion::~BadConversion()'
CMakeFiles/mutable_joint_state_publisher.dir/src/nodes/mutable_joint_state_publisher.cpp.o:(.rodata._ZTIN4YAML18TypedBadConversionIdEE[_ZTIN4YAML18TypedBadConversionIdEE]+0x8): undefined reference to `typeinfo for YAML::BadConversion'
CMakeFiles/mutable_joint_state_publisher.dir/src/nodes/mutable_joint_state_publisher.cpp.o:(.rodata._ZTIN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE[_ZTIN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE]+0x8): undefined reference to `typeinfo for YAML::BadConversion'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/bwaki/catkin_ws/devel/.private/industrial_extrinsic_cal/lib/industrial_extrinsic_cal/mutable_joint_state_publisher] Error 1
make[1]: *** [CMakeFiles/mutable_joint_state_publisher.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/home/bwaki/catkin_ws/devel/.private/industrial_extrinsic_cal/lib/libindustrial_extrinsic_cal.so: undefined reference to `vtable for YAML::BadConversion'
/home/bwaki/catkin_ws/devel/.private/industrial_extrinsic_cal/lib/libindustrial_extrinsic_cal.so: undefined reference to `cv::Feature2D::getDefaultName() const'
/home/bwaki/catkin_ws/devel/.private/industrial_extrinsic_cal/lib/libindustrial_extrinsic_cal.so: undefined reference to `typeinfo for YAML::BadConversion'
/home/bwaki/catkin_ws/devel/.private/industrial_extrinsic_cal/lib/libindustrial_extrinsic_cal.so: undefined reference to `YAML::BadConversion::~BadConversion()'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/bwaki/catkin_ws/devel/.private/industrial_extrinsic_cal/lib/industrial_extrinsic_cal/rangeNmono] Error 1
make[1]: *** [CMakeFiles/rangeNmono.dir/all] Error 2
make: *** [all] Error 2
#76 added an include without requiring the package as a dependency, making compilation fail in case it is not installed.
Kinetic ships with OpenCV 3 and industrial_calibration
expects OpenCV 2, this makes CMake fails when checking OpenCV dependency.
At the moment I just replaced
find_package(OpenCV 2 REQUIRED)
with
find_package(OpenCV REQUIRED)
In the two CMake files requiring OpenCV
The Eigen dependency is find_package(..)
ed, but this is done using a find script that is part of cmake_modules
, which is a ROS pkg.
That dependency should be added to the find_package(catkin COMPONENTS ..)
call, as well as the pkg manifest.
See roslint error on ROS Answers fi.
The Extrinsic Calibration of Camera(s) to a Static Target (Depricated) tutorial points users to the industrial_extrinsic_cal ROS wiki page, which under Installation seems to suggest that only gflags
, glog
and ceres
are required dependencies.
The package manifest for industrial_extrinsic_cal
contains many more dependencies, but the wiki page only tells users to "Install industrial_extrinisc_cal
[sic] from source". The industrial_calibration
repository does not provide any additional information on how to install the package (no readme fi).
For people inexperienced with installing ROS pkgs from source, there should probably be either a very short explanation on how to make sure they have all dependencies installed, or they should be pointed to the relevant documentation on the ROS wiki.
The mutable_joint_state publisher
was originally developed because the robot_state_publisher
did not properly handle floating joints. This has been fixed (I believe the fix is in indigo, but certainly later versions). With this fix, the mutable joints are no longer needed. Using mutable joints creates a mess of the tf tree and is hard to handle. This change will affect multiple pieces of the code:
I saw while running manual calibration that camera_scene_mutable_joint_states.yaml
was never updated. Turned out the config folder was owned and grouped by root
while the calibration process was run by a user's account.
The save command should emit an error in a case like this IMO.
Whenever a target has symmetry as both checkerboards and circle grids do, it becomes possible to mix up the correspondence between points and observations. For general calibration, we need targets which have observable orientations, and also observer code which correctly makes the correspondence. Two methods come to mind for creating this with minimal effort.
In both cases the centers returned from findCirclesGrid need to be corresponded depending on the perceived orientation.
This is a debatable, but the package manifest does not declare a system dependency on ceres in any way. The build will fail due to find_package(Ceres ..)
failing, but ideally the manifest would declare that dependency as well. Running rosdep check ..
currently doesn't pick up on a missing Ceres installation.
The same information is also used when generating debians, which would be impossible with the current manifest.
The mutable joint state publisher loads the yaml file name from a parameter mutableJointStateYamlFile
that doesn't follow the naming convention, lower_case
. See here
The parameter name should be corrected in a backwards compatible way that issues a warning if the old name is used, but still works.
Hi, thank you for this awesome package.
I tried to build in indigo-devel branch. And occurred Error.
Before catkin_make
, I installed all of gflags
, glog
, and Ceres
, following to ROS industrial_extrinsic_cal wiki.
Then I tried rosdep and occurred following error.
cd <catkin_ws>
rosdep install -i -y --from-paths src
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
industrial_extrinsic_cal: Cannot locate rosdep definition for [camera_aravis]
I found the camera_aravis
is not supported in indigo.
So, I commented out that dependence.
And rosdep
again, it works.
Of course, there is no error I do catkin_make
after comment out.
Is it OK, only comment out that dependence ?
Thank you for your regards.
There is a hard coded pathway in CalibrationJob::store() function in calibration_job_definition.cpp. This should be a parameter as it causes trouble when the industrial_extrinsic_cal package is installed. Once the package is installed, the /launch folder is read only, so the writeAllStaticTransforms() function always fails and nothing is written.
Hello,
I have been trying to use the the industrial_calibration
package on indigo to calibrate a camera mounted on my robot with a fixed checkerboard. I am also using the industrial_calibration_tutorials
package and the mutable joints to see the results as I calibrate.
When I calibrate the target_frame
successfully gets to the right position on the image.
But if I move the robot around I can see that there is a shift in the calibration.
The calibration procedure only takes one image with the checkerboard to calibrate which seems enough to get a solution, but not enough to get precise results.
I couldn't find a way to calibrate using several acquisitions yet ... Also the deprecated tutorials doesn't mention how to calibrate a mounted camera with a static target.
I also tried recalibrating the intrinsics a couple of time, but in the end I always get a shift on my calibration.
Does any one have a some experience with a similar problem?
Any help will be sincerely appreciated!
Here are the files I am using :
https://github.com/JimmyDaSilva/industrial_calibration_tutorials/tree/test_checkerboard/ind_cal_multi_camera
We have found this paper:
http://www.mdpi.com/1424-8220/9/9/7374
I tried to test the Keyence experimental driver but the TCP/UDP ports filtered in our network, I'm waiting for them to be open. I should be able to use the driver next week.
I'm waiting for a 3D printed interface to mount the sensor on the robot. I should get this next week.
We are thinking about the target geometry, we're not sure what to use.
From what I have understood we need to be able to build a (3D) frame consistently and precisely on the calibration target whatever the point of view. Given the fact that we only have a line this is quite difficult to think of.
Rather than using a single line acquisition, I thought we might get a bunch of them with a linear sweeping movement. This way we can get a point cloud that we would store in the first frame user frame and built a 3D user frame from here.
We could for example scan 3 faces of a cube, the problem would be that because the dimensions are the same everywhere we cannot determine the orientation of the cube; we would need markers on the faces to determine which face is which face.
@AustinDeric @drchrislewis your opinion would be much appreciated
Right now the point's are entered manually into the target.yaml file and when the number of points are as high as 121, it would be better if we had a target.yaml exporter of some sort. The target.yaml exporter/creator should take in a few inputs and output the target.yaml file correctly formatted and with all necessary parameters including all points.
Hello guys,
I'm using Ubuntu 14.04 (Trusty) and try to install rgbd_depth_correction package with the command:
catkin build rgbd_depth_correction.
I had no problems installing the other packages from the industrial_calibration package with catkin tools, only rgbd_depth_correction fails.
I checked for similar problems but could not find any solution for indigo, just an old package for groovy to install the bullet package from http://wiki.ros.org/bullet.
Regarding the source on https://github.com/bulletphysics/bullet3 I followed installation instructions and installed bullet3 from source but that did not solve the problem.
Here is the Error Code:
ille@ille-HP-Pavilion-15-Notebook-PC:~/catkin_ws$ catkin build rgbd_depth_correction
---------------------------------------------------------
Profile: default
Extending: [cached] /opt/ros/indigo
Workspace: /home/ille/catkin_ws
Source Space: [exists] /home/ille/catkin_ws/src
Build Space: [exists] /home/ille/catkin_ws/build
Devel Space: [exists] /home/ille/catkin_ws/devel
Install Space: [exists] /home/ille/catkin_ws/install
DESTDIR: None
---------------------------------------------------------
Isolate Develspaces: False
Install Packages: False
Isolate Installs: False
---------------------------------------------------------
Additional CMake Args: None
Additional Make Args: None
Additional catkin Make Args: None
Internal Make Job Server: True
---------------------------------------------------------
Whitelisted Packages: None
Blacklisted Packages: None
---------------------------------------------------------
Workspace configuration appears valid.
---------------------------------------------------------
Found '30' packages in 0.1 seconds.
Starting ==> kdl_conversions
Starting ==> tf2_msgs
Finished <== kdl_conversions [ 0.2 seconds ]
Finished <== tf2_msgs [ 0.5 seconds ]
Starting ==> tf2
Finished <== tf2 [ 0.2 seconds ]
Starting ==> tf2_bullet
Starting ==> tf2_py
[tf2_bullet] ==> '/home/ille/catkin_ws/build/tf2_bullet/build_env.sh /usr/bin/cmake /home/ille/catkin_ws/src/geometry_experimental/tf2_bullet -DCATKIN_DEVEL_PREFIX=/home/ille/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/ille/catkin_ws/install' in '/home/ille/catkin_ws/build/tf2_bullet'
-- checking for module 'bullet'
-- package 'bullet' not found
CMake Error at /usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:283 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:337 (_pkg_check_modules_internal)
CMakeLists.txt:7 (pkg_check_modules)
-- Using CATKIN_DEVEL_PREFIX: /home/ille/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/ille/catkin_ws/devel;/opt/ros/indigo
-- This workspace overlays: /home/ille/catkin_ws/devel;/opt/ros/indigo
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/ille/catkin_ws/build/tf2_bullet/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.6.16
-- Using these message generators: gencpp;genlisp;genpy
-- Configuring incomplete, errors occurred!
See also "/home/ille/catkin_ws/build/tf2_bullet/CMakeFiles/CMakeOutput.log".
See also "/home/ille/catkin_ws/build/tf2_bullet/CMakeFiles/CMakeError.log".
[tf2_bullet] <== '/home/ille/catkin_ws/build/tf2_bullet/build_env.sh /usr/bin/cmake /home/ille/catkin_ws/src/geometry_experimental/tf2_bullet -DCATKIN_DEVEL_PREFIX=/home/ille/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/ille/catkin_ws/install' failed with return code '1'
Failed <== tf2_bullet [ 0.8 seconds ]
Finished <== tf2_py [ 0.9 seconds ]
[build] There were '1' errors:
Failed to build package 'tf2_bullet' because the following command:
# Command to reproduce:
cd /home/ille/catkin_ws/build/tf2_bullet && /home/ille/catkin_ws/build/tf2_bullet/build_env.sh /usr/bin/cmake /home/ille/catkin_ws/src/geometry_experimental/tf2_bullet -DCATKIN_DEVEL_PREFIX=/home/ille/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/ille/catkin_ws/install; cd -
# Path to log:
cat /home/ille/catkin_ws/build/build_logs/tf2_bullet.log
Exited with return code: 1
[build] Runtime: 1.8 seconds
ille@ille-HP-Pavilion-15-Notebook-PC:~/catkin_ws$
All cost functions and their templated subroutines should be under gtest
Hi,
I am trying to compile your code but when I run catkin_make from my catkin workspace I get:
..
[ 7%] Building CXX object industrial_calibration/industrial_extrinsic_cal/CMakeFiles/trigger_service.dir/src/ros_scene_trigger_server.cpp.o
/home/turtlebot/catkin_ws/src/industrial_calibration/industrial_extrinsic_cal/src/ros_scene_trigger_server.cpp:23:59: fatal error: industrial_extrinsic_cal/manual_triggerAction.h: No such file or directory
compilation terminated.
...
Is this a missing file?
In the ROSParamTrigger Class:
bool waitForTrigger()
{
ROS_ERROR("ROSParamTrigger: waiting for %s to be true", parameter_name_.c_str());
bool pval = false;
while (!pval)
{
nh_.getParam(parameter_name_.c_str(), pval);
}
nh_.setParam(parameter_name_.c_str(), false);
return (true);
};
shouldn't the ROS_ERROR in line 51 be ROS_INFO?
As per subject: the CMakeLists.txt
contains no install rules. No targets will be available in an install space.
The calibration can run to completion, but get poor results. There are three possible reasons
The first case usually has large residual error. We should check and flag this situation
The second case is detectable through covariance analyis the Jacobian will not be full rank.
For small problems, this can be checked through Cere's covariance
The third case is difficult to detect, except that the results are absurd. For example, mathematically, the same image of a target is obtained by placing the camera on the opposite side of the target and facing it away from the object. Similar difficulties occur when the target is symetric. The same image of the target is possible from as many as 8 different vantage points, both in front of and behind the target.
For extrinsic calibration, having a camera either behind a target, or facing away from it could be detected and flagged.
In short we need error checking and flagging.
The yaml-cpp
library is added as a linking dependency in:
target_link_libraries(industrial_extrinsic_cal_ceres
yaml-cpp ${catkin_LIBRARIES})
without first a find_package()
.
ROS depends on it as well, so it will probably always be present when industrial_calibration
is build, but it might be a good idea to find_package()
it.
Currently the calibration is initiated with a command prompt call as follows:
rosservice call /calibration_service {}
It was expected that any fielded application will add a button to their UI to make this call directly.
However, we should create a qt node that has a simple push button to make the call.
Ideally this would be an rqt plugin for rviz, but I'd be happy with a simple widget.
As per subject: the package.xml
manifest is missing the author
tag.
We've been working on adapting the ros-industrial extrinsic calibration utility to the binocular endoscope on a "da Vinci" surgical robot- specifically, we are determining the position of each camera in the endoscope with respect to an external target and using those transforms to find the camera-to-camera transformation. The solver usually converges within a few iterations to a very low error (~0.05), but the produced transformation is not consistent with the physical structure of the endoscope- the two camera lenses can be determined to be located ~5mm apart along their shared X-axis just using a ruler, but the calibration consistently places them ~3mm apart along the X AND Y axes.
I've attached the relevant configuration files. The only thing I can think of is that this is because we are using only one scene, but as setting up another will be a significant time investment and so I would like some confirmation that this is likely the issue and it is not just some other issue or a bug in the program itself.
when i download the industrial_calibration-hydro-devel and compiling,i met the problem
/usr/include/yaml-cpp/node.h:39:3: note: candidate expects 0 arguments, 1 provided
/usr/include/yaml-cpp/node.h:33:21: note: YAML::Node::Node(YAML::Node&)
/usr/include/yaml-cpp/node.h:33:21: note: no known conversion for argument 1 from ‘const YAML::Node’ to ‘YAML::Node&’
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h: At global scope:
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h:82:36: error: variable or field ‘parseKeyDValue’ declared void
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h:82:30: error: ‘const_iterator’ is not a member of ‘YAML’
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h:82:52: error: ‘it’ was not declared in this scope
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h:82:68: error: expected primary-expression before ‘&’ token
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h:82:69: error: ‘key’ was not declared in this scope
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h:82:74: error: expected primary-expression before ‘double’
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h: In function ‘bool industrial_extrinsic_cal::yamlNodeFromFileName(std::string, YAML::Node&)’:
/home/t420s/moveit/src/industrial_calibration-hydro_devel/industrial_extrinsic_cal/include/industrial_extrinsic_cal/yaml_utils.h:93:12: error: ‘LoadFile’ is not a member of ‘YAML’
is there a problem with the yaml file,can you give me some advice?
Hi all, the tutorial on extrinsic calibration (http://wiki.ros.org/industrial_extrinsic_cal/Tutorials/Camera%20to%20Target) is deprecated. It refers to files that do not exist--e.g., cell_calibration.launch & world_to_target_tf.launch. I can find some of the files (world_to_target_tf.launch) in a hdyro version of the code but not all the files (cell_calibration.launch) and I'm using ROS indigo now.
May I know how people are doing their extrinsic calibration these days? (Sorry if this question is that of a n00b.)
Hello,
I watched Chris Lewis conference (really great video!) and I have several questions:
how do you tell your calibration is good?
, is there any news on that topic?I will trying to use this package with the David SLS-2 sensor that I recently integrated into PCL. I'll make a tutorial about that if I succeed.
Bye
They (industrial_extrinsic_cal/src/test_cal_job.cpp and industrial_extrinsic_cal/src/calibration_service.cpp) hold nearly identical code. A single calibration node should be capable of handing both modes of operation.
I think indigo-devel
should be the default branch; it is more up-to-date and contains bug/compilation fixes.
As per subject: email address of the maintainer is a todo.
I have found that the build process will fail with compilation errors if yaml-cpp is not installed on the machine. I guess that dependencies in the CMakeLists.txt and package.xml should be added for the yaml-cpp library to prevent this.
I have now installed the library manually and added the entry to find_package() in CMakeLists.txt but I still get the following error:
CMake Error at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:75 (find_package):
Could not find a package configuration file provided by "yaml-cpp" with any
of the following names:
yaml-cppConfig.cmake
yaml-cpp-config.cmake
Add the installation prefix of "yaml-cpp" to CMAKE_PREFIX_PATH or set
"yaml-cpp_DIR" to a directory containing one of the above files. If
"yaml-cpp" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
industrial_calibration/industrial_extrinsic_cal/CMakeLists.txt:8 (find_package)
Do you have any advice on how to fix this?
Not sure this is a problem, but even though the Ceres library is find_package( REQUIRED)
-ed, the contents of the CERES_INCLUDE_DIRS
variable is never appended to the include path in CMakeLists.txt
:
include_directories(include
${catkin_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}
)
It is also not added to the INCLUDE_DIRS
argument of catkin_package(..)
, but that could be intentional.
Hello there:
I am using Hydro on Ubuntu 12.04 64 bit, and I have stucked on the relocation R_X86_64_32 against .rodata.str1.1 can not be used when making a shared object
for couple of days, and still have no good solution, sounds like a platform problem. Here is what I have referenced:http://stackoverflow.com/questions/9637551/relocation-r-x86-64-32s-against-rodata-while-compiling-on-64-bit-platform
can you give me some advice, thanks!
The problem is described as follows:
"we want to use two kinect cameras to do the calibration and a circlegrid7x5 target. And the packages we used are: drchrislewis/industrial_calibration and ros-industrial/industrial_calibration_tutorials, both in indigo devel. And we defined the the cameras and target as static.But we got some problems.
1.Shoule we have to use a robot in calibration? We just put the cameras and target in sedentary postions instead of using a robot to control the target. Is that OK? If that is ok, should we place the actual positon of the cameras or target as close as possible to the initial values in the xacro file?
2.When executing the calibration, one error appears.
[ERROR] [1447295605.851915052]: Calibration ran successfully, but error was larger than allowed by caller
How to solve this error?
3.And using your package to do the calibration, the first camera we use could observe the target, but the second one shows no image and could not observe the same target. But the target initialed in camera_scene_caljob.yaml are the same. And we are sure that the target is within both of the two cameras' views. What's more, this situation won't appear when using the pacakge - ros_industrial/industrial_calibration.
4.Which type of cost_type should we use? In some test yaml file, we found that most of them use FixedCircleTargetCameraReprjErrorPK, but we could not get the exact position and orientation of the cameras when using it."
Regards,
xiqiaosang
Source files contain the Apache 2.0 license headers, but the manifest doesn't contain that information.
Code from observation_scene.h, lines 35-48:
/*! \brief Constructor,
* \param Trigger the type of trigger to initiate this observation
*/
ObservationScene(boost::shared_ptr<Trigger> trigger, int scene_id) : scene_id_(scene_id)
{
trigger_ = trigger;
};
/*! \brief destructor, clears observation command list*/
ObservationScene()
{
observation_command_list_.clear();
cameras_in_scene_.clear();
};
Missing ~
for the destructor.
If it is fixed, an empty constructor should be added.
Please provide in-line code comments to the thread calibration_service.cpp
One would like to re-process a set of images for a given calibration easily. consider how to do this.
Hello,
I am a member of Columbia's ROAM lab run by Dr. Matei Ciocarlie. Unfortunately, I have not gotten a chance to use the industrial_calibration (indigo-devel) package because the code simply will not build. There seems to be errors with certain OpenCV variables and functions, specifically having to do with circle_detector. I have managed to debug some of the errors myself, but I am surprised that there are build errors in the first place. Is there a specific version of OpenCV required? I am using OpenCV 2.4. Any other suggestions related to solving the build errors would be appreciated too.
Thanks,
Joseph
Trying to build the indigo-devel
branch on Indigo on Trusty results in:
Linking CXX executable /home/user/ros/industrial_indigo/devel/lib/industrial_extrinsic_cal/mono_ex_cal
/usr/bin/ld: /usr/local/lib/libceres.a(evaluator.cc.o): undefined reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.1'
/lib/i386-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
The mono_ex_cal
target has ${CERES_LIBRARIES}
listed before ${CATKIN_LIBRARIES}
in the CMakeLists.txt
. The library linking order then seems to cause the failure.
Linking Ceres libraries first seems to resolve this:
diff --git a/industrial_extrinsic_cal/CMakeLists.txt b/industrial_extrinsic_cal/CMakeLists.txt
index 3144eab..df8d3d2 100644
--- a/industrial_extrinsic_cal/CMakeLists.txt
+++ b/industrial_extrinsic_cal/CMakeLists.txt
@@ -130,7 +130,7 @@ add_dependencies(mutable_joint_state_publisher industrial_extrinsic_cal_generat
## Specify libraries to link a library or executable target against
target_link_libraries(industrial_extrinsic_cal yaml-cpp ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
-target_link_libraries(mono_ex_cal ${catkin_LIBRARIES} ${CERES_LIBRARIES} )
+target_link_libraries(mono_ex_cal ${CERES_LIBRARIES} ${catkin_LIBRARIES} )
#target_link_libraries(test_obs industrial_extrinsic_cal yaml-cpp ${catkin_LIBRARIES} ${CERES_LIBRARIES})
target_link_libraries(service_node industrial_extrinsic_cal ${CERES_LIBRARIES})
target_link_libraries(trigger_service ${catkin_LIBRARIES} )
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.