## Coordinate systems

Coordinate systems and especially transformations between local and world coordinates are used in robotics very often. Here is a small but practical introduction into the topic.

There are different types of coordinate systems but when we talk about robotic the most popular are:

1. The standard Cartesian coordinates - values x, y specify position of a point as a distance from the coordinate system origin. Origin is the point where coordinate system axis cross each other. These axis are perpendicular. Computer display uses this type of coordinate system.
2. The standard Polar coordinates - 2D coordinate system in which position of a point in a plane is determined by a distance from a fixed point (r) and an angle (theta) from a fixed direction.
When we want to transform local to world coordinates and vise verse we need to do that in a specific coordinate system. Let's focus on Cartesian coordinate system. In the system we use matrices and vectors to do the job.

Transformation matrix - the coordinate system that is rotating while the object remains fixed.  (http://www.continuummechanics.org/cm/coordxforms.html)
Q = [cos(theta), sin(theta); -sin(theta), cos(theta)] = R'
$Q^{-1}$ = $Q'$ = $R$
Let $v_{new}$ and $v_{old}$ be vectors than
$v_{new} = Q * v_{old}$

Rotation matrix - the object rotates while the coordinate system remains fixed.
R = [cos(theta), -sin(theta); sin(theta), cos(theta)] = Q'
$R^{-1}$ = $R'$ = $Q$
Let $v_{new}$ and $v_{old}$ be vectors than
$v_{new} = R * v_{old}$

Transformation from global to local coordinates and vise versa in Octave/Matlab

clear all;
close all;
clc;

offset = 0.1;

%Transformation matrix from global to local coordinates
theta1 = -pi/4;
x1 = 2;
y1 = 2;
R1 = [cos(theta1), - sin(theta1), x1; sin(theta1), cos(theta1), y1; 0, 0, 1];

%Transformation matrix from local to global coordinates
R1_inv = inv(R1);

%Points in global and local coordinate system
Xg = [1;2;1];
Xl = [1;1;1];
%Temp vector used to store temporary math result
TMP = [0;0;0];

%Vector containing data to be plotted - initially filled by min and max values so the plot has dimensions 0 - 10 in x direction and 0 - 10 in y direction
x=[0,0;10,0];
y=[0,0;10,0];

%Display Xg in global CS
printf("Xg in global CS - no transformation needed: ");
TMP = Xg
text (TMP(1,1) + offset,TMP(2,1) - offset, "Xg in\ngl. CS");
hold on
x=[x;TMP(1),0]; %Add result into vector that will be plotted
y=[y;TMP(2),0]; %Add result into vector that will be plotted

%Display Xl in global CS
printf("Xl in global CS - transformed via R1: ");
TMP = R1*Xl
text (TMP(1,1) + offset,TMP(2,1) - offset, "Xl in\ngl. CS");
hold on
x=[x;TMP(1),0];
y=[y;TMP(2),0];

%Display Xg in local CS
printf("Xg in local CS - transformed via R1_inv: ");
TMP = R1_inv*Xg
text (TMP(1,1) + offset,TMP(2,1) - offset, "Xg in local CS\nnote: [0,0] of this view is taken as origin of the local CS for this point");
hold on
x=[x;TMP(1),0];
y=[y;TMP(2),0];

%Plot
stem(x,y);

%Save
print("local_to_global_coords_transforms.png");

----------------------------------------------------------------------

Source code : local_to_global_coords_transforms.m

Extended source code : local_to_global_coords_transforms_ext.m

0 #30 erkepioci 2020-02-19 15:18
http://mewkid.net/who-is-xandra/ - Buy Amoxil Online Amoxicillin Without Prescription riy.cqvt.concordia.sk.xiw.jv http://mewkid.net/who-is-xandra/

0 #29 osozeikoqi 2019-12-28 05:18
http://mewkid.net/who-is-xandra/ - Amoxicillin 500mg Dosage Amoxicillin Online lxi.krvj.concordia.sk.gzj.bl http://mewkid.net/who-is-xandra/

0 #28 iyajijioeud 2019-12-28 04:12
http://mewkid.net/who-is-xandra/ - Amoxicillin 500mg Amoxil yat.msgd.concordia.sk.ici.wj http://mewkid.net/who-is-xandra/

0 #27 ineatuz 2019-12-28 03:37
http://mewkid.net/who-is-xandra/ - Amoxicillin 500 Mg Dosage Amoxicillin 500mg Capsules pja.reeo.concordia.sk.qrz.dw http://mewkid.net/who-is-xandra/

0 #26 bolubuv 2019-12-28 03:32
http://mewkid.net/who-is-xandra/ - Amoxicillin 500 Mg Buy Amoxicillin Online Without Prescription cms.ksmn.concordia.sk.nvf.fq http://mewkid.net/who-is-xandra/

0 #25 akejaaje 2019-12-28 03:01
http://mewkid.net/who-is-xandra/ - Amoxicillin 500mg Amoxicillin lyp.qxyb.concordia.sk.dex.gx http://mewkid.net/who-is-xandra/

0 #24 olabeceju 2019-12-28 02:58
http://mewkid.net/who-is-xandra/ - 18 Amoxicillin 500mg Capsules bhg.asle.concordia.sk.jzz.lr http://mewkid.net/who-is-xandra/

0 #23 apirogaacaye 2019-12-27 23:19
http://mewkid.net/who-is-xandra/ - Buy Amoxicillin Amoxicillin 500 Mg zyk.hiug.concordia.sk.xxb.na http://mewkid.net/who-is-xandra/

0 #22 etajasjevivu 2019-12-27 22:55
http://mewkid.net/who-is-xandra/ - Amoxicillin Buy Amoxicillin gtl.hpiv.concordia.sk.wrw.wa http://mewkid.net/who-is-xandra/

0 #21 mama bear 2019-12-02 18:06
Fastidious answer back in return of this difficulty
with solid arguments and telling all about that.