Skip to content

Commit 001da6d

Browse files
Feature/reuse frame (#27)
* get frame ID from graph wrapper * actually include frame ID in header * fix launch files
1 parent c97c3b1 commit 001da6d

File tree

13 files changed

+27
-17
lines changed

13 files changed

+27
-17
lines changed

hydra_ros/launch/hydra.launch.yaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,5 @@ launch:
5353
--config-utilities-yaml $(var extra_yaml)
5454
# hydra visualizer
5555
- set_remap: {from: hydra_visualizer/dsg, to: hydra/backend/dsg}
56-
- include:
57-
file: $(find-pkg-share hydra_visualizer)/launch/streaming_visualizer.launch.yaml
58-
arg:
59-
- {name: visualizer_frame, value: $(var map_frame)}
56+
- arg: {name: start_visualizer, default: 'true', description: run hydra visualizer}
57+
- include: {file: $(find-pkg-share hydra_visualizer)/launch/streaming_visualizer.launch.yaml, if: $(var start_visualizer)}

hydra_ros/src/utils/dsg_streaming_interface.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ void DsgSender::publishGraph(const DynamicSceneGraph& graph,
123123

124124
auto msg = std::make_unique<DsgUpdate>();
125125
msg->header.stamp = rclcpp::Time(timestamp_ns);
126+
msg->header.frame_id = config.frame_id;
126127
spark_dsg::io::binary::writeGraph(
127128
graph, msg->layer_contents, config.serialize_dsg_mesh);
128129
msg->full_update = true;

hydra_visualizer/include/hydra_visualizer/io/graph_file_wrapper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ namespace hydra {
4949
class GraphFileWrapper : public GraphWrapper {
5050
public:
5151
struct Config {
52+
std::string frame_id;
5253
std::filesystem::path filepath;
5354
std::string wrapper_ns = "~/graph";
5455
} const config;

hydra_visualizer/include/hydra_visualizer/io/graph_ros_wrapper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class GraphRosWrapper : public GraphWrapper {
6565
ianvs::NodeHandle nh_;
6666
rclcpp::Subscription<hydra_msgs::msg::DsgUpdate>::SharedPtr sub_;
6767
rclcpp::Time last_time_;
68+
std::string last_frame_id_;
6869
spark_dsg::DynamicSceneGraph::Ptr graph_;
6970
};
7071

hydra_visualizer/include/hydra_visualizer/io/graph_wrapper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ namespace hydra {
4141

4242
struct StampedGraph {
4343
spark_dsg::DynamicSceneGraph::Ptr graph;
44+
std::string frame_id = "";
4445
std::optional<rclcpp::Time> timestamp = std::nullopt;
4546
inline operator bool() const { return graph != nullptr; }
4647
};

hydra_visualizer/include/hydra_visualizer/io/graph_zmq_wrapper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ namespace hydra {
4848
class GraphZmqWrapper : public GraphWrapper {
4949
public:
5050
struct Config {
51+
std::string frame_id;
5152
std::string url = "tcp://127.0.0.1:8001";
5253
size_t num_threads = 2;
5354
size_t poll_time_ms = 10;

hydra_visualizer/include/hydra_visualizer/visualizer_node.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ class DsgVisualizer : public rclcpp::Node {
5050
public:
5151
struct Config {
5252
double loop_period_s = 0.1;
53-
std::string visualizer_frame = "map";
5453
SceneGraphRenderer::Config renderer;
5554
config::VirtualConfig<GraphWrapper> graph;
5655
// Specify additional plugins that should be loaded <name, config>

hydra_visualizer/launch/static_visualizer.launch.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ launch:
2121
--config-utilities-file $(var visualizer_plugins_path)
2222
--config-utilities-file $(var external_plugins_path)
2323
--config-utilities-yaml {glog_level: 0, glog_verbosity: $(var verbosity)}
24-
--config-utilities-yaml {visualizer_frame: $(var visualizer_frame), graph: {type: GraphFromFile, filepath: $(var scene_graph)}}
24+
--config-utilities-yaml {graph: {type: GraphFromFile, frame_id: $(var visualizer_frame), filepath: $(var scene_graph)}}
2525
--config-utilities-yaml {plugins: {mesh: {use_color_adapter: $(var use_color_adapter)}}}
2626
# rviz node and control for launching
2727
- arg: {name: start_rviz, default: 'true', description: automatically start rviz}

hydra_visualizer/launch/streaming_visualizer.launch.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ launch:
44
- arg: {name: verbosity, default: '0'}
55
- arg: {name: debug, default: 'false'}
66
# visualizer configuration
7-
- arg: {name: visualizer_frame, default: map}
87
- arg: {name: visualizer_ns, default: hydra_visualizer}
98
- arg: {name: visualizer_config_path, default: $(find-pkg-share hydra_visualizer)/config/visualizer_config.yaml}
109
- arg: {name: visualizer_plugins_path, default: $(find-pkg-share hydra_visualizer)/config/visualizer_plugins.yaml}
1110
- arg: {name: external_plugins_path, default: $(find-pkg-share hydra_visualizer)/config/external_plugins.yaml}
1211
- arg: {name: use_color_adapter, default: 'false', description: Start visualizer using mesh color adapter}
1312
# communication
1413
- arg: {name: use_zmq, default: 'false', description: use zmq to receive scene graphs}
14+
- arg: {name: visualizer_frame, default: map, description: frame ID for zmq to use}
1515
- arg: {name: zmq_url, default: tcp://127.0.0.1:8001, description: full zmq url}
1616
# visualizer node and control for launching
1717
- arg: {name: start_visualizer, default: 'true'}
@@ -27,8 +27,7 @@ launch:
2727
--config-utilities-file $(var visualizer_plugins_path)
2828
--config-utilities-file $(var external_plugins_path)
2929
--config-utilities-yaml {glog_level: 1, glog_verbosity: $(var verbosity)}
30-
--config-utilities-yaml {visualizer_frame: $(var visualizer_frame)}
31-
--config-utilities-yaml {graph: {type: $(if $(var use_zmq) GraphFromZmq GraphFromRos), url: $(var zmq_url)}}
30+
--config-utilities-yaml {graph: {type: $(if $(var use_zmq) GraphFromZmq GraphFromRos), url: $(var zmq_url), frame_id: $(var visualizer_frame)}}
3231
--config-utilities-yaml {plugins: {mesh: {use_color_adapter: $(var use_color_adapter)}}}
3332
# rviz node and control for launching
3433
- arg: {name: start_rviz, default: 'true', description: automatically start rviz}

hydra_visualizer/src/io/graph_file_wrapper.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,11 @@ using std_srvs::srv::Empty;
5858
void declare_config(GraphFileWrapper::Config& config) {
5959
using namespace config;
6060
name("GraphFileWrapper::Config");
61+
field(config.frame_id, "frame_id");
6162
field<Path::Absolute>(config.filepath, "filepath");
6263
field(config.wrapper_ns, "wrapper_ns");
6364

65+
checkCondition(!config.frame_id.empty(), "'frame_id' must be non-empty");
6466
check<Path::Exists>(config.filepath, "filepath");
6567
}
6668

@@ -77,7 +79,7 @@ bool GraphFileWrapper::hasChange() const { return has_change_; }
7779

7880
void GraphFileWrapper::clearChangeFlag() { has_change_ = false; }
7981

80-
StampedGraph GraphFileWrapper::get() const { return {graph_}; }
82+
StampedGraph GraphFileWrapper::get() const { return {graph_, config.frame_id}; }
8183

8284
void GraphFileWrapper::reload(const std_srvs::srv::Empty::Request::SharedPtr&,
8385
std_srvs::srv::Empty::Response::SharedPtr) {

0 commit comments

Comments
 (0)