movie_to_bag.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: BSD-3-Clause
2 // SPDX-FileCopyrightText: Czech Technical University in Prague
3 
10 #pragma once
11 
12 #include <memory>
13 #include <string>
14 
15 #include <compass_msgs/Azimuth.h>
19 #include <geometry_msgs/TransformStamped.h>
20 #include <gps_common/GPSFix.h>
24 #include <rosbag/bag.h>
25 #include <sensor_msgs/Image.h>
26 #include <sensor_msgs/Imu.h>
27 #include <sensor_msgs/MagneticField.h>
28 #include <sensor_msgs/NavSatFix.h>
29 #include <vision_msgs/Detection2DArray.h>
30 
31 namespace movie_publisher
32 {
33 
35 {
36 public:
37  explicit MovieToBagMetadataProcessor(const cras::LogHelperPtr& log, const std::string& bagFilename,
38  const std::string& transport, const std::function<std::string(const std::string&)>& resolveName,
39  const cras::BoundParamHelperPtr& params);
41 
42  void close();
43 
44  virtual void addTimestampOffsetVars(MovieReaderRos& reader) const;
45 
46  cras::expected<void, std::string> processImage(
47  const sensor_msgs::ImageConstPtr& image, const cras::optional<sensor_msgs::CameraInfo>& cameraInfoMsg) override;
48  cras::expected<void, std::string> processAzimuth(const compass_msgs::Azimuth& azimuthMsg) override;
49  cras::expected<void, std::string> processMagneticField(const sensor_msgs::MagneticField& magneticFieldMsg) override;
50  cras::expected<void, std::string> processNavSatFix(const sensor_msgs::NavSatFix& navSatFixMsg) override;
51  cras::expected<void, std::string> processGps(const gps_common::GPSFix& gpsMsg) override;
52  cras::expected<void, std::string> processImu(const sensor_msgs::Imu& imuMsg) override;
53  cras::expected<void, std::string> processZeroRollPitchTf(
54  const geometry_msgs::TransformStamped& zeroRollPitchTfMsg) override;
55  cras::expected<void, std::string> processOpticalTf(const geometry_msgs::TransformStamped& opticalTfMsg) override;
56  cras::expected<void, std::string> processFaces(const vision_msgs::Detection2DArray& facesMsg) override;
57 
58 protected:
59  virtual std::string getImageTopic() const;
60  virtual std::string getCameraInfoTopic() const;
61  virtual std::string getAzimuthTopic() const;
62  virtual std::string getMagneticFieldTopic() const;
63  virtual std::string getNavSatFixTopic() const;
64  virtual std::string getGpsTopic() const;
65  virtual std::string getImuTopic() const;
66  virtual std::string getTfTopic() const;
67  virtual std::string getStaticTfTopic() const;
68  virtual std::string getFacesTopic() const;
69 
75  virtual std::string getPrefixedTopic(const std::string& topicName) const;
76 
77  std::unique_ptr<image_transport_codecs::ImageTransportCodecs> imageCodecs;
78  std::unique_ptr<rosbag::Bag> bag;
79  std::string topic;
80  std::string transport;
81  std::function<std::string(const std::string&)> resolveName;
82  cras::optional<geometry_msgs::TransformStamped> lastOpticalTF;
83 };
84 
147 {
148 public:
152  explicit MovieToBag(const cras::LogHelperPtr& log);
153 
166  virtual cras::expected<void, std::string> open(
167  const std::string& bagFilename, const std::string& transport, const std::string& movieFilename,
168  const cras::BoundParamHelperPtr& params);
169 
174  virtual cras::expected<void, std::string> run();
175 
176 protected:
177  virtual std::unique_ptr<MovieReaderRos> createReader(const cras::BoundParamHelperPtr& params);
178 
179  virtual std::shared_ptr<MovieToBagMetadataProcessor> createMetadataProcessor(
180  const std::string& bagFilename, const std::string& transport, const cras::BoundParamHelperPtr& params);
181 
182  std::unique_ptr<MovieReaderRos> movieReader;
184  std::shared_ptr<MovieToBagMetadataProcessor> metadataProcessor;
185 };
186 
187 }
movie_publisher::MovieToBagMetadataProcessor::processZeroRollPitchTf
cras::expected< void, std::string > processZeroRollPitchTf(const geometry_msgs::TransformStamped &zeroRollPitchTfMsg) override
Process the zero roll/pitch TF message.
movie_publisher::MovieToBagMetadataProcessor::transport
std::string transport
The transport to use.
Definition: movie_to_bag.h:80
movie_publisher::MovieToBagMetadataProcessor::getImuTopic
virtual std::string getImuTopic() const
movie_publisher::MovieToBagMetadataProcessor::addTimestampOffsetVars
virtual void addTimestampOffsetVars(MovieReaderRos &reader) const
movie_publisher::MovieToBagMetadataProcessor::getNavSatFixTopic
virtual std::string getNavSatFixTopic() const
movie_publisher::MovieReaderRos
MovieReader preconfigured from ROS parameters.
Definition: movie_reader_ros.h:63
movie_publisher::MovieToBag::createReader
virtual std::unique_ptr< MovieReaderRos > createReader(const cras::BoundParamHelperPtr &params)
movie_publisher::MovieToBagMetadataProcessor::~MovieToBagMetadataProcessor
~MovieToBagMetadataProcessor() override
movie_publisher::MovieToBagMetadataProcessor::processMagneticField
cras::expected< void, std::string > processMagneticField(const sensor_msgs::MagneticField &magneticFieldMsg) override
Process the magnetic field message.
node_with_optional_master.h
cras::BoundParamHelperPtr
::std::shared_ptr<::cras::BoundParamHelper > BoundParamHelperPtr
movie_publisher::MovieToBagMetadataProcessor::MovieToBagMetadataProcessor
MovieToBagMetadataProcessor(const cras::LogHelperPtr &log, const std::string &bagFilename, const std::string &transport, const std::function< std::string(const std::string &)> &resolveName, const cras::BoundParamHelperPtr &params)
cras::HasLogger
movie_publisher::MovieToBagMetadataProcessor::resolveName
std::function< std::string(const std::string &)> resolveName
Definition: movie_to_bag.h:81
image_transport_codecs.h
movie_publisher::MoviePtr
std::shared_ptr< Movie > MoviePtr
Definition: movie.h:185
movie_publisher::MovieToBagMetadataProcessor::processImage
cras::expected< void, std::string > processImage(const sensor_msgs::ImageConstPtr &image, const cras::optional< sensor_msgs::CameraInfo > &cameraInfoMsg) override
Process the image and its camera info.
bag.h
movie_publisher::MovieToBag::createMetadataProcessor
virtual std::shared_ptr< MovieToBagMetadataProcessor > createMetadataProcessor(const std::string &bagFilename, const std::string &transport, const cras::BoundParamHelperPtr &params)
cras::NodeWithOptionalMaster
movie_publisher::MovieToBagMetadataProcessor::getImageTopic
virtual std::string getImageTopic() const
movie_publisher::MovieToBagMetadataProcessor::close
void close()
movie_publisher::MovieToBagMetadataProcessor::getFacesTopic
virtual std::string getFacesTopic() const
movie_publisher::MovieToBagMetadataProcessor::getAzimuthTopic
virtual std::string getAzimuthTopic() const
movie_publisher::MovieToBagMetadataProcessor::getCameraInfoTopic
virtual std::string getCameraInfoTopic() const
movie_publisher::MovieToBagMetadataProcessor::processNavSatFix
cras::expected< void, std::string > processNavSatFix(const sensor_msgs::NavSatFix &navSatFixMsg) override
Process the NavSatFix message.
param_utils.hpp
movie_publisher::MovieToBag::movie
MoviePtr movie
The opened movie.
Definition: movie_to_bag.h:183
movie_publisher::MovieToBagMetadataProcessor
Definition: movie_to_bag.h:34
movie_publisher::MovieToBagMetadataProcessor::processImu
cras::expected< void, std::string > processImu(const sensor_msgs::Imu &imuMsg) override
Process the IMU message.
movie_publisher::MovieToBag::open
virtual cras::expected< void, std::string > open(const std::string &bagFilename, const std::string &transport, const std::string &movieFilename, const cras::BoundParamHelperPtr &params)
Open the given movie file for reading and bag file for writing.
movie_publisher::MovieToBagMetadataProcessor::topic
std::string topic
The base topic name.
Definition: movie_to_bag.h:79
movie_publisher::MovieToBag::MovieToBag
MovieToBag(const cras::LogHelperPtr &log)
movie_publisher::MovieToBag::metadataProcessor
std::shared_ptr< MovieToBagMetadataProcessor > metadataProcessor
Definition: movie_to_bag.h:184
movie_publisher::MovieToBagMetadataProcessor::getGpsTopic
virtual std::string getGpsTopic() const
expected.hpp
cras::LogHelperPtr
::cras::LogHelper::Ptr LogHelperPtr
movie_publisher
Definition: ExifBaseMetadataExtractor.h:27
movie_publisher::MovieToBagMetadataProcessor::processFaces
cras::expected< void, std::string > processFaces(const vision_msgs::Detection2DArray &facesMsg) override
Process the face detections message.
movie_publisher::MovieToBagMetadataProcessor::getTfTopic
virtual std::string getTfTopic() const
movie_publisher::MovieMetadataProcessor
Base for consumers of movie metadata.
Definition: movie_metadata_processor.h:44
cras::HasLogger::log
::cras::LogHelperPtr log
movie_publisher::MovieToBagMetadataProcessor::bag
std::unique_ptr< rosbag::Bag > bag
The bag to write to.
Definition: movie_to_bag.h:78
movie_publisher::MovieToBag
Convert movie files and their metadata to ROS bag file.
Definition: movie_to_bag.h:146
movie_publisher::MovieToBagMetadataProcessor::getStaticTfTopic
virtual std::string getStaticTfTopic() const
movie_publisher::MovieToBagMetadataProcessor::imageCodecs
std::unique_ptr< image_transport_codecs::ImageTransportCodecs > imageCodecs
Image transport codec instance.
Definition: movie_to_bag.h:77
movie_metadata_processor.h
Base for consumers of movie metadata.
movie_reader_ros.h
MovieReader preconfigured from ROS parameters.
movie_publisher::MovieToBag::run
virtual cras::expected< void, std::string > run()
Run the conversion.
movie_publisher::MovieToBagMetadataProcessor::processGps
cras::expected< void, std::string > processGps(const gps_common::GPSFix &gpsMsg) override
Process the GPSFix message.
movie_publisher::MovieToBagMetadataProcessor::processAzimuth
cras::expected< void, std::string > processAzimuth(const compass_msgs::Azimuth &azimuthMsg) override
Process the azimuth message.
movie_publisher::MovieToBagMetadataProcessor::getPrefixedTopic
virtual std::string getPrefixedTopic(const std::string &topicName) const
Prefix the given topic name with the base topic.
movie_publisher::MovieToBagMetadataProcessor::processOpticalTf
cras::expected< void, std::string > processOpticalTf(const geometry_msgs::TransformStamped &opticalTfMsg) override
Process the optical frame TF message.
movie_publisher::MovieToBagMetadataProcessor::getMagneticFieldTopic
virtual std::string getMagneticFieldTopic() const
movie_publisher::MovieToBag::movieReader
std::unique_ptr< MovieReaderRos > movieReader
The movie reader.
Definition: movie_to_bag.h:182
movie_publisher::MovieToBagMetadataProcessor::lastOpticalTF
cras::optional< geometry_msgs::TransformStamped > lastOpticalTF
Last optical transform.
Definition: movie_to_bag.h:82


movie_publisher
Author(s): Martin Pecka
autogenerated on Wed May 28 2025 02:07:22