revolventnu / rosnet Goto Github PK
View Code? Open in Web Editor NEWA library for reading data from .bag files in .NET
License: Apache License 2.0
A library for reading data from .bag files in .NET
License: Apache License 2.0
Should use as generic of an interface as possible
Some leads:
-https://github.com/ros/ros_comm/blob/3f8eca4a1f13996b33c03a5c4ee3a69fb0db3668/tools/rosbag/src/rosbag/bag.py#L2875 (and with that try to look at generated code from rospy
or roscpp
)
Look to RevolveUavcan using github actions
Also remember licensing from RosSharp if the serialization changes are pushed to master
After some changes, the whole "len" variable and the incrementing of it is unneccessary
Fix toString in arrayFieldValue when string and PrettyValue in FieldValue
From https://www.merriam-webster.com:
Parse:
to divide (a sentence) into grammatical parts and identify the parts and their relations to each other
Serialize (and deserialize):
Serialize: to arrange or publish in serial form
This makes the naming of RosMessageParser.MessageDataParser
particularly confusing, as it actually (de)serialises a message. Note that with #56, it is likely that all serialization will be part of each generated class, so this whole class should probably be removed?
This is a deprecated testing project
Most of the code is just one huge method. Refactoring into a "ParseLine" method (and potentially other smaller methods) will make it more readable
Currently, fieldValue in the headers is changed into a string after being read. This was done for quickly implementing different types, but should be changed. The type should be dependant on the data within it, or at least a better standard than string
It is way easier for the end user if our RosBag class is as similar as possible to existing implementations. Use https://github.com/strawlab/ros_comm/blob/master/tools/rosbag/src/rosbag/bag.py as a reference point for methods and fields accessible to the user
Make connections set their data in the constructor, instead of using SetConnectionData
http://wiki.ros.org/Bags/Format/2.0
According to the format, you have a ROSBag that consists of Chunks which again
consists of different types of records. The code structure should mirror this in some way,
making it easier to implement writing Bags down the line
After adding DocFX online documentation, it would be nice if every function it displays has properly defined parameter and return values
Add pictures and codecoverage to readme
Need to implement some primitive type unknown or similar as well, and change exception in RosBagReader.cs line 268 to instead use this default parsing
Most of the functionality of our static classes and methods can easily be moved into the non-static classes
They come in in lower case, and are converted to upper case. This must also be changed
Could be O(1) with the right setup. Probably need to change some of the structure for how we save connections and messages, but be aware of what things are guaranteed unique (Conn ID etc.) and what is not (Topic?)
Related suggestion from Henrik berg:
Would suggest to just use .NET 6, (after looking at https://devblogs.microsoft.com/dotnet/the-future-of-net-standard/, I see no reason to use .NET Standard 2.1), and with 10
Når vi er på saken må dere huske å bruke enable og enable (sistnevnte relevant når dere bruke C# 10), ingen grunn til å ikke bruke det og gjør håndtering av null-verdier sinnsykt mye enklere, se https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-reference-types og https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-value-types
Store all headers in a dictionary and have public string MD5Sum => this.headers["md5sum"]
See https://github.com/dotnet/roslyn/blob/main/docs/features/source-generators.cookbook.md#additional-file-transformation, should be fairly simple to implement.
Writing a tool for Console.WriteLine-ing:
header in plain text, based on length described in header_len
Currently the file path to the ROS Bag is hard coded. This should be passed in from the Console App instead. This probably means the "Reader" class should be rewritten to a "ROSBag" class, which you instantiatiate with a path
The Time value in ROSbags aren't inherently obvious how to use, so should be made into a class with a method like "GetDateTime" or something similar
Making this class is essential before working on implementing individual data types
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.