points-to-ros and points-from-ros are utilities for publishing and receiving PointCloud2 message on ROS.
To build them you need to set "snark_build_ros" to ON in snark cmake.
we use snark-graphics-test-pattern to generate some sample points in a cube:
Here is the output: cube.csv
To run ROS, you need to setup the environment and run roscore:
This utility subscribes to the specified topic and receives PointCloud2 messages, then it writes the point data as csv or binary to stdout.
Either --binary or --format option must be specified, which sets the output to be binary or ascii csv respectively.
The field names and message format are embedded in the message, the format is used for conversion.
You can use --output-fields or --output-format to get the field names and message format from message (the publisher must be running).
This utility reads binary or ascii csv data from stdin and publishes it as PointCloud2 message on ROS.
Either --binary or --format option must be specified, which indicates whether input is binary or ascii.
The --fields options specifies the field names for one point in the message.
If a field named block is present it will be used for breaking records into separate messages, records with the same block number will be grouped into one message. When no such field is present it will read the stdin until EOF and then send one message.
The --hang-on option delays the points-to-ros exit, so that the clients can receive all the data on the last message.
this utility can directly cat binary data from a ros bag file
You are working with a data pipeline, and on a certain record, you want to end processing and exit the pipeline.
But to break on some condition in the input, you need an application that parses each input record.
Worse, the condition you want could be a combination of multiple fields, or use fields unrelated to the data you want to process.
Introducing csv-eval --exit-if!
Previously csv-eval had a --select option that passed through any records that matched the select condition.
csv-eval --exit-if also passes through input records unchanged, but it exits on the first record matching the exit condition.
Like csv-eval --select you can use any expression on the input that evaluates to bool.
Comparing the two features: