robot_localization adjusting launch file
Hello,
I have a bagfile of a drive with a vehicle around a building. Inside there is a visual odometry topic (nav_msgs/Odometry Message), an IMU topic (sensor_msgs/Imu Message), a GPS topic (sensor_msgs/NavSatFix Message and remapped via gps_common nav_msgs/Odometry Message ) and a Wheel Odometry topic (nav_msgs/Odometry Message).
I would like to fuse the data with the package robot_localization. After working with it for a while I encountered some things which I am not sure about.
- The Wheel Odometry topics frame_id is a local navigation frame which has no available transformation to my bodyframe (base_link) or my odom frame. Therefore linear and angular velocities are expressed in this local navigation frame rather than in body coordinates. (I don' t know why this is). Also there are no values given for pose and twist covariance (zeros) and Z-position, z-velocity, velocity over roll and pitch remain zero the entire time.
Can I fuse this wheel odometry in "robot_localization" and how would that be done? I think about remapping the topic to a new topic adding the covariance info. Do I have to set
<param name="odom0_differential" value="true" />
for the wheel odometry? What would be good values for the covariance matrix?
My visual odometry topic is computed via "viso2ros", there are static covariance matrices for pose and twist. In the solution of the filter I can see (rviz displaying the odometry/filtered topic) that the computed solution follows rather strictly the visual odometry. I figure the covariance values should be increased. Could that be?
What would be the settings in the launch file for my configuration (as described above), where odom0=wheelodometry, odom1=visual_odometry, odom2=gps (xsens, only x,y,z available plus covariances) and imu0=xsens.
Blockquote
<rosparam param="odom0_config">[false, false, true, false, false, true, false, false, true, false, false, true] </rosparam>
<rosparam param="odom1_config">[true, true, false, true, true, false, true, true, true, false, false, true]</rosparam>
<rosparam param="odom2_config">[true, true, false, false, false, false, false, false, false, false, false, false ]</rosparam>
<rosparam param="imu0_config">[false, false, false, true, true, false, false, false, false, true, true, false ]</rosparam>
<param name="odom0_differential" value="true"/>
<param name="odom1_differential" value="false"/>
<param name="odom2_differential" value="false">
<param name="imu0_differential" value="false"/>
The odom and world-frame are called "utm". I am glad for any help! Update: I receive the warnings:
"Could not obtain transform from wheel_odometry to utm. Error was "wheel_odometry passed to lookupTransform argument source_frame doesnot exist."
"Could not obtain transform from gpsfix to utm. Error was " lookup would require extrapolation into the future."
My response to this is going to be lengthy, but I need a bit more info: is this robot meant to operate in 2D or 3D?