0
$\begingroup$

Rosanswers logo

I have a set of Marvelmind robotics indoor GPS beacons and have it setup with pose data(no yaw, only x,y) published on a topic with msg type: nav_msgs::Odometry

Is there a way to get this works with the Navsat transform? UTM co-ordinates are not used here.

Is this the route to go:

  1. One instance of robot_localization with continuous sensors, in odom_frame.
  2. Second instance of robot_localization with output of (1.) + GPS(pose0) in map frame

I'm using this documentation as a reference. Thanks.


Originally posted by bluehash on ROS Answers with karma: 120 on 2017-05-02

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

The point of navsat_transform_node is to convert GPS data into world-frame coordinates in a nav_msgs/Odometry message. The sensor you are describing is not actually a GPS, and already provides the (X, Y) position of your robot, so just use that data directly as an input to the EKF (i.e., don't bother running navsat_transform_node).

Also, I don't recommend feeding the output of (1) into (2). Just fuse the same inputs that (1) has, and add the input for the indoor GPS sensor.

Remember that you don't want to have more than one EKF input measuring the same pose variable (X, Y, Z, roll, pitch, or yaw).

EDIT 1 to clarify previous answer:

Sure, you can run two state estimation nodes. You can do something like this:

  • EKF (odom): fuse wheel encoder odometry (velocities) and IMU
  • EKF (map): fuse wheel encoder odometry (velocities), IMU, and the nav_msgs/Odometry message that is being spit out by your indoor "GPS."

My point is that if you had a real GPS unit, the role of navsat_transform_node would be to convert latitude and longitude into a pose that you can fuse into the second EKF. Since you already have the indoor beacons spitting out pose data in a message type that the EKF can take in directly, you don't need navsat_transform_node.


Originally posted by Tom Moore with karma: 13689 on 2017-05-04

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by bluehash on 2017-05-04:
A little confused with the documentation here and what you said. Do I still use two state estimation nodes? The GPS is discontinuous.

  1. Cont. sensors with world_frame as odom.
  2. Cont. sensors + GPS with world_frame as map. What happens to the output of 1. in this case?

Comment by Chrisando on 2019-06-06:
Please correct me if I am wrong, to my current understanding navsat_transfrom_node not only transforms GPS data into nav_msgs/Odometry message but also finds a transformation between the starting point of the robot and the first GPS measurement. My indoor GPS beacons report poses in the different coordinate frame then the starting frame of the robot. Is there any package that would take care of this transformation for me? Alternatively, what would be the most convenient way to achieve the same behavior? Modify navsat_transform_node to work with indoor GPS beacons instead of normal GPS?

Comment by Tom Moore on 2019-06-13:
You should just be able to create a simple python node that takes in the initial pose of your robot in your world frame, and the initial pose that comes from your indoor GPS beacons, creates a static transform between them, and publishes. Then the EKF can receive your GPS poses, transform them, and fuse them.

Comment by Chrisando on 2019-06-13:
Thank you Tom for answer! How about to orientation problem? (GPS only gives x,y,z position). Shall I make my robot move forward some distance and calculate orientation based on that? How is it usually done? Thank you!

Comment by Tom Moore on 2019-07-03:
If you lack an IMU, then yes, that seems like a valid approach.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.