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

Cyril Jourdan's profile - activity

2023-04-26 16:34:04 -0500 marked best answer robot_localization /map /odom drift

Hello everyone,

I use ROS2 Foxy along with robot_localization. I have a differential wheeled robot with odometry and 2 GPS rtk for position and heading.

The sensors work properly independently. I have a clean odometry track and the heading is working fine. The problem occurs when I merge them using robot_localization, with two ekf_localisation_node (local and global) and one navsat_transform_node. I observe a shift/drift between /map and /odom frames and I have my odometry track which is getting disturbed.

Under mapviz, using /map as fixed and target frame :

  • red and orange tracks are similar (/odom and /odometry/filtered/local)
  • yellow track is /odometry/gps
  • blue track is tf_frame with /odom frame (which has /map as a direct parent)
  • black track is /odometry/filtered/global

The blue track can become completely crazy : image description

Here are the parameters used in localization.yaml

navsat_transform:
  ros__parameters:
    magnetic_declination_radians: 0.0387 
    yaw_offset: 0.0 
    zero_altitude: true # True if operating in 2D
    publish_filtered_gps: true
    use_odometry_yaw: true
    wait_for_datum: false
    use_local_cartesian: false
    frequency: 30.0 # Hz
    delay: 0.0 # Seconds
    transform_timeout: 0.0
    broadcast_utm_transform: false
    broadcast_utm_transform_as_parent_frame: false

ekf_local:
  ros__parameters:
    frequency: 30.0 # Hz
    sensor_timeout: 0.1 # Seconds
    two_d_mode: true # No 3D information will be used (zero_altitude already set to true)
    publish_acceleration: false
    publish_tf: true
    reset_on_time_jump: false
    map_frame: map # Defaults to "map" if unspecified
    odom_frame: odom # Defaults to "odom" if unspecified
    base_link_frame: base_footprint # Defaults to "base_link" if unspecified
    world_frame: odom # Defaults to the value of odom_frame if unspecified

    odom0: odom # Wheel odometry
    odom0_config: [true, true, false, # [x, y, z]
                false, false, true, # [roll, pitch, yaw]
                false, false, false, # [x_vel, y_vel, z_vel]
                false, false, false, # [roll_vel, pitch_vel, yaw_vel]
                false, false, false] # [x_accel, y_accel, z_accel]
    odom0_nodelay: true
    odom0_differential: false
    odom0_relative: false
    odom0_queue_size: 30

ekf_global:
  ros__parameters:
    frequency: 30.0 # Hz
    sensor_timeout: 0.1 # Seconds
    two_d_mode: true # No 3D information will be used (zero_altitude already set to true)
    publish_acceleration: false
    publish_tf: true
    reset_on_time_jump: false
    map_frame: map # Defaults to "map" if unspecified
    odom_frame: odom # Defaults to "odom" if unspecified
    base_link_frame: base_footprint # Defaults to "base_link" if unspecified
    world_frame: map # Defaults to the value of odom_frame if unspecified

    odom0: odometry/gps # navsat_transform_node output
    odom0_config: [true, true, false, # [x, y, z]
                false, false, false, # [roll, pitch, yaw]
                false, false, false, # [x_vel, y_vel, z_vel]
                false, false, false, # [roll_vel, pitch_vel, yaw_vel]
                false, false, false] # [x_accel, y_accel, z_accel]
    odom0_nodelay: true
    odom0_differential: false
    odom0_relative: false
    odom0_queue_size: 30

    odom1: odom # Wheel odometry
    odom1_config: [true, true, false, # [x, y, z]
                false, false, false, # [roll, pitch, yaw]
                false, false, false, # [x_vel, y_vel, z_vel]
                false, false, false, # [roll_vel, pitch_vel, yaw_vel]
                false, false, false] # [x_accel, y_accel, z_accel]
    odom1_nodelay: true
    odom1_differential: false
    odom1_relative: false
    odom1_queue_size: 30

    imu0: gps_heading
    imu0_config: [false, false, false, # [x, y, z]
                false, false, true, # [roll, pitch, yaw]
                false, false, false, # [x_vel, y_vel, z_vel]
                false, false, false, # [roll_vel, pitch_vel, yaw_vel]
                false, false, false] # [x_accel, y_accel, z_accel]
    imu0_nodelay: false
    imu0_differential: false
    imu0_relative: false
    imu0_queue_size: 30

