[{"data":1,"prerenderedAt":1471},["ShallowReactive",2],{"wiki-page-/wiki/2023-12-30-ros2-tutorial/ch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi":3,"wiki-doc-items-/wiki/2023-12-30-ros2-tutorial/ch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi":1327},{"id":4,"title":5,"body":6,"chapter":1311,"chapterSort":1312,"date":1313,"description":15,"docKey":1314,"docRoot":1315,"docTitle":1316,"extension":1317,"isWikiDoc":1318,"isWikiIndex":1319,"layout":1320,"meta":1321,"navigation":1318,"path":1322,"seo":1323,"stem":1324,"wikiDepth":1325,"__hash__":1326},"content/wiki/2023-12-30-ros2-tutorial/ch16-Moveit2工业机器人机械臂.md","Moveit2工业机器人机械臂",{"type":7,"value":8,"toc":1308},"minimark",[9,18,22,28,34,38,43,59,62,69,72,77,80,84,87,90,99,104,107,112,115,123,128,131,139,142,145,148,153,158,163,166,169,174,177,180,183,188,193,198,201,206,209,212,215,220,225,228,236,239,244,250,255,258,261,264,267,270,273,276,283,286,291,298,305,310,313,318,326,329,334,337,342,347,350,353,356,363,368,373,376,379,384,391,394,399,402,410,415,418,423,426,429,432,435,440,443,446,451,454,457,460,465,468,473,476,479,484,487,492,495,500,503,506,509,514,517,520,525,528,533,536,539,542,545,550,553,556,559,562,565,573,576,581,586,589,592,595,600,603,606,611,614,617,622,627,630,641,644,647,650,653,656,660,663,668,671,674,677,682,685,688,691,694,697,702,705,708,713,716,719,722,727,730,735,738,741,746,749,754,757,760,763,768,771,774,779,783,788,793,796,799,802,805,810,813,818,821,826,829,834,837,842,845,850,853,858,863,866,869,872,875,878,882,887,890,895,898,901,904,907,910,915,918,923,926,929,934,937,940,943,948,951,956,959,964,967,972,975,980,983,986,989,992,995,998,1003,1006,1011,1014,1018,1023,1031,1035,1040,1043,1051,1055,1060,1065,1068,1073,1077,1082,1085,1088,1091,1094,1099,1102,1107,1112,1120,1128,1136,1139,1147,1150,1153,1156,1161,1164,1167,1173,1178,1183,1186,1191,1194,1199,1202,1207,1212,1217,1220,1223,1228,1236,1239,1242,1247,1250,1255,1258,1261,1266,1269,1272,1275,1278,1283,1286,1291,1294,1297,1302,1305],[10,11,12],"p",{},[13,14,15],"a",{"href":15,"rel":16},"https://moveit.ros.org/",[17],"nofollow",[19,20,21],"h3",{"id":21},"机器人学",[10,23,24],{},[13,25,26],{"href":26,"rel":27},"https://www.bilibili.com/video/BV1v4411H7ez",[17],[10,29,30],{},[13,31,32],{"href":32,"rel":33},"https://www.bilibili.com/video/av59243185",[17],[35,36,37],"h4",{"id":37},"理论基础",[39,40,42],"h5",{"id":41},"dof自由度","DOF(自由度)",[10,44,45,46,50,51,54,55,58],{},"简单来说，自由度(以下统称为dof)指的是 ",[47,48,49],"strong",{},"物体在空间里面的基本运动方式"," ，总共有6种。任何运动都可以拆分成这6种基本运动方式，而这6种基本运动方式又可以分为两类： ",[47,52,53],{},"位移"," 和 ",[47,56,57],{},"旋转"," 。",[10,60,61],{},"位移：X轴、Y轴、Z轴的平动",[10,63,64],{},[65,66],"img",{"alt":67,"src":68},"","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1834.webp",[10,70,71],{},"旋转：Roll横滚角(绕X转动)、Pitch俯仰角(绕Y转动)、Yaw航向角(绕Z转动)",[10,73,74],{},[65,75],{"alt":67,"src":76},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1835.webp",[35,78,79],{"id":79},"数理基础",[39,81,83],{"id":82},"位姿位置与姿态的表示","位姿（位置与姿态）的表示",[10,85,86],{},"倘若在一个空间里有一个刚体（frame），我们如何确定刚体在这个空间里的位姿呢？",[10,88,89],{},"首先要建立一个世界坐标系（world frame），然后要在刚体上建立刚体坐标系（body frame）.",[91,92,93],"ol",{},[94,95,96],"li",{},[47,97,98],{},"位置的描述",[10,100,101],{},[65,102],{"alt":67,"src":103},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1836.webp",[10,105,106],{},"描述刚体的质心(一个点)在世界中的位置，就可以用一个3X1向量来表示.",[10,108,109],{},[65,110],{"alt":67,"src":111},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1837.webp",[10,113,114],{},"这样就知道了平动的三个DOF。",[91,116,118],{"start":117},2,[94,119,120],{},[47,121,122],{},"方位的描述",[10,124,125],{},[65,126],{"alt":67,"src":127},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1838.webp",[10,129,130],{},"设世界坐标系为A，刚体坐标系为B。",[10,132,133,136],{},[65,134],{"alt":67,"src":135},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1839.webp",[65,137],{"alt":67,"src":138},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1840.webp",[10,140,141],{},"上面这个矩阵就叫旋转矩阵（Rotation Matrix），是一个3*3的正交矩阵，ABR描述的是A为参考坐标系，B相对于A的方向。",[10,143,144],{},"每一个列向量，都代表B的对应坐标轴各自指向的方向。",[10,146,147],{},"每一列向量都是B的对应的坐标轴相对于A的方向余弦（Direct Cosines）。",[10,149,150],{},[65,151],{"alt":67,"src":152},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1841.webp",[10,154,155],{},[65,156],{"alt":67,"src":157},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1842.webp",[10,159,160],{},[65,161],{"alt":67,"src":162},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1843.webp",[10,164,165],{},"旋转矩阵的每个元素 r ij代表 B 的第 j 轴与 A 的第 i 轴的方向余弦.",[10,167,168],{},"实在看不懂，先来看下面来看例子：",[10,170,171],{},[65,172],{"alt":67,"src":173},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1844.webp",[10,175,176],{},"B的X轴在A中怎么表示？可以看出来，B的X正好是A的Z轴的负半轴，那就是0，0，-1.",[10,178,179],{},"B的Y轴在A中怎么表示？可以看出来，B的Y正好是A的Y轴的正半轴，那就是0，1，0.",[10,181,182],{},"B的Z轴在A中怎么表示？可以看出来，B的Z正好是A的X轴的正半轴，那就是1，0，0.",[10,184,185],{},[65,186],{"alt":67,"src":187},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1845.webp",[10,189,190],{},[65,191],{"alt":67,"src":192},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1846.webp",[10,194,195],{},[65,196],{"alt":67,"src":197},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1847.webp",[10,199,200],{},"这个例子里，AB的Z重合了，所以我们只看上视图就可以了。",[10,202,203],{},[65,204],{"alt":67,"src":205},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1848.webp",[10,207,208],{},"就是把XB这个单位向量，投影到A的X和Y上看分量即可。",[10,210,211],{},"同理YB也一样。",[10,213,214],{},"ZB和ZA重合，比较简单。",[10,216,217],{},[65,218],{"alt":67,"src":219},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1849.webp",[10,221,222],{},[65,223],{"alt":67,"src":224},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1850.webp",[10,226,227],{},"答案是B。",[91,229,231],{"start":230},3,[94,232,233],{},[47,234,235],{},"位姿的描述",[10,237,238],{},"通过BF在WF的状态，就可以知道刚体在世界中的位姿。",[10,240,241],{},[65,242],{"alt":67,"src":243},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1851.webp",[91,245,247],{"start":246},4,[94,248,249],{},"运动的描述",[10,251,252],{},[65,253],{"alt":67,"src":254},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1852.webp",[10,256,257],{},"红色是刚体运动的轨迹线，",[10,259,260],{},"轨迹（平动DOF）对时间的微分(导数)，就是刚体线速度。",[10,262,263],{},"刚体速度再对时间的微分(导数)，就是刚体线加速度。",[10,265,266],{},"同理,转动DOF对时间的微分(导数)，就是刚体的角速度。",[10,268,269],{},"角速度再对时间的微分(导数)，就是刚体角加速度。",[39,271,272],{"id":272},"旋转矩阵",[10,274,275],{},"特性：",[10,277,278,279,282],{},"由于旋转矩阵R里每个元素都是两个向量内积，内积是可以交换位置且最后结果",[47,280,281],{},"数值不变","的。",[10,284,285],{},"所以我们选择交换位置。",[10,287,288],{},[65,289],{"alt":67,"src":290},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1853.webp",[10,292,293,294,297],{},"原始的R是每一 ",[47,295,296],{},"列"," 都是B的某一轴在A系的分量。",[10,299,300,301,304],{},"交换位置后的R是每一 ",[47,302,303],{},"行"," 都是A的某一轴在B系的分量。",[10,306,307],{},[65,308],{"alt":67,"src":309},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1854.webp",[10,311,312],{},"结论：所以说Rab = Rba的T。",[10,314,315],{},[65,316],{"alt":67,"src":317},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1855.webp",[10,319,320,323],{},[65,321],{"alt":67,"src":322},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1856.webp",[65,324],{"alt":67,"src":325},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1857.webp",[10,327,328],{},"他俩明显是转置关系。",[10,330,331],{},[65,332],{"alt":67,"src":333},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1858.webp",[10,335,336],{},"RT*R=I3（3*3单位阵）(正交阵orthogonal matrix的性质)",[10,338,339],{},[65,340],{"alt":67,"src":341},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1859.webp",[10,343,344],{},[65,345],{"alt":67,"src":346},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1860.webp",[10,348,349],{},"还有个性质就是|R|=1",[10,351,352],{},"虽然有9个数字，但是啊，因为正交阵的性质，所以是有约束条件的，这9个数字里有6个数字是随着其他数字变化而变化的，所以这9个数字实际上只有3个参数可以任意选择，也就是旋转矩阵实际上只有3个自由度。(转动DOF)",[10,354,355],{},"旋转矩阵的一个功能如下：",[10,357,358,359,362],{},"比如说另一个坐标系B相对于A坐标系绕X,Y,Z轴各自",[47,360,361],{},"逆时针","转动theta度的旋转矩阵。",[10,364,365],{},[65,366],{"alt":67,"src":367},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1861.webp",[10,369,370],{},[65,371],{"alt":67,"src":372},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1862.webp",[10,374,375],{},"在中国大陆教材中，常用R(X,theta)来代替图中的RXA(theta)。图中这个A指的是原坐标系，得出来的AP`也是原坐标下的坐标。",[10,377,378],{},"这样的话，AP左乘一个R就得出来了P转动后在A系的坐标。（一定要与下面讲的旋转坐标变换分清楚，很容易混淆）",[10,380,381],{},[65,382],{"alt":67,"src":383},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1863.webp",[10,385,386,387,390],{},"P逆时针转动30度后，在",[47,388,389],{},"原坐标系","中的坐标为002.",[10,392,393],{},"总结：旋转矩阵主要是三种用法，如下图：",[10,395,396],{},[65,397],{"alt":67,"src":398},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1864.webp",[39,400,401],{"id":401},"坐标变换",[91,403,404,407],{},[94,405,406],{},"平移坐标变换",[94,408,409],{},"旋转坐标变换",[10,411,412],{},[65,413],{"alt":67,"src":414},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1865.webp",[10,416,417],{},"这里的APX是个数值，XA等是矢量，加法是矢量加法，最后得出来的是AP向量。",[10,419,420],{},[65,421],{"alt":67,"src":422},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1866.webp",[10,424,425],{},"重要结论就是AP = ABR*BP.(注意是矩阵的左乘)",[10,427,428],{},"AP就是P在A系的坐标。",[10,430,431],{},"BP就是P在B系的坐标。",[10,433,434],{},"ABR就是A为参考坐标系，B相对于A的旋转矩阵。",[10,436,437],{},[65,438],{"alt":67,"src":439},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1867.webp",[39,441,442],{"id":442},"物体的变换及逆变换",[10,444,445],{},"物体平动的顺序可以互相颠倒,但是物体转动的顺序不能互相颠倒,否则姿态会不一样.",[10,447,448],{},[65,449],{"alt":67,"src":450},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1868.webp",[10,452,453],{},"主要是两种拆解方式,一个是设一个固定的坐标系,一直按这个坐标系转动,",[10,455,456],{},"另一个方式是假设物体的坐标系.",[35,458,459],{"id":459},"机械臂描述方式",[10,461,462],{},[65,463],{"alt":67,"src":464},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1869.webp",[10,466,467],{},"Link 0一般也叫base_Link",[10,469,470],{},[65,471],{"alt":67,"src":472},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1870.webp",[10,474,475],{},"先看好相对关系，Axis i-1的后面才是Link i - 1(当然其他描述也成立)",[35,477,478],{"id":478},"描述各关节之间的关系",[10,480,481],{},[65,482],{"alt":67,"src":483},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1871.webp",[10,485,486],{},"也就是公垂线(唯一解)，其长度为Link Length连杆长度",[10,488,489],{},[65,490],{"alt":67,"src":491},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1872.webp",[10,493,494],{},"现在只是限制住了两个轴的距离，两个轴还是可以转动的，所以需要下一个参数，Link Twist连杆扭角。",[10,496,497],{},[65,498],{"alt":67,"src":499},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1873.webp",[10,501,502],{},"这个角就是沿中垂线，把后一个轴线沿中垂线往当前轴移动，然后形成的夹角叫Link Twist连杆扭角。",[10,504,505],{},"也就是说，针对空间中任意两个转轴，我们需要两个参数来进行描述，也就是Link Length和Link Twist。",[10,507,508],{},"如果是多个串起来的转轴，我们就无法找到对应关系了，比如说",[10,510,511],{},[65,512],{"alt":67,"src":513},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1874.webp",[10,515,516],{},"上面这个图，我没法表示ai-1与ai在轴线Axis i上的相对关系以及相对姿态是什么样子的。",[10,518,519],{},"所以还需要其他参数。",[10,521,522],{},[65,523],{"alt":67,"src":524},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1875.webp",[10,526,527],{},"首先肯定需要一个长度，两个公垂线在Axis i上的距离，叫做Link Offset，连杆偏距。",[10,529,530],{},[65,531],{"alt":67,"src":532},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1876.webp",[10,534,535],{},"然后还需要一个角，Joint Angle连杆夹角，也叫关节角。",[10,537,538],{},"其实发现，这四个参数，只有一个参数是变化的，其他都是固定的。",[10,540,541],{},"如果ioint type是revolute joint，那么thetai变化，其他不变。",[10,543,544],{},"如果joint type是prismatic joint，那么di变化，其他不变。",[10,546,547],{},[65,548],{"alt":67,"src":549},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1877.webp",[10,551,552],{},"描述两个轴需要2个参数，连杆长度与连杆扭角。",[10,554,555],{},"描述多个轴串在一起需要4个参数(每两两杆件都需要4个参数)，连杆长度Link Length，连杆扭角Link Twist，连杆偏距Link Offset，连杆夹角Joint Angle。",[35,557,558],{"id":558},"在joint上建立frame",[10,560,561],{},"咱们一般把Z方向定义成和转轴的方向一样，Z朝上或朝下是看怎么朝向，这两个轴的夹角最小，这样就能够确定Z的方向了。",[10,563,564],{},"Xi的方向是沿着ai的方向。",[10,566,567,570],{},[65,568],{"alt":67,"src":569},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1878.webp",[65,571],{"alt":67,"src":572},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1879.webp",[10,574,575],{},"Xi与Zi+1和Zi都垂直。",[10,577,578],{},[65,579],{"alt":67,"src":580},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1880.webp",[10,582,583],{},[65,584],{"alt":67,"src":585},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1881.webp",[10,587,588],{},"右手定则，判断Y方向。",[10,590,591],{},"原点是Z和X的交点。",[10,593,594],{},"若是建立base_link(link0)与link1的话，则是特殊情况。（base_link是immobile不动的）",[10,596,597],{},[65,598],{"alt":67,"src":599},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1882.webp",[10,601,602],{},"frame0和frame1重叠(重合)。通常，比如说是个旋转关节，虽然规定theta是arbitrary任意的，但是我把theta固定成0，然后让frame0和frame1(theta",[10,604,605],{},"= 0)重合。如果是平动关节，那么同理也取d=0的时候的frame1。注意，这里是重叠重合，并不是形状相同，而是完全重叠的坐标系。",[10,607,608],{},[65,609],{"alt":67,"src":610},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1883.webp",[10,612,613],{},"最后一个杆件，也差不多，因为Xn和Xn-1都要垂直于Axis n(Zn)，所以最简单的方法就是让Xn与Xn-1方向一致。",[10,615,616],{},"Xn取Xn-1的方向。也就是framen和framen-1是延长的。",[10,618,619],{},[47,620,621],{},"下面是重点中的重点：(有好几种方法判断，如有错误请讨论后修改)",[10,623,624],{},[65,625],{"alt":67,"src":626},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1884.webp",[10,628,629],{},"需要知道的常识：",[91,631,632,635,638],{},[94,633,634],{},"一般连杆扭角按逆时针是正值。",[94,636,637],{},"我们常说的转向，是从逆着的方向去看，也就是让箭头指向眼睛的方向去看的。",[94,639,640],{},"从轴的逆方向去看和顺着方向去看转向，是完全相反的方向，但是在平面上容易产生视觉错觉，难以理解。可以拿支笔或者电机，转动一下试试。",[10,642,643],{},"①alphai-1是正值还是负值，要看Zi-1到Zi的角是顺时针还是逆时针，伸出右手，让拇指沿Xi-1的方向，如果alphai-1顺着四指方向则为逆时针，正值，反之为顺时针，负值。",[10,645,646],{},"所以如图，alphai-1是逆时针，所以是正值。",[10,648,649],{},"②ai-1的长度因为是长度，所以永远是正值，然后值为Z轴间的相对距离。",[10,651,652],{},"③thetai的角度也基本同理，将右手大拇指沿着Zi的方向，若thetai顺着四指方向则为逆时针，逆着则为顺时针。",[10,654,655],{},"④di的大小方向要看从ai-1沿着zi的方向到ai，则是正值，反之为负值，大小即为距离。",[35,657,659],{"id":658},"link-transformations","Link Transformations",[39,661,662],{"id":662},"理论",[10,664,665],{},[65,666],{"alt":67,"src":667},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1885.webp",[10,669,670],{},"我们两个关节都有俩轴，一个Axisi-1一个是Axisi，我们也有俩frame，一个是framei-1一个是framei。",[10,672,673],{},"我们需要找到两个frame之间的关系式是什么，也就是找到变换矩阵Transformation Matrix。",[10,675,676],{},"然后将Trans Matrix量化即可。",[10,678,679],{},[65,680],{"alt":67,"src":681},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1886.webp",[10,683,684],{},"假设说有一个点P，他在frame i下的表达是Pi，如果我们找到了Ti-1 i的矩阵，那么就有办法，获得P在frame i-1下的表达了。",[10,686,687],{},"所以我们现在需要，用刚才找到的四个参数，转化成我们的Trans Matrix。",[10,689,690],{},"这四个参数，也就是ai-1，alphai-1，di和thetai，足以可以表达framei-1到framei了。",[10,692,693],{},"①首先在Axis i-1上，",[10,695,696],{},"先描述alpha，就把framei-1的Zi-1旋转到差不多Zi的方向，生成FrameR（只旋转Z，X不动，然后右手定则判断Y）",[10,698,699],{},[65,700],{"alt":67,"src":701},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1887.webp",[10,703,704],{},"②然后描述a，",[10,706,707],{},"就把FrameR沿着ai-1的方向移动到Zi上，",[10,709,710],{},[65,711],{"alt":67,"src":712},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1888.webp",[10,714,715],{},"③再描述theta",[10,717,718],{},"我们转动frameR中的ZR，使其与ai方向相同，生成frameP（X动，Z不动，右手定则判断Y）",[10,720,721],{},"这样搞完之后，Xp的方向与Xi是相同的，Zp的方向也与Zi相同。",[10,723,724],{},[65,725],{"alt":67,"src":726},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1889.webp",[10,728,729],{},"④再描述d，也就是把FrameP往上拉，最后会与Framei重合。",[10,731,732],{},[65,733],{"alt":67,"src":734},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1890.webp",[10,736,737],{},"也就是从Framei - 1到Frame R，然后再到Frame Q，然后再到Frame P，最后到Frame i。一共四次转化。",[10,739,740],{},"刚才我们演示的是从Pi-1到Pi，现在我们要求的是从我们的Pi要到Pi-1，那么就是倒着左乘，先乘Tp i接着往下以此类推。",[10,742,743],{},[65,744],{"alt":67,"src":745},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1891.webp",[10,747,748],{},"从连杆i到连杆i-1的坐标系间的齐次变换矩阵T i-1 i=Rot(X，aplhai-1)Trans(ai-1,0,0)Rot(Z,thetai)Trans(0,0,di)",[10,750,751],{},[65,752],{"alt":67,"src":753},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1892.webp",[10,755,756],{},"左上角是3X3的旋转矩阵，所以只有角度theta和alpha参数，",[10,758,759],{},"右上角3X1的矩阵，也就是frame i的原点相对于frame i - 1的原点的向量。然后是从frame i - 1去看。所以他是长度与角度的复合。",[10,761,762],{},"最后一行的1X4的矩阵，是0001是固定数不动的。",[10,764,765],{},[65,766],{"alt":67,"src":767},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1893.webp",[10,769,770],{},"对于连续的杆件，我们可以从base_link一直算到linkx，x想是几就是几。",[10,772,773],{},"比如说，现在有三个杆件，我们找到T23（3对2的），T12（1对2的）T01（地对1的），就可以找到T03（地对3的）",[10,775,776],{},[65,777],{"alt":67,"src":778},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1894.webp",[39,780,782],{"id":781},"example","Example",[784,785,787],"h6",{"id":786},"平面rrr类型","平面RRR类型",[10,789,790],{},[65,791],{"alt":67,"src":792},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1895.webp",[10,794,795],{},"①先找到关节转轴Joint Axes",[10,797,798],{},"三个转轴是三个红点，是点的话，也就是出纸面的方向。（因为，他是个平面的，所以说，每个Z轴之间的角度都是0，所以说Link Twist Alpha是0，所以Z的方向都随便取，但是咱们这里，假设关节都是逆时针旋转，按右手螺旋定则来看，Z就都朝上）",[10,800,801],{},"②再找到公垂线Common Perpendiculars",[10,803,804],{},"但是由于Axis都是互相平行的，所以说，这个公垂线有无数多条，所以我们就在一个平面内表达即可。",[10,806,807],{},[65,808],{"alt":67,"src":809},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1896.webp",[10,811,812],{},"③下一步定义Zi向量（Z方向与转轴方向相同所以也是向上。）",[10,814,815],{},[65,816],{"alt":67,"src":817},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1897.webp",[10,819,820],{},"④然后判断中间的Xi向量",[10,822,823],{},[65,824],{"alt":67,"src":825},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1898.webp",[10,827,828],{},"⑤然后判断中间的Yi向量",[10,830,831],{},[65,832],{"alt":67,"src":833},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1899.webp",[10,835,836],{},"⑥然后判断头和尾，也就是frame 0 和frame n",[10,838,839],{},[65,840],{"alt":67,"src":841},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1900.webp",[10,843,844],{},"其实，我们可以把frame0和frame1建的完全重合，就是让alpha和theta都为0，如图并没有重合，所以有theta大小。",[10,846,847],{},[65,848],{"alt":67,"src":849},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1901.webp",[10,851,852],{},"最后一个杆件也一样，建议让X3的方向和X2方向重合，这样的话，theta和alpha都是0。",[10,854,855],{},[65,856],{"alt":67,"src":857},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1902.webp",[10,859,860],{},[65,861],{"alt":67,"src":862},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1903.webp",[10,864,865],{},"因为每个轴都是平行的，所以alpha是0，由于ai都是同平面的，所以d也为0.",[10,867,868],{},"因为frame0和frame1重合，所以a0 = 0，然后a1 = L1，a2 = L2",[10,870,871],{},"由于全是RRR，所以，theta都是变化的角。",[10,873,874],{},"P点末端执行器，也可以算出，沿X3方向走，获得P在frame n的表达，然后就可以推出P在frame 0中的表达了。",[10,876,877],{},"如图的，P点在Frame3里的坐标是（L3，0，0）",[784,879,881],{"id":880},"rpr类型","RPR类型",[10,883,884],{},[65,885],{"alt":67,"src":886},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1904.webp",[10,888,889],{},"①先找到转轴",[10,891,892],{},[65,893],{"alt":67,"src":894},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1905.webp",[10,896,897],{},"按右手螺旋来。",[10,899,900],{},"②找公垂线",[10,902,903],{},"因为frame1的Z1和frame2的Z2相交，所以，没有公垂线。",[10,905,906],{},"frame2的Z2和frame3的Z3重合，所以也没有公垂线。",[10,908,909],{},"也就是说a全是0.",[10,911,912],{},[65,913],{"alt":67,"src":914},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1906.webp",[10,916,917],{},"③建立Zi向量",[10,919,920],{},[65,921],{"alt":67,"src":922},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1907.webp",[10,924,925],{},"Zi方向与转轴方向相同。",[10,927,928],{},"④Xi的向量",[10,930,931],{},[65,932],{"alt":67,"src":933},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1908.webp",[10,935,936],{},"当Z1和Z2相交时，我们挑X的方向就挑和Z1和Z2都垂直的，有两种方案，要么X往前，要么往后，如图是往后的。",[10,938,939],{},"X1和X2必须平行，因为是个P类型的关节",[10,941,942],{},"⑤Y轴",[10,944,945],{},[65,946],{"alt":67,"src":947},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1909.webp",[10,949,950],{},"⑥Frame 0和frame n",[10,952,953],{},[65,954],{"alt":67,"src":955},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1910.webp",[10,957,958],{},"frame 0 和frame1重合",[10,960,961],{},[65,962],{"alt":67,"src":963},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1911.webp",[10,965,966],{},"让X3方向与X2方向相同",[10,968,969],{},[65,970],{"alt":67,"src":971},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1912.webp",[10,973,974],{},"如图，驱动的关节参数分别是theta1，d2，theta3",[10,976,977],{},[65,978],{"alt":67,"src":979},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1913.webp",[10,981,982],{},"由于frame0和frame1重合，那么alpha0 = 0，",[10,984,985],{},"从Z1到Z2的角，伸右手大拇指指向X1，然后四指与Z1到Z2方向相同，所以是逆时针，为正值，所以是90度。",[10,987,988],{},"然后fame2到frame3，Z共线，所以alpha2=0",[10,990,991],{},"然后由于Zi有的相交，有的共线，所以a全是0",[10,993,994],{},"然后d1是0，因为frame0和frame1重合，",[10,996,997],{},"d2是d2，d3是L2（d是X在Axis上的距离）",[10,999,1000],{},[65,1001],{"alt":67,"src":1002},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1914.webp",[10,1004,1005],{},"P点在Frame3上的坐标为（0，0，L3）",[10,1007,1008],{},[65,1009],{"alt":67,"src":1010},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1915.webp",[10,1012,1013],{},"其实Z方向有俩选择，X也有俩选择，一共四种选择，选择自己好理解，好计算的方案即可。",[784,1015,1017],{"id":1016},"中国台积电晶圆机器人prrr类型4个自由度","中国台积电晶圆机器人(PRRR类型4个自由度)",[10,1019,1020],{},[65,1021],{"alt":67,"src":1022},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1916.webp",[10,1024,1025,1028],{},[65,1026],{"alt":67,"src":1027},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1917.webp",[65,1029],{"alt":67,"src":1030},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1918.webp",[784,1032,1034],{"id":1033},"scara机器人rrrp类型4个自由度","SCARA机器人(RRRP类型4个自由度)",[10,1036,1037],{},[65,1038],{"alt":67,"src":1039},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1919.webp",[10,1041,1042],{},"该机器人最后一个关节是既可以R又可以P的，所以是个RP关节，既可以先算R也可以先算P。",[10,1044,1045,1048],{},[65,1046],{"alt":67,"src":1047},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1920.webp",[65,1049],{"alt":67,"src":1050},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1921.webp",[784,1052,1054],{"id":1053},"rp类型","RP类型",[10,1056,1057],{},[65,1058],{"alt":67,"src":1059},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1922.webp",[10,1061,1062],{},[65,1063],{"alt":67,"src":1064},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1923.webp",[10,1066,1067],{},"选D，因为俩自由度，所以有俩驱动参数。",[10,1069,1070],{},[65,1071],{"alt":67,"src":1072},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1924.webp",[35,1074,1076],{"id":1075},"执行器关节与笛卡尔空间actuator-joint-and-cartesian-spaces","执行器关节与笛卡尔空间(Actuator Joint and Cartesian Spaces)",[10,1078,1079],{},[65,1080],{"alt":67,"src":1081},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1925.webp",[10,1083,1084],{},"我们这里的驱动是theta1-3，",[10,1086,1087],{},"当我们知道theta1-3的值之后，我们就会知道P点在世界坐标系上的表达。",[10,1089,1090],{},"这被叫做正向运动学（Forward Kinematics）。",[10,1092,1093],{},"由P点世界坐标系反算关节角度，那么叫逆向运动学（Inverse Kinematics）。",[10,1095,1096],{},[65,1097],{"alt":67,"src":1098},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1926.webp",[10,1100,1101],{},"Actuator Space就是驱动器空间，比如一个电机怎么操控能转joint space下的固定角（经过一系列转换）。",[10,1103,1104],{},[65,1105],{"alt":67,"src":1106},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1927.webp",[10,1108,1109],{},[65,1110],{"alt":67,"src":1111},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1928.webp",[10,1113,1114,1117],{},[65,1115],{"alt":67,"src":1116},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1929.webp",[65,1118],{"alt":67,"src":1119},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1930.webp",[10,1121,1122,1125],{},[65,1123],{"alt":67,"src":1124},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1931.webp",[65,1126],{"alt":67,"src":1127},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1932.webp",[10,1129,1130,1133],{},[65,1131],{"alt":67,"src":1132},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1933.webp",[65,1134],{"alt":67,"src":1135},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1934.webp",[10,1137,1138],{},"有转动有移动的部分（所以需要两个电机来达到这两个自由度）",[10,1140,1141,1144],{},[65,1142],{"alt":67,"src":1143},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1935.webp",[65,1145],{"alt":67,"src":1146},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1936.webp",[10,1148,1149],{},"同步带机构使其旋转。（第一个电机）",[10,1151,1152],{},"齿轮齿条机构达到上下移动。（第二个电机）",[10,1154,1155],{},"但是，这两个并不是独立的，因为是同轴驱动的，所以有些负荷。",[10,1157,1158],{},[65,1159],{"alt":67,"src":1160},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1937.webp",[10,1162,1163],{},"两个转动变成一个转动一个移动。",[35,1165,1166],{"id":1166},"正运动学",[10,1168,1169,1172],{},[47,1170,1171],{},"定义"," ：已知机器人各个关节（或轮子等驱动单元）的运动参数（如角度、位移、速度等），计算末端执行器的位置和姿态。",[10,1174,1175],{},[65,1176],{"alt":67,"src":1177},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1938.webp",[10,1179,1180],{},[65,1181],{"alt":67,"src":1182},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1939.webp",[10,1184,1185],{},"ads=dv/dt * ds = ds/dt *dv = vdv",[10,1187,1188],{},[65,1189],{"alt":67,"src":1190},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1940.webp",[10,1192,1193],{},"牛顿第二定律，能量守恒，冲量与动量",[10,1195,1196],{},[65,1197],{"alt":67,"src":1198},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1941.webp",[10,1200,1201],{},"Wp就是P点在世界坐标系下的坐标",[10,1203,1204],{},[65,1205],{"alt":67,"src":1206},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1942.webp",[10,1208,1209],{},[65,1210],{"alt":67,"src":1211},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1943.webp",[10,1213,1214],{},[65,1215],{"alt":67,"src":1216},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1944.webp",[10,1218,1219],{},"可以根据该公式，得知末端执行器在世界坐标系中的坐标。",[35,1221,1222],{"id":1222},"逆运动学",[10,1224,1225,1227],{},[47,1226,1171],{}," ：已知末端执行器的目标位置和姿态，计算需要让各个关节（或轮子等驱动单元）运动到什么角度或速度才能达到该目标。",[10,1229,1230,1233],{},[65,1231],{"alt":67,"src":1232},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1945.webp",[65,1234],{"alt":67,"src":1235},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1946.webp",[10,1237,1238],{},"先知道末端执行器的某个点P在世界坐标系中的表达，也就是给出Pw或者末端执行器某个点上的frameH，",[10,1240,1241],{},"通过Pw求出theta。",[10,1243,1244],{},[65,1245],{"alt":67,"src":1246},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1947.webp",[10,1248,1249],{},"这样手臂就有6个未知数",[10,1251,1252],{},[65,1253],{"alt":67,"src":1254},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1948.webp",[10,1256,1257],{},"16个数字，转动的部分占了9个数字，也就是左上角的3X3的旋转矩阵，然后右上角3X1的向量表示相对于原点的位移量是什么。（也就是frame6的原点相对于frame0的原点位移量是什么）",[10,1259,1260],{},"下面的0001是整数，固定的，不变的。",[10,1262,1263],{},[65,1264],{"alt":67,"src":1265},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1949.webp",[10,1267,1268],{},"这个旋转矩阵里，有3个长度条件，3个互相垂直条件，所以9个数字里，就剩3个自由度。（也就是向量长度为1限制3个，向量两两垂直限制3个，所以是平移矩阵，3个自由度）",[10,1270,1271],{},"然后右上角3X1的向量中，相对原点的坐标X,Y,Z,那么就是3个自由度。",[10,1273,1274],{},"所以总共有6个自由度。",[10,1276,1277],{},"这12个方程式就是除了低下的0001，上面的参数都可以列一个式子。我们要做的，就是从12个式子中求出6个未知数。",[10,1279,1280],{},[65,1281],{"alt":67,"src":1282},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1950.webp",[10,1284,1285],{},"灵活工作空间Dexterous workspace是可达工作空间Reachable workspace的子集。",[10,1287,1288],{},[65,1289],{"alt":67,"src":1290},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1951.webp",[10,1292,1293],{},"它的可达工作空间是个圆环。",[10,1295,1296],{},"对于某个点，在这个例子中，只有1种或2种姿态可以达到。这个机器人只有RWS，没有DWS。",[10,1298,1299],{},[65,1300],{"alt":67,"src":1301},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1952.webp",[10,1303,1304],{},"手臂一样长的话，那样工作空间就是个圆了，",[10,1306,1307],{},"有一个点就是DWS,就是原点，当手臂内折，那么可以以360度任意一个角度来达到这个点，所以该点就是DWS。",{"title":67,"searchDepth":117,"depth":117,"links":1309},[1310],{"id":21,"depth":230,"text":21},"16",16000000,"2023-12-30","2023-12-30-ros2-tutorial","/wiki/2023-12-30-ros2-tutorial","Ros2 Tutorial","md",true,false,null,{},"/wiki/2023-12-30-ros2-tutorial/ch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi",{"title":5,"description":15},"wiki/2023-12-30-ros2-tutorial/ch16-Moveit2工业机器人机械臂",1,"hLTdfehDiPk_pMLb5Er_wpFsCnmwLqJ4BecpqvBt-HA",[1328,1334,1340,1346,1352,1358,1364,1370,1376,1382,1388,1394,1395,1401,1407,1413,1419,1425,1431,1437,1443,1449,1455,1461,1467],{"path":1329,"stem":1330,"title":1331,"date":1313,"chapter":1332,"chapterSort":1333,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","wiki/2023-12-30-ros2-tutorial/ch1-ROS2介绍","ROS2介绍","1",1000000,{"path":1335,"stem":1336,"title":1337,"date":1313,"chapter":1338,"chapterSort":1339,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch10-stage-ros2-fang-zhen-ping-tai","wiki/2023-12-30-ros2-tutorial/ch10-Stage_Ros2仿真平台","Stage_Ros2仿真平台","10",10000000,{"path":1341,"stem":1342,"title":1343,"date":1313,"chapter":1344,"chapterSort":1345,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch11-1-gazeboclassic","wiki/2023-12-30-ros2-tutorial/ch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":1347,"stem":1348,"title":1349,"date":1313,"chapter":1350,"chapterSort":1351,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch11-2-ignitiongazebo","wiki/2023-12-30-ros2-tutorial/ch11-2-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","11.2",11020000,{"path":1353,"stem":1354,"title":1355,"date":1313,"chapter":1356,"chapterSort":1357,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch11-3-gazebosim","wiki/2023-12-30-ros2-tutorial/ch11-3-GazeboSim","Gz Sim（Gazebo Harmonic）","11.3",11030000,{"path":1359,"stem":1360,"title":1361,"date":1313,"chapter":1362,"chapterSort":1363,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch11-4-igngz2gzsim","wiki/2023-12-30-ros2-tutorial/ch11-4-Igngz2gzsim","将Ign Gazebo迁移至Gz Sim","11.4",11040000,{"path":1365,"stem":1366,"title":1367,"date":1313,"chapter":1368,"chapterSort":1369,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch11-gezebo-fang-zhen-ping-tai","wiki/2023-12-30-ros2-tutorial/ch11-Gezebo仿真平台","Gezebo仿真平台","11",11000000,{"path":1371,"stem":1372,"title":1373,"date":1313,"chapter":1374,"chapterSort":1375,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch12-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","wiki/2023-12-30-ros2-tutorial/ch12-机器人导航Navigation2(仿真篇)","机器人导航Navigation2(仿真篇)","12",12000000,{"path":1377,"stem":1378,"title":1379,"date":1313,"chapter":1380,"chapterSort":1381,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch13-ros2serial","wiki/2023-12-30-ros2-tutorial/ch13-ROS2Serial","ROS2 Serial","13",13000000,{"path":1383,"stem":1384,"title":1385,"date":1313,"chapter":1386,"chapterSort":1387,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch14-ji-qi-ren-ying-jian","wiki/2023-12-30-ros2-tutorial/ch14-机器人硬件","机器人硬件","14",14000000,{"path":1389,"stem":1390,"title":1391,"date":1313,"chapter":1392,"chapterSort":1393,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch15-ros2-control","wiki/2023-12-30-ros2-tutorial/ch15-ROS2_Control","ROS2_Control","15",15000000,{"path":1322,"stem":1324,"title":5,"date":1313,"chapter":1311,"chapterSort":1312,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},{"path":1396,"stem":1397,"title":1398,"date":1313,"chapter":1399,"chapterSort":1400,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch17-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","wiki/2023-12-30-ros2-tutorial/ch17-机器人导航Navigation2(实体篇)","机器人导航Navigation2(实体篇)","17",17000000,{"path":1402,"stem":1403,"title":1404,"date":1313,"chapter":1405,"chapterSort":1406,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch18-microros","wiki/2023-12-30-ros2-tutorial/ch18-MicroROS","MicroROS","18",18000000,{"path":1408,"stem":1409,"title":1410,"date":1313,"chapter":1411,"chapterSort":1412,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch19-webots-fang-zhen-ping-tai","wiki/2023-12-30-ros2-tutorial/ch19-Webots仿真平台","Webots仿真平台","19",19000000,{"path":1414,"stem":1415,"title":1416,"date":1313,"chapter":1417,"chapterSort":1418,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","wiki/2023-12-30-ros2-tutorial/ch2-入门操作","入门操作","2",2000000,{"path":1420,"stem":1421,"title":1422,"date":1313,"chapter":1423,"chapterSort":1424,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch20-opencv","wiki/2023-12-30-ros2-tutorial/ch20-OpenCV","OpenCV","20",20000000,{"path":1426,"stem":1427,"title":1428,"date":1313,"chapter":1429,"chapterSort":1430,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","wiki/2023-12-30-ros2-tutorial/ch3-工作空间与功能包","工作空间与功能包","3",3000000,{"path":1432,"stem":1433,"title":1434,"date":1313,"chapter":1435,"chapterSort":1436,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch4-si-da-tong-xin","wiki/2023-12-30-ros2-tutorial/ch4-四大通信","四大通信","4",4000000,{"path":1438,"stem":1439,"title":1440,"date":1313,"chapter":1441,"chapterSort":1442,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","wiki/2023-12-30-ros2-tutorial/ch5-ROS2其他通信机制","ROS2其他通信机制","5",5000000,{"path":1444,"stem":1445,"title":1446,"date":1313,"chapter":1447,"chapterSort":1448,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch6-launch","wiki/2023-12-30-ros2-tutorial/ch6-Launch","Launch","6",6000000,{"path":1450,"stem":1451,"title":1452,"date":1313,"chapter":1453,"chapterSort":1454,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch7-hui-su-rosbag2","wiki/2023-12-30-ros2-tutorial/ch7-回溯rosbag2","回溯rosbag2","7",7000000,{"path":1456,"stem":1457,"title":1458,"date":1313,"chapter":1459,"chapterSort":1460,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch8-zuo-biao-bian-huan-tf","wiki/2023-12-30-ros2-tutorial/ch8-坐标变换TF","坐标变换TF","8",8000000,{"path":1462,"stem":1463,"title":1464,"date":1313,"chapter":1465,"chapterSort":1466,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1319},"/wiki/2023-12-30-ros2-tutorial/ch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","wiki/2023-12-30-ros2-tutorial/ch9-可视化平台RVIZ2与URDF建模语言","可视化平台RVIZ2与URDF建模语言","9",9000000,{"path":1315,"stem":1468,"title":1469,"date":1313,"chapter":1320,"chapterSort":1470,"docKey":1314,"docRoot":1315,"docTitle":1316,"isWikiDoc":1318,"isWikiIndex":1318},"wiki/2023-12-30-ros2-tutorial/index","ROS2机器人操作系统教程",0,1778560329920]