Vpython ortamında farklı topolojideki seri manipülatörler için kinematik model çıkarımı
Kinematic model extraction for serial manipulators which have in different topologies in Vpython environment
Yazar: ECE COŞGUN
Danışman: YRD. DOÇ. DR. SIDDIK MURAT YEŞİLOĞLU
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Mekatronik Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: Mekatronik Mühendisliği = Mechatronics Engineering

Özet:
Bu çalışmada seri topolojik yapıya sahip manipülatörler uzaysal vektör cebri  ile ters kinematik modellemesi yapılmıştır. Tezde bu amaçla ilk olarak uzaysal vektör cebri tanıtılıp bu metodla kinematik modellemenin nasıl yapılabileceği anlatılmıştır.  Ardından da endüstride en çok kullanılan altı serbestlik dereceli seri manipülatörün bu metodla kinematik algoritması elde edilmiştir. Tezde ters kinematik algoritmasını test etmek için eşzamanlı görüntü ve yazılım çalıştırma avantajına sahip olan  Vpython yazılımı kullanılmıştır. Vpythonda tasarım için grafik arayüzü bulunmamaktadır. Ayrıca program modülünde ekli üç boyutlu araç sayısı kısıtlı olmasına rağmen görüntü ve yazılımın eş zamanlı çalışması küçük boyutlu projeler için programın amacını karşılamaktadır. Aksi taktirde böyle bir uygulamayı gerçekleştirebilmek için ilk olarak herhangi bir cad programında manipülatörün çizilip ardından bir başka yazılım programında kullanacak olan kinematik modelin kodlanması son olarak da bu iki farklı platformlarda oluşturulan modellerin eş zamanlı olarak çalışabilmesi için tek bir yerde birleştirilmesi gerekmektedir. Bu amaçla kullanacak yazılım programlarının birbirini destekleyen yapıda olması gerekmektedir. Bu doğrultuda mühendislik yazılımı konusunda tercih edilen programlarından biri olan Matlab öne çıkmaktadır. 
Cad programlarından Solidworks, Catia ve Proengineer gibi yazılım programlarıyla bağlantından Matlab'a bağlantı (link) yazılımları sayesinde bu ortamlarda çizilen montajlar Matlab ortamına kolay bir şekilde aktarılabilmektedir. Ayrıca Matlab benzer bir çalışmayı "Simmechanics Araçkutusu (Toolbox)" ile gerçekleştirmiştir. Bu  programda,  oluşturulan montaj dosyası Matlab/Simmechanics bağlantısı (link) yardımıyla Simmechanics'e atılmaktadır. Simmechanics de gelen modeli dinamik olarak modelleyip simülasyon gerçekleştirmektedir. Yalnız bu ortamdan istenilen veriyi çekmek mümkün olmamaktadır. Ayrıca benzer bir çalışma  Solidwork'un "Cosmos Motion" programıdır. Bu program, sadece görüntü çıktısı vermekte herhangi bir data çıktısı alınamamaktadır. 
Tezdeki amaç ters kinematik modellemesinin uzaysal vektör cebri ile farklı seri manipülatörler üzerine çalışma mekanizmasını ölçmek olduğundan algoritma eksik, tam ve artık manipülatörler üzerine aynı referans girişleri ve aynı örnekleme (sampling) zamanı ile simülasyon  testleri yapılmıştır. Bu testler sırasında 0.01 cm hata teleronsına izin verilmiştir. Grafik çıktıları algoritmanın bu hata teleronsına uygun olduğunu göstermiştir

