rviz显示箭头(需要用click_point去点,方向没确定)

#include <ros/ros.h>

#include <geometry_msgs/PointStamped.h>

#include <visualization_msgs/Marker.h>

#include <visualization_msgs/MarkerArray.h>

ros::Publisher marker_pub; // 全局发布者

int marker_id = 0; // 使用自增ID确保唯一性

void pts_callback(const geometry_msgs::PointStamped::ConstPtr& msg)

{

ROS_INFO("Received point: (%f, %f)", msg->point.x, msg->point.y);

visualization_msgs::Marker marker;

marker.header.frame_id = "map";

marker.header.stamp = ros::Time::now();

marker.ns = "multiple_arrows";

marker.id = marker_id++; // 使用自增ID

marker.type = visualization_msgs::Marker::ARROW;

marker.action = visualization_msgs::Marker::ADD;

// 设置箭头位置

marker.pose.position.x = msg->point.x;

marker.pose.position.y = msg->point.y;

marker.pose.position.z = 0.0;

// 设置方向(保持默认朝X轴方向)

marker.pose.orientation.w = 1.0;

// 设置尺寸(箭头总长1m,杆径0.1m)

marker.scale.x = 1.0; // 箭头总长度

marker.scale.y = 0.1; // 箭头杆径

marker.scale.z = 0.1; // 箭头头径

// 设置颜色(红色不透明)

marker.color.r = 1.0;

marker.color.a = 1.0;

// 创建MarkerArray并发布

visualization_msgs::MarkerArray marker_array;

marker_array.markers.push_back(marker);

marker_pub.publish(marker_array);

}

int main(int argc, char **argv)

{

ros::init(argc, argv, "sub_pts");

ros::NodeHandle nh;

// 初始化全局发布者

marker_pub = nh.advertise<visualization_msgs::MarkerArray>("visualization_marker_array", 10);

ros::Subscriber pts_sub = nh.subscribe("/clicked_point", 1000, pts_callback);

ros::spin();

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值