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

Cookie32's profile - activity

2017-05-28 00:31:22 -0500 received badge  Famous Question (source)
2017-02-12 15:48:09 -0500 received badge  Taxonomist
2016-09-04 05:49:20 -0500 received badge  Famous Question (source)
2016-02-11 14:27:34 -0500 received badge  Famous Question (source)
2016-01-15 11:57:24 -0500 received badge  Notable Question (source)
2015-12-10 23:37:16 -0500 received badge  Notable Question (source)
2015-08-27 04:02:58 -0500 received badge  Popular Question (source)
2015-08-26 09:31:32 -0500 asked a question ekf angle estimation

Hello everyone! My setup is ROS Jade, Ubuntu Trusty I am currently using a 2 wheeled robot that is driving a full circle or a straight line, for calibrating purposes. The available sensors are: wheel encoders and gyro.

I now fuse linear velocity and yaw velocity in the ekf_localization_node via a TwistWithCovarianceStamped message. First I ignored yaw velocity to determine the gain of the wheel encoders. It works just fine since when I rostopic echo /odometry/filtered I actually see that the robot followed a 5.5 m straight line.

Now, when i also fuse yaw velocity I have some issues.Although the robot is supposed to drive 2pi counter-clockwise, what happens is that after being filtered, the estimated orientation (following z axis) is between 1 and -1 when I determined the gain.

To determine the gain I just assumed that the total number of impulses output to the gyro between the beginning and the end equals 2pi (6.28). Did I make a mistake?

Here is my launchfile:

<!-- Launch file for ekf_localization_node -->

<launch>

