亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? invkine_codepad.html

?? 模糊控制工具箱,很好用的,有相應的說明文件,希望對大家有用!
?? HTML
?? 第 1 頁 / 共 3 頁
字號:
<html xmlns:mwsh="http://www.mathworks.com/namespace/mcode/v1/syntaxhighlight.dtd">   <head>      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">         <!--This HTML is auto-generated from an M-file.To make changes, update the M-file and republish this document.      -->      <title>Modeling Inverse Kinematics in a Robotic Arm</title>      <meta name="generator" content="MATLAB 7.1">      <meta name="date" content="2005-06-24">      <meta name="m-file" content="invkine_codepad">      <link rel="stylesheet" type="text/css" href="../../../matlab/demos/private/style.css">   </head>   <body>      <div class="header">         <div class="right"><a href="matlab:invkine">Run in the Command Window</a></div>      </div>      <div class="content">         <h1>Modeling Inverse Kinematics in a Robotic Arm</h1>         <introduction>            <p>This demo illustrates using a fuzzy system to model the inverse kinematics in a two-joint robotic arm.</p>         </introduction>         <h2>Contents</h2>         <div>            <ul>               <li><a href="#1">What is Inverse Kinematics?</a></li>               <li><a href="#3">Why use Fuzzy logic?</a></li>               <li><a href="#4">Overview of Fuzzy Solution</a></li>               <li><a href="#5">What is ANFIS?</a></li>               <li><a href="#6">Data Generation</a></li>               <li><a href="#12">Building ANFIS networks</a></li>               <li><a href="#14">Validating the ANFIS networks</a></li>               <li><a href="#20">Building a solution around the trained ANFIS networks</a></li>               <li><a href="#22">Conclusion</a></li>               <li><a href="#23">Glossary</a></li>            </ul>         </div>         <h2>What is Inverse Kinematics?<a name="1"></a></h2>         <p>Kinematics is the science of motion. In a two-joint robotic arm, given the angles of the joints, the kinematics equations            give the location of the tip of the arm. Inverse kinematics refers to the reverse process. Given a desired location for the            tip of the robotic arm, what should the angles of the joints be so as to locate the tip of the arm at the desired location.            There is usually more than one solution and can at times be a difficult problem to solve.         </p>         <p>This is a typical problem in robotics that needs to be solved to control a robotic arm to perform tasks it is designated to            do. In a 2-dimensional input space, with a two-joint robotic arm and given the desired co-ordinate, the problem reduces to            finding the two angles involved. The first angle is between the first arm and the ground (or whatever it is attached to).            The second angle is between the first arm and the second arm.         </p>         <p><img vspace="5" hspace="5" src="invkine_angles.png"> </p>         <p><b>Figure 1:</b> Illustration showing the two-joint robotic arm with the two angles, <tt>theta1</tt> and <tt>theta2</tt></p>         <h2>Why use Fuzzy logic?<a name="3"></a></h2>         <p>For simple structures like the two-joint robotic arm, it is possible to mathematically deduce the angles at the joints given            the desired location of the tip of the arm. However with more complex structures (eg: n-joint robotic arms operating in a            3-dimensional input space) deducing a mathematical solution for the inverse kinematics may prove challenging.         </p>         <p>Using fuzzy logic, we can construct a Fuzzy Inference System that deduces the inverse kinematics if the forward kinematics            of the problem is known, hence sidestepping the need to develop an analytical solution. Also, the fuzzy solution is easily            understandable and does not require special background knowledge to comprehend and evaluate it.         </p>         <p>In the following section, a broad outline for developing such a solution is described, and later, the detailed steps are elaborated.</p>         <h2>Overview of Fuzzy Solution<a name="4"></a></h2>         <p>Since the forward kinematics formulae for the two-joint robotic arm are known, x and y co-ordinates of the tip of the arm            are deduced for the entire range of angles of rotation of the two joints. The co-ordinates and the angles are saved to be            used as training data to train ANFIS (Adaptive Neuro-Fuzzy Inference System) network.         </p>         <p>During training the ANFIS network learns to map the co-ordinates <tt>(x,y)</tt> to the angles <tt>(theta1, theta2)</tt>. The trained ANFIS network is then used as a part of a larger control system to control the robotic arm. Knowing the desired            location of the robotic arm, the control system uses the trained ANFIS network to deduce the angular positions of the joints            and applies force to the joints of the robotic arm accordingly to move it to the desired location.         </p>         <h2>What is ANFIS?<a name="5"></a></h2>         <p>ANFIS stands for Adaptive Neuro-Fuzzy Inference System. It is a hybrid neuro-fuzzy technique that brings learning capabilities            of neural networks to fuzzy inference systems. The learning algorithm tunes the membership functions of a <a href="matlab:helpview([docroot,'/toolbox/fuzzy/fuzzy.map'],'sugeno_type_fis')">Sugeno-type Fuzzy Inference System</a> using the training input-output data.         </p>         <p>In this case, the input-output data refers to the "coordinates-angles" dataset. The coordinates act as input to the ANFIS            and the angles act as the output. The learning algorithm "teaches" the ANFIS to map the co-ordinates to the angles through            a process called training. At the end of training, the trained ANFIS network would have learned the input-output map and be            ready to be deployed into the larger control system solution.         </p>         <h2>Data Generation<a name="6"></a></h2>         <p>Let <tt>theta1</tt> be the angle between the first arm and the ground. Let <tt>theta2</tt> be the angle between the second arm and the first arm (Refer to Figure 1 for illustration). Let the length of the first arm            be <tt>l1</tt> and that of the second arm be <tt>l2</tt>.         </p>         <p>Let us assume that the first joint has limited freedom to rotate and it can rotate between 0 and 90 degrees. Similarly, assume            that the second joint has limited freedom to rotate and can rotate between 0 and 180 degrees. (This assumption takes away            the need to handle some special cases which will confuse the discourse). Hence, <tt>0&lt;=theta1&lt;=pi/2</tt> and <tt>0&lt;=theta2&lt;=pi</tt>.         </p>         <p><img vspace="5" hspace="5" src="invkine_all_angles.png"> </p>         <p><b>Figure 2:</b> Illustration showing all possible <tt>theta1</tt> and <tt>theta2</tt> values.         </p>         <p>Now, for every combination of <tt>theta1</tt> and <tt>theta2</tt> values the x and y coordinates are deduced using forward kinematics formulae.         </p>         <p>The following code snippet shows how data is generated for all combination of <tt>theta1</tt> and <tt>theta2</tt> values and saved into a matrix to be used as training data. The reason for saving the data in two matrices is explained in            the following section.         </p><pre class="codeinput">l1 = 10; <span class="comment">% length of first arm</span>l2 = 7; <span class="comment">% length of second arm</span>theta1 = 0:0.1:pi/2; <span class="comment">% all possible theta1 values</span>theta2 = 0:0.1:pi; <span class="comment">% all possible theta2 values</span>[THETA1, THETA2] = meshgrid(theta1, theta2); <span class="comment">% generate a grid of theta1 and theta2 values</span>X = l1 * cos(THETA1) + l2 * cos(THETA1 + THETA2); <span class="comment">% compute x coordinates</span>Y = l1 * sin(THETA1) + l2 * sin(THETA1 + THETA2); <span class="comment">% compute y coordinates</span>data1 = [X(:) Y(:) THETA1(:)]; <span class="comment">% create x-y-theta1 dataset</span>data2 = [X(:) Y(:) THETA2(:)]; <span class="comment">% create x-y-theta2 dataset</span></pre><p><a href="matlab:edit('traininv')">Click here for unvectorized code</a></p>         <p>The following plot shows all the X-Y data points generated by cycling through different combinations of <tt>theta1</tt> and <tt>theta2</tt> and deducing x and y co-ordinates for each. The plot can be generated by using the code-snippet shown below. The plot is            illustrated further for easier understanding.         </p><pre>  plot(X(:), Y(:), 'r.');  axis equal;  xlabel('X')  ylabel('Y')  title('X-Y co-ordinates generated for all theta1 and theta2 combinations using forward kinematics formulae')</pre><p><img vspace="5" hspace="5" src="invkine_grid2.png"> </p>         <p><b>Figure 3:</b> X-Y co-ordinates generated for all <tt>theta1</tt> and <tt>theta2</tt> combinations using forward kinematics formulae         </p>         <h2>Building ANFIS networks<a name="12"></a></h2>         <p>One approach to building an ANFIS solution for this problem, is to build two ANFIS networks, one to predict <tt>theta1</tt> and the other to predict <tt>theta2</tt>.         </p>         <p>In order for the ANFIS networks to be able to predict the angles they have to be trained with sample input-output data. The            first ANFIS network will be trained with X and Y coordinates as input and corresponding <tt>theta1</tt> values as output. The matrix <tt>data1</tt> contains the <tt>x-y-theta1</tt> dataset required to train the first ANFIS network. Therefore <tt>data2</tt> will be used as the dataset to train the first ANFIS network.         </p>         <p>Similarly, the second ANFIS network will be trained with X and Y coordinates as input and corresponding <tt>theta2</tt> values as output. The matrix <tt>data2</tt> contains the <tt>x-y-theta2</tt> dataset required to train the second ANFIS network. Therefore <tt>data1</tt> will be used as the dataset to train the second ANFIS network.         </p>         <p><tt>anfis</tt> is the function that is used to train an ANFIS network. There are several syntaxes to the function. If called with the following            syntax, <tt>anfis</tt> automatically creates a Sugeno-type FIS and trains it using the training data passed to the function.         </p><pre class="codeinput">anfis1 = anfis(data1, 7, 150, [0,0,0,0]); <span class="comment">% train first ANFIS network</span>anfis2 = anfis(data2, 6, 150, [0,0,0,0]); <span class="comment">% train second ANFIS network</span></pre><p>The first parameter to <tt>anfis</tt> is the training data, the second parameter is the number of membership functions used to characterize each input and output,            the third parameter is the number of training <a href="#23">epochs</a> and the last parameter is the options to display progress during training. The values for number of epochs and the number            of membership functions have been arrived at after a fair amount of experimentation with different values.         </p>         <p>The toolbox comes with GUI's that helps build and experiment with ANFIS networks.</p>         <p><tt>anfis1</tt> and <tt>anfis2</tt> represent the two trained ANFIS networks that will be deployed in the larger control system.         </p>         <p>Once the training is complete, the two ANFIS networks would have learned to approximate the angles (<tt>theta1, theta2</tt>) as a function of the coordinates (<tt>x, y</tt>). One advantage of using the fuzzy approach is that the ANFIS network would now approximate the angles for coordinates that            are similar but not exactly the same as it was trained with. For example, the trained ANFIS networks are now capable of approximating            the angles for coordinates that lie between two points that were included in the training dataset. This will allow the final            controller to move the arm smoothly in the input space.         </p>         <p>We now have two trained ANFIS networks which are ready to be deployed into the larger system that will utilize these networks            to control the robotic arms.         </p>         <h2>Validating the ANFIS networks<a name="14"></a></h2>         <p>Having trained the networks, an important follow up step is to validate the networks to determine how well the ANFIS networks            would perform inside the larger control system.         </p>         <p>Since this demo problem deals with a two-joint robotic arm whose inverse kinematics formulae can be derived, it is possible            to test the answers that the ANFIS networks produce with the answers from the derived formulae.         </p>         <p>Let's assume that it is important for the ANFIS networks to have low errors within the operating range <tt>0&lt;x&lt;2</tt> and <tt>8&lt;y&lt;10</tt>.         </p><pre class="codeinput">x = 0:0.1:2; <span class="comment">% x coordinates for validation</span>y = 8:0.1:10; <span class="comment">% y coordinates for validation</span></pre><p>The <tt>theta1</tt> and <tt>theta2</tt> values are deduced mathematically from the x and y coordinates using inverse kinematics formulae.         </p><pre class="codeinput">[X, Y] = meshgrid(x,y);c2 = (X.^2 + Y.^2 - l1^2 - l2^2)/(2*l1*l2);s2 = sqrt(1 - c2.^2);THETA2D = atan2(s2, c2); <span class="comment">% theta2 is deduced</span>k1 = l1 + l2.*c2;k2 = l2*s2;THETA1D = atan2(Y, X) - atan2(k2, k1); <span class="comment">% theta1 is deduced</span></pre><p><a href="matlab:edit('traininv')">Click here for unvectorized code</a></p>         <p><tt>THETA1D</tt> and <tt>THETA2D</tt> are the variables that hold the values of <tt>theta1</tt> and <tt>theta2</tt> deduced using the inverse kinematics formulae.         </p>         <p><tt>theta1</tt> and <tt>theta2</tt> values predicted by the trained anfis networks are obtained by using the command <tt>evalfis</tt> which evaluates a FIS for the given inputs.         </p>         <p>Here, <tt>evalfis</tt> is used to find out the FIS outputs for the same x-y values used earlier in the inverse kinematics formulae.         </p><pre class="codeinput">XY = [X(:) Y(:)];THETA1P = evalfis(XY, anfis1); <span class="comment">% theta1 predicted by anfis1</span>THETA2P = evalfis(XY, anfis2); <span class="comment">% theta2 predicted by anfis2</span></pre><p>Now, we can see how close the FIS outputs are with respect to the deduced values.</p><pre class="codeinput">theta1diff = THETA1D(:) - THETA1P;theta2diff = THETA2D(:) - THETA2P;subplot(2,1,1);plot(theta1diff);ylabel(<span class="string">'THETA1D - THETA1P'</span>)title(<span class="string">'Deduced theta1 - Predicted theta1'</span>)subplot(2,1,2);plot(theta2diff);ylabel(<span class="string">'THETA2D - THETA2P'</span>)title(<span class="string">'Deduced theta2 - Predicted theta2'</span>)</pre><img vspace="5" hspace="5" src="invkine_codepad_01.png"> <p>The errors are in the <tt>1e-3</tt> range which is a fairly good number for the application it is being used in. However this may not be acceptable for another            application, in which case the parameters to the <tt>anfis</tt> function may be tweaked until an acceptable solution is arrived at. Also, other techniques like input selection and alternate            ways to model the problem may be explored.         </p>         <h2>Building a solution around the trained ANFIS networks<a name="20"></a></h2>         <p>Now given a specific task, such as robots picking up an object in an assembly line, the larger control system will use the

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91社区在线播放| 国产精品亚洲第一区在线暖暖韩国| 久久久久久麻豆| 精品国产三级a在线观看| 欧美群妇大交群的观看方式| 欧美特级限制片免费在线观看| 欧洲亚洲国产日韩| 欧美日韩一区二区三区免费看| 欧洲av一区二区嗯嗯嗯啊| 欧洲一区二区三区在线| 欧美日韩国产高清一区二区三区| 欧美高清性hdvideosex| 日韩欧美亚洲国产另类| 欧美va在线播放| 国产精品午夜春色av| 综合在线观看色| 亚洲小说欧美激情另类| 日本va欧美va精品| 国产精品中文有码| 一本色道久久综合狠狠躁的推荐| 欧美日韩美女一区二区| 日韩欧美综合在线| 国产欧美日韩视频在线观看| 亚洲精品国产无套在线观| 丝袜美腿亚洲色图| 国产a久久麻豆| 欧美性三三影院| 久久精品在这里| 亚洲三级电影全部在线观看高清| 午夜电影网一区| 成人天堂资源www在线| 欧美色综合网站| 久久久久国产精品麻豆ai换脸| 亚洲欧美日韩一区二区| 九九久久精品视频 | 欧美日韩三级在线| 欧美一区欧美二区| 中文字幕制服丝袜一区二区三区| 午夜精品久久久久久久蜜桃app| 国产一区二区精品久久91| 欧美日韩中文字幕一区二区| 久久网这里都是精品| 亚洲高清视频的网址| 国产精品18久久久久久久网站| 欧美三片在线视频观看| 国产欧美一区二区三区鸳鸯浴| 日韩中文字幕区一区有砖一区 | 国产精品嫩草影院com| 午夜久久久久久久久| 国产成人免费网站| 精品嫩草影院久久| 偷拍亚洲欧洲综合| 欧美国产一区视频在线观看| 国产精品成人午夜| 国产剧情一区二区| 日韩欧美一卡二卡| 亚洲v中文字幕| 色综合视频在线观看| 欧美激情一区三区| 韩国av一区二区三区| 宅男噜噜噜66一区二区66| 一区二区三区精品在线| 成人app软件下载大全免费| 久久久亚洲精品石原莉奈 | 日韩免费在线观看| 亚洲妇熟xx妇色黄| 一本久道久久综合中文字幕| 中文字幕中文字幕在线一区| 高清在线不卡av| 中文字幕av不卡| 福利电影一区二区三区| 久久蜜臀中文字幕| 国产盗摄精品一区二区三区在线| 精品久久久三级丝袜| 欧美aa在线视频| 欧美一级久久久久久久大片| 日韩成人免费看| 欧美喷水一区二区| 日本视频一区二区| 欧美www视频| 精品一区二区三区影院在线午夜 | 国产91露脸合集magnet| 国产欧美日韩精品a在线观看| 国产激情偷乱视频一区二区三区| 国产欧美久久久精品影院| 国产成人午夜精品5599| 中文字幕av一区二区三区免费看| 成人午夜av影视| 亚洲免费三区一区二区| 欧美亚洲免费在线一区| 性欧美大战久久久久久久久| 日韩欧美国产精品| 国产精品一二二区| 亚洲精品中文在线影院| 欧美天天综合网| 国产麻豆日韩欧美久久| 中文字幕在线不卡一区 | 国内国产精品久久| 久久久国产精品麻豆| 91在线视频网址| 天天色综合天天| 国产清纯在线一区二区www| 一本久久a久久精品亚洲| 免费高清在线视频一区·| 久久精品亚洲麻豆av一区二区| www.成人在线| 日本成人在线一区| 亚洲欧美一区二区在线观看| 欧美日韩精品欧美日韩精品| 精品写真视频在线观看| 亚洲另类春色校园小说| 日韩欧美一区二区三区在线| 国产91精品欧美| 日韩福利视频导航| 亚洲欧美日韩久久| 日韩精品自拍偷拍| 在线视频一区二区免费| 精品亚洲porn| 亚洲一区二区三区中文字幕| 2020日本不卡一区二区视频| 精品视频在线免费看| 国产风韵犹存在线视精品| 图片区小说区区亚洲影院| 国产精品福利影院| 日韩欧美国产小视频| 在线观看日韩电影| 不卡av电影在线播放| 黄网站免费久久| 亚洲成人动漫在线观看| 中文字幕一区二区三区蜜月| 26uuu另类欧美亚洲曰本| 制服.丝袜.亚洲.另类.中文| 91免费看片在线观看| 国产成人综合在线| 国产一区二区在线看| 蜜臀av性久久久久av蜜臀妖精 | 精品一区精品二区高清| 香蕉成人伊视频在线观看| 成人免费在线视频| 久久久亚洲午夜电影| 精品精品国产高清a毛片牛牛| 欧美日韩高清一区二区不卡| 色香色香欲天天天影视综合网| 成人综合在线视频| 麻豆精品国产91久久久久久| 婷婷综合五月天| 日韩中文字幕1| 免费高清成人在线| 老鸭窝一区二区久久精品| 三级欧美在线一区| 天堂在线一区二区| 亚洲午夜久久久久久久久久久| 亚洲天堂av老司机| 亚洲欧美精品午睡沙发| 国产精品国产三级国产三级人妇| 欧美国产成人在线| 国产精品久久福利| 亚洲视频在线一区| 夜夜精品浪潮av一区二区三区| 一区二区三区四区在线| 亚洲一区二区三区四区五区黄 | 韩国av一区二区三区在线观看| 九九精品一区二区| 国产精品一区专区| heyzo一本久久综合| av在线综合网| 欧美视频在线播放| 日韩精品一区二区三区四区| 精品国产免费人成在线观看| 久久久午夜电影| 中文字幕字幕中文在线中不卡视频| 成人免费在线视频观看| 亚洲国产色一区| 久久99精品网久久| 国产激情一区二区三区桃花岛亚洲| 成人av在线资源| 欧美性生活久久| 2024国产精品| 亚洲美女淫视频| 日韩不卡在线观看日韩不卡视频| 久久99国内精品| 色综合色狠狠天天综合色| 3d成人动漫网站| 国产欧美va欧美不卡在线| 亚洲午夜免费电影| 国产乱码字幕精品高清av | 欧美电影免费观看高清完整版在线观看| 精品国产露脸精彩对白| 亚洲精品成人悠悠色影视| 蜜桃一区二区三区在线| 97久久超碰国产精品| 日韩精品一区二区在线| 亚洲精品美腿丝袜| 国产精品一区二区无线| 91精品1区2区| 国产视频一区二区在线观看| 亚洲最新在线观看| 成人免费精品视频| 精品少妇一区二区三区免费观看| 国产精品国模大尺度视频|