This package mainly houses the nav
and waypoint_receiver
nodes. The nav
node handles GPS-->UTM-->ODOM transformations, as well as publishing the "fake"
GPS-based odometry. The waypoint_receiver
node gets mission checkpoints and
checks which checkpoints have been reached via the SDK.
This package is home to a few other nodes (experimental_nav
,
mission_controller
, and waypoint_manager
) that are not finished and
should not be relied on.
Node responsible for GPS-->UTM-->odom transformations, as well as publishing the
GPS based odometry. This note is sort of like the navsat_transform_node
from
the robot_localization package. It takes the first GPS location it receives,
projects it into the closest UTM grid zone, and uses that as its "datum" == the
UTM location that coincides with the robot's odometry frame origin. It can then
use this to express/resolve additional GPS locations/fixes in the odometry
frame, like the GPS checkpoint locations provided by the SDK. See
https://wiki.ros.org/geodesy and
https://docs.ros.org/en/noetic/api/robot_localization/html/integrating_gps.html#details
to learn more.
In the future, this node could/should be replaced by the navsat_transform_node and ekf_localization_node provided by the robot_localization package.
ROS Topic | Interface | Description |
---|---|---|
gps |
sensor_msgs/NavSatFix | GPS / fix location of the rover in the WGS 84 frame. |
orientation |
std_msgs/Float32 | Orientation of the rover relative to its world-fixed odometry frame. |
checkpoints_gps |
geographic_msgs/GeoPath | List of mission checkpoints expressed in the WGS 84 frame. I.e., GPS mission checkpoints returned from SDK. |
ROS Topic | Interface | Description |
---|---|---|
odom |
nav_msgs/Odometry | Odometry estimated from consecutive GPS fixes and magnetometer-based orientation. |
odom_waypoints |
geometry_msgs/PoseArray | List of mission checkpoints resolved in the rover's world-fixed odometry frame. I.e., this is a list of GPS-checkpoints that the node receives from its checkpoints_gps subscription and resolves them in the odometry frame via the WGS84-->UTM-->odom transform. |
next_waypoint |
geometry_msgs/PoseArray | The next consecutive waypoint to navigate to from the list of mission checkpoints/waypoints. |
Parent Frame | Child Frame | Description |
---|---|---|
odom | base_link | A transformation from the base_link to odom frame simply based on the most recent gps-derived odometry estimate. |
- This node also publishes Odometry messages based on the change in consecutive GPS positions and a magnetometer-derived orientation. It is important to note that this is not really a typical way to compute odometry, but is instead just a quick and dirty solution to get some robot poses in the odometry frame from the readily-available GPS data provided by the SDK.
- Long term, this node should really not be publishing the base_link-->odom transform--instead, this probably be done by some type of filtering node (like the ekf_localization_node) in order that whatever transform is being published is going through some kind of smoothing first. This is probably more necessary when you have multiple odometry sources that you want to reconcile/combine to create an overall better odometry estimate.
This node is responsible for periodically getting a list of the GPS (WGS 84)
checkpoints from the Earth Rovers SDK
/checkpoints-list
endpoint.
It keeps track of which checkpoints have been reached already according to the /checkpoints-list
response and publishes only the GPS waypoints that have not yet been reached.
ROS Topic | Interface | Description |
---|---|---|
odom |
geographic_msgs/GeoPath | List of GPS mission checkpoints that have not yet been reached. |
This node defines a set of services for interacting with the Earth Rovers SDK mission endpoints via ROS. Note that none of these services are integrated with / called by any other nodes, but could be invoked via the rqt_service_caller, a behavior tree, or your own custom node.
ROS Topic | Interface | Description |
---|---|---|
start_mission |
earthrovers_interfaces/StartMission | Service for starting the mission specified in the SDK's .env file. |
end_mission |
earthrovers_interfaces/EndMission | Service for ending the current mission. Note that you must be connected to the robot that you started the mission on in order for it to successfully be ended. |
checkpoint_reached |
earthrovers_interfaces/CheckpointReached | Service to check whether the current checkpoint has been reached. |
get_checkpoints |
earthrovers_interfaces/GetCheckpoints | Service for getting a list of the mission's WGS 84 (GPS) waypoints. |