Skip to content

Commit

Permalink
Consistent node naming across ros2cli tools (#60)
Browse files Browse the repository at this point in the history
* Passing CLI_NODE_NAME_PREFIX from ros2cli and using it to start the nodes with appropriate naming.

* Passing CLI_NODE_NAME_PREFIX from ros2cli and using it to start the nodes with appropriate naming.

* Fixing linter errors.

* Renaming CLI_NODE_NAME_PREFIX -> NODE_NAME_PREFIX
  • Loading branch information
AAlon authored and Karsten1987 committed Feb 12, 2019
1 parent 7338210 commit 3397b46
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 10 deletions.
3 changes: 2 additions & 1 deletion ros2bag/ros2bag/verb/play.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import os

from ros2bag.verb import VerbExtension

from ros2cli.node import NODE_NAME_PREFIX
from rosbag2_transport import rosbag2_transport_py


Expand All @@ -42,4 +42,5 @@ def main(self, *, args): # noqa: D102
rosbag2_transport_py.play(
uri=bag_file,
storage_id=args.storage,
node_prefix=NODE_NAME_PREFIX,
read_ahead_queue_size=args.read_ahead_queue_size)
4 changes: 3 additions & 1 deletion ros2bag/ros2bag/verb/record.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

from ros2cli.node.strategy import NodeStrategy
from ros2cli.node.strategy import add_arguments

from ros2cli.node import NODE_NAME_PREFIX
from rosbag2_transport import rosbag2_transport_py


Expand Down Expand Up @@ -75,6 +75,7 @@ def main(self, *, args): # noqa: D102
uri=uri,
storage_id=args.storage,
serialization_format=args.serialization_format,
node_prefix=NODE_NAME_PREFIX,
all=True,
no_discovery=args.no_discovery,
polling_interval=args.polling_interval)
Expand All @@ -83,6 +84,7 @@ def main(self, *, args): # noqa: D102
uri=uri,
storage_id=args.storage,
serialization_format=args.serialization_format,
node_prefix=NODE_NAME_PREFIX,
no_discovery=args.no_discovery,
polling_interval=args.polling_interval,
topics=args.topics)
Expand Down
2 changes: 2 additions & 0 deletions rosbag2_transport/include/rosbag2_transport/play_options.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#define ROSBAG2_TRANSPORT__PLAY_OPTIONS_HPP_

#include <cstddef>
#include <string>

namespace rosbag2_transport
{
Expand All @@ -24,6 +25,7 @@ struct PlayOptions
{
public:
size_t read_ahead_queue_size;
std::string node_prefix = "";
};

} // namespace rosbag2_transport
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ struct RecordOptions
std::vector<std::string> topics;
std::string rmw_serialization_format;
std::chrono::milliseconds topic_polling_interval;
std::string node_prefix = "";
};

} // namespace rosbag2_transport
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class Rosbag2Transport
void print_bag_info(const std::string & uri, const std::string & storage_id);

private:
std::shared_ptr<Rosbag2Node> setup_node();
std::shared_ptr<Rosbag2Node> setup_node(std::string node_prefix = "");

std::shared_ptr<rosbag2::SequentialReader> reader_;
std::shared_ptr<rosbag2::Writer> writer_;
Expand Down
8 changes: 4 additions & 4 deletions rosbag2_transport/src/rosbag2_transport/rosbag2_transport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ void Rosbag2Transport::record(
writer_->open(
storage_options, {rmw_get_serialization_format(), record_options.rmw_serialization_format});

auto transport_node = setup_node();
auto transport_node = setup_node(record_options.node_prefix);

Recorder recorder(writer_, transport_node);
recorder.record(record_options);
Expand All @@ -76,10 +76,10 @@ void Rosbag2Transport::record(
}
}

std::shared_ptr<Rosbag2Node> Rosbag2Transport::setup_node()
std::shared_ptr<Rosbag2Node> Rosbag2Transport::setup_node(std::string node_prefix)
{
if (!transport_node_) {
transport_node_ = std::make_shared<Rosbag2Node>("rosbag2");
transport_node_ = std::make_shared<Rosbag2Node>(node_prefix + "_rosbag2");
}
return transport_node_;
}
Expand All @@ -90,7 +90,7 @@ void Rosbag2Transport::play(
try {
reader_->open(storage_options, {"", rmw_get_serialization_format()});

auto transport_node = setup_node();
auto transport_node = setup_node(play_options.node_prefix);

Player player(reader_, transport_node);
player.play(play_options);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ rosbag2_transport_record(PyObject * Py_UNUSED(self), PyObject * args, PyObject *
"uri",
"storage_id",
"serialization_format",
"node_prefix",
"all",
"no_discovery",
"polling_interval",
Expand All @@ -41,14 +42,16 @@ rosbag2_transport_record(PyObject * Py_UNUSED(self), PyObject * args, PyObject *
char * uri = nullptr;
char * storage_id = nullptr;
char * serilization_format = nullptr;
char * node_prefix = nullptr;
bool all = false;
bool no_discovery = false;
uint64_t polling_interval_ms = 100;
PyObject * topics = nullptr;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sss|bbKO", const_cast<char **>(kwlist),
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ssss|bbKO", const_cast<char **>(kwlist),
&uri,
&storage_id,
&serilization_format,
&node_prefix,
&all,
&no_discovery,
&polling_interval_ms,
Expand All @@ -62,6 +65,7 @@ rosbag2_transport_record(PyObject * Py_UNUSED(self), PyObject * args, PyObject *
record_options.all = all;
record_options.is_discovery_disabled = no_discovery;
record_options.topic_polling_interval = std::chrono::milliseconds(polling_interval_ms);
record_options.node_prefix = std::string(node_prefix);

if (topics) {
PyObject * topic_iterator = PyObject_GetIter(topics);
Expand Down Expand Up @@ -93,14 +97,22 @@ rosbag2_transport_play(PyObject * Py_UNUSED(self), PyObject * args, PyObject * k
rosbag2_transport::PlayOptions play_options{};
rosbag2_transport::StorageOptions storage_options{};

static const char * kwlist[] = {"uri", "storage_id", "read_ahead_queue_size", nullptr};
static const char * kwlist[] = {
"uri",
"storage_id",
"node_prefix",
"read_ahead_queue_size",
nullptr
};

char * uri;
char * storage_id;
char * node_prefix;
size_t read_ahead_queue_size;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss|k", const_cast<char **>(kwlist),
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sss|k", const_cast<char **>(kwlist),
&uri,
&storage_id,
&node_prefix,
&read_ahead_queue_size))
{
return nullptr;
Expand All @@ -109,6 +121,7 @@ rosbag2_transport_play(PyObject * Py_UNUSED(self), PyObject * args, PyObject * k
storage_options.uri = std::string(uri);
storage_options.storage_id = std::string(storage_id);

play_options.node_prefix = std::string(node_prefix);
play_options.read_ahead_queue_size = read_ahead_queue_size;

rosbag2_transport::Rosbag2Transport transport;
Expand Down

0 comments on commit 3397b46

Please sign in to comment.