<!-- This node will take in measurements from odometry, IMU, stamped pose, and stamped twist messages. It tracks
     the state of the robot, with the state vector being defined as X position, Y position, Z position,
     roll, pitch, yaw, their respective velocites, and linear acceleration. Units for all measurements are assumed
     to conform to the SI standard as specified in REP-103. -->
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization" clear_params="true">

  <!-- ======== STANDARD PARAMETERS ======== -->

  <!-- The frequency, in Hz, at which the filter will output a position estimate. Note that
       the filter will not begin computation until it receives at least one message from
       one of the inputs. It will then run continuously at the frequency specified here,
       regardless of whether it receives more measurements. Defaults to 30 if unspecified. -->
  <param name="frequency" value="20"/>

  <!-- The period, in seconds, after which we consider a sensor to have timed out. In this event, we
       carry out a predict cycle on the EKF without correcting it. This parameter can be thought of
       as the minimum frequency with which the filter will generate new output. Defaults to 1 / frequency
       if not specified. -->
  <param name="sensor_timeout" value="0.06"/>

  <!-- If this is set to true, no 3D information will be used in your state estimate. Use this if you
       are operating in a planar environment and want to ignore the effect of small variations in the
       ground plane that might otherwise be detected by, for example, an IMU. Defaults to false if
       unspecified. -->
  <param name="two_d_mode" value="true"/>

  <!-- REP-105 (http://www.ros.org/reps/rep-0105.html) specifies three principal coordinate frames: map,
       odom, and base_link. base_link is the coordinate frame that is affixed to the robot. The robot's
       position in the odom frame will drift over time, but is accurate in the short term and should be
       continuous. The odom frame is therefore the best frame for executing local motion plans. The map
       frame, like the odom frame, is a world-fixed coordinate frame ...
(more)
2015-08-26 06:46:17 -0500 commented question tune efk_localization_node

sorry I gave up a bit on this. I will create a new question since I integrated all that in a TwistWithCovarianceStamped message

2015-08-24 18:10:11 -0500 received badge  Popular Question (source)
2015-08-21 08:46:05 -0500 asked a question tune efk_localization_node

Hello everyone, first, here is my setup: Ubuntu 14.04 + ROS Jade

I simulated a two-wheeled robot driving circles, its width is 1m20, the radius of its wheels is 30 cm. It means that both the linear velocity (following the x-axis) and the angular velocity (following the z-axis) are always constant in this case.

Actually, I fused the data into the ekf_localization_node using a TwistWithCovarianceStamped message (published in the "odom" frame) and thanks to this launchfile:

<!-- Launch file for ekf_localization_node -->

<launch>

<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization" clear_params="true">

  <!-- ======== STANDARD PARAMETERS ======== -->


  <param name="frequency" value="20"/>


  <param name="sensor_timeout" value="0.06"/>


  <param name="two_d_mode" value="true"/>



  <!-- Defaults to "odom" if unspecified -->
  <param name="odom_frame" value="odom"/>
  <!-- Defaults to "base_link" if unspecified -->
  <param name="base_link_frame" value="base_link"/>
  <!-- Defaults to the value of "odom_frame" if unspecified -->
  <param name="world_frame" value="odom"/>

  <param name="transform_time_offset" value="0.0"/>


    <param name="twist0" value="/turtle1/cmd_vel"/>


  <rosparam param="twist0_config">[false, false, false,
                                  false, false, false,
                                  true,  true, false,
                                  false, false, true,
                                  false, false, false]</rosparam>



  <param name="print_diagnostics" value="true"/>


  <param name="twist0_queue_size" value="2"/>


  <param name="debug"           value="false"/>

  <param name="debug_out_file"  value="debug_ekf_localization.txt"/>


  <rosparam param="process_noise_covariance">[0.05, 0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0.05, 0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0.06, 0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0.03, 0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0.03, 0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0.06, 0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0.025, 0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0.025, 0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0.08, 0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0.01, 0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0.01, 0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0.01, 0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0.01, 0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0.01, 0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0.015]</rosparam>


       <rosparam param="initial_estimate_covariance">[1e-9, 0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,
                                                      0,    1e-9, 0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,
                                                      0,    0,    1e-9, 0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,
                                                      0,    0,    0,    1e-9, 0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0 ...
(more)
2015-08-11 03:38:47 -0500 received badge  Enthusiast
2015-08-04 03:53:23 -0500 commented answer ekf_localization_node no output

Thanks, now it does work, I have outuput to my Kalman filter with a TwistWithCovarianceStamped message as input. Now, I'll consider a more complex model for two wheeled robot navigation thanks to this ekf_localization_node.

2015-08-04 03:30:18 -0500 received badge  Scholar (source)
2015-07-30 02:50:34 -0500 received badge  Notable Question (source)
2015-07-29 09:30:45 -0500 received badge  Popular Question (source)
2015-07-29 09:03:44 -0500 answered a question ekf_localization_node no output

here you will find one example of a TwistWithCovarianceStamped message published over the topic /twist_input1 as input for the ekf_localization_node

  header: 
  seq: 534
  stamp: 
    secs: 1438178264
    nsecs: 22708520
  frame_id: odom
twist: 
  twist: 
    linear: 
      x: 1.641866
      y: 1.472035
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.2307692
  covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
2015-07-29 08:13:21 -0500 received badge  Editor (source)
2015-07-29 08:02:12 -0500 commented answer ekf_localization_node no output

Thanks for your answer. I edited the question (sorry for my mistake) and set the differential and relative parameters to false. It still doesn't work. Any other idea?

2015-07-29 07:52:42 -0500 received badge  Supporter (source)
2015-07-29 07:36:08 -0500 asked a question ekf_localization_node no output

Hello everyone I am a beginner with ROS, and want to test things with the ekf_localization_node (I use ROS Jade and Ubuntu 14.04)

So, I simulated a 2-wheeled robot in a 2D environment in Matlab. Typically, a robot that goes away from its charging station to reach a target. Now, I want to test the ekf_localization node to implement it soon on hardware(mobile robot with wheel encoders and gyro output signals), after I know it is at least possible

I extracted log files from my simulation (equivalent to odometry): x velocity, y velocity and yaw velocity.

image:simulated path

--> it was converted into a geometry_msgs/TwistWithCovarianceStamped to test it with the ekf_localization_node. Here is my launchfile

<launch>

<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization" clear_params="true">


  <param name="frequency" value="20"/>


  <param name="sensor_timeout" value="0.06"/>


  <param name="two_d_mode" value="true"/>



  <!-- Defaults to "odom" if unspecified -->
  <param name="odom_frame" value="odom"/>
  <!-- Defaults to "base_link" if unspecified -->
  <param name="base_link_frame" value="base_link"/>
  <!-- Defaults to the value of "odom_frame" if unspecified -->
  <param name="world_frame" value="odom"/>

 <param name="twist0" value="/twist_input1"/> 
  <param name="transform_time_offset" value="0.0"/>



  <rosparam param="twist0_config">[false, false, false,
                                  false, false, false,
                                  true,  true, false,
                                  false, false, true,
                                  false, false, false]</rosparam>


  <param name="twist0_differential" value="true"/>

  <param name="twist0_relative" value="true"/>

  <param name="print_diagnostics" value="true"/>

  <!-- ======== ADVANCED PARAMETERS ======== -->

  <param name="twist0_queue_size" value="2"/>

  <param name="debug"           value="false"/>
  <!-- Defaults to "robot_localization_debug.txt" if unspecified. -->
  <param name="debug_out_file"  value="debug_ekf_localization.txt"/>


  <rosparam param="process_noise_covariance">[0.05, 0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0.05, 0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0.06, 0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0.03, 0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0.03, 0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0.06, 0,     0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0.025, 0,     0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0.025, 0,    0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0.04, 0,    0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0.01, 0,    0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0.01, 0,    0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0.02, 0,    0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0.01, 0,    0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0.01, 0,
                                              0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0.015]</rosparam>


       <rosparam param="initial_estimate_covariance">[1e-9, 0,    0,    0,    0,    0,    0,    0,    0 ...
(more)