先定义 Publisher 智能指针
rclcpp::Publisher<sensor_msgs::msg::Range>::SharedPtr m_ultrasonic_pub;
初始化订阅 Publisher 主题
m_ultrasonic_pub = node->create_publisher<sensor_msgs::msg::Range>("ult", 100);
Publisher 发布填写参数
void ultrasonic_publish(float range)
{
sensor_msgs::msg::Range msg;
msg.header.stamp = m_rosnode->get_clock()->now();
msg.header.frame_id = "1";
msg.field_of_view = 1;
msg.min_range = 1;
msg.max_range = 3;
msg.range = 1;
m_ultrasonic_pub->publish(msg);
}
需要注意的是,在 CMakeLists.txt 需要添加 sensor_msgs::msg::Range 的依赖包,不然会编译出错
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(sensor_msgs REQUIRED)
......
ament_target_dependencies(
a # 生成执行文件名
rclcpp
sensor_msgs) # CHANGE