ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

1) In the YAML file at the end of IMU params add

 imu0_remove_gravitational_acceleration: true

So it should look like:

imu0_config: [false, false, false,
          false, false, false,
          false, false, false,
          false, false, false,
          true, true, true]
imu0_nodelay: false
imu0_differential: false
imu0_relative: true
imu0_queue_size: 1
imu0_pose_rejection_threshold: 5                 # Note the difference in parameter names
imu0_twist_rejection_threshold: 5               #
imu0_linear_acceleration_rejection_threshold: 8  #
imu0_remove_gravitational_acceleration: true

2) Make sure your static TF of IMU and Camera are accurate and confirm if time stamps on accelerations are in sync with VIO

3) Suggestion : write a separate code to differentiate the Pose estimate of VIO to get linear velocities and transform it to body frame and feed it as a twist input measurement to the Robot_Localization module . according to this : https://github.com/cra-ros-pkg/robot_localization/blob/48b85fadd2c837b03a229f47ade8d05e65a03407/src/ekf.cpp#L267 only acceleration is used to predict velocity, I think you'd get more accurate data if you differentiate VIO pose.

Also, are you using the VIO provided by ETH zurich ? How did you manage to compile it for Kinetic, I've trying to compile ROVIO for weeks now.

1) In the YAML file at the end of IMU params add

 imu0_remove_gravitational_acceleration: true

So it should look like:

imu0_config: [false, false, false,
          false, false, false,
          false, false, false,
          false, false, false,
          true, true, true]
imu0_nodelay: false
imu0_differential: false
imu0_relative: true
imu0_queue_size: 1
imu0_pose_rejection_threshold: 5                 # Note the difference in parameter names
imu0_twist_rejection_threshold: 5               #
imu0_linear_acceleration_rejection_threshold: 8  #
imu0_remove_gravitational_acceleration: true

2) Make sure your static TF of IMU and Camera are accurate and confirm if time stamps on accelerations are in sync with VIO

3) Suggestion : write a separate code to differentiate the Pose estimate of VIO to get linear velocities and transform it to body frame and feed it as a twist input measurement to the Robot_Localization module . according to this : https://github.com/cra-ros-pkg/robot_localization/blob/48b85fadd2c837b03a229f47ade8d05e65a03407/src/ekf.cpp#L267 only acceleration is used to predict velocity, I think you'd get more accurate data if you differentiate VIO pose.

Also, are you using the VIO provided by ETH zurich ? How did you manage to compile it for Kinetic, Kinetic ? I've been trying to compile ROVIO for 16.04 for weeks now.

1) In the YAML file at the end of IMU params add

 imu0_remove_gravitational_acceleration: true

So it should look like:

imu0_config: [false, false, false,
          false, false, false,
          false, false, false,
          false, false, false,
          true, true, true]
imu0_nodelay: false
imu0_differential: false
imu0_relative: true
imu0_queue_size: 1
imu0_pose_rejection_threshold: 5                 # Note the difference in parameter names
imu0_twist_rejection_threshold: 5               #
imu0_linear_acceleration_rejection_threshold: 8  #
imu0_remove_gravitational_acceleration: true

2) Make sure your static TF of IMU and Camera to the base_link are accurate and confirm if time stamps on accelerations are in sync with VIO

3) Suggestion : write a separate code to differentiate the Pose estimate of VIO to get linear velocities and transform it to body frame and feed it as a twist input measurement to the Robot_Localization module . according to this : https://github.com/cra-ros-pkg/robot_localization/blob/48b85fadd2c837b03a229f47ade8d05e65a03407/src/ekf.cpp#L267 only acceleration is used to predict velocity, I think you'd get more accurate data if you differentiate VIO pose.

Also, are you using the VIO provided by ETH zurich ? How did you manage to compile it for Kinetic ? I've been trying to compile ROVIO for 16.04 for weeks now.