Abstract:
In this study, we aim at obtaining inverse kinematic model of a serial manipulator using Spatial Operator Algebra. For this purpose firstly  Special Operator Algebra and it's use for kinematic modelling are introduced in this thesis. Secondly the kinematic algoritm of the manipulator which has six degree of freedom which is mostly used at the industy, is obtained using this method. At this thesis, to test the inverse kinematic algoritm Vpython software is used to work for simultaneous view and software.  Although the number of 3D tools is limited, the software is suitable for minor projects. Otherwise to realize this application firstly at any cad software program the manipulator must be designed secondly at any software program the kinematic model must be coded, the last the generated models which are at different platform is combined to work simultaneously. For this reason the software programs must be support each other. In this respect Matlab which is a preferred for engineering software, combess forward.
From the cad program, Solidworks, Catia and Proengineer has the link program to provide the Matlab. Owing to the link the assembly can be transfered to the Matlab easily. Also Matlab made the same working with "Simmechanics Toolbox". The assemby files can be transfered  to the Simmechanics with the link program. Simmechanics is modelled dynamically and makes the simulation. However from   this environment lt can not get desired data information. Besides the same practice it is the Cosmos Motion software which is included Solidworks. This program gives just view output  and wont give data output.
The objective is measure the working mechanism on the serial manipulator the with the spatial vector algebra. It is done various test using on the nonredundant, exact, redundant manipulator. During the test the same reference input and the same sampling time is used and made simulation tests. During the test, the error telorance is 0.05 cm. From the graph output the algoritm is suitable for the error tolerance. 
Another aim is to analyze the inverse kinematics modeling problems get a little bit. To obtain the inverse kinematic there are generally two methods. First method is sembolic method. If that method is used, the software code must be coded sembolic.  So the system works very slowly and if the number of degree of freedom is bigger than six, the software may not work. For the offline working it can be satisfy for the accuracy but the online working the time working is not satisfing. Second method is numeric method. 
At this method the inverse kinematic is obtained from the inverse of Jacobian matrix. Normally to get inverse of any matrix it must have full rank it means it must be square matrix. But at robotic if the degree of freedom of manipulator is six, it is full rank. But from one to inf degree of freedom can be used. So the Jakobian matrix is not full generally. So to get the inverse of the matrix there are some methods. These methods give some error. So they are compare due to the amount of the error. Usually the least square method is used. And at the software part it can be psode command. This command use the least square method and both Matlab and Python is the same. But while at Matlab code is written and it can working, at Python to work with this code part it must add module ,which is needed, at the top of the program. Also there are some methods to obtain the inverse Jakobian which is not full, that makes the matrix square. Nevertheless its some coloums or raws are useless. So it can be well analyse which coloumb or raws are useful. 
So when we look at the 2 method, we used the numeric method. Because the used kinematic method is compac to code the any software program. So quickly the inverse kinematic is obtained and the software works very quick. This result is satisfy for online working.
To test the code as the input we use the mouse input. First of all from the user it is wanted to enter the needed information which is the manipulator's length, angle, rotation axis. After the code is working at backward and quickly it brings the wanted manipulator to the screen.  And it waits to the command. The command is the needed the position information which is at cartesian coordinate space. This information gives with mouse left click. 
At Python there is needed code parts and modules for this process. After that the end effector of manipulator comes the position. To see the result the graphs are ploting both desired and tracked dynamicly. When it is looked at the graphs, it can be seen that it is satisfation. Sometimes the manipulator can't reach the desired position. It can be based on singularity. So to express the thesis, the working consist of three main part. 
At part one, it consists two minor parts. That is intoduction and literation research. At introduction minor part, totally at this thesis what it is done from the beginning to the end. At the research of literation part, it is explained that what are the similar working. However like explained at this part there is not exactly similar work. In general at the literature for application studies the another inverse kinematic methods are used.   
At part two, first of all it is expain that what serial manipulation is, where it is used and comparison of the other topological manipulator kinds. The other manipulation kind is parallel and tree based structure. While It has some advantage according to the other ones, it also has the disadvantages. However it used more at industry. After the kinematic model method is introduced. 
To  explain the method two degrees of freedom serial manipulator is used first of all. From initial linear and angular velocity to end effector's linear and angular velocity it is obtained. So this algoritm is applied to a six degree of freedom manipulator. And the equations of this manipulator are given at table as both explicitly and implicitly. From the equations it can be seen that it is an exactly algoritm. So coding part is a little difficult according to the other kinematic modeling method but it also has easy part. It is inverse  kinematic section. At this kinematic model it is used numerical method when the forward kinematic section is coded, for obtaining the inverse kinematic just one general while loop and the pseode command are needed. So it shorten the code distances and causes to shorten the time interval. 
Next The sembolic Jacobian matrix is showed as sembolic. Normally when the Jakobian matrix is obtained from an another method, it can not guess it is true or not. For example a simple method that is iterative is calculate the the linear  part of Jacobian matrix. This method uses the end effectors position information and it is getten respectively partial derivative according to joint angles. So when the method is analysed first it only provides linear parts and also if the result is incorrect, we cant know. But this method provides explicity Jakobian matrix closed situation. So for the initial position of the manipulator it can be showen the Jakobian matrix is correct or not. So this also shows the kinematic algoritm is correct or not. 
To test the algoritm we design a grafical interface. It is Tkinter and it comes with Python. So it is no need to combine the Python and Tkinter. So someone works the program first the grafical interface window meets the user and when the needed text lines are filled, at another window the manipulator meets the users. And when the user clicks the windows somewhere, the manipulator exceeds to exist point. Testing the algoritm, at appendice-A there are many test for difference manipulator and differerent error value. From the graph plots show that when the manipulator degree of freedom is rise and the error value is minimize, the time cycle is rising and generally the error value will not become zero. So either the manipulators  frame's are changed or the manipulators link length are changed. 
At final part, The software program is introduced. To introduce which the release of the software is used and what it can be done with the program is explained. So the first the Python second the Vpython (which is our coding software program) is introduced and relatively which modules are used and what the differences of the project are. So to compac a code part the algoritm is coded class structure. So the helping of class structure if any mistake are found any place so it can be easily seen and fix. And to develop the code it is very useful. The class method is more popular for expert software user.
Lastly for testing the algoritm, different degree of freedom manipulators are entered the main code page. And it is showed that the code for the image is dynamic and the inverse kinematic algoritm is also dynamic because of the system goes the target position, and demostrated at graphs which satisfactoryly demonstrate the results.