/slam_toolbox/update
¶
Caution
This documentation page has been auto-generated.
It may be missing some details.
/slam_toolbox/update
Quick Facts
- Category
- Message type
- Direction
⬅️ you normally publish to this topic.
Visualize the graph in RViz and allows the user to apply changes in the position of the graph’s nodes.
Quick snippets¶
Publish data on the topic¶
$ ros2 topic pub /slam_toolbox/update visualization_msgs/msg/InteractiveMarkerUpdate # press Tab twice to complete
How to use in your code¶
Publish to the topic¶
1#!/usr/bin/env python
2
3import rclpy
4from rclpy.node import Node
5
6from visualization_msgs.msg import InteractiveMarkerUpdate
7
8
9class UpdatePublisher(Node):
10
11 def __init__(self):
12 super().__init__('slam_toolbox_update_publisher')
13 self.publisher = self.create_publisher(
14 InteractiveMarkerUpdate,
15 '/slam_toolbox/update',
16 10)
17 timer_period = 0.5 # seconds
18 self.timer = self.create_timer(timer_period, self.timer_callback)
19
20 def timer_callback(self):
21
22 msg = InteractiveMarkerUpdate()
23
24 # check https://docs.ros2.org/latest/api/visualization_msgs/msg/InteractiveMarkerUpdate.html
25 # for the msg structure
26 # msg.data = ...
27
28 self.publisher.publish(msg)
29 self.get_logger().info('Publishing: "%s"' % msg.data)
30
31
32if __name__ == '__main__':
33 rclpy.init(args=args)
34
35 publisher = UpdatePublisher()
36
37 rclpy.spin(publisher)
38
39 rclpy.shutdown()
Publish to the topic using C++¶
1#include <chrono>
2#include <functional>
3#include <memory>
4#include <string>
5
6#include "rclcpp/rclcpp.hpp"
7#include "visualization_msgs/msg/interactive_marker_update.hpp"
8
9using namespace std::chrono_literals;
10using namespace rclcpp;
11
12class UpdatePublisher : public rclcpp::Node
13{
14public:
15 UpdatePublisher()
16 : Node("slam_toolbox_update_publisher")
17 {
18 publisher_ = this->create_publisher<visualization_msgs::msg::InteractiveMarkerUpdate>("/slam_toolbox/update", 10);
19 timer_ = this->create_wall_timer(
20 500ms,
21 std::bind(&UpdatePublisher::timer_callback, this));
22 }
23
24private:
25 void timer_callback()
26 {
27 auto msg = visualization_msgs::msg::InteractiveMarkerUpdate();
28
29 // check https://docs.ros2.org/latest/api/visualization_msgs/msg/InteractiveMarkerUpdate.html
30 // for the msg structure
31 //msg.data = ...;
32 publisher_->publish(msg);
33 }
34
35 TimerBase::SharedPtr timer_;
36 Publisher<visualization_msgs::msg::InteractiveMarkerUpdate>::SharedPtr publisher_;
37};
38
39int main(int argc, char * argv[])
40{
41init(argc, argv);
42spin(std::make_shared<UpdatePublisher>());
43shutdown();
44return 0;
45}