Robotics StackExchange | Archived questions

Unable to send UTM move base goals to Rover

Hello!

I am attempting to implement a GPS guided rover.

However when I send a UTM goal to /movebasesimple/goal

I get the following issue:

[ WARN] [1545940576.270461738]: MessageFilter [target=odom ]: Discarding message from [/move_base] due to empty frame_id.  This message will only print once.

Followed by repeating:

[ WARN] [1545940576.270723864]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty

I checked if all my frames transformations were being published and they all seem to be correct, so I am at a loss in finding the source of the empty frame_id error.

Oddly when I send a move base command in the "map" frame_id it works fine.

rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped '{header: {stamp: now, frame_id: "map"}, pose: {position: {x: 2.0, y: 1.0, z: 0.0}, orientation: {w: 1.0}}}'

Here are my navigation .yaml files:

costmap_local.yaml:

global_frame: odom
rolling_window: true


width: 10.0
height: 10.0
resolution: 0.05


plugins:
  - {name: obstacles_laser,           type: "costmap_2d::ObstacleLayer"}
  - {name: inflation,                 type: "costmap_2d::InflationLayer"}

costmapglobalstatic.yaml:

global_frame: map
rolling_window: true
static_map: false
track_unknown_space: true


plugins:
  - {name: static,                  type: "costmap_2d::StaticLayer"}
  - {name: inflation,               type: "costmap_2d::InflationLayer"}

costmap_common.yaml:

footprint: [[-0.25, -0.33], [-0.25, 0.33], [0.25, 0.33], [0.25, -0.33]]
footprint_padding: 0.01

robot_base_frame: base_footprint
update_frequency: 1
publish_frequency: 3.0
transform_tolerance: 10
resolution: 0.05

obstacle_range: 5.5
raytrace_range: 6.0

#layer definitions
static:
    map_topic: /map
    subscribe_to_updates: true

obstacles_laser:
    observation_sources: laser
    laser: {data_type: LaserScan, clearing: true, marking: true, topic: scan, inf_is_valid: true}

inflation:
    inflation_radius: .5

Here is my tf tree:

TF Tree

Let me know if there is anything else that can be provided!

Asked by jawsqb on 2018-12-27 15:38:59 UTC

Comments

Answers

It looks like the timestamps on your transform from the map to utm frame on your TF tree are set to 0 instead of the current time. Correcting that may help.

Asked by ahendrix on 2018-12-28 01:26:34 UTC

Comments

Thank you for the response!

The map to utm transformation is being published by the navsat node (part of the robot localization package for doing sensor fusion)

How would I go about changing the timestamps?

When I " tf echo /base_link /utm " everything works find and I get valid transforms.

Asked by jawsqb on 2018-12-28 09:18:36 UTC

I'm not sure; the robot localization package doesn't mention anything about timestamps: http://docs.ros.org/melodic/api/robot_localization/html/integrating_gps.html

Asked by ahendrix on 2018-12-28 12:23:10 UTC

The source code for the indigo version of the navsat_transform_node uses the current time when timestamping the UTM transform: https://github.com/cra-ros-pkg/robot_localization/blob/indigo-devel/src/navsat_transform.cpp#L300

Asked by ahendrix on 2018-12-28 12:23:52 UTC

The only thing I can think of is if you had the use_sim_time parameter set when you started the navsat_transform_node, but that it wasn't set when you started the other nodes. Maybe check all of your launch files and make sure none of them are setting use_sim_time ?

Asked by ahendrix on 2018-12-28 12:26:09 UTC