[π€ ROS2?] /head_controller/command#
Caution
This documentation page has been auto-generated.
It may be missing some details.
/head_controller/command Quick Facts
- Category
 - Message type
 - Direction
 β¬ οΈ you normally publish to this topic.
Quick snippets#
Publish data on the topic#
$ ros2 topic pub /head_controller/command trajectory_msgs/msg/JointTrajectory # 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 trajectory_msgs.msg import JointTrajectory
 7
 8
 9class CommandPublisher(Node):
10
11    def __init__(self):
12        super().__init__('head_controller_command_publisher')
13        self.publisher = self.create_publisher(
14            JointTrajectory,
15            '/head_controller/command',
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 = JointTrajectory()
23
24        # check https://docs.ros2.org/latest/api/trajectory_msgs/msg/JointTrajectory.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 = CommandPublisher()
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 "trajectory_msgs/msg/joint_trajectory.hpp"
 8
 9using namespace std::chrono_literals;
10using namespace rclcpp;
11
12class CommandPublisher : public rclcpp::Node
13{
14public:
15    CommandPublisher()
16    : Node("head_controller_command_publisher")
17    {
18    publisher_ = this->create_publisher<trajectory_msgs::msg::JointTrajectory>("/head_controller/command", 10);
19    timer_ = this->create_wall_timer(
20                500ms,
21                std::bind(&CommandPublisher::timer_callback, this));
22    }
23
24private:
25    void timer_callback()
26    {
27    auto msg = trajectory_msgs::msg::JointTrajectory();
28
29    // check https://docs.ros2.org/latest/api/trajectory_msgs/msg/JointTrajectory.html
30    // for the msg structure
31    //msg.data = ...;
32    publisher_->publish(msg);
33    }
34
35    TimerBase::SharedPtr timer_;
36    Publisher<trajectory_msgs::msg::JointTrajectory>::SharedPtr publisher_;
37};
38
39int main(int argc, char * argv[])
40{
41init(argc, argv);
42spin(std::make_shared<CommandPublisher>());
43shutdown();
44return 0;
45}
You can also access this topic from a webpage displayed on the robotβs touchscreen via this endpoint:
http://<robot>-0c/topic/head_controller
(replace <robot>-0c by the serial number of your own robot).
See js-api for the general documentation of the REST endpoints and code samples.