void StlPub()
{
visualization_msgs::Marker block;
block.type = visualization_msgs::Marker::MESH_RESOURCE;
block.mesh_resource = "package://block2/meshes/base.stl";
block.action = visualization_msgs::Marker::ADD;
block.id = 0;
block.lifetime = ros::Duration(0);
block.header.stamp = ros::time()::now();
block.header.frame_id = "world";
block.ns = "block";
//set position
block.pose.position.x = x ;
block.pose.position.y = y ;
block.pose.position.z = z ;
//set pose/orientation
block.pose.orientation.x = 0.0;
block.pose.orientation.y = 0.0;
block.pose.orientation.z = 0.0;
block.pose.orientation.w = 1.0;
//set scale
block.scale.x = 1;
block.scale.y = 1;
block.scale.z = 1;
// set color.
block.color.r = 0.5f;
block.color.g = 0.5f;
block.color.b = 0.5f;
block.color.a = 1.0f;
block_publisher_.publish(block);
}
Ros官方的,marker教程:rviz/DisplayTypes/Marker – ROS Wiki
对上述代码进行解析,首先是marker的基本设置,时间戳和id之类的,marker的type设置为visualization_msgs::Marker::MESH_RESOURCE,MESH_RESOURCE是特定的mesh加载类型。
marke.mesh_resource 设置为你的stl路径。请注意,后缀需要区分大小写,除了stl,官方说明还可以使用dae模型。
pose.position 是位置设置
pose.orientation 是旋转设置,是四元数
pose.scale 是模型的缩放指数,1代表原尺寸,缩放后尺度 = 原尺度 * scale
color 就是 颜色设置。
一些小问题:
如果在rviz中出现了无法加载模型的情况,以下操作可能会有帮助:
- 检查一下文件后缀
- 检查一下文件的路径
- 启动rviz的时候记得在自己的工程目录下source一下
版权声明:本文为sinat_38679789原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。