processor_odom_2d exact integration if theta != 0
processor_odom_2d has two integration functions :
- exact integration if theta != 0 (impl : theta > 10e-3)
- Runge-Kutta integration otherwise
Added a test with data :
test_processor_odom_2d ~/path/to/wolf/src/example/data/odom_2d_loop.dat
.
Data are basically ROS geometry_msgs/TwistStamped
recorded from TIAGo. The robot in moving around for 90sec coming back to its starting point with but facing back ( ~ x:0 y:0 theta:pi ).
See e.g. slide 5
Merge request reports
Activity
@jsola @joanvallve This is wip and aims at using exact integration in case the orientation isn't too close to zero. This is similar to the odometry of the ROS DiffDriveController. Looking forward for feedback.
Added 32 commits:
- 85a857ff...27413eeb - 29 commits from branch
master
- c8818322 - add test_processor_odom_2d
- bdb0a119 - processor_odom_2d exact integration if theta != 0
- 3a44ee08 - add odom_2d data
Toggle commit list- 85a857ff...27413eeb - 29 commits from branch
Added help wanted label
You can still use the class, but maybe if what you want to do is very different you need a new one. Possibly the word 'odometry' is misleading, it means too many different things. In our case, it's the integration of small displacements, call them
dx
. You can easily work with velocities by assigning adt
and doing the proper math. I think that, if this is the only difference, I would use the same class, just with a flag indicating if data isdx
, of if data isv
, because there is not so much difference (anddx
can be easily computed withdx = v * dt
). This flag can be either a bool, or just doing dt = -1 or something.Yes. You could even inherit from odom2d to make DiffDrive... just a suggestion. Probably, you just need to code data2delta()
Edited by Joan Solà OrtegaIndeed. We'll probably have to do some calibration for the odometry in our project Logimatic. Our two inputs are linear and angular velocities, just as your diffDrive model. Go ahead. If you need to calibrate params, just put them in the intrinsics_ StateBlock in the sensor, and use them in the Processor. Wolf will calibrate them! :-D Well -- it will if the constraint also uses them!
Edited by Joan Solà Ortega