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:
Let me know if there is anything else that can be provided!
Asked by jawsqb on 2018-12-27 15:38:59 UTC
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
Comments