-
Notifications
You must be signed in to change notification settings - Fork 242
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use frame of NavSatFixMsg #35
Comments
Hey m-naumann, Best PS: you can also write me an email at 2f4yor@gmail.com |
Hey Markus, what the plugin currently does is fixing the (lat,lon) of the NavSatFixMsg to the frame I think it should
and
I don't know the validity range of the latlon2xy conversion used here:
so I cannot say whether it's okay to use UTM, or how far the distance in between the Do you agree Markus and Gareth? |
@m-naumann I rewrote parts of how the frames are being transformed, see the current implementation. Can you confirm that this issue still applies to the current version 1.2.0? Furthermore, I don't really understand the motivation behind this issue. If it only concerns simulation, couldn't you just publish GPS coordinates inside your simulation? |
Hi @schra yes, the problem is still the same: you ignore the frame of the NavSatFix-Message and do not list it in the documentation link (current implementation).
The interesting point is the robot frame: It has two purposes: 1. You don't want to load the tiles of the whole world and 2. You need to know one "base point" for the lat-lon to x-y conversion. Technically, this can be two separate things: a NavSatFix for the "base point", and a What I proposed is
From the NavSatFixMsg + a projection method, the
The motivation is that currently, the NavSatFixMsg is misused. What I did for using it in simulation is exactly publishing a NavSatFixMsg, but if users changed the robot frame, the hoped that the tiles where loaded according to the position of the robot (Option 2 from above). But what actually happened was that the tiles were attached to the robot. If not in simulation, you most likely have GPS with something around 1Hz, but some 100Hz Odometry. Currently, the tiles would follow the robot 99 times and at the 100th time, the tile jumps away under the robot. I hope that this helps clarifying . Feel free to ask further questions. |
I don't quite understand the problem you describe with the current setup. Whatever robot-fixed frame I set, I can't observe any glitches or jumps, even with setting the gps rate to 1 and tf-updates to 100. Can you provide a basic setup/video to reproduce what you mean? Its hard without anything visual. Despite that, are you really sure you're using the latest version? What fixed_frame, what camera frame are you using? However, its seems indeed a flaw that the NavSatFixMsg's frame_id is ignored. That one should be used instead of the user-selected one. Or is there any specific reason to select this frame? So I vote for option 1:
@m-naumann would you be willing to provide a PR for that? |
I've created this PR #53. As far as I know the |
You are right, that's option 1. The only thing I would change is keep the |
I think that making If there would be a selectable frame property, then I would expect it to be an option for In addition, I also observe the tile jumping a little bit, probably because the frequencies of [1] https://github.com/gareth-cross/rviz_satellite/blob/master/src/aerialmap_display.cpp#L494 |
Sounds reasonable. I vote for using the frame_id of navsat for the robot frame (I agree, this is fair to assume and default everywhere) - and either replace "robot frame" with "map frame", or remove it completely and set "map" as default (as is).
@schra we also observed this, would you open an issue'? |
Now I am a little confused: The purpose of the NavSatFixMsg is to provide exactly this information, or am I wrong? It states which frame('s origin 0,0,0) corresponds to which geographic(lat/lon/ele) coordinates. If there was one fixed transformation, such as "the UTM base frame is
That's why I rather prefer the above mentioned "option 2", where this fixed transformation is set by the NavSatFixMsg (which should not change), but in order to determine which tiles you load, you look at where the |
The I think that using only the
|
@m-naumann You may want to take a look at this commit (tud-cor@a8d2e20) which requires a This basically means that all that the |
@RonaldEnsing I implemented my suggestion starting from what you did. See the PR for details. |
Why would that prevent the jumping? |
Suppose that your This [3] modified version of the AerialMapDisplay fixes that. And PR #55 is a continuation of that. I still need to take a closer look at PR #55. [1] https://github.com/gareth-cross/rviz_satellite/blob/master/src/aerialmap_display.cpp#L518 |
Just to summarize the current situation:
According to http://www.ros.org/reps/rep-0105.html#map the
I created #56 |
That's true, however #55 also allows for the first option, by simply setting the robot frame to the |
I agree. It does not have to be configurable. I could have emphasized the "If". I wanted to make clear that I do not expect a configurable robot frame if it has to be set to the
PR #53 is much simpler because it keeps the current behavior of loading the tiles around the |
IMHO the world frame cannot be configurable, because the
True, PR #53 keeps the current behavior regarding where to load the tiles. But it also regards rviz' fixed frame as the frame where the ENU (or any other) convention is applied. Thus, it contraints the usage a lot, because you cannot set any moving frame as fixed frame (for example the frame of LIDAR scanner on a vehicle, because you want to speed up the pointcloud visualization). So it has strong assumtions regarding the fixed frame, which are fixed again in #55 |
The
I agree that this version has contraints. However, these constraints are not the result of PR #53, but these constraints were already there. I think it wouldn't be a bad idea to incrementally fix different issues. [1] http://docs.ros.org/melodic/api/sensor_msgs/html/msg/NavSatFix.html |
So then, why not use #55 which extends #53 which extends the current version? I just want to use the What you propose is to use some parts of the NavSatFix and then also other frames, tf's, ... If you provide a NavSatFix with |
@schra this is done, right? with which commit/PR? |
#53 fixed the original problem, so we can close this issue. As we don't have an application for having a separate frame to load the frames in, I don't see that we will add this feature in this repository. However, we could continue discussion in another issue if this is something that you really want to have included. |
Hello Gareth,
great work, I really like this plugin!
Concerning the
robot frame
property, I misunderstood the plugin:I expected the plugin to read the frame that corresponds to the (lat,lon)-coordinates from the NavSatFix message, as the latter contains that information (NavSatFix).
With this, I thought the robot frame was there to load tiles around an area where no GPS-coordinates are explicitely available, such as in simulation, where only Cartesian x and y (using UTM as in ROS geodesy for example) are at hand.
Therefore, I would suggest adding this feature, using the upper ROS library, or set the robot frame property read-only (and read it from the NavSatFix message). I could do either and open a merge request, just let me know what you prefer.
Cheers
Max
The text was updated successfully, but these errors were encountered: