gaowenliang / imu_utils Goto Github PK
View Code? Open in Web Editor NEWA ROS package tool to analyze the IMU performance.
Home Page: https://gaowenliang.github.io/imu_utils
License: MIT License
A ROS package tool to analyze the IMU performance.
Home Page: https://gaowenliang.github.io/imu_utils
License: MIT License
Hi, I'm wondering calibrated noise output is discrete time or continuous time
When I run the calibration program, the terminal output as follows error:
WARNING: Logging before InitGoogleLogging() is written to STDERR
E1013 09:15:29.780355 10522 solver.cc:507] Terminating: Invalid configuration. Solver::Options::num_linear_solver_threads = -1. Violated constraint: Solver::Options::num_linear_solver_threads > 0
Bias Instability 2.17694e-05 rad/s
Bias Instability 2.60991e-05 rad/s, at 34.9103 s
White Noise 4.72615 rad/s
White Noise 0.00133015 rad/s
free(): invalid pointer
[imu_an-2] process has died [pid 10522, exit code -6, cmd /home/rtech/imu_catkin_ws/devel/lib/imu_utils/imu_an __name:=imu_an __log:=/home/rtech/.ros/log/f4cc93e6-6965-11ee-b65a-0242f5a719a1/imu_an-2.log].
log file: /home/rtech/.ros/log/f4cc93e6-6965-11ee-b65a-0242f5a719a1/imu_an-2*.log
How to solve the problem!!!
Appreciate!!!
Hi, thanks for you sharing this useful tools for imu calibration. I got the screen output as follow:
the output is not as the same as screen output in README. there are two 'White Noise' for gyro. Which of them is the true gyr_n?
I also found there are Bias Instability and bias for gyro. Which of them is the true gyr_w?
Can anybody help? many thanks!
I am running Ubuntu 18.04 on a Jetson AGX with OpenCV4
I get the following error when trying to build cv_utils:
/home/lbackpack/catkin_ws/src/code_utils/src/mat_io_test.cpp: In function ‘int main()’:
/home/lbackpack/catkin_ws/src/code_utils/src/mat_io_test.cpp:33:47: error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope
Mat img1 = imread( "/home/gao/IMG_1.png", CV_LOAD_IMAGE_UNCHANGED );
^~~~~~~~~~~~~~~~~~~~~~~
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp: In function ‘void test1()’:
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp:85:47: error: ‘CV_LOAD_GRAYSCALE’ was not declared in this scope
Mat img1 = imread( "/home/gao/IMG_1.png", CV_LOAD_GRAYSCALE );
^~~~~~~~~~~~~~~~~
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp:85:47: note: suggested alternative: ‘CV_HAL_DFT_SCALE’
Mat img1 = imread( "/home/gao/IMG_1.png", CV_LOAD_GRAYSCALE );
^~~~~~~~~~~~~~~~~
CV_HAL_DFT_SCALE
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp:95:35: error: ‘CV_MINMAX’ was not declared in this scope
normalize( img, img2, 0, 255, CV_MINMAX );
^~~~~~~~~
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp:95:35: note: suggested alternative: ‘CV_FINAL’
normalize( img, img2, 0, 255, CV_MINMAX );
^~~~~~~~~
CV_FINAL
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp: In function ‘void test2()’:
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp:108:47: error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
Mat img1 = imread( "/home/gao/IMG_1.png", CV_LOAD_IMAGE_GRAYSCALE );
^~~~~~~~~~~~~~~~~~~~~~~
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp:118:35: error: ‘CV_MINMAX’ was not declared in this scope
normalize( img, img2, 0, 255, CV_MINMAX );
^~~~~~~~~
/home/lbackpack/catkin_ws/src/code_utils/src/sumpixel_test.cpp:118:35: note: suggested alternative: ‘CV_FINAL’
normalize( img, img2, 0, 255, CV_MINMAX );
^~~~~~~~~
CV_FINAL
code_utils/CMakeFiles/sumpixel_test.dir/build.make:81: recipe for target 'code_utils/CMakeFiles/sumpixel_test.dir/src/sumpixel_test.cpp.o' failed
make[2]: *** [code_utils/CMakeFiles/sumpixel_test.dir/src/sumpixel_test.cpp.o] Error 1
CMakeFiles/Makefile2:949: recipe for target 'code_utils/CMakeFiles/sumpixel_test.dir/all' failed
make[1]: *** [code_utils/CMakeFiles/sumpixel_test.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
code_utils/CMakeFiles/matIO_test.dir/build.make:81: recipe for target 'code_utils/CMakeFiles/matIO_test.dir/src/mat_io_test.cpp.o' failed
make[2]: *** [code_utils/CMakeFiles/matIO_test.dir/src/mat_io_test.cpp.o] Error 1
CMakeFiles/Makefile2:841: recipe for target 'code_utils/CMakeFiles/matIO_test.dir/all' failed
make[1]: *** [code_utils/CMakeFiles/matIO_test.dir/all] Error 2
Makefile:159: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed
I am very new to linux and am not sure how to fix this. All my attempts so far have failed in the last two weeks.
Google search has not been helpful.
thanks in advance
Hello Mr.Gao and everyone,
I had downloaded this code and build it in my catkin workspace. My operating system is Ubuntu16.04. When I try to launch A3.launch, I got this error:
ERROR: cannot launch node of type [imu_utils/imu_an]: can't locate node [imu_an] in package [imu_utils]
The build information is:
`Base path: /home/zxchang/imu_ws
Source space: /home/zxchang/imu_ws/src
Build space: /home/zxchang/imu_ws/build
Devel space: /home/zxchang/imu_ws/devel
Install space: /home/zxchang/imu_ws/install
[ 15%] Built target polynomial
[ 46%] Built target cv_utils
[ 46%] Built target sumpixel_test
[ 61%] Built target matIO_test
[100%] Built target pnp
`
Appreciate anyone's help.
the url https://gaowenliang.github.io/imu_utils is invalid
I am using the package to find the IMU noise parameters. The units mentioned in the README and the output file after the execution seems to be conflicting.
Comparing units of gyr_n in the above two pics suggest some conflicts. Former suggests "Noise density" while the other suggests "Noise standard deviation". @gaowenliang, can you please clarify the doubt?
error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 5>’
315 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/home/slam/cartographer_ws/install_isolated/include/ceres/internal/autodiff.h:348:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 5>’
348 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
349 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/slam/cartographer_ws/install_isolated/include/ceres/internal/autodiff.h:357:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 5>’
357 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
358 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Hi All:
By comparing the content in README with the IMU noise model described in https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model , it seems that the parameters Gyroscope/Accelerometer "bias Instability" (in the README) are the same with the Gyroscope/Accelerometer "random walk" (in the link). Since the unit 1/(s^2*sqrt(HZ)) = 1*sqrt(HZ)/(s). Correct me if I make any mistake.
If these two parameters are the same, according to the README, the Gyroscope/Accelerometer "bias Instability" are estimated by the minimum value of the Allan variance.
On the contrary, the link identifies the Gyroscope/Accelerometer "random walk" as the value of the (fitted) "random walk" diagonal (with slope +1/2) at an integration time of t=3 second. Which is the same approach used in the paper "The TUM VI Benchmark for Evaluating Visual-Inertial Odometry" (displayed by Fig. 5).
So, which is right? Any suggestion or correction is greatly appreciated, thanks in advance.
Hi, I got the following build error (after catkin_make):
what could be the problem?
CMake Error at /home/vccl/catkin_ws/build/ros_comm/clients/roscpp/cmake/roscpp-genmsg.cmake:79 (add_custom_target):
add_custom_target cannot create target "roscpp_generate_messages_cpp"
because another target with the same name already exists. The existing
target is a custom target created in source directory
"/home/vccl/catkin_ws/src/imu_utils". See documentation for policy CMP0002
for more details.
Call Stack (most recent call first):
/opt/ros/melodic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
ros_comm/clients/roscpp/CMakeLists.txt:41 (generate_messages)
CMake Error at /home/vccl/catkin_ws/build/ros_comm/clients/roscpp/cmake/roscpp-genmsg.cmake:136 (add_custom_target):
add_custom_target cannot create target "roscpp_generate_messages_eus"
because another target with the same name already exists. The existing
target is a custom target created in source directory
"/home/vccl/catkin_ws/src/imu_utils". See documentation for policy CMP0002
for more details.
Call Stack (most recent call first):
/opt/ros/melodic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
ros_comm/clients/roscpp/CMakeLists.txt:41 (generate_messages)
CMake Error at /home/vccl/catkin_ws/build/ros_comm/clients/roscpp/cmake/roscpp-genmsg.cmake:193 (add_custom_target):
add_custom_target cannot create target "roscpp_generate_messages_lisp"
because another target with the same name already exists. The existing
target is a custom target created in source directory
"/home/vccl/catkin_ws/src/imu_utils". See documentation for policy CMP0002
for more details.
Call Stack (most recent call first):
/opt/ros/melodic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
ros_comm/clients/roscpp/CMakeLists.txt:41 (generate_messages)
CMake Error at /home/vccl/catkin_ws/build/ros_comm/clients/roscpp/cmake/roscpp-genmsg.cmake:250 (add_custom_target):
add_custom_target cannot create target "roscpp_generate_messages_nodejs"
because another target with the same name already exists. The existing
target is a custom target created in source directory
"/home/vccl/catkin_ws/src/imu_utils". See documentation for policy CMP0002
for more details.
Call Stack (most recent call first):
/opt/ros/melodic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
ros_comm/clients/roscpp/CMakeLists.txt:41 (generate_messages)
CMake Error at /home/vccl/catkin_ws/build/ros_comm/clients/roscpp/cmake/roscpp-genmsg.cmake:307 (add_custom_target):
add_custom_target cannot create target "roscpp_generate_messages_py"
because another target with the same name already exists. The existing
target is a custom target created in source directory
"/home/vccl/catkin_ws/src/imu_utils". See documentation for policy CMP0002
for more details.
Call Stack (most recent call first):
/opt/ros/melodic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
ros_comm/clients/roscpp/CMakeLists.txt:41 (generate_messages)
-- +++ processing catkin package: 'navigation'
-- ==> add_subdirectory(navigation)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- +++ processing catkin package: 'octomap_server'
-- ==> add_subdirectory(octomap_mapping/octomap_server)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- +++ processing catkin package: 'navi_multi_goals_pub_rviz_plugin'
-- ==> add_subdirectory(rviz_navi_multi_goals_pub_plugin/navi_multi_goals_pub_rviz_plugin)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Using Qt5 based on the rviz_QT_VERSION: 5.9.5
-- +++ processing catkin package: 'dwa_local_planner'
-- ==> add_subdirectory(dwa_local_planner)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- +++ processing catkin package: 'xsens_mti_driver'
-- ==> add_subdirectory(xsens_ros_mti_driver)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Configuring incomplete, errors occurred!
See also "/home/vccl/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/vccl/catkin_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed
Anyone can help me?
Thanks
acc和 gyr 的 零偏稳定性 单位错了吧
Is it a hard requirement that we should have a rosbag of 2-hour duration?
Do that matter a lot?
Is it necessary to know the detail datasheet of the IMU sensor, since sample output is expressed in normal unit (such as rad/s). However actually it seems difficult to
Gyro z
C 0 0 0 0 0
WARNING: Logging before InitGoogleLogging() is written to STDERR
W0509 10:56:09.249119 25327 residual_block.cc:131]
Error in evaluating the ResidualBlock.
There are two possible reasons. Either the CostFunction did not evaluate and fill all
residual and jacobians that were requested or there was a non-finite value (nan/infinite)
generated during the or jacobian computation.
Residual Block size: 1 parameter blocks x 1 residuals
For each parameter block, the value of the parameters are printed in the first column
and the value of the jacobian under the corresponding residual. If a ParameterBlock was
held constant then the corresponding jacobian is printed as 'Not Computed'. If an entry
of the Jacobian/residual array was requested but was not written to by user code, it is
indicated by 'Uninitialized'. This is an error. Residuals or Jacobian values evaluating
to Inf or NaN is also an error.
Residuals: -nan
Parameter Block 0, size: 5
0 | -nan
0 | -nan
0 | -nan
0 | -nan
0 | -nan
E0509 10:56:09.249228 25327 trust_region_minimizer.cc:72] Terminating: Residual and Jacobian evaluation failed.
Bias Instability 0 rad/s, at 3416.76 s
White Noise 0 rad/s
bias 0 degree/s
Hello @gaowenliang ,
My imu works on 50 hz, if I record the values on my rosbag I can see that recording happens not exactly at 50hz, so in order to work on this algorithm shoud I play rosbag with rosbag play -r mybagfile.bag anyway, or should I directly play it without indicating the frequency?
Also, does this algorithm work on only 200 hz or some other frequencies as well, if so should I give the frequency of my IMU as an input to the system somewhere?
Thanks,
Metin
I cannot open this link: https://gaowenliang.github.io/imu_utils
Will the current imu_utils have a ROS2 version? Will this warehouse be maintained in the future?
Hi,
Thanks a lot for your library!
In order to help people use it easily, I think you could add the following indications in the installation step:
Cheers
Hi Wenliang Gao,
I run your code with the the default launch file and the bagfiles on the Baidu Netdisk,but I got different results with your results. Especially the gyr_n and acc_n. Could you please help me explain why? Thanks!!
Here are some results I got :
type: IMU
name: gx4
Gyr:
unit: " rad/s"
avg-axis:
gyr_n: 1.3776557135598267e-03
gyr_w: 4.4980238465211471e-05
x-axis:
gyr_n: 1.3598916608690695e-03
gyr_w: 4.3237605124366711e-05
y-axis:
gyr_n: 1.4085032617136594e-03
gyr_w: 4.7203631246970414e-05
z-axis:
gyr_n: 1.3645722180967506e-03
gyr_w: 4.4499479024297288e-05
Acc:
unit: " m/s^2"
avg-axis:
acc_n: 1.9804078615439449e-02
acc_w: 4.2787561680514757e-04
x-axis:
acc_n: 2.1200169501503625e-02
acc_w: 3.7692313329243398e-04
y-axis:
acc_n: 1.9195904275601066e-02
acc_w: 4.8504332057982245e-04
z-axis:
acc_n: 1.9016162069213648e-02
acc_w: 4.2166039654318628e-04
type: IMU
name: xsens
Gyr:
unit: " rad/s"
avg-axis:
gyr_n: 1.5766795105350902e-03
gyr_w: 5.8186310639220816e-05
x-axis:
gyr_n: 1.5913990126303940e-03
gyr_w: 6.1777289031013914e-05
y-axis:
gyr_n: 1.5285453823580789e-03
gyr_w: 6.7252832784928527e-05
z-axis:
gyr_n: 1.6100941366167980e-03
gyr_w: 4.5528810101720015e-05
Acc:
unit: " m/s^2"
avg-axis:
acc_n: 7.7486924587566184e-03
acc_w: 3.0142621178774011e-04
x-axis:
acc_n: 8.0543421537212501e-03
acc_w: 4.4048166959126769e-04
y-axis:
acc_n: 7.6276107736174539e-03
acc_w: 1.9648598133533297e-04
z-axis:
acc_n: 7.5641244489311511e-03
acc_w: 2.6731098443661977e-04
type: IMU
name: N3
Gyr:
unit: " rad/s"
avg-axis:
gyr_n: 2.0474063562222508e-03
gyr_w: 4.4107187176933610e-05
x-axis:
gyr_n: 1.9934577058496185e-03
gyr_w: 4.3455951372090669e-05
y-axis:
gyr_n: 2.0623111914684425e-03
gyr_w: 5.1949820903083133e-05
z-axis:
gyr_n: 2.0864501713486914e-03
gyr_w: 3.6915789255627028e-05
Acc:
unit: " m/s^2"
avg-axis:
acc_n: 2.7361865573858338e-02
acc_w: 6.9869639650317790e-04
x-axis:
acc_n: 2.2915909292582394e-02
acc_w: 6.2346942228045700e-04
y-axis:
acc_n: 2.1552485668793139e-02
acc_w: 5.4394057410119575e-04
z-axis:
acc_n: 3.7617201760199490e-02
acc_w: 9.2867919312788095e-04
type: IMU
name: "16448"
Gyr:
unit: " rad/s"
avg-axis:
gyr_n: 2.5556549916784113e-03
gyr_w: 7.4036973730112702e-05
x-axis:
gyr_n: 2.5752367201719532e-03
gyr_w: 7.9965694430990478e-05
y-axis:
gyr_n: 2.5521145069793234e-03
gyr_w: 6.8137921217407534e-05
z-axis:
gyr_n: 2.5396137478839575e-03
gyr_w: 7.4007305541940135e-05
Acc:
unit: " m/s^2"
avg-axis:
acc_n: 2.9005443699517627e-02
acc_w: 1.2919311021553450e-03
x-axis:
acc_n: 2.6832688337940648e-02
acc_w: 9.0581978608079256e-04
y-axis:
acc_n: 3.4875656476624710e-02
acc_w: 2.0564271053782313e-03
z-axis:
acc_n: 2.5307986283987522e-02
acc_w: 9.1354641500701139e-04
I have compiled this program, but encountered the following error when running. I suspect that I lack some library files. But no errors were reported when compiling. Can anyone help me? Give me some advice. thank you!
/home/xbw/catkin_ws/devel/lib/imu_utils/imu_an: symbol lookup error: /home/xbw/catkin_ws/devel/lib/libpnp.so: undefined symbol: _ZN6google21kLogSiteUninitializedE
[imu_an-1] process has died [pid 364, exit code 127, cmd /home/xbw/catkin_ws/devel/lib/imu_utils/imu_an __name:=imu_an __log:=/home/xbw/.ros/log/634f193e-ad60-11eb-a23d-4c1d960e9548/imu_an-1.log].
log file: /home/xbw/.ros/log/634f193e-ad60-11eb-a23d-4c1d960e9548/imu_an-1*.log
all processes on machine have died, roslaunch will exit
Hello. I am a newbie to ROS. I appreciate your nice work.
But I wonder how to transfer my IMU data to a rosbag? I use my Android phone to collect IMU measurements and I want to analyze them.
Once follow the constrction in the readme, but the bulid console show the error msg like 👍
then i try to build the code_utils without imu_utils it shows the following error:
I am pretty sure that the files pull from your git is correct and complete, but why it cannot build?
Or can someone else help me?
Hi, thanks for your works.
I have a question about the avrage factors m
, which I mean is that averaging time tau = m*tau0
.
I see all the references such as your referred like NXP, IEEE standards, Matlab tools about inertial sensor errors. I have not seen the calculation methods about factors m.
So can you tell me the methodology or reference about it? Thank you.
First of all, thanks for your work. However I have met some problem.
ros bag which record imu topic is imu.bag
the full log is here imu_utils log file
launch file is jy901.launch
and the answer is imu.yaml
Error in evaluating the ResidualBlock.
There are two possible reasons. Either the CostFunction did not evaluate and fill all
residual and jacobians that were requested or there was a non-finite value (nan/infinite)
generated during the or jacobian computation.
Residual Block size: 1 parameter blocks x 1 residuals
For each parameter block, the value of the parameters are printed in the first column
and the value of the jacobian under the corresponding residual. If a ParameterBlock was
held constant then the corresponding jacobian is printed as 'Not Computed'. If an entry
of the Jacobian/residual array was requested but was not written to by user code, it is
indicated by 'Uninitialized'. This is an error. Residuals or Jacobian values evaluating
to Inf or NaN is also an error.
Residuals: -nan
Parameter Block 0, size: 5
0 | -nan
0 | -nan
0 | -nan
0 | -nan
0 | -nan
thanks for your help
make[2]: *** [CMakeFiles/test_imu_calib.dir/build.make:107:/home/zzh/imu_tk-master/src/bin/test_imu_calib] 错误 1
make[1]: *** [CMakeFiles/Makefile2:775:CMakeFiles/test_imu_calib.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....
/usr/bin/ld: 找不到 -lCUDA::cublas
/usr/bin/ld: 找不到 -lCUDA::cudart
/usr/bin/ld: 找不到 -lCUDA::cusolver
/usr/bin/ld: 找不到 -lCUDA::cusparse
can someone teach me how to fix it, please
Hi!
I want to make the dataset from own imu sensor.
When I record the data, what should I do?
I should shake the sensor? or just put the sensor on the floor and then let it?
Could you give me some advice?
Hi, thanks for your works about IMU random errorss calibration with Allan variance.
I have something not understood about the unit of input raw data. I see the codes supporting 3 type of units such as RadPerSec, DegreePerSec and MPerSec2. However, I see the push data functions are shown in:
void
imu::AllanGyr::pushRadPerSec( double data, double time )
{
m_rawData.push_back( GyrData( data * 57.3 * 3600, time ) );
numData++;
}
void
imu::AllanGyr::pushDegreePerSec( double data, double time )
{
m_rawData.push_back( GyrData( data * 3600, time ) );
numData++;
}
void
imu::AllanGyr::pushDegreePerHou( double data, double time )
{
m_rawData.push_back( GyrData( data, time ) );
numData++;
}
It seems to be default that the imuput data is in degree/h unit. Does it give users some misunderstanding? Thanks
你好,我尝试了你的方法可以得到结果。同时我又找了另外一种方法作,发现这两种方法得到的结果不一致。另一种方法的源链接https://github.com/rpng/kalibr_allan,不知道你是否做过比较,还有就是怎么判断得到的方差是正确的呢?
非常赶紧您提供的方法,同时也希望得到您的回复,谢谢~
Hello Gao,
May I ask you a question?After run launch file,“wait for imu data” will appear. I check topic information(rostopic list & rostopic inof /xx), there is not any problem.
Thank you very much!
Hi,
I have doubt on capturing the raw imu values while IMU remaining still. That means, we have to keep the IMU z-axis aligned with gravity direction. is this interpretation is correct or we can capture the values at any orientation of IMU with gravity direction.
If we can capture at any orientation, the projection of acceleration due to gravity on xy-plane will be coming as a bias in the measurements. is this interpretation is correct?
Hi, thanks for sharing this awesome repo.
I am wondering which version of ceres you are using since I got the following error:
(I am using Ubuntu 16.04 + ROS Kinetic + Ceres 1.12.0 + Eigen 3.2.92. @gaowenliang @PeiliangLi )
gyr x num of Cluster 100
gyr y num of Cluster 100
gyr z num of Cluster 100
acc x num of Cluster 100
acc y num of Cluster 100
acc z num of Cluster 100
wait for imu data.
gyr x numData 1440063
gyr x start_t 1.52067e+09
gyr x end_t 1.52068e+09
gyr x dt
-------------7200.05 s
-------------120.001 min
-------------2.00001 h
gyr x freq 200.007
gyr x period 0.00499982
gyr y numData 1440063
gyr y start_t 1.52067e+09
gyr y end_t 1.52068e+09
gyr y dt
-------------7200.05 s
-------------120.001 min
-------------2.00001 h
gyr y freq 200.007
gyr y period 0.00499982
gyr z numData 1440063
gyr z start_t 1.52067e+09
gyr z end_t 1.52068e+09
gyr z dt
-------------7200.05 s
-------------120.001 min
-------------2.00001 h
gyr z freq 200.007
gyr z period 0.00499982
Gyro X
C -1.15909 18.9571 -3.72175 3.77855 -0.0240066
WARNING: Logging before InitGoogleLogging() is written to STDERR
E0310 18:00:55.632755 28994 solver.cc:487] Terminating: Invalid configuration. Solver::Options::max_lbfgs_rank = 0. Violated constraint: Solver::Options::max_lbfgs_rank > 0
Bias Instability 6.07778e-05 rad/s, at 5.04982 s
White Noise 9.55941e-05 rad/s
[imu_an-1] process has died [pid 28994, exit code -11, cmd /home/pxlong/ws/catkin_ws/devel/lib/imu_utils/imu_an __name:=imu_an __log:=/home/pxlong/.ros/log/fbb220fa-1c4e-11e8-86a2-7085c22aa66f/imu_an-1.log].
log file: /home/pxlong/.ros/log/fbb220fa-1c4e-11e8-86a2-7085c22aa66f/imu_an-1*.log
Hi, I got the following build error (after changed the bug stated by LeungHEX):
what could be the problem?
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "code_utils" with
any of the following names:
code_utilsConfig.cmake
code_utils-config.cmake
Add the installation prefix of "code_utils" to CMAKE_PREFIX_PATH or set
"code_utils_DIR" to a directory containing one of the above files. If
"code_utils" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
imu_utils/CMakeLists.txt:13 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/tester/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/tester/catkin_ws/build/CMakeFiles/CMakeError.log".
Makefile:6576: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed
感觉后面两行不应该写成bias instability。虽然代码中最后求的是bias instability,但是这个表格这里一定要给出bias instability的话,那单位就错了,按照IEEE 的标准,bias instability的单位应该是deg/h 这种单位。这里应该是角速率随机游走吧。
Thank you very much for sharing this code
I would like to share with you a graph based on 2 hours recording of the IMU from a D435i:
And I got a noise density for the gyroscope of 60.425 and a random walk of 0.66 and I am wondering whether there is an error somewhere because these number are really huge ! I am far from being a specialist but Do you think it is normal?
Thank you very much for your feedback
I download the imu_xsens.bag ,run in my compute ,the result show as fellow:
but not same as the sample result ?please tell me my result is right or not ,thanks alot.@gaowenliang
Gyr:
unit: " rad/s"
avg-axis:
gyr_n: 1.5513770203040560e-03
gyr_w: 5.6931332736234366e-05
x-axis:
gyr_n: 1.5774252973103551e-03
gyr_w: 6.2152140405180494e-05
y-axis:
gyr_n: 1.5476405987810337e-03
gyr_w: 6.2284959335368823e-05
z-axis:
gyr_n: 1.5290651648207790e-03
gyr_w: 4.6356898468153780e-05
Acc:
unit: " m/s^2"
avg-axis:
acc_n: 7.7779495049092829e-03
acc_w: 2.8431918968734965e-04
x-axis:
acc_n: 8.0345939262844602e-03
acc_w: 3.8639906610963935e-04
y-axis:
acc_n: 7.7117460043777128e-03
acc_w: 1.8871696931288423e-04
z-axis:
acc_n: 7.5875085840656749e-03
acc_w: 2.7784153363952539e-04
the sample reult :
type: IMU
name: xsens
Gyr:
unit: " rad/s"
avg-axis:
gyr_n: 1.5641921981365443e-04
gyr_w: 5.8371294942786571e-05
x-axis:
gyr_n: 1.5929650434021210e-04
gyr_w: 6.1344105209174259e-05
y-axis:
gyr_n: 1.5297132101736133e-04
gyr_w: 6.7378670380355060e-05
z-axis:
gyr_n: 1.5698983408338980e-04
gyr_w: 4.6391109238830401e-05
Acc:
unit: " m/s^2"
avg-axis:
acc_n: 7.8531619738053877e-04
acc_w: 3.2064659601889169e-04
x-axis:
acc_n: 8.1936568393485391e-04
acc_w: 4.8066600394948737e-04
y-axis:
acc_n: 7.7685118479656147e-04
acc_w: 1.8591481791391698e-04
z-axis:
acc_n: 7.5973172341020059e-04
acc_w: 2.9535896619327070e-04
运行时,终端一直是wait for imu data.我已经正确的订阅了imu的话题。
Hi Wenliang Gao
May I ask you the meaning and how to set up the parameter of max_cluster? Thank you very much.
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.