Do you have any idea what is causing this behavior ?

Many thanks

2023-04-26 16:33:48 -0500 commented answer robot_localization /map /odom drift

Hi Tom, thanks a lot for your comment. Your suggestions are exactly the kind of issues we have encounter. First, the gps

2023-04-21 02:40:04 -0500 received badge  Famous Question (source)
2023-02-03 01:56:58 -0500 commented question ros2_canopen proxy driver examples

Hi, there are some examples in the test package that you have probably already seen (here). Have you been able to actual

2022-11-22 03:26:39 -0500 received badge  Notable Question (source)
2022-11-14 02:07:34 -0500 received badge  Popular Question (source)
2022-11-08 07:48:19 -0500 asked a question robot_localization /map /odom drift

robot_localization /map /odom drift Hello everyone, I use ROS2 Foxy along with robot_localization. I have a differentia

2022-09-21 07:37:01 -0500 received badge  Notable Question (source)
2022-07-07 10:21:35 -0500 commented question how to set up a remote connection between the robot and the remote PC working through a VPN?

Have you found the solution to this issue ? I'm facing the same problem where both can ping each other but I can't see t

2022-03-31 02:16:14 -0500 answered a question Motor controllers recommendation

Hi, You could use maxon EPOS4 controllers, they are CiA402 and work fine with ros_canopen. There is a large range of pr

2022-03-10 01:04:59 -0500 edited answer ros_canopen with joint_position_controller does not work

Hi @martinlucan, There is also an EMCY error message: 81#2032040000000000 , does anyone know what it refers to? Th

2022-02-18 05:34:55 -0500 commented answer Adding Tutorial link automatically to a wiki page

Hi @gvdhoorn, I think I saw the information to create a /tutorials page as opposed to a /Tutorials on the following page

2022-02-04 11:17:55 -0500 commented answer Adding Tutorial link automatically to a wiki page

Hi @gvdhoorn, thank you for fixing the Tutorials page, I used the lower case "tutorials" indeed. So I also deleted my wr

2022-02-04 11:03:10 -0500 received badge  Popular Question (source)
2022-01-28 11:25:40 -0500 marked best answer Adding Tutorial link automatically to a wiki page

Hi,

I've created a tutorial for the ros_canopen package : http://wiki.ros.org/ros_canopen.

I made the tutorial according to this guideline : http://wiki.ros.org/WritingTutorials. The tutorial page is located here: http://wiki.ros.org/ros_canopen/tutor...

I would like the ros_canopen page to display the Tutorial links automatically in the gray square entitled "Package Links" on the upper right, but at the moment it doesn't. I read on ROS Answers that it can take up to 3 days, but I can't find any official information regarding that, and it has been a week since I published it.

Am I missing something to get that link displayed or should I just wait longer or refresh something by myself ?

2022-01-28 05:42:34 -0500 asked a question Adding Tutorial link automatically to a wiki page

Adding Tutorial link automatically to a wiki page Hi, I've created a tutorial for the ros_canopen package : http://wiki

2022-01-19 08:38:00 -0500 answered a question ros_canopen with joint_position_controller does not work

Hi @martinlucan, There is also an EMCY error message: 81#2032040000000000 , does anyone know what it refers to? Th

2021-12-23 08:51:07 -0500 commented answer Change a device state via "0x6041 Controlword"

and TxPDO like this: TxPDO - TxPDO1 1st object: Statusword (0x60410010) - TxPDO1 2nd object: Modes of Operation display

2021-12-23 08:46:01 -0500 commented answer Change a device state via "0x6041 Controlword"

Hi Martin, Looking at your DCF file, your PDO mapping is different than what ros_canopen expects, so this is most likel

2021-12-23 08:45:44 -0500 commented answer Change a device state via "0x6041 Controlword"

