24小时热门版块排行榜    

查看: 3092  |  回复: 10

ziyunyun

银虫 (小有名气)

[求助] 请问如何用Matlab画工作空间的轮廓图

matlab三维散点的曲面画图,知道空间点x,y,z的坐标,有四千多个点.用MATLAB怎么画出三维图?有轮廓的那种,不是用plot3直接把点连起来的那种.有谁知道怎么做吗?
回复此楼

» 收录本帖的淘帖专辑推荐

仿真建模与计算 程序语言箱

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

Felix朱飞

新虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
ziyunyun: 金币+20, ★★★★★最佳答案, 看了你提供的参考论文,非常有帮助,谢谢你! 2012-10-14 19:34:25
4000+的点都是工作空间边界的?还是分布于整个三维工作空间?如果是后者,那必须先筛选出边界上的,因为其余的对边界轮廓无意义。

对于符合边界条件的点(不一定就准确地位于边界上),可以尝试非线性拟合/回归方法,这个用MATLAB做还是挺方便的。关键在于选择合适的拟合/回归函数,可以观察工作空间的大概轮廓,参考着指定一个。另外,如果三维工作空间具有明显的对称性,那可以考虑简化成二维的来做,更简单。

工作空间边界的表达式都有了,三维曲面自然好画了。

可以参考一下学位论文:曹毅,显微外科手术机器人工作空间分析与综合,天大博士学位论文,2004.

» 本帖已获得的红花(最新10朵)

4楼2012-10-11 18:19:40
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

ynod23

金虫 (小有名气)

点的坐标都已知,又不想用plot3,可以用surf。把每个点的坐标在3D里画出来,这样行么?

或者如果知道点坐标的生成规律的话(就是函数表达式如果知道的话),也可以用surf直接画出来。

小预测:我觉得,如果只是在空间里面画许多点,而没有按照一定的规律连接起来的话,看到的将是一片毫无规律的点,即密密麻麻的一片。不会从中看出工作空间的轮廓。因为工作空间的轮廓是那些每个极限位置的点组成的。所以你的那4000+的点必须都是最外轮廓上的点才可以。如果这些点是工作空间内的任意点,那么单纯的画出他们是无法看出工作空间的。

» 本帖已获得的红花(最新10朵)

2楼2012-10-11 17:26:23
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

ziyunyun

银虫 (小有名气)

送鲜花一朵
引用回帖:
2楼: Originally posted by ynod23 at 2012-10-11 17:26:23
点的坐标都已知,又不想用plot3,可以用surf。把每个点的坐标在3D里画出来,这样行么?

或者如果知道点坐标的生成规律的话(就是函数表达式如果知道的话),也可以用surf直接画出来。

小预测:我觉得,如果只 ...

就是因为没有函数表达式,只是在ADAMS里得到了很多轨迹点,但这些点连起来基本上能看出工作空间的轮廓,但这些点不都在轮廓上。根据这些点画轮廓还真是不好搞定啊!
3楼2012-10-11 17:38:41
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

cheungyuk

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
你所说的是运动轨迹的轮廓还是形成空间曲面的形状轮廓?后者的话提取边界点,然后拟合surf可以了。如果是前者个人感觉还是做拟合一下画运动轨迹线比较好
三十年众生牛马,六十年诸佛龙象
5楼2012-10-12 08:48:26
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

ziyunyun

银虫 (小有名气)

送鲜花一朵
引用回帖:
4楼: Originally posted by Felix朱飞 at 2012-10-11 18:19:40
4000+的点都是工作空间边界的?还是分布于整个三维工作空间?如果是后者,那必须先筛选出边界上的,因为其余的对边界轮廓无意义。

对于符合边界条件的点(不一定就准确地位于边界上),可以尝试非线性拟合/回归方 ...

谢谢你的建议!
这些点是分布于整个三维工作空间的。下面的图是我用plot3画的,能看出来三维空间是环球体的一部分。关于边界轮廓如何画,我按你的方法先试试,Matlab还用不熟,真愁人啊。

工作空间.jpg

6楼2012-10-12 09:36:10
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

ziyunyun

银虫 (小有名气)

