• Increase font size
  • Default font size
  • Decrease font size

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;

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

%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

%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




Source code : local_to_global_coords_transforms.m

Result of the local_to_global_coords_transforms.m generated in Octave

Extended source code : local_to_global_coords_transforms_ext.m

Result of the local_to_global_coords_transforms_ext.m generated in Octave



0 #3 skyrim 2017-07-21 21:49
Thanks a bunch for sharing this with all folks you actually understand what you
are speaking approximately! Bookmarked. Please additionally talk over with my site =).
We will have a hyperlink exchange contract between us
skyrim: http://theelderscrolls5skyrimevolution225.ru
0 #2 Anemonalove 2017-07-06 03:44
Hello guys! Who wants to meet me? I have profile at
HotBabesCams.com, we can chat, you can watch me live for free, my
nickname is Anemonalove , here is my pic:

0 #1 We-Vibe 4 Plus 2015-06-25 10:34
Hi, its nice paragraph about media print, we all be familiar with media is a impressive source of facts.

Here is my homepage - We-Vibe 4 Plus madrid: http://lolatoys.com/es/we-vibe-4-plus.html

Add comment

No bad words.

Security code

Design by i-cons.ch / etosha-namibia.ch