openhumanoids / pronto Goto Github PK
View Code? Open in Web Editor NEWRobot Motion Estimator
License: GNU Lesser General Public License v2.1
Robot Motion Estimator
License: GNU Lesser General Public License v2.1
in "pronto/motion_estimate/src/cloud_accumulate/cloud_accumulate.hpp", it seems that you named a "boost::circular_buffer<std::shared_ptr<bot_core::planar_lidar_t>> messages_buffer_", but how do you use it, what is this for?
support situations when the VO estimate fails entirely, by resetting the measurement (deltaroot)
don't use bot frames to get the previous pose of the robot (at the top of the VO)
IMPORTANT Fix this issue: Eigen::Isometry3d delta_body_from_ref = world_to_body_ * ( deltaroot_body_pose_.inverse() );
IMPORTANT: mention that the acceleration signals should be filtered during foot impacts E.g. with a high gain FIR filter
TODO: get running on the handheld hyq logs, or any logs with an imu and multisense e.g. husky
Apparently openhumanoids/common_utils#12 breaks the linking of the state estimator.
@mauricefallon I'm struggling to find the reason why the following happens:
gtinchev@beatrix:~/rpg-navigation/software/pronto/state-estimator$ make
[ 21%] Built target mav-state-est
[ 24%] Linking CXX shared library ../../lib/libgpf-laser-lib.so
CMakeFiles/gpf-laser-lib.dir/LaserLikelihoodInterface.cpp.o: In function `laser_create_projected_scan_from_planar_lidar_with_interpolation':
LaserLikelihoodInterface.cpp:(.text+0x110): multiple definition of `laser_create_projected_scan_from_planar_lidar_with_interpolation'
CMakeFiles/gpf-laser-lib.dir/laser_gpf_lib.cpp.o:laser_gpf_lib.cpp:(.text+0x12e0): first defined here
CMakeFiles/gpf-laser-lib.dir/LaserLikelihoodInterface.cpp.o: In function `laser_update_projected_scan_with_interpolation':
LaserLikelihoodInterface.cpp:(.text+0x120): multiple definition of `laser_update_projected_scan_with_interpolation'
CMakeFiles/gpf-laser-lib.dir/laser_gpf_lib.cpp.o:laser_gpf_lib.cpp:(.text+0x12f0): first defined here
CMakeFiles/gpf-laser-lib.dir/rbis_gpf_update.cpp.o: In function `laser_create_projected_scan_from_planar_lidar_with_interpolation':
rbis_gpf_update.cpp:(.text+0x6c0): multiple definition of `laser_create_projected_scan_from_planar_lidar_with_interpolation'
CMakeFiles/gpf-laser-lib.dir/laser_gpf_lib.cpp.o:laser_gpf_lib.cpp:(.text+0x12e0): first defined here
CMakeFiles/gpf-laser-lib.dir/rbis_gpf_update.cpp.o: In function `laser_update_projected_scan_with_interpolation':
rbis_gpf_update.cpp:(.text+0x6d0): multiple definition of `laser_update_projected_scan_with_interpolation'
CMakeFiles/gpf-laser-lib.dir/laser_gpf_lib.cpp.o:laser_gpf_lib.cpp:(.text+0x12f0): first defined here
collect2: error: ld returned 1 exit status
src/gpf/CMakeFiles/gpf-laser-lib.dir/build.make:172: recipe for target 'lib/libgpf-laser-lib.so' failed
make[3]: *** [lib/libgpf-laser-lib.so] Error 1
CMakeFiles/Makefile2:288: recipe for target 'src/gpf/CMakeFiles/gpf-laser-lib.dir/all' failed
make[2]: *** [src/gpf/CMakeFiles/gpf-laser-lib.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make[1]: *** [all] Error 2
Makefile:27: recipe for target 'all' failed
make: *** [all] Error 2
I'm unsure why it is trying to define the function laser_create_projected_scan_from_planar_lidar_with_interpolation
when it is part of an external library.
I'm unsure if that's an issue of overlapping header files.
Could you please assist?
P.S. I tried changing the laser_create_projected_scan_from_planar_lidar_with_interpolation
to laser_create_projected_scan_from_planar_lidar_with_interpolation_with_timeout
and add an argument for the timeout (in the cpp files), however, the same error occurs. Thus, I think it must be something to do with the linking of the header files.
I've noticed from here:
the base acceleration seems to be computed as body-imu transform applied to the acceleration vector from the IMU, e.g.:
So if the IMU is far away from the base, there would be a big bias in the base acceleration vector.
Shouldn't instead be:
rotated imu acceleration + translation of the transform x rotational acceleration - rotation rate x (rotation rate x translation) ? e.g.:
Am I missing something?
I've taken the equations from here (Equation 25-26):
https://www.astro.rug.nl/software/kapteyn/_downloads/attitude.pdf
I would like to introduce a ins modality in which I can pre-compute the gyro and accel bias of the IMU and keep them as fixed and never changed state.
I know that this is feature interesting also for other users in this organization, but before working on that I would like to know from which branch should I work on, because pronto-distro points to a very old commit of the master branch of this repository, and if I try to do a submodule update against the latest version, I get compilation errors, probably due to name and lcmtypes changes.
Please let me know.
It would be nice to have a way to warn the user when the timestep_dt value differs too much from the actual data frequency.
Something like computing the average of the diff of timestamps and compare to the value.
When switching between different IMUs and drivers, when pronto is in the loop it becomes dangerous when the integration step is wrong.
I've already tried in the past to detect the timestep_dt automatically, but it didn't go well.
Maybe when doing the bias detection we could detect the frequency as well and round to the most reasonable frequency.
Current approach:
PROBLEMS
1 contains hard coded checks of multisense joints. (but the lidar could be from a another lidar e.g. SICK)
2 scan could arrive quite late
Challenges:
HyQ issue:
Husky issue:
fyi - when compiling on the mac, I see
-------------------------------------------
-- visualization
-------------------------------------------
[ 0%] Built target lcmgen_c
[ 0%] Built target lcmgen_cpp
[ 0%] Built target lcmgen_java
[ 0%] Built target lcmgen_python
[ 71%] Built target lcmtypes_visualization
[ 80%] Built target lcmtypes_visualization_jar
[ 85%] Built target vs_vis
[ 90%] Built target collections_renderer
Linking CXX executable ../../bin/collections_example
ld: library not found for -lboost_thread
clang: error: linker command failed with exit code 1 (use -v to see invocation)
The EKF correction is made here: RBISIndexedMeasurement::updateFilter which calls
The state update is then used to create the correction:
For a position measurement (for example from ICP):
I believe this is because the calculation of the Kalman Gain in matrixMeasurementGetKandCovDelta() wrongly selects parts of the state space
@mcamurri @simalpha : I believe this is the reason for the incorrect behaviour when integrating ICP on HyQ
@manuelli @siyuanfeng-tri : I think this could also cause the instability in orientation we are seeing for Valkyrie - but I don't want to jump to conclusions.
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.