-
Notifications
You must be signed in to change notification settings - Fork 90
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
Feature/message logger #174
base: master
Are you sure you want to change the base?
Conversation
New base class was set up handling the listener subscriptions to message callbacks. Object can inherit from this class and set up callbacks for any group of SBP Message (observation, emphemeris, ...) .
We could definitely go that route. Then we can use the sbp2rinex pipeline. A different approach could be to record the necessary ROS topics in a ros bag |
Yeah, that was the idea.
That would also work. A benefit of writing it directly to file is that you don't have to have an extra rosbag running on your basestation if you want to store the messages as well (as redundancy or if swiss topo corrections are not available yet). |
we also thought about the rosbag method - that would be cool too in the future, as you could then just use the rosbag to get PPK. But you'd need to also build a extractor tool (kind of rosbag2sbp2rinex). Could just be another EphemerisCallbackHandler that sends out ros messages. but depends ont he usecase, I think eventually both are useful :) |
Btw Thanks for the UML! I think the architecture like that should work! |
Cheers! Will continue working on it then! |
ah true, sorry completely forgot about this! So we'd "only" need a ROSbag -> Rinex converter. In case we ever do that, its probably best to go from ros message directly to rinex, but I guess we leave that for the future :-) |
Adds 3 lambda functions. Corresponding methods have been added to cb_to_raw_obs_converter as well.
Wrong message type was copy pasted to sbp_send_message method
- File logger is initialized in own method if in launch file logging is set to true. - Per default logger is off. Default binary directory is: /tmp/tmp_observations.sbp - Sender id was moved down to receiver_ros, so that every receiver stores its own ID, and not only the base station (sender id is needed for logging)
Changed back class names to "observation". Ephemeris can also be considered an observation
Also added prefix to observation file with the type of receiver, hopefully this allows to store observations from multiple connected receivers into different files.
Can start and stop logger for attitude and position receiver independently. If a custom name is set, the file is not overwritten when logging restarted but rather a number is added as appendix preventing accidental loss of observation files.
Something I added towards the end:
Just tested it with two piksi's, one attitude and one position receiver, and it seemed to work (I was able to log observations from both devices and convert the logged sbp to a .obs and .nav file), incl. stopping and restarting the file logger. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rikba
I had a look at the last changes & it LGTM. I think we tested this quite thoroughly and it should be ready to merge.
PR should (at some point) enable to log any type of raw message and store it as an binary file. With this feature the driver would be able record the messages required for PPK as binaries.
Opened PR to discuss the new structure of the observation callback handler.
Proposed changes:
SBPMsgTypeCallbackHandler
implementing methods for adding listenersSBPLambdaCallbacks
for message types for which callback should be set upCoarse Class Diagram of the new structure: