当前位置:网站首页>generate pivot data 0
generate pivot data 0
2022-06-12 16:21:00 【seventeen billion five hundred and six million three hundred an】
clc;
clear;
close all;
% rng(0);
% rand(1)*2*pi
%% W: world coordinate system
% Size 4X4, Homogeneous matrix , Homogeneous coordinate system
W = eye(4);
W(1:3,1:3)=W(1:3,1:3)*200; % multiply 200 To make the axis longer , It is convenient to display
%% Transformation ( zero )
% Dynamic reference coordinate system DRF00, The initial state completely coincides with the world coordinate system
%(1) Around the W Of X Shaft rotation ,(2) Around the W Of Y Shaft rotation ,(3) Around the W Of Z Shaft rotation ,
%(4) be relative to W The origin of the coordinates , Along W Of XYZ Direction translation
roll_W_WtoDRF00 = pi/2; % Z
yaw_W_WtoDRF00 = 0; % Y
pitch_W_WtoDRF00 = 0; % X
EAZYX_W_WtoDRF00 = [roll_W_WtoDRF00 yaw_W_WtoDRF00 pitch_W_WtoDRF00 ];
TlXYZ_W_WtoDRF00 = [100, 100, -1000]';
HTfM_W_WtoDRF00 = genHTfM_useEularAngle(EAZYX_W_WtoDRF00,TlXYZ_W_WtoDRF00);
DRF00 = HTfM_W_WtoDRF00*W;
%% Transformation ( One )
% Dynamic reference coordinate system DRF01, The initial state and DRF00 The coordinate systems are perfectly coincident
%(1) be relative to DRF00 The origin of the coordinates , Along DRF00 Of X Direction translation
roll_W_DRF00toDRF01 = 0; % Z
yaw_W_DRF00toDRF01 = 0; % Y
pitch_W_DRF00toDRF01 = 0; % X
EAZYX_W_DRF00toDRF01 = [roll_W_DRF00toDRF01 yaw_W_DRF00toDRF01 pitch_W_DRF00toDRF01 ];
TlXYZ_W_DRF00toDRF01 = [500,0,0]';
HTfM_W_DRF00toDRF01 = genHTfM_useEularAngle(EAZYX_W_DRF00toDRF01,TlXYZ_W_DRF00toDRF01);
% Take the right ( First relative to W Transformation , And then do it W To DRF00 Transformation of )
HTfM_DRF00_DRF00toDRF01 = HTfM_W_WtoDRF00*HTfM_W_DRF00toDRF01;
DRF01 = HTfM_DRF00_DRF00toDRF01*W;
%% Transformation ( Two )
% Dynamic reference coordinate system DRF02TMP, The initial state and DRF01 The coordinate systems are perfectly coincident
%(1)DRF02TMP Around DRF00 Of Y Shaft rotation , To get the final DRF02
roll_W_DRF01toDRF02 = 0; % Z
yaw_W_DRF01toDRF02 = -pi/4; % Y
pitch_W_DRF01toDRF02 = 0; % X
EAZYX_W_DRF01toDRF02 = [roll_W_DRF01toDRF02 yaw_W_DRF01toDRF02 pitch_W_DRF01toDRF02];
TlXYZ_W_DRF01toDRF02 = [0,0,0]';
HTfM_W_DRF01toDRF02 = genHTfM_useEularAngle(EAZYX_W_DRF01toDRF02,TlXYZ_W_DRF01toDRF02);
EAZYX_W_DRF00toW = inv(HTfM_W_WtoDRF00);
% (1) We require a transformation matrix HTfM_DRF01_DRF01toDRF02, bring DRF02 = HTfM_DRF01_DRF01toDRF02*W
% Because the transformation matrix is ultimately left multiplied coordinate system W, So the target coordinate system is needed here DRF02 Initial state of DRF02TMP00 And the coordinate system W coincidence
% (2) Put the coordinate system DRF02TMP00 Transform to and coordinate system DRF01 Complete coincidence , obtain DRF02TMP01
% {DRF02TMP01 = HTfM_DRF00_DRF00toDRF01*W}
% (3) Put the coordinate system DRF00 And the coordinate system DRF02TMP01, As a whole , Change at the same time .
% For the coordinate system DRF02TMP01 do , Put the coordinate system DRF00 Transform to a coordinate system W Transformation of , Left multiplication inv(HTfM_W_WtoDRF00), obtain DRF02TMP02
% {DRF02TMP02 = inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01*W}
% (4) Now the coordinate system W And the coordinate system DRF00 Complete coincidence , In the coordinate system W It's about do DRF02TMP02 Around DRF00 Of Y Shaft rotation DRF01 To DRF02 Transformation of , obtain DRF02TMP03
% Now the coordinate system W And the coordinate system DRF00 Complete coincidence , So relative to W To make a transformation is equivalent to DRF00 Make a change
% {DRF02TMP03 = HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01*W}
% (5) Do the following from the coordinate system at this time W To DRF00 Transformation of , That's the process (3) The inverse transformation of , Transform matrix left multiply HTfM_W_WtoDRF00
% {DRF02 = HTfM_W_WtoDRF00*HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01*W}
HTfM_DRF00_DRF01toDRF02 = HTfM_W_WtoDRF00*HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01;
DRF02 = HTfM_DRF00_DRF01toDRF02*W;
%% Transformation ( 3、 ... and )
% Dynamic reference coordinate system DRF03, The initial state and DRF02 The coordinate systems are perfectly coincident
%(1)DRF02 Around DRF00 Of Z Shaft rotation
roll_W_DRF02toDRF03 = pi/2; % Z
yaw_W_DRF02toDRF03 = 0; % Y
pitch_W_DRF02toDRF03 = 0; % X
EAZYX_W_DRF02toDRF03 = [roll_W_DRF02toDRF03 yaw_W_DRF02toDRF03 pitch_W_DRF02toDRF03];
TlXYZ_W_DRF02toDRF03 = [0,0,0]';
HTfM_W_DRF02toDRF03 = genHTfM_useEularAngle(EAZYX_W_DRF02toDRF03,TlXYZ_W_DRF02toDRF03);
% (1) We require a transformation matrix HTfM_DRF00_DRF02toDRF03, bring DRF03 = HTfM_DRF00_DRF02toDRF03*W
% Because the transformation matrix is ultimately left multiplied coordinate system W, So the target coordinate system is needed here DRF03 Initial state of DRF03TMP00 And the coordinate system W coincidence
% (2) Put the coordinate system DRF03TMP00 Transform to and coordinate system DRF02 Complete coincidence , obtain DRF03TMP01
% Borrow directly here Transformation ( Two ) Result
% {DRF03TMP01 = HTfM_DRF00_DRF01toDRF02*W}
% (3) Put the coordinate system DRF00 And the coordinate system DRF03TMP01, As a whole , Change at the same time .
% For the coordinate system DRF03TMP01 do , Put the coordinate system DRF00 Transform to a coordinate system W Transformation of , Left multiplication inv(HTfM_W_WtoDRF00), obtain DRF03TMP02
% {DRF03TMP02 = inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02*W}
% (4) Now the coordinate system W And the coordinate system DRF00 Complete coincidence , In the coordinate system W It's about do DRF03TMP02 Around DRF00 Of Z Shaft rotation DRF02 To DRF03 Transformation of , obtain DRF03TMP03
% Now the coordinate system W And the coordinate system DRF00 Complete coincidence , So relative to W To make a transformation is equivalent to DRF00 Make a change
% {DRF03TMP03 = HTfM_W_DRF02toDRF03*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02*W}
% (5) Do the following from the coordinate system at this time W To DRF00 Transformation of , That's the process (3) The inverse transformation of , Transform matrix left multiply HTfM_W_WtoDRF00
% {DRF03 = HTfM_W_WtoDRF00*HTfM_W_DRF02toDRF03*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02*W}
HTfM_DRF00_DRF02toDRF03 = HTfM_W_WtoDRF00*HTfM_W_DRF02toDRF03*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF01toDRF02;
DRF03 = HTfM_DRF00_DRF02toDRF03*W;
%%
% drawing
axis_limit = 1200;
axis_limitA = [-axis_limit,axis_limit,-axis_limit,axis_limit,-1500,300];
figure(6)
title("figure(6)");
trplot(W,'frame', 'RW','color','r', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
hold on;
plot3(W(1,4),W(2,4),W(3,4),'ro')
hold on;
trplot(DRF00,'frame', 'R00','color','g', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% trplot(DRF01, 'frame', 'R01', 'color', 'b', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% plot3(DRF01(1,4),DRF01(2,4),DRF01(3,4),'bo')
% hold on;
% trplot(DRF02, 'frame', 'R02', 'color', 'k', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% plot3(DRF02(1,4),DRF02(2,4),DRF02(3,4),'ko')
%
% hold on;
% trplot(DRF03, 'frame', 'RDRF03', 'color', 'm', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
% hold on;
% plot3(DRF03(1,4),DRF03(2,4),DRF03(3,4),'mo')
%% Transformation ( Four )
% Dynamic reference coordinate system DRF0X, The initial state and DRF02 The coordinate systems are perfectly coincident
%(1)DRF0X Around DRF00 Of Z Shaft rotation
for i=-pi/2 : pi/4 : 0
% Transformation ( Two )
% Dynamic reference coordinate system DRF02, The initial state and DRF01 The coordinate systems are perfectly coincident
%(1)DRF02 Around DRF00 Of Y Shaft rotation
roll_W_DRF01toDRF02 = 0; % Z
yaw_W_DRF01toDRF02 = i; % Y
pitch_W_DRF01toDRF02 = 0; % X
EAZYX_W_DRF01toDRF02 = [roll_W_DRF01toDRF02 yaw_W_DRF01toDRF02 pitch_W_DRF01toDRF02];
TlXYZ_W_DRF01toDRF02 = [0,0,0]';
HTfM_W_DRF01toDRF02 = genHTfM_useEularAngle(EAZYX_W_DRF01toDRF02,TlXYZ_W_DRF01toDRF02);
EAZYX_W_DRF00toW = inv(HTfM_W_WtoDRF00);
HTfM_DRF01_DRF01toDRF02 = HTfM_W_WtoDRF00*HTfM_W_DRF01toDRF02*inv(HTfM_W_WtoDRF00)*HTfM_DRF00_DRF00toDRF01;
DRF02 = HTfM_DRF01_DRF01toDRF02*W;
for j=0 : pi/2 : 2*pi
% Transformation ( 3、 ... and )
% Dynamic reference coordinate system DRF03, The initial state and DRF02 The coordinate systems are perfectly coincident
%(1)DRF02 Around DRF00 Of Z Shaft rotation
roll_W_DRF02toDRF0X = j; % Z
yaw_W_DRF02toDRF0X = 0; % Y
pitch_W_DRF02toDRF0X = 0; % X
EAZYX_W_DRF02toDRF0X = [roll_W_DRF02toDRF0X yaw_W_DRF02toDRF0X pitch_W_DRF02toDRF0X];
TlXYZ_W_DRF02toDRF0X = [0,0,0]';
HTfM_W_DRF02toDRF0X = genHTfM_useEularAngle(EAZYX_W_DRF02toDRF0X,TlXYZ_W_DRF02toDRF0X);
EAZYX_W_DRF00toW = inv(HTfM_W_WtoDRF00);
HTfM_DRF00_DRF02toDRF0X = HTfM_W_WtoDRF00*HTfM_W_DRF02toDRF0X*inv(HTfM_W_WtoDRF00)*HTfM_DRF01_DRF01toDRF02;
DRF0X = HTfM_DRF00_DRF02toDRF0X*W;
hold on;
trplot(DRF0X, 'frame', 'RDRF0X', 'color', 'm', 'axis',axis_limitA, 'text_opts',{'FontSize', 10, 'FontWeight', 'light'}, 'view','auto', 'thick',1, 'dispar',0.8);
hold on;
plot3(DRF0X(1,4),DRF0X(2,4),DRF0X(3,4),'mo')
end
end
function HTfM= genHTfM_useEularAngle(eularAngle_zyx,translation)
% HTfM homogeneous transform matrix
rotationMatrix=eul2rotm(eularAngle_zyx,'ZYX');
HTfM = eye(4,4);
HTfM(1:3,1:3) = rotationMatrix;
HTfM(1:3,4) = translation;
end
边栏推荐
- 5-5 configuring MySQL replication log point based replication
- puppeteer入门之 Page 类
- Analysis of China's cargo transport volume, cargo transport turnover and port cargo in 2021 [figure]
- acwing 790. 数的三次方根(浮点数二分)
- AssertJ 的异常(Exception )断言
- Project training of Software College of Shandong University rendering engine system basic renderer (V)
- 线程池执行流程
- acwing 802. Interval sum (discretization)
- 超详细干货!Docker+PXC+Haproxy搭建高可用强一致性的MySQL集群
- RTOS rt-thread裸机系统与多线程系统
猜你喜欢

Acwing788. number of reverse order pairs

批量--04---移动构件

acwing788. 逆序对的数量

超详细干货!Docker+PXC+Haproxy搭建高可用强一致性的MySQL集群

线程池执行流程

Multimix:从医学图像中进行的少量监督,可解释的多任务学习

The market share of packaged drinking water has been the first for eight consecutive years. How does this brand DTC continue to grow?
![[browser principle] variable promotion](/img/19/f6b26d97c6024893a21dd40e2bbc47.jpg)
[browser principle] variable promotion

Super detailed dry goods! Docker+pxc+haproxy build a MySQL Cluster with high availability and strong consistency

思考游戏王决斗链接中抽卡概率问题
随机推荐
大规模实时分位数计算——Quantile Sketches 简史
Global and Chinese markets of bioreactors 2022-2028: Research Report on technology, participants, trends, market size and share
Sum of acwing796 submatrix
Thread pool execution process
Postgresql错误码是如何构造的
acwing 797 差分
Project training of Software College of Shandong University rendering engine system basic renderer (III)
【工具推荐】个人本地 markdown 知识图谱软件 Obsidian
glibc 内存管理模型 释放 C库内存缓存
Read MHD and raw images, slice, normalize and save them
< 山东大学软件学院项目实训 > 渲染引擎系统——基础渲染器(六)
Statistical machine learning code set
Gopher to rust hot eye grammar ranking
[weekly replay] game 80 of leetcode
HEMA is the best representative of future retail
<山东大学项目实训>渲染引擎系统(二)
(四)GoogleNet复现
Project training of Software College of Shandong University rendering engine system point cloud processing (10)
Global and Chinese markets of automatic glue applicators 2022-2028: Research Report on technology, participants, trends, market size and share
Unicom Network Management Protocol block diagram