RoverRobotics / roverrobotics_ros1

ROS1 Driver for communicating with Rover Robotics products. Requires librover.
Apache License 2.0
11 stars 7 forks source link

No pose in odom message (and no odom <-> base link transform) #24

Closed jmm-slamcore closed 2 years ago

jmm-slamcore commented 2 years ago

The odom message being published by this wrapper only contains Twist messages, whilst the archived repo (https://github.com/RoverRobotics/roverrobotics_stack/blob/b7538bae413b1c4f0332006f3e6612ea6657bebe/rr_rover_zero_v2_driver/src/rr_rover_zero_v2_driver.cpp#L253-L330) used to publish pose and twist (and there even seemed to be code to broadcast the odom <-> base_link transform). Is there any reason why this is not present in this repo and is this coming any time soon?

RoverRoboticsProduction commented 2 years ago

Hello, apologies for the delay in response. We are aware of the lack of the pose publishing in the current iteration. Most of our customers use robot_localization and fuse the encoder data with an IMU, so we only wanted the pose to be published once. We are looking into solutions to access pose for customers that don't want to use that, as well as assessing other quality of life features. Likely sometime in the first half of 2022.

jmm-slamcore commented 2 years ago

Thanks for the response. If we wanted to calculate pose ourselves, what is the recommended way of getting odometry values other than the odometry topic? Are raw encoder ticks available or a JointState message?

shoemakerlevy9 commented 2 years ago

We recommend using the odometry topic but only using the twist value, and using that as input into two kalman filters, one for encoders + IMU, and the second for encoders + IMU + global localization from your slam.

shoemakerlevy9 commented 2 years ago

Also if you don't have an IMU we still recommend using two kalman filters. One for only encoders, and the second for encoders + slam. The first kalman filter that only using encoders will result in an odometry with pose.

jmm-slamcore commented 2 years ago

Thanks @shoemakerlevy9 , that is what we ended up doing - just using 1 KF for the encoders to get pose. This solution works for now so feel free to close this issue.