引用回帖:
5楼: Originally posted by cheungyuk at 2012-10-12 08:48:26
你所说的是运动轨迹的轮廓还是形成空间曲面的形状轮廓?后者的话提取边界点,然后拟合surf可以了。如果是前者个人感觉还是做拟合一下画运动轨迹线比较好

是形成空间曲面的形状轮廓,我在楼上的回复中加图了。谢谢你的建议!看来提取边界点是必须要做的功课了。
7楼2012-10-12 09:40:36
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wang_unicas

银虫 (初入文坛)

引用回帖:
4楼: Originally posted by Felix朱飞 at 2012-10-11 18:19:40
4000+的点都是工作空间边界的?还是分布于整个三维工作空间?如果是后者,那必须先筛选出边界上的,因为其余的对边界轮廓无意义。

对于符合边界条件的点(不一定就准确地位于边界上),可以尝试非线性拟合/回归方 ...

我想请教下关于工作空间三维画图及二维视图中轮廓线的绘制!我已经计算出分布于整个三维工作空间的点的坐标,现在想得出三维的工作空间曲面及在XOY,XOZ,YOZ上的二维边界轮廓线!

Matlab中运动位置坐标的计算程序如下:
clc
clear

%WSA_H: Workspace Analysis of Heel
%Direct Kinematic of 3-FB Leg
syms x1 y1 z1 x2 y2 z2 x3 y3 z3 xh yh zh l1 l2 l3;

%Coordinates of the points(P1, P2, P3)
x1=100*sqrt(3); y1=0; z1=0;
x2=0; y2=-100; z2=0;
x3=0; y3=100; z3=0;

%Lengths of three links
%Range of link-length
L_min=300;                        %the minimum length of link
L_stroke=150;                     %the stroke of actuactor
L_inc=2;                         %the increment per step
L_max=L_min+L_stroke;                        %the maximum length of link
l1=L_min;l2=L_min;l3=L_min;
RLL=L_min:L_inc:L_max;

%Arrays of three links
L1=zeros(length(RLL)*length(RLL)*length(RLL),1);
L2=zeros(length(RLL)*length(RLL)*length(RLL),1);
L3=zeros(length(RLL)*length(RLL)*length(RLL),1);
i=0;
for l1=RLL;
    for l2=RLL;
        for l3=RLL;
            i=i+1;
            L1(i)=l1;
            L2(i)=l2;
            L3(i)=l3;
        end
    end
end

%Coordinate of the point H
xh=zeros(length(RLL)*length(RLL)*length(RLL),1);
yh=zeros(length(RLL)*length(RLL)*length(RLL),1);
zh=zeros(length(RLL)*length(RLL)*length(RLL),1);

i=0;
for l1=RLL;
    for l2=RLL;
        for l3=RLL;
            i=i+1;
            yh(i)=(-l2^2+l3^2+y2^2-y3^2)/(2*(y2-y3));
            xh(i)=(-l1^2+l2^2+x1^2-y2^2+2*y2*yh(i))/(2*x1);
            zh(i)=sqrt(l3^2-xh(i)^2-(yh(i)-y3)^2);   
        end
    end
end
8楼2013-03-05 23:41:43
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

Felix朱飞

新虫 (小有名气)

引用回帖:
8楼: Originally posted by wang_unicas at 2013-03-05 23:41:43
我想请教下关于工作空间三维画图及二维视图中轮廓线的绘制!我已经计算出分布于整个三维工作空间的点的坐标,现在想得出三维的工作空间曲面及在XOY,XOZ,YOZ上的二维边界轮廓线!

Matlab中运动位置坐标的计算程序 ...

呃,你是分享程序?还是探讨些问题?
9楼2013-03-06 09:15:41
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wang_unicas

银虫 (初入文坛)

引用回帖:
9楼: Originally posted by Felix朱飞 at 2013-03-06 09:15:41
呃,你是分享程序?还是探讨些问题?...

这上面的程序是我计算三维工作空间每个坐标点的程序,我想从这些值中得出三维的工作空间曲面及在XOY,XOZ,YOZ上的二维边界轮廓线,请问需要怎么做啊?
10楼2013-03-07 01:36:36
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ziyunyun 的主题更新
信息提示
请填处理意见