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

How to make ekf localization node for multiple ridgeback robots

asked 2019-07-24 22:52:40 -0500

Soloist gravatar image

Hi all, Now I'm running with Ubuntu 16.04, ROS kinetic (ROS1) I also working with my Gazebo multi ridgeback robots by modifying the ridgeback_simulation But the problem is I don't know how to let EKF localization node works for multiple robots. The similar question has mentioned here since 2016 similar_q. From my understanding, to make multiple EKF localization node we have to edit frameID from gazebo xacro file and put name space, tf_prefix for them. But finally, I still cannot do it with my ridgeback. The problem is it show that

Could not obtain transform from robot_1/base_link to /base_link. Error was "robot_1/base_link" passed to lookupTransform argument target_frame does not exist

Finally, I have found that someone can do it with multiple Husky robots simulation.multi_husky_explanation and the git repo here multi_husky_git_repo. So, I have downloaded the original Husky package and try to run the multihusky launch file. And found that

  1. The kinect URDF file locazation was changed. So I have edit the mhusky.gazebo.xacro only one line as following
    <xacro:include filename="$(find husky_description)/urdf/accessories/kinect_camera.urdf.xacro"/>
  2. When I launch the multihusky.launch. I have found the error below re/src/nre_simmultihusky/xacro/mhusky.gazebo.xacro' laser_enabled:=true ur5_enabled:=false kinect_enabled:=false nsp:=h1 tfpre:=h1_tf ] returned with code [2]. Param xml is <param command="$(find xacro)/ --inorder '$(find nre_simmu ltihusky)/xacro/mhusky.gazebo.xacro' laser_enabled:=$(arg laser_enabled ) ur5_enabled:=$(arg ur5_enabled) kinect_enabled:=$(arg kinect_ enabled) nsp:=$(arg namespace) tfpre:=$(arg tfpre) " na me="robot_description"/> The traceback for the exception was written to the log file

According to the multihusky repo, they give TF tree shown that multiple EKF nodes can work properly here nre_simmultihusky wiki. So my question is how I can run this file to understand how they create multiple EKF localization node. Please help me!!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2020-08-31 14:09:00 -0500

liorlustgarten gravatar image

Hi, I ran into this same issue while also enabling multi robot simulation for ridgeback.

I had the correct tf prefixes for ekf_localization however I was still seeing the same /base_link error caused by the missing namespace/tf prefix.

I was able to fix this by modifying the velocity controller's base_frame_id and odom_frame_id.

<rosparam param="ridgeback_velocity_controller/base_frame_id" subst_value="True">$(arg tfpre)/base_link</rosparam>
<rosparam param="ridgeback_velocity_controller/odom_frame_id" subst_value="True">$(arg tfpre)/odom</rosparam>

In addition to the nre_simmultihusky repo, there is shehancaldera's more recent multi husky repo. I found both useful for figuring out the tf tree for ridgeback.

The top portion of my tf tree looks like this:

  • map
    • r0_tf/odom
      • r0_tf/base_link
        • r0_tf/chassis_link
        • r0_tf/mid_mount
    • r1_tf/odom
      • r1_tf/base_link
        • r1_tf/chassis_link
        • r1_tf/mid_mount

Each translation is handled by the following broadcaster:

| Parent          | Child              | Broadcaster                                          |
| map             | r0_tf/odom         | r0/map_odom_broadcaster (static_transform_publisher) |
| r0_tf/odom      | r0_tf/base_link    | r0/ekf_localization                                  |
| r0_tf/base_link | r0_tf/chassis_link | r0/robot_state_publisher                             |
edit flag offensive delete link more

Question Tools


Asked: 2019-07-24 22:52:40 -0500

Seen: 264 times

Last updated: Jul 24 '19