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

Linear Velocity from robot_localization Package after IMU integration and and only one sensor (IMU) as Sensort Iput

asked 2021-10-05 10:45:09 -0500

Astronaut gravatar image

updated 2021-10-05 12:04:44 -0500

HI

Im using the robot_localization robot_localization to get the linear Velocity of underwater simulated ROV with Gazebo. In order to get the correct orientation of the linear (twist) component of the published topic which is odometry/filtered I set inertial_reference_frame:=world_ned" instead of world in the Gazebo launch file and the .yaml file is like this

odom_frame: world_ned
base_link_frame: /rexrov2/base_link
world_frame: world_ned

Than the TF is like thisTF three TF three Is that correct? Than the launch file is

<launch>
  <node pkg="robot_localization" type="ekf_localization_node" name="ekf_se" clear_params="true">
    <rosparam command="load" file="$(find robot_localization)/params/ekf_template.yaml" />
    <!--param name="frame_id" value="odom"/>-->
  </node>
  <remap from="imu0" to="/rexrov2/imu" />
</launch>

Than the yaml configuration file is:

frequency: 80
silent_tf_failure: false
sensor_timeout: 0.1
two_d_mode: false
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
debug: false
debug_out_file: /path/to/debug/file.txt
publish_tf: true
imu0: /rexrov2/imu
imu0_config: [false, false, false,
              true, true, true,
              false, false, false,
              true,  true,  true,
              true,  true,  true]
imu0_nodelay: false
imu0_differential: false
imu0_relative: false
imu0_queue_size: 6
imu0_pose_rejection_threshold: 0.8                
imu0_twist_rejection_threshold: 1.8               
imu0_linear_acceleration_rejection_threshold: 0.8  
imu0_remove_gravitational_acceleration: true
use_control: false
stamped_control: false
control_timeout: 0.2
acceleration_limits: [8.3, 0.0, 0.0, 0.0, 0.0, 8.4]
deceleration_limits: [8.3, 0.0, 0.0, 0.0, 0.0, 8.5]
acceleration_gains: [8.0, 0.0, 0.0, 0.0, 0.0, 8.0]
deceleration_gains: [8, 0.0, 0.0, 0.0, 0.0, 8.0]
publish_acceleration: false

Following this Frames Set Frames set up up and taking in account that my simulation is underwater is the frame set up ok or do I need some static_transform_publisher such as <node pkg="tf" type="static_transform_publisher" name="base_link_to_odom" args="0 0 0 0 0 0 /rexrov2/footprint /rexrov2/base_link 100" /> So Im getting the Linear velocity Values and can compare with one "Ideal" "Pose" sensor that will gonna gonna use bit is only for comparison. So in the Velocity values are some how following the Ideal one but is a weak response.So what parameters can tune or what can do in order to get better results? Thanks

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2021-12-15 02:42:11 -0500

Tom Moore gravatar image

You should provide sample sensor messages, but in this case, I can tell you that this won't work. Your state estimate is going to run away on you, because your IMU accelerometer data will carry biases. Double integration of biased data will be huge position changes.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2021-10-05 10:45:09 -0500

Seen: 184 times

Last updated: Dec 15 '21