-
Notifications
You must be signed in to change notification settings - Fork 45
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
BaseVectorGeod and BaseVectorCart blocks not available in driver #72
Comments
Your observation is correct, these blocks are not yet processed by the driver. It is not much trouble to add these. I quickly adapted the development branch of ROS1 and ROS2. It is still undocumented and untested as I have no access to corrections right now. So, if you like to test it I would be happy about your feedback. Btw. this branch also allows you to flexibly choose sources for RTK corrections, even multiple at the same time. |
line 996 in communications_core.cpp
Should that not be:
|
You are right, thank you. This was a copy-paste error and is fixed now. It did work nonetheless as the template argument does not matter anymore. |
Hey Thomas, The INS solution can be provided w.r.t. a Point of Interest (POI). The BaseVectorCart is a vector expressed in which frame exactly? If the frame's origin is the GNSS Antenna ARP, how is it oriented exactly? More generally, is it possible to have a INS solution with position expressed w.r.t. the ENU or NED frame, having it's origin at the base station? |
Hi Jad, I did not delve very deeply into the details, but as I see it, the relative coordinates of To express the vector w.r.t. to the base in ECEF coordinates is quite easy as it is just the inverse ( I also recommend to contact Septentrio's support, because they surely are more knowledgeable in this regard than me :-) |
Makes sense! I see in the INSNavCart message that the frame_id in the header is the POI. |
Yes, sounds correct. However, care has to be taken with the attitude in INSNavCart, since it is not in ECEF but rather related to local NED (ENU if |
Oh , i did not know that... How does one do the conversion? Or better yet, can we convert the ECEF position to local ENU / NED (with respect to the datum INSNavCart is provided for)? If so, this link shows ENU->ECEF and vice versa: What we need for the equations if longitude and latitude, which we would extract from the INSNavGeod message. |
My first thought was also to use both The formulas on the page of esa should be valid for geodetic latitude, which should be true for GNSS if am not mistaken. I will try to have it confirmed by the experts at Septentrio. |
I have also contacted Septentrio about this. Will let you know their reply. On that note, i definitely think the driver should publish a nav_msgs/Odometry, which encompasses the 6DOF pose, in either NED or ECEF (selectable). It seems to me like anyone using this driver in their robotics application would have to do that themselves (for example to fuse the output in another EKF with things like wheel odometry, visual odometry, etc..). |
The driver features the possibility to output INS localization in UTM as Concerning fusion of additional sensors: With the upcoming update it will even be possible to go the other way round and input 2D odometry to the INS. |
Looks great, will test and provide you a bagfile for your reference! |
Hey Thomas, It seems line the Angular velocity field in the localization message is never filled. |
I see that it is not available in the INSNavCart/Geod messages, but that information is available in the AttEuler block. Is it possible to use the AttEuler to fill the localization message twist.angular? |
I will share the bagfile collected for a relatively straight motion, for your review. |
Hey Thomas, This is the localization_ecef topic visualized (from the previous bagfile). I subtracted the first pose from all subsequent poses so that it is easily viewable in RVIZ. ECEF is not locally tangential, so the robot trajectory looks erroneous when visualized. We will need the XYZ to be expressed in ENU or NED (orientation already is), so that it can be used practical in our system. In order to get the position in ENU (or NED) from ECEF, we need the ECEF position of the base station. Perhaps the BaseVectorGeod or BaseVectorCart can be used, since they contain the base station position w.r.t. the main antenna in ENU and ECEF coordinates respectively. Would be great to have localization_enu / or localization_ned (depending on ROS axis true or false)! |
Angular velocities are just not in any SBF block. AttEuler only contains the angles from dual-antenna GNSS measurements. |
Hey Jad, Thank you so much for sharing your collected data. Although ECEF is not locally tangential, the robot's attitude should still align with the trajectory. Looking at your data I have found an error in the code already which might explain this: to calculate the transformations I accidentally converted latitude and longitude from deg to rad although the are already in rad, d'oh. If it is not too much trouble it would be great if you could try again with the fixed code. The driver provides a localization in ENU/NED (topic Btw. I found a block with the position of the base station in ECEF in the firmware refence manual (#5949 |
Am i correct in observing that the BaseVectorGeod and BaseVectorCart blocks ( the relative position of the rover w.r.t. the base station) are not retrieved and processed by the driver?
If not much trouble, can this be added?
The text was updated successfully, but these errors were encountered: