matlab绘制任意位置方位的圆锥

该文介绍了一种使用MATLAB中的surf函数和机器人系统工具箱来创建和展示具有特定高度和半径的圆锥体的方法。通过getTransform计算机器人末端执行器的位置和方向,并利用这些信息调整圆锥的朝向和位置。此外,还展示了自定义函数MyPlotCone用于绘制圆锥的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前记:

        使用surf函数实现指定顶点,圆锥半径,高度的圆锥。

2.代码

        为了实现任意位置和方位,使用机器人系统工具箱函数getTransform计算机器人末端正运动的齐次矩阵结果并将其位置和方位赋予要画的圆锥体上。

运行函数:

robot = loadrobot("kinovaGen3","DataFormat","column","Gravity",[0 0 -9.81]);
qq=robot.randomConfiguration;
% qq=robot.homeConfiguration

t=getTransform(robot,qq,robot.BodyNames{end});
eulZYX =rad2deg(tform2eul(t,'XYZ'));方位
t1=t(1:3,4);%位置


show(robot,qq,"Frames","off");
xlim([-1 1]); ylim([-1 1]); zlim([-0.4 1.6])
hold on
color=rand(1,3);
% MyPlotCone(size,r,P,R,alpha,color)
h=.2;%高度
r=0.1;%半径
MyPlotCone(h,r, t1,eulZYX,0.6,color)% 调用function代码

trplot(robot.getTransform(qq, robot.BodyNames{end}), 'length',0.2,'arrow','frame', 'Tcp',...
       'text_opts', {'FontSize', 6, 'FontWeight', 'bold'},...
       'width', 0.06,'thick',0.06 ,'rgb','color','k')% workspace frame

结果: 

画圆锥的代码调用: 


function MyPlotCone(h,r,P,R,alpha,color)
% write by jianrobsim
t1=P;%x y z
eulZYX=R;% y p r
%
%  cylinder - 创建圆柱
%     此 MATLAB 函数 返回三个 2×21 矩阵,其中包含圆柱的 x、y 和 z 坐标,但不对其绘图。
%     圆柱的半径为 1,圆周上有 20 个等间距点。底面平行于 xy 平面。
[X,Y,Z]=cylinder([0 r],50);% 后50为将圆化成均等分

M=makehgtform('translate',[t1(1),t1(2),t1(3)],'xrotate',deg2rad(eulZYX(1)),'yrotate',deg2rad(eulZYX(2)),'zrotate',deg2rad(eulZYX(3)));

hf=surf(X,Y,Z*h,'Parent',hgtransform('Matrix',M),'LineStyle','none','FaceAlpha',alpha);

set(hf,'FaceColor',color)
set(hf,'EdgeColor','k')
end

 附录:上述的代码中使用trplot画的机器人末端的坐标系显示。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JianRobSim

嘤嘤其名,求其友声!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值