Hi Martin, Looking at your DCF file, your PDO mapping is different than what ros_canopen expects, so this is most likel

2021-12-02 11:18:09 -0500 answered a question Change a device state via "0x6041 Controlword"

Hi martinlucan, it seems that you try to set the Statusword read-only object. Your idexes are inverted: Controlword is 0

2021-10-26 03:18:46 -0500 commented question ROS2 canopen availability

Hi, there is a partial migration done here with config files given at the end of that post, and there is a socketcan wra

2021-10-26 03:04:27 -0500 received badge  Autobiographer
2021-10-25 07:24:38 -0500 received badge  Famous Question (source)
2021-08-09 13:46:24 -0500 received badge  Famous Question (source)
2021-07-06 01:58:51 -0500 received badge  Notable Question (source)
2021-07-05 03:13:15 -0500 commented answer Control single Maxon motor after successful ros_canopen initialization

Hi martinlucan, are you able to share all your configuration files or update your question to see where the problem coul

2021-06-24 07:40:41 -0500 received badge  Notable Question (source)
2021-06-24 07:03:49 -0500 commented answer ros_canopen Homing method AccessType

Setting the DefaultValue to 0 works indeed, thanks. Do you think the writing of the Homing method value could be skipped

2021-06-24 05:05:20 -0500 commented answer ros_canopen Homing method AccessType

"This should not be needed.. (Unless the object is const in the device's object directory." I agree, and I think I foun

2021-06-24 05:04:32 -0500 commented answer ros_canopen Homing method AccessType

This should not be needed.. (Unless the object is const in the device's object directory. I agree, and I think I found t

2021-06-24 05:04:08 -0500 commented answer ros_canopen Homing method AccessType

This should not be needed.. (Unless the object is const in the device's object directory. I agree, and I think I found t

2021-06-21 05:32:12 -0500 commented answer Why ros_canopen needs EDS/DCF file ?

I am a bit confused by this process, as a DCF file contains for example objects which are read only and calculated durin

2021-06-21 01:16:38 -0500 received badge  Popular Question (source)
2021-06-16 02:50:29 -0500 commented question Odometry for a holonomic robot with 3 wheels

Hi, I didn't find it at the time, so I wrote the code with the kinematics to get the odometry.

2021-06-16 02:47:20 -0500 edited question roslaunch using tmux for large project [solved]

roslaunch using tmux for large project Hello, I have a project with a launch file that includes other launch files and

2021-06-16 02:42:58 -0500 edited question rqt_reconfigure unable to resize column in Kinetic [solved]

rqt_reconfigure unable to resize column in Kinetic Hello, When I launch (with ROS Kinetic) rosrun rqt_reconfigure rqt_

2021-06-15 20:18:17 -0500 received badge  Popular Question (source)
2021-06-15 03:15:31 -0500 asked a question ros_canopen Homing method AccessType

ros_canopen Homing method AccessType Hi, The Homing method (object 0x6098) AccessType is usually defined as "RW" in doc

2021-06-15 01:14:27 -0500 commented answer Why ros_canopen needs EDS/DCF file ?

Hi Mathias, thank you for your detailed reply. When you say objects which have ParameterValue defined are written to the

2021-06-14 05:06:37 -0500 commented question Simultaneous Homing in Ros Canopen

Hi! Did you found how to do that ? I think you can tag again your question with ros_canopen to be noticed by the package

2021-06-11 10:59:34 -0500 asked a question Why ros_canopen needs EDS/DCF file ?

Why ros_canopen needs EDS/DCF file ? Hello, I'm using ros_canopen and was wondering how it works internally. I can get

2020-10-10 03:27:10 -0500 commented question Move motor in velocity mode with ros_canopen

Hi, I'm also trying to send a velocity command. Did you get it working ?

2020-10-01 10:37:09 -0500 commented question Not able to initialize driver with canopen_motor_node

Hi, I'm not sure how to solve your issue, but the first thing I can say is that the Maxon EPOS2 is not CiA 402 compatibl

2019-12-18 22:19:13 -0500 received badge  Famous Question (source)
2019-12-02 08:30:43 -0500 received badge  Famous Question (source)