[{"data":1,"prerenderedAt":15762},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan":3,"wiki-doc-items-2023-12-30-ros2-tutorial":15342,"wiki:author-members":15750},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":15329,"chapterOrder":15330,"date":15331,"description":21,"docKey":15332,"docRoot":15333,"docTitle":15334,"extension":15335,"isWikiDoc":786,"isWikiIndex":15336,"meta":15337,"navigation":786,"path":15338,"seo":15339,"stem":15340,"wikiDepth":89,"__hash__":15341},"wiki\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言.md","可视化平台RVIZ2与URDF建模语言",[7],"董佳辉",{"type":9,"value":10,"toc":15319},"minimark",[11,15,23,28,33,36,41,46,51,56,61,64,69,77,104,111,116,123,130,135,140,159,164,173,178,181,186,189,194,197,202,205,210,213,218,221,226,229,234,237,242,245,250,253,256,259,264,267,272,275,280,283,288,604,607,612,615,618,621,624,650,654,659,664,669,674,679,684,687,714,717,743,746,751,754,757,760,763,766,770,775,896,899,904,909,1363,1368,1440,1445,1480,1485,1504,1509,1534,1539,1545,1548,1553,1558,1566,1570,1573,1581,1586,1589,1594,1597,1602,1605,1613,1616,1619,1624,1627,1630,1633,1636,1639,1644,1772,1776,1779,1805,1810,1813,1839,1842,1847,1850,1854,1857,1862,1865,1868,1871,1874,1879,1884,1889,1894,1897,1902,1907,1910,1915,1918,1926,1929,1934,1939,1942,1947,1952,1957,2304,2309,2314,2319,2324,2327,2332,2337,2345,2350,2358,2361,2365,2368,2373,2376,2381,2386,2391,2396,2401,2404,2409,2412,2435,2440,2445,2450,2453,2458,2461,2466,2469,2472,2477,2480,2485,2538,2543,2548,2553,2970,2973,3508,3512,3515,3520,3523,3531,3534,3537,3545,3548,3552,3557,3560,3563,3566,3571,3574,3581,3689,3692,3695,3706,3727,3730,3738,3775,3787,3790,3795,3996,4001,4029,4034,4039,4042,4047,4052,4057,4062,4070,4073,4081,4084,4092,4095,4103,4106,4114,4117,4122,4125,4130,4135,4143,4150,4155,4346,4349,4354,4357,4360,4368,4371,4376,4381,4386,4389,4392,4397,4400,4403,4408,4413,4416,4421,4424,4429,4432,4437,4442,4445,4448,4451,4456,4489,4492,4698,4703,4706,4711,4714,4717,4722,4725,4730,4733,4738,4741,4746,4751,4754,4757,4762,4765,4768,4773,4776,4781,4786,4791,4796,4801,4806,4811,4814,4819,4822,4827,4830,4835,4838,4843,4846,4851,4854,4859,4862,4867,4870,4914,4919,4924,4927,4932,4935,4940,4948,4951,4956,4961,4966,4969,4974,4977,4985,5002,5007,5012,5015,5020,5023,5456,5459,5462,5467,5475,5478,5481,5486,5489,5492,5497,5500,5503,5506,5509,5514,5519,5524,5529,5605,5683,5686,5694,5697,5700,6272,6275,6280,6283,6288,7583,7586,7614,7619,7623,7626,7640,7646,7652,7659,7662,7674,7677,7682,7685,7690,7693,7698,7704,7711,7713,7724,7727,7732,7735,7747,7752,7759,7764,7769,7774,7779,7782,7786,7789,7792,7797,7800,7803,7809,7812,7818,7821,7826,7829,7834,7839,7844,7847,7852,7857,7862,7867,7872,7877,7880,7884,7889,7896,7901,7906,7911,7914,7919,7922,7927,7932,7935,7940,7945,7950,7955,7958,7963,7971,7974,7977,7982,7985,7988,7991,7996,8001,8006,8011,8016,8021,8024,8029,8032,8037,8040,8045,8050,8055,8060,8065,8070,8073,8077,8082,8087,8092,8097,8164,8169,8177,8180,8185,8193,8198,8203,8206,8232,8235,8300,8303,8550,8553,8850,8855,8858,8863,9368,9373,9376,9379,9387,9390,9395,9398,9403,9408,9411,9416,9419,11919,11924,11940,11945,11950,11955,11966,11971,11976,11991,11996,12001,12006,12011,12016,12024,12029,12032,12037,12040,12044,12047,12050,12053,12058,12063,12068,12071,12074,12081,12089,12092,12103,12107,12110,12113,12116,12121,12124,12128,12133,12136,12148,12155,12160,12163,12166,12171,12174,12177,12180,12216,12219,12226,12229,12232,12585,12590,12593,12596,12599,12602,12639,12642,13213,13216,13221,13224,13232,13235,13238,13260,13263,13342,13407,13412,13417,13420,13423,13425,13431,13436,13439,13442,13445,13448,13462,13465,13543,13546,13549,14453,14456,14459,14810,14813,14816,15191,15194,15197,15296,15299,15304,15307,15312,15315],[12,13,14],"h3",{"id":14},"可视化简介",[16,17,18],"p",{},[19,20],"img",{"alt":21,"src":22},"","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1353.webp",[16,24,25],{},[19,26],{"alt":21,"src":27},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1354.webp",[16,29,30],{},[19,31],{"alt":21,"src":32},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1355.webp",[16,34,35],{},"坐标相关、激光雷达相关、摄像头相关的rviz2插件",[16,37,38],{},[19,39],{"alt":21,"src":40},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1356.webp",[16,42,43],{},[19,44],{"alt":21,"src":45},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1357.webp",[16,47,48],{},[19,49],{"alt":21,"src":50},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1358.webp",[16,52,53],{},[19,54],{"alt":21,"src":55},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1359.webp",[16,57,58],{},[19,59],{"alt":21,"src":60},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1360.webp",[12,62,63],{"id":63},"rviz2基本使用",[16,65,66],{},[19,67],{"alt":21,"src":68},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1361.webp",[16,70,71,72,76],{},"以",[73,74,75],"code",{},"sudo apt install ros-[ROS_DISTRO]-desktop","格式安装ROS2时，RViz已经默认被安装了。",[78,79,83],"pre",{"className":80,"code":81,"language":82,"meta":21,"style":21},"language-bash shiki shiki-themes github-light github-dark","sudo apt install ros-[ROS_DISTRO]-rviz2\n","bash",[73,84,85],{"__ignoreMap":21},[86,87,90,94,98,101],"span",{"class":88,"line":89},"line",1,[86,91,93],{"class":92},"sScJk","sudo",[86,95,97],{"class":96},"sZZnC"," apt",[86,99,100],{"class":96}," install",[86,102,103],{"class":96}," ros-[ROS_DISTRO]-rviz2\n",[16,105,106,110],{},[107,108,109],"strong",{},"备注："," 命令中的 [ROS_DISTRO] 指代ROS2版本。",[16,112,113],{},[19,114],{"alt":21,"src":115},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1362.webp",[16,117,118,119,122],{},"方式1：",[73,120,121],{},"rviz2","；",[16,124,125,126,129],{},"方式2：",[73,127,128],{},"ros2 run rviz2 rviz2","。",[16,131,132],{},[19,133],{"alt":21,"src":134},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1363.webp",[16,136,137],{},[107,138,139],{},"rviz2 启动之后，默认界面如下：",[141,142,143,147,150,153,156],"ol",{},[144,145,146],"li",{},"上部为工具栏：包括视角控制、预估位姿设置、目标设置等，还可以添加自定义插件；",[144,148,149],{},"左侧为插件显示区：包括添加、删除、复制、重命名插件，显示插件，以及设置插件属性等功能；",[144,151,152],{},"中间为3D试图显示区：以可视化的方式显示添加的插件信息；",[144,154,155],{},"右侧为观测视角设置区：可以设置不同的观测视角；",[144,157,158],{},"下侧为时间显示区：包括系统时间和ROS时间。",[16,160,161],{},[107,162,163],{},"左侧插件显示区默认有两个插件：",[165,166,167,170],"ul",{},[144,168,169],{},"Global Options：该插件用于设置全局显示相关的参数，一般情况下，需要自行设置的是 Fixed Frame 选项，该选项是其他所有数据在可视化显示时所参考的全局坐标系；",[144,171,172],{},"Global Status：该插件用于显示在 Global Options 设置完毕 Fixed Frame 之后，所有的坐标变换是否正常。",[16,174,175],{},[19,176],{"alt":21,"src":177},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1364.webp",[16,179,180],{},"最上面是菜单区，左侧是插件显示区，中间是3D调试区，右侧是视角切换区域，最下方是时间区ROS Time是ROS2时间，Wall Time是系统时间，Elapsed是Rviz2运行的时间。",[16,182,183],{},[19,184],{"alt":21,"src":185},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1365.webp",[16,187,188],{},"可以保存rviz2的配置，也可以打开配置",[16,190,191],{},[19,192],{"alt":21,"src":193},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1366.webp",[16,195,196],{},"设置显示面板",[16,198,199],{},[19,200],{"alt":21,"src":201},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1367.webp",[16,203,204],{},"可以设置平面网格的个数",[16,206,207],{},[19,208],{"alt":21,"src":209},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1368.webp",[16,211,212],{},"可以设置竖直方向网格的个数",[16,214,215],{},[19,216],{"alt":21,"src":217},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1369.webp",[16,219,220],{},"可以设置网格边长是多大",[16,222,223],{},[19,224],{"alt":21,"src":225},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1370.webp",[16,227,228],{},"改变sRGB的4个通道",[16,230,231],{},[19,232],{"alt":21,"src":233},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1371.webp",[16,235,236],{},"可以改变视角",[16,238,239],{},[19,240],{"alt":21,"src":241},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1372.webp",[16,243,244],{},"设置偏移量，如果Z是-1，那么网格会相对于坐标系下沉1个单位",[16,246,247],{},[19,248],{"alt":21,"src":249},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1373.webp",[16,251,252],{},"Fixed name一般是根坐标系的名称",[16,254,255],{},"background color就是背景色",[16,257,258],{},"frame rate是坐标系的发布频率",[16,260,261],{},[19,262],{"alt":21,"src":263},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1374.webp",[16,265,266],{},"全局状态，当fixed name设置对后，就无警告了",[16,268,269],{},[19,270],{"alt":21,"src":271},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1375.webp",[16,273,274],{},"视角切换(一般默认)",[16,276,277],{},[19,278],{"alt":21,"src":279},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1376.webp",[16,281,282],{},"可以翻转Z轴",[16,284,285],{},[107,286,287],{},"常用插件：",[289,290,291,311],"table",{},[292,293,294],"thead",{},[295,296,297,302,305,308],"tr",{},[298,299,301],"th",{"align":300},"left","序号",[298,303,304],{"align":300},"名称",[298,306,307],{"align":300},"功能",[298,309,310],{"align":300},"消息类型",[312,313,314,328,342,355,369,383,397,411,425,439,453,467,481,495,509,523,537,551,564,577,591],"tbody",{},[295,315,316,320,323,326],{},[317,318,319],"td",{"align":300},"1",[317,321,322],{"align":300},"Axes",[317,324,325],{"align":300},"显示 rviz2 默认的坐标系。",[317,327],{"align":300},[295,329,330,333,336,339],{},[317,331,332],{"align":300},"2",[317,334,335],{"align":300},"Camera",[317,337,338],{"align":300},"显示相机图像，必须需要使用消息：CameraInfo。",[317,340,341],{"align":300},"sensor_msgs\u002Fmsg\u002FImage，sensor_msgs\u002Fmsg\u002FCameraInfo",[295,343,344,347,350,353],{},[317,345,346],{"align":300},"3",[317,348,349],{"align":300},"Grid",[317,351,352],{"align":300},"显示以参考坐标系原点为中心的网格。",[317,354],{"align":300},[295,356,357,360,363,366],{},[317,358,359],{"align":300},"4",[317,361,362],{"align":300},"Grid Cells",[317,364,365],{"align":300},"从网格中绘制单元格，通常是导航堆栈中成本地图中的障碍物。",[317,367,368],{"align":300},"nav_msgs\u002Fmsg\u002FGridCells",[295,370,371,374,377,380],{},[317,372,373],{"align":300},"5",[317,375,376],{"align":300},"Image",[317,378,379],{"align":300},"显示相机图像，但是和Camera插件不同，它不需要使用 CameraInfo 消息。",[317,381,382],{"align":300},"sensor_msgs\u002Fmsg\u002FImage",[295,384,385,388,391,394],{},[317,386,387],{"align":300},"6",[317,389,390],{"align":300},"InteractiveMarker",[317,392,393],{"align":300},"显示来自一个或多个交互式标记服务器的 3D 对象，并允许与它们进行鼠标交互。",[317,395,396],{"align":300},"visualization_msgs\u002Fmsg\u002FInteractiveMarker",[295,398,399,402,405,408],{},[317,400,401],{"align":300},"7",[317,403,404],{"align":300},"Laser Scan",[317,406,407],{"align":300},"显示激光雷达数据。",[317,409,410],{"align":300},"sensor_msgs\u002Fmsg\u002FLaserScan",[295,412,413,416,419,422],{},[317,414,415],{"align":300},"8",[317,417,418],{"align":300},"Map",[317,420,421],{"align":300},"显示地图数据。",[317,423,424],{"align":300},"nav_msgs\u002Fmsg\u002FOccupancyGrid",[295,426,427,430,433,436],{},[317,428,429],{"align":300},"9",[317,431,432],{"align":300},"Markers",[317,434,435],{"align":300},"允许开发者通过主题显示任意原始形状的几何体。",[317,437,438],{"align":300},"visualization_msgs\u002Fmsg\u002FMarker，visualization_msgs\u002Fmsg\u002FMarkerArray",[295,440,441,444,447,450],{},[317,442,443],{"align":300},"10",[317,445,446],{"align":300},"Path",[317,448,449],{"align":300},"显示机器人导航中的路径相关数据。",[317,451,452],{"align":300},"nav_msgs\u002Fmsg\u002FPath",[295,454,455,458,461,464],{},[317,456,457],{"align":300},"11",[317,459,460],{"align":300},"PointStamped",[317,462,463],{"align":300},"以小球的形式绘制一个点。",[317,465,466],{"align":300},"geometry_msgs\u002Fmsg\u002FPointStamped",[295,468,469,472,475,478],{},[317,470,471],{"align":300},"12",[317,473,474],{"align":300},"Pose",[317,476,477],{"align":300},"以箭头或坐标轴的方式绘制位姿。",[317,479,480],{"align":300},"geometry_msgs\u002Fmsg\u002FPoseStamped",[295,482,483,486,489,492],{},[317,484,485],{"align":300},"13",[317,487,488],{"align":300},"Pose Array",[317,490,491],{"align":300},"绘制一组 Pose。",[317,493,494],{"align":300},"geometry_msgs\u002Fmsg\u002FPoseArray",[295,496,497,500,503,506],{},[317,498,499],{"align":300},"14",[317,501,502],{"align":300},"Point Cloud2",[317,504,505],{"align":300},"绘制点云数据。",[317,507,508],{"align":300},"sensor_msgs\u002Fmsg\u002FPointCloud，sensor_msgs\u002Fmsg\u002FPointCloud2",[295,510,511,514,517,520],{},[317,512,513],{"align":300},"15",[317,515,516],{"align":300},"Polygon",[317,518,519],{"align":300},"将多边形的轮廓绘制为线。",[317,521,522],{"align":300},"geometry_msgs\u002Fmsg\u002FPolygon",[295,524,525,528,531,534],{},[317,526,527],{"align":300},"16",[317,529,530],{"align":300},"Odometry",[317,532,533],{"align":300},"显示随着时间推移累积的里程计消息。",[317,535,536],{"align":300},"nav_msgs\u002Fmsg\u002FOdometry",[295,538,539,542,545,548],{},[317,540,541],{"align":300},"17",[317,543,544],{"align":300},"Range",[317,546,547],{"align":300},"显示表示来自声纳或红外距离传感器的距离测量值的圆锥。",[317,549,550],{"align":300},"sensor_msgs\u002Fmsg\u002FRange",[295,552,553,556,559,562],{},[317,554,555],{"align":300},"18",[317,557,558],{"align":300},"RobotModel",[317,560,561],{"align":300},"显示机器人模型。",[317,563],{"align":300},[295,565,566,569,572,575],{},[317,567,568],{"align":300},"19",[317,570,571],{"align":300},"TF",[317,573,574],{"align":300},"显示 tf 变换层次结构。",[317,576],{"align":300},[295,578,579,582,585,588],{},[317,580,581],{"align":300},"20",[317,583,584],{"align":300},"Wrench",[317,586,587],{"align":300},"将geometry_msgs \u002FWrenchStamped消息显示为表示力的箭头和表示扭矩的箭头加圆圈。",[317,589,590],{"align":300},"geometry_msgs\u002Fmsg\u002FWrenchStamped",[295,592,593,596,599,602],{},[317,594,595],{"align":300},"21",[317,597,598],{"align":300},"Oculus",[317,600,601],{"align":300},"将 RViz 场景渲染到 Oculus 头戴设备。",[317,603],{"align":300},[16,605,606],{},"上述每一种插件又包含了诸多属性，可以通过设置插件属性来控制插件的最终显示效果。",[16,608,609],{},[19,610],{"alt":21,"src":611},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1377.webp",[16,613,614],{},"Image是摄像头数据插件",[16,616,617],{},"LaserScan是激光雷达数据插件",[16,619,620],{},"TF是坐标变换插件",[16,622,623],{},"RobotModel是机器人模型插件",[78,625,629],{"className":626,"code":627,"language":628,"meta":21,"style":21},"language-TypeScript shiki shiki-themes github-light github-dark","ros2 run rviz2 rviz2 -d xxx.rviz\n#可以读取自己保存的rviz配置\n","TypeScript",[73,630,631,644],{"__ignoreMap":21},[86,632,633,637,641],{"class":88,"line":89},[86,634,636],{"class":635},"sVt8B","ros2 run rviz2 rviz2 ",[86,638,640],{"class":639},"szBVR","-",[86,642,643],{"class":635},"d xxx.rviz\n",[86,645,647],{"class":88,"line":646},2,[86,648,649],{"class":635},"#可以读取自己保存的rviz配置\n",[12,651,653],{"id":652},"rviz2集成urdf基本流程","rviz2集成URDF基本流程",[655,656,658],"h4",{"id":657},"案例分析","  案例分析",[16,660,661],{},[19,662],{"alt":21,"src":663},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1378.webp",[16,665,666],{},[19,667],{"alt":21,"src":668},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1379.webp",[16,670,671],{},[19,672],{"alt":21,"src":673},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1380.webp",[16,675,676],{},[19,677],{"alt":21,"src":678},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1381.webp",[16,680,681],{},[19,682],{"alt":21,"src":683},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1382.webp",[16,685,686],{},"请调用如下命令，安装案例所需的两个功能包(可以控制机器人关节运动)：",[78,688,690],{"className":80,"code":689,"language":82,"meta":21,"style":21},"sudo apt install ros-humble-joint-state-publisher\nsudo apt install ros-humble-joint-state-publisher-gui\n",[73,691,692,703],{"__ignoreMap":21},[86,693,694,696,698,700],{"class":88,"line":89},[86,695,93],{"class":92},[86,697,97],{"class":96},[86,699,100],{"class":96},[86,701,702],{"class":96}," ros-humble-joint-state-publisher\n",[86,704,705,707,709,711],{"class":88,"line":646},[86,706,93],{"class":92},[86,708,97],{"class":96},[86,710,100],{"class":96},[86,712,713],{"class":96}," ros-humble-joint-state-publisher-gui\n",[16,715,716],{},"终端下进入工作空间的src目录，调用如下命令创建C++功能包。",[78,718,720],{"className":80,"code":719,"language":82,"meta":21,"style":21},"ros2 pkg create cpp06_urdf --build-type ament_cmake\n",[73,721,722],{"__ignoreMap":21},[86,723,724,727,730,733,736,740],{"class":88,"line":89},[86,725,726],{"class":92},"ros2",[86,728,729],{"class":96}," pkg",[86,731,732],{"class":96}," create",[86,734,735],{"class":96}," cpp06_urdf",[86,737,739],{"class":738},"sj4cs"," --build-type",[86,741,742],{"class":96}," ament_cmake\n",[16,744,745],{},"功能包下新建 urdf、rviz、launch、meshes目录以备用，其中 urdf 目录下再新建子目录 urdf 与 xacro，分别用于存储 urdf 文件和 xacro 文件。",[16,747,748],{},[19,749],{"alt":21,"src":750},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1383.webp",[16,752,753],{},"launch存放launch文件",[16,755,756],{},"urdf文件里面存放urdf三维模型文件",[16,758,759],{},"meshes存放stl模型",[16,761,762],{},"xacro可以简化urdf文件，并且增强其灵活性",[16,764,765],{},"rviz存放rviz2的配置",[655,767,769],{"id":768},"框架搭建","  框架搭建",[16,771,772],{},[19,773],{"alt":21,"src":774},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1384.webp",[78,776,780],{"className":777,"code":778,"language":779,"meta":21,"style":21},"language-xml shiki shiki-themes github-light github-dark","\n \u003Crobot> name=\"hello_world\"\n   \u003Clink> name=\"base_link\"\n     \u003Cvisual>\n       \u003Cgeometry>\n         \u003Cbox size=\"0.5 0.2 0.1\"\u002F>\n       \u003C\u002Fgeometry>\n     \u003C\u002Fvisual>\n   \u003C\u002Flink>\n \u003C\u002Frobot>\n","xml",[73,781,782,788,800,812,824,835,856,866,876,886],{"__ignoreMap":21},[86,783,784],{"class":88,"line":89},[86,785,787],{"emptyLinePlaceholder":786},true,"\n",[86,789,790,793,797],{"class":88,"line":646},[86,791,792],{"class":635}," \u003C",[86,794,796],{"class":795},"s9eBZ","robot",[86,798,799],{"class":635},"> name=\"hello_world\"\n",[86,801,803,806,809],{"class":88,"line":802},3,[86,804,805],{"class":635},"   \u003C",[86,807,808],{"class":795},"link",[86,810,811],{"class":635},"> name=\"base_link\"\n",[86,813,815,818,821],{"class":88,"line":814},4,[86,816,817],{"class":635},"     \u003C",[86,819,820],{"class":795},"visual",[86,822,823],{"class":635},">\n",[86,825,827,830,833],{"class":88,"line":826},5,[86,828,829],{"class":635},"       \u003C",[86,831,832],{"class":795},"geometry",[86,834,823],{"class":635},[86,836,838,841,844,847,850,853],{"class":88,"line":837},6,[86,839,840],{"class":635},"         \u003C",[86,842,843],{"class":795},"box",[86,845,846],{"class":92}," size",[86,848,849],{"class":635},"=",[86,851,852],{"class":96},"\"0.5 0.2 0.1\"",[86,854,855],{"class":635},"\u002F>\n",[86,857,859,862,864],{"class":88,"line":858},7,[86,860,861],{"class":635},"       \u003C\u002F",[86,863,832],{"class":795},[86,865,823],{"class":635},[86,867,869,872,874],{"class":88,"line":868},8,[86,870,871],{"class":635},"     \u003C\u002F",[86,873,820],{"class":795},[86,875,823],{"class":635},[86,877,879,882,884],{"class":88,"line":878},9,[86,880,881],{"class":635},"   \u003C\u002F",[86,883,808],{"class":795},[86,885,823],{"class":635},[86,887,889,892,894],{"class":88,"line":888},10,[86,890,891],{"class":635}," \u003C\u002F",[86,893,796],{"class":795},[86,895,823],{"class":635},[16,897,898],{},"  标准的XML文件",[16,900,901],{},[19,902],{"alt":21,"src":903},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1385.webp",[16,905,906],{},[19,907],{"alt":21,"src":908},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1386.webp",[78,910,914],{"className":911,"code":912,"language":913,"meta":21,"style":21},"language-python shiki shiki-themes github-light github-dark","from launch import LaunchDescription\nfrom launch_ros.actions import Node\nimport os\nfrom ament_index_python.packages import get_package_share_directory\nfrom launch_ros.parameter_descriptions import ParameterValue\nfrom launch.substitutions import Command,LaunchConfiguration\nfrom launch.actions import DeclareLaunchArgument\n\n#示例：ros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fdemo01_helloworld.urdf\ndef generate_launch_description():\n\n    cpp06_urdf_dir = get_package_share_directory(\"cpp06_urdf\")\n    default_model_path = os.path.join(cpp06_urdf_dir,\"urdf\u002Furdf\",\"demo01_helloworld.urdf\")\n    default_rviz_path = os.path.join(cpp06_urdf_dir,\"rviz\",\"display.rviz\")\n    model = DeclareLaunchArgument(name=\"model\", default_value=default_model_path)\n\n    # 加载机器人模型\n\n    # 1.启动 robot_state_publisher 节点并以参数方式加载 urdf 文件\n    robot_description = ParameterValue(Command([\"xacro \",LaunchConfiguration(\"model\")]))\n    robot_state_publisher = Node(\n        package=\"robot_state_publisher\",\n        executable=\"robot_state_publisher\",\n        parameters=[{\"robot_description\": robot_description}]\n    )\n\n    # 2.启动 joint_state_publisher 节点发布非固定关节状态\n    joint_state_publisher = Node(\n        package=\"joint_state_publisher\",\n        executable=\"joint_state_publisher\"\n    )\n\n    # rviz2 节点\n    rviz2 = Node(\n        package=\"rviz2\",\n        executable=\"rviz2\"\n\n        # arguments=[\"-d\", default_rviz_path]\n    )\n    return LaunchDescription([\n        model,\n        robot_state_publisher,\n        joint_state_publisher,\n        rviz2\n    ])\n","python",[73,915,916,930,942,949,961,973,985,997,1001,1007,1018,1023,1040,1062,1082,1113,1118,1124,1129,1135,1157,1168,1182,1194,1211,1217,1222,1228,1238,1250,1260,1265,1270,1276,1286,1298,1308,1313,1319,1324,1333,1339,1345,1351,1357],{"__ignoreMap":21},[86,917,918,921,924,927],{"class":88,"line":89},[86,919,920],{"class":639},"from",[86,922,923],{"class":635}," launch ",[86,925,926],{"class":639},"import",[86,928,929],{"class":635}," LaunchDescription\n",[86,931,932,934,937,939],{"class":88,"line":646},[86,933,920],{"class":639},[86,935,936],{"class":635}," launch_ros.actions ",[86,938,926],{"class":639},[86,940,941],{"class":635}," Node\n",[86,943,944,946],{"class":88,"line":802},[86,945,926],{"class":639},[86,947,948],{"class":635}," os\n",[86,950,951,953,956,958],{"class":88,"line":814},[86,952,920],{"class":639},[86,954,955],{"class":635}," ament_index_python.packages ",[86,957,926],{"class":639},[86,959,960],{"class":635}," get_package_share_directory\n",[86,962,963,965,968,970],{"class":88,"line":826},[86,964,920],{"class":639},[86,966,967],{"class":635}," launch_ros.parameter_descriptions ",[86,969,926],{"class":639},[86,971,972],{"class":635}," ParameterValue\n",[86,974,975,977,980,982],{"class":88,"line":837},[86,976,920],{"class":639},[86,978,979],{"class":635}," launch.substitutions ",[86,981,926],{"class":639},[86,983,984],{"class":635}," Command,LaunchConfiguration\n",[86,986,987,989,992,994],{"class":88,"line":858},[86,988,920],{"class":639},[86,990,991],{"class":635}," launch.actions ",[86,993,926],{"class":639},[86,995,996],{"class":635}," DeclareLaunchArgument\n",[86,998,999],{"class":88,"line":868},[86,1000,787],{"emptyLinePlaceholder":786},[86,1002,1003],{"class":88,"line":878},[86,1004,1006],{"class":1005},"sJ8bj","#示例：ros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fdemo01_helloworld.urdf\n",[86,1008,1009,1012,1015],{"class":88,"line":888},[86,1010,1011],{"class":639},"def",[86,1013,1014],{"class":92}," generate_launch_description",[86,1016,1017],{"class":635},"():\n",[86,1019,1021],{"class":88,"line":1020},11,[86,1022,787],{"emptyLinePlaceholder":786},[86,1024,1026,1029,1031,1034,1037],{"class":88,"line":1025},12,[86,1027,1028],{"class":635},"    cpp06_urdf_dir ",[86,1030,849],{"class":639},[86,1032,1033],{"class":635}," get_package_share_directory(",[86,1035,1036],{"class":96},"\"cpp06_urdf\"",[86,1038,1039],{"class":635},")\n",[86,1041,1043,1046,1048,1051,1054,1057,1060],{"class":88,"line":1042},13,[86,1044,1045],{"class":635},"    default_model_path ",[86,1047,849],{"class":639},[86,1049,1050],{"class":635}," os.path.join(cpp06_urdf_dir,",[86,1052,1053],{"class":96},"\"urdf\u002Furdf\"",[86,1055,1056],{"class":635},",",[86,1058,1059],{"class":96},"\"demo01_helloworld.urdf\"",[86,1061,1039],{"class":635},[86,1063,1065,1068,1070,1072,1075,1077,1080],{"class":88,"line":1064},14,[86,1066,1067],{"class":635},"    default_rviz_path ",[86,1069,849],{"class":639},[86,1071,1050],{"class":635},[86,1073,1074],{"class":96},"\"rviz\"",[86,1076,1056],{"class":635},[86,1078,1079],{"class":96},"\"display.rviz\"",[86,1081,1039],{"class":635},[86,1083,1085,1088,1090,1093,1097,1099,1102,1105,1108,1110],{"class":88,"line":1084},15,[86,1086,1087],{"class":635},"    model ",[86,1089,849],{"class":639},[86,1091,1092],{"class":635}," DeclareLaunchArgument(",[86,1094,1096],{"class":1095},"s4XuR","name",[86,1098,849],{"class":639},[86,1100,1101],{"class":96},"\"model\"",[86,1103,1104],{"class":635},", ",[86,1106,1107],{"class":1095},"default_value",[86,1109,849],{"class":639},[86,1111,1112],{"class":635},"default_model_path)\n",[86,1114,1116],{"class":88,"line":1115},16,[86,1117,787],{"emptyLinePlaceholder":786},[86,1119,1121],{"class":88,"line":1120},17,[86,1122,1123],{"class":1005},"    # 加载机器人模型\n",[86,1125,1127],{"class":88,"line":1126},18,[86,1128,787],{"emptyLinePlaceholder":786},[86,1130,1132],{"class":88,"line":1131},19,[86,1133,1134],{"class":1005},"    # 1.启动 robot_state_publisher 节点并以参数方式加载 urdf 文件\n",[86,1136,1138,1141,1143,1146,1149,1152,1154],{"class":88,"line":1137},20,[86,1139,1140],{"class":635},"    robot_description ",[86,1142,849],{"class":639},[86,1144,1145],{"class":635}," ParameterValue(Command([",[86,1147,1148],{"class":96},"\"xacro \"",[86,1150,1151],{"class":635},",LaunchConfiguration(",[86,1153,1101],{"class":96},[86,1155,1156],{"class":635},")]))\n",[86,1158,1160,1163,1165],{"class":88,"line":1159},21,[86,1161,1162],{"class":635},"    robot_state_publisher ",[86,1164,849],{"class":639},[86,1166,1167],{"class":635}," Node(\n",[86,1169,1171,1174,1176,1179],{"class":88,"line":1170},22,[86,1172,1173],{"class":1095},"        package",[86,1175,849],{"class":639},[86,1177,1178],{"class":96},"\"robot_state_publisher\"",[86,1180,1181],{"class":635},",\n",[86,1183,1185,1188,1190,1192],{"class":88,"line":1184},23,[86,1186,1187],{"class":1095},"        executable",[86,1189,849],{"class":639},[86,1191,1178],{"class":96},[86,1193,1181],{"class":635},[86,1195,1197,1200,1202,1205,1208],{"class":88,"line":1196},24,[86,1198,1199],{"class":1095},"        parameters",[86,1201,849],{"class":639},[86,1203,1204],{"class":635},"[{",[86,1206,1207],{"class":96},"\"robot_description\"",[86,1209,1210],{"class":635},": robot_description}]\n",[86,1212,1214],{"class":88,"line":1213},25,[86,1215,1216],{"class":635},"    )\n",[86,1218,1220],{"class":88,"line":1219},26,[86,1221,787],{"emptyLinePlaceholder":786},[86,1223,1225],{"class":88,"line":1224},27,[86,1226,1227],{"class":1005},"    # 2.启动 joint_state_publisher 节点发布非固定关节状态\n",[86,1229,1231,1234,1236],{"class":88,"line":1230},28,[86,1232,1233],{"class":635},"    joint_state_publisher ",[86,1235,849],{"class":639},[86,1237,1167],{"class":635},[86,1239,1241,1243,1245,1248],{"class":88,"line":1240},29,[86,1242,1173],{"class":1095},[86,1244,849],{"class":639},[86,1246,1247],{"class":96},"\"joint_state_publisher\"",[86,1249,1181],{"class":635},[86,1251,1253,1255,1257],{"class":88,"line":1252},30,[86,1254,1187],{"class":1095},[86,1256,849],{"class":639},[86,1258,1259],{"class":96},"\"joint_state_publisher\"\n",[86,1261,1263],{"class":88,"line":1262},31,[86,1264,1216],{"class":635},[86,1266,1268],{"class":88,"line":1267},32,[86,1269,787],{"emptyLinePlaceholder":786},[86,1271,1273],{"class":88,"line":1272},33,[86,1274,1275],{"class":1005},"    # rviz2 节点\n",[86,1277,1279,1282,1284],{"class":88,"line":1278},34,[86,1280,1281],{"class":635},"    rviz2 ",[86,1283,849],{"class":639},[86,1285,1167],{"class":635},[86,1287,1289,1291,1293,1296],{"class":88,"line":1288},35,[86,1290,1173],{"class":1095},[86,1292,849],{"class":639},[86,1294,1295],{"class":96},"\"rviz2\"",[86,1297,1181],{"class":635},[86,1299,1301,1303,1305],{"class":88,"line":1300},36,[86,1302,1187],{"class":1095},[86,1304,849],{"class":639},[86,1306,1307],{"class":96},"\"rviz2\"\n",[86,1309,1311],{"class":88,"line":1310},37,[86,1312,787],{"emptyLinePlaceholder":786},[86,1314,1316],{"class":88,"line":1315},38,[86,1317,1318],{"class":1005},"        # arguments=[\"-d\", default_rviz_path]\n",[86,1320,1322],{"class":88,"line":1321},39,[86,1323,1216],{"class":635},[86,1325,1327,1330],{"class":88,"line":1326},40,[86,1328,1329],{"class":639},"    return",[86,1331,1332],{"class":635}," LaunchDescription([\n",[86,1334,1336],{"class":88,"line":1335},41,[86,1337,1338],{"class":635},"        model,\n",[86,1340,1342],{"class":88,"line":1341},42,[86,1343,1344],{"class":635},"        robot_state_publisher,\n",[86,1346,1348],{"class":88,"line":1347},43,[86,1349,1350],{"class":635},"        joint_state_publisher,\n",[86,1352,1354],{"class":88,"line":1353},44,[86,1355,1356],{"class":635},"        rviz2\n",[86,1358,1360],{"class":88,"line":1359},45,[86,1361,1362],{"class":635},"    ])\n",[16,1364,1365],{},[19,1366],{"alt":21,"src":1367},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1387.webp",[78,1369,1371],{"className":777,"code":1370,"language":779,"meta":21,"style":21},"\u003Cexec_depend>rviz2\u003C\u002Fexec_depend>\n\u003Cexec_depend>xacro\u003C\u002Fexec_depend>\n\u003Cexec_depend>robot_state_publisher\u003C\u002Fexec_depend>\n\u003Cexec_depend>joint_state_publisher\u003C\u002Fexec_depend>\n\u003Cexec_depend>ros2launch\u003C\u002Fexec_depend>\n",[73,1372,1373,1388,1401,1414,1427],{"__ignoreMap":21},[86,1374,1375,1378,1381,1384,1386],{"class":88,"line":89},[86,1376,1377],{"class":635},"\u003C",[86,1379,1380],{"class":795},"exec_depend",[86,1382,1383],{"class":635},">rviz2\u003C\u002F",[86,1385,1380],{"class":795},[86,1387,823],{"class":635},[86,1389,1390,1392,1394,1397,1399],{"class":88,"line":646},[86,1391,1377],{"class":635},[86,1393,1380],{"class":795},[86,1395,1396],{"class":635},">xacro\u003C\u002F",[86,1398,1380],{"class":795},[86,1400,823],{"class":635},[86,1402,1403,1405,1407,1410,1412],{"class":88,"line":802},[86,1404,1377],{"class":635},[86,1406,1380],{"class":795},[86,1408,1409],{"class":635},">robot_state_publisher\u003C\u002F",[86,1411,1380],{"class":795},[86,1413,823],{"class":635},[86,1415,1416,1418,1420,1423,1425],{"class":88,"line":814},[86,1417,1377],{"class":635},[86,1419,1380],{"class":795},[86,1421,1422],{"class":635},">joint_state_publisher\u003C\u002F",[86,1424,1380],{"class":795},[86,1426,823],{"class":635},[86,1428,1429,1431,1433,1436,1438],{"class":88,"line":826},[86,1430,1377],{"class":635},[86,1432,1380],{"class":795},[86,1434,1435],{"class":635},">ros2launch\u003C\u002F",[86,1437,1380],{"class":795},[86,1439,823],{"class":635},[16,1441,1442],{},[19,1443],{"alt":21,"src":1444},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1388.webp",[78,1446,1450],{"className":1447,"code":1448,"language":1449,"meta":21,"style":21},"language-cmake shiki shiki-themes github-light github-dark","install(\n  DIRECTORY launch urdf rviz meshes\n  DESTINATION share\u002F${PROJECT_NAME}  \n)\n","cmake",[73,1451,1452,1460,1465,1476],{"__ignoreMap":21},[86,1453,1454,1457],{"class":88,"line":89},[86,1455,1456],{"class":639},"install",[86,1458,1459],{"class":635},"(\n",[86,1461,1462],{"class":88,"line":646},[86,1463,1464],{"class":635},"  DIRECTORY launch urdf rviz meshes\n",[86,1466,1467,1470,1473],{"class":88,"line":802},[86,1468,1469],{"class":635},"  DESTINATION share\u002F",[86,1471,1472],{"class":639},"${PROJECT_NAME}",[86,1474,1475],{"class":635},"  \n",[86,1477,1478],{"class":88,"line":814},[86,1479,1039],{"class":635},[16,1481,1482],{},[19,1483],{"alt":21,"src":1484},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1389.webp",[78,1486,1488],{"className":80,"code":1487,"language":82,"meta":21,"style":21},"colcon build --packages-select cpp06_urdf\n",[73,1489,1490],{"__ignoreMap":21},[86,1491,1492,1495,1498,1501],{"class":88,"line":89},[86,1493,1494],{"class":92},"colcon",[86,1496,1497],{"class":96}," build",[86,1499,1500],{"class":738}," --packages-select",[86,1502,1503],{"class":96}," cpp06_urdf\n",[16,1505,1506],{},[19,1507],{"alt":21,"src":1508},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1390.webp",[78,1510,1512],{"className":80,"code":1511,"language":82,"meta":21,"style":21},"source install\u002Fsetup.bash\nros2 launch cpp06_urdf display.launch.py\n",[73,1513,1514,1522],{"__ignoreMap":21},[86,1515,1516,1519],{"class":88,"line":89},[86,1517,1518],{"class":738},"source",[86,1520,1521],{"class":96}," install\u002Fsetup.bash\n",[86,1523,1524,1526,1529,1531],{"class":88,"line":646},[86,1525,726],{"class":92},[86,1527,1528],{"class":96}," launch",[86,1530,735],{"class":96},[86,1532,1533],{"class":96}," display.launch.py\n",[16,1535,1536],{},[19,1537],{"alt":21,"src":1538},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1391.webp",[16,1540,1541,1542],{},"   ",[107,1543,1544],{},"小提示：",[16,1546,1547],{},"  在本章的后续案例中，所有实现都遵循上述步骤，在后续案例中我们只需要关注 urdf 实现即可，launch 文件和 配置文件无需修改。",[16,1549,1550],{},[19,1551],{"alt":21,"src":1552},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1392.webp",[16,1554,1555],{},[19,1556],{"alt":21,"src":1557},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1393.webp",[16,1559,1560,1563],{},[19,1561],{"alt":21,"src":1562},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1394.webp",[19,1564],{"alt":21,"src":1565},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1395.webp",[655,1567,1569],{"id":1568},"urdf文件","  urdf文件",[16,1571,1572],{},"  按ctrl+\\生成注释",[16,1574,1575,1578],{},[19,1576],{"alt":21,"src":1577},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1396.webp",[19,1579],{"alt":21,"src":1580},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1397.webp",[16,1582,1583],{},[19,1584],{"alt":21,"src":1585},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1398.webp",[16,1587,1588],{},"因为安装过urdf插件，所以有提示，需要创建robot根标签",[16,1590,1591],{},[19,1592],{"alt":21,"src":1593},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1399.webp",[16,1595,1596],{},"第一个属性为机器人名字",[16,1598,1599],{},[19,1600],{"alt":21,"src":1601},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1400.webp",[16,1603,1604],{},"第二个有个xml namespace，指向xacro",[16,1606,1607,1610],{},[19,1608],{"alt":21,"src":1609},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1401.webp",[19,1611],{"alt":21,"src":1612},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1402.webp",[16,1614,1615],{},"第三个有个xml namespace，指向xacro，然后还有一个机器人名字",[16,1617,1618],{},"(暂时用最简单的，也就是第一个)",[16,1620,1621],{},[19,1622],{"alt":21,"src":1623},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1403.webp",[16,1625,1626],{},"link标签叫连杆，也需要起个名字，连杆一般指刚体部分",[16,1628,1629],{},"link有个子集标签，叫visual",[16,1631,1632],{},"visual标签下要写机器人形状",[16,1634,1635],{},"然后该标签下又有一个子集标签叫geometry(几何形状)",[16,1637,1638],{},"然后又有子集标签叫box(矩形体状)后面的size后面对应长宽高",[16,1640,1641],{},[19,1642],{"alt":21,"src":1643},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1404.webp",[78,1645,1647],{"className":777,"code":1646,"language":779,"meta":21,"style":21},"\n \u003Crobot name=\"boxrobot\"> \n\n    \u003Clink name=\"base_link\"> \n\n      \u003Cvisual>\n\n        \u003Cgeometry>\n\n          \u003Cbox size=\"1.0 0.5 0.1\"\u002F>\n        \u003C\u002Fgeometry>\n      \u003C\u002Fvisual>\n    \u003C\u002Flink>\n  \u003C\u002Frobot>\n",[73,1648,1649,1653,1670,1674,1690,1694,1703,1707,1716,1720,1736,1745,1754,1763],{"__ignoreMap":21},[86,1650,1651],{"class":88,"line":89},[86,1652,787],{"emptyLinePlaceholder":786},[86,1654,1655,1657,1659,1662,1664,1667],{"class":88,"line":646},[86,1656,792],{"class":635},[86,1658,796],{"class":795},[86,1660,1661],{"class":92}," name",[86,1663,849],{"class":635},[86,1665,1666],{"class":96},"\"boxrobot\"",[86,1668,1669],{"class":635},"> \n",[86,1671,1672],{"class":88,"line":802},[86,1673,787],{"emptyLinePlaceholder":786},[86,1675,1676,1679,1681,1683,1685,1688],{"class":88,"line":814},[86,1677,1678],{"class":635},"    \u003C",[86,1680,808],{"class":795},[86,1682,1661],{"class":92},[86,1684,849],{"class":635},[86,1686,1687],{"class":96},"\"base_link\"",[86,1689,1669],{"class":635},[86,1691,1692],{"class":88,"line":826},[86,1693,787],{"emptyLinePlaceholder":786},[86,1695,1696,1699,1701],{"class":88,"line":837},[86,1697,1698],{"class":635},"      \u003C",[86,1700,820],{"class":795},[86,1702,823],{"class":635},[86,1704,1705],{"class":88,"line":858},[86,1706,787],{"emptyLinePlaceholder":786},[86,1708,1709,1712,1714],{"class":88,"line":868},[86,1710,1711],{"class":635},"        \u003C",[86,1713,832],{"class":795},[86,1715,823],{"class":635},[86,1717,1718],{"class":88,"line":878},[86,1719,787],{"emptyLinePlaceholder":786},[86,1721,1722,1725,1727,1729,1731,1734],{"class":88,"line":888},[86,1723,1724],{"class":635},"          \u003C",[86,1726,843],{"class":795},[86,1728,846],{"class":92},[86,1730,849],{"class":635},[86,1732,1733],{"class":96},"\"1.0 0.5 0.1\"",[86,1735,855],{"class":635},[86,1737,1738,1741,1743],{"class":88,"line":1020},[86,1739,1740],{"class":635},"        \u003C\u002F",[86,1742,832],{"class":795},[86,1744,823],{"class":635},[86,1746,1747,1750,1752],{"class":88,"line":1025},[86,1748,1749],{"class":635},"      \u003C\u002F",[86,1751,820],{"class":795},[86,1753,823],{"class":635},[86,1755,1756,1759,1761],{"class":88,"line":1042},[86,1757,1758],{"class":635},"    \u003C\u002F",[86,1760,808],{"class":795},[86,1762,823],{"class":635},[86,1764,1765,1768,1770],{"class":88,"line":1064},[86,1766,1767],{"class":635},"  \u003C\u002F",[86,1769,796],{"class":795},[86,1771,823],{"class":635},[655,1773,1775],{"id":1774},"xacro工具将磁盘文件加载到ros2中的工具","  xacro工具(将磁盘文件加载到ROS2中的工具)",[16,1777,1778],{},"搜索是否安装过xacro",[78,1780,1782],{"className":80,"code":1781,"language":82,"meta":21,"style":21},"ros2 pkg list | grep -i xacro\n",[73,1783,1784],{"__ignoreMap":21},[86,1785,1786,1788,1790,1793,1796,1799,1802],{"class":88,"line":89},[86,1787,726],{"class":92},[86,1789,729],{"class":96},[86,1791,1792],{"class":96}," list",[86,1794,1795],{"class":639}," |",[86,1797,1798],{"class":92}," grep",[86,1800,1801],{"class":738}," -i",[86,1803,1804],{"class":96}," xacro\n",[16,1806,1807],{},[19,1808],{"alt":21,"src":1809},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1405.webp",[16,1811,1812],{},"如果打印了xacro说明安装了，如果没打印，则要手动安装",[78,1814,1816],{"className":80,"code":1815,"language":82,"meta":21,"style":21},"sudo apt-get update\nsudo apt-get install ros-humble-xacro\n",[73,1817,1818,1828],{"__ignoreMap":21},[86,1819,1820,1822,1825],{"class":88,"line":89},[86,1821,93],{"class":92},[86,1823,1824],{"class":96}," apt-get",[86,1826,1827],{"class":96}," update\n",[86,1829,1830,1832,1834,1836],{"class":88,"line":646},[86,1831,93],{"class":92},[86,1833,1824],{"class":96},[86,1835,100],{"class":96},[86,1837,1838],{"class":96}," ros-humble-xacro\n",[16,1840,1841],{},"使用xacro读取文件",[16,1843,1844],{},[19,1845],{"alt":21,"src":1846},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1406.webp",[16,1848,1849],{},"文件里的内容被输出到了终端，咱们一般集成到launch文件中。咱们在终端里是只能查看内容，但是用launch就可以把文件弄到节点里，也就是集成到ROS2里。",[655,1851,1853],{"id":1852},"launch核心实现","  launch核心实现",[16,1855,1856],{},"核心实现就三步，加载机器人模型，节点发布非固定关节的状态，启动rviz2节点",[16,1858,1859],{},[19,1860],{"alt":21,"src":1861},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1407.webp",[16,1863,1864],{},"创建rviz2节点很简单，就声明下包名，声明下executable。",[16,1866,1867],{},"加载机器人模型比较复杂，加载机器人模型，也要创建一个节点，",[16,1869,1870],{},"然后有参数，参数里有个键叫robot_description，然后这个键对应一个值",[16,1872,1873],{},"值是ParameterValue对象，这个对象里执行了一个指令，叫xacro，然后后面又有一个Launch配置，其实就是urdf文件的路径。",[16,1875,1876],{},[19,1877],{"alt":21,"src":1878},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1408.webp",[16,1880,1881],{},[19,1882],{"alt":21,"src":1883},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1409.webp",[16,1885,1886],{},[19,1887],{"alt":21,"src":1888},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1410.webp",[16,1890,1891],{},[19,1892],{"alt":21,"src":1893},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1411.webp",[16,1895,1896],{},"这个值，其实就是URDF文件里的内容，但是内容太长了，所以我们把它封装成一个对象。",[16,1898,1899],{},[19,1900],{"alt":21,"src":1901},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1412.webp",[16,1903,1904],{},[19,1905],{"alt":21,"src":1906},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1413.webp",[16,1908,1909],{},"命令行，不能直接当对象参数值，所以还要封装",[16,1911,1912],{},[19,1913],{"alt":21,"src":1914},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1414.webp",[16,1916,1917],{},"Comand是专门封装终端指令执行的",[16,1919,1920,1923],{},[19,1921],{"alt":21,"src":1922},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1415.webp",[19,1924],{"alt":21,"src":1925},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1416.webp",[16,1927,1928],{},"记得xacro后面要有空格，这里填路径",[16,1930,1931],{},[19,1932],{"alt":21,"src":1933},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1417.webp",[16,1935,1936],{},[19,1937],{"alt":21,"src":1938},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1418.webp",[16,1940,1941],{},"此时已经定位到cpp06_urdf的share路径下的cpp06_urdf路径了，返回的也就是该路径的字符串",[16,1943,1944],{},[19,1945],{"alt":21,"src":1946},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1419.webp",[16,1948,1949],{},[19,1950],{"alt":21,"src":1951},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1420.webp",[16,1953,1954],{},[19,1955],{"alt":21,"src":1956},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1421.webp",[78,1958,1960],{"className":911,"code":1959,"language":913,"meta":21,"style":21},"from launch import LaunchDescription\nfrom launch_ros.actions import Node\n\n# 封装终端指令相关类\n\n# from launch.actions import ExecuteProcess\n\n# from launch.substitutions import FindExecutable\n\n# 参数声明与获取\n\n# from launch.actions import DeclareLaunchArgument\n\n# from launch.substitutions import LaunchConfiguration\n\n# 文件包含相关\n\n# from launch.actions import IncludeLaunchDescription\n\n# from launch.launch_description_sources import PythonLaunchDescriptionSource\n\n# 分组相关\n\n# from launch_ros.actions import PushRosNamespace\n\n# from launch.actions import GroupAction\n\n# 事件相关\n\n# from launch.event_handlers import OnProcessStart,OnProcessExit\n\n# from launch.actions import ExecuteProcess,RegisterEventHandler,LogInfo\n\n# 获取功能包下share目录或路径\nfrom ament_index_python.packages import get_package_share_directory\n\nfrom launch_ros.parameter_descriptions import ParameterValue\nfrom launch.substitutions import Command\n\np_value = ParameterValue(Command([\"xacro \",get_package_share_directory(\"cpp06_urdf\") + \"\u002Furdf\u002Furdf\u002Fdemo01_boxrobot.urdf\"]))\nrobot_state_pub = Node(\n    package=\"robot_state_publisher\",\n    executable=\"robot_state_publisher\",\n    parameters=[{\"robot_description\":p_value}]\n)\n\nrviz2 = Node(\n    package=\"rviz2\",\n    executable=\"rviz2\"\n    )\n\ndef generate_launch_description():\n    return LaunchDescription([robot_state_pub,rviz2])\n",[73,1961,1962,1972,1982,1986,1991,1995,2000,2004,2009,2013,2018,2022,2027,2031,2036,2040,2045,2049,2054,2058,2063,2067,2072,2076,2081,2085,2090,2094,2099,2103,2108,2112,2117,2121,2126,2136,2140,2150,2161,2165,2193,2202,2213,2224,2238,2242,2247,2257,2268,2277,2282,2287,2296],{"__ignoreMap":21},[86,1963,1964,1966,1968,1970],{"class":88,"line":89},[86,1965,920],{"class":639},[86,1967,923],{"class":635},[86,1969,926],{"class":639},[86,1971,929],{"class":635},[86,1973,1974,1976,1978,1980],{"class":88,"line":646},[86,1975,920],{"class":639},[86,1977,936],{"class":635},[86,1979,926],{"class":639},[86,1981,941],{"class":635},[86,1983,1984],{"class":88,"line":802},[86,1985,787],{"emptyLinePlaceholder":786},[86,1987,1988],{"class":88,"line":814},[86,1989,1990],{"class":1005},"# 封装终端指令相关类\n",[86,1992,1993],{"class":88,"line":826},[86,1994,787],{"emptyLinePlaceholder":786},[86,1996,1997],{"class":88,"line":837},[86,1998,1999],{"class":1005},"# from launch.actions import ExecuteProcess\n",[86,2001,2002],{"class":88,"line":858},[86,2003,787],{"emptyLinePlaceholder":786},[86,2005,2006],{"class":88,"line":868},[86,2007,2008],{"class":1005},"# from launch.substitutions import FindExecutable\n",[86,2010,2011],{"class":88,"line":878},[86,2012,787],{"emptyLinePlaceholder":786},[86,2014,2015],{"class":88,"line":888},[86,2016,2017],{"class":1005},"# 参数声明与获取\n",[86,2019,2020],{"class":88,"line":1020},[86,2021,787],{"emptyLinePlaceholder":786},[86,2023,2024],{"class":88,"line":1025},[86,2025,2026],{"class":1005},"# from launch.actions import DeclareLaunchArgument\n",[86,2028,2029],{"class":88,"line":1042},[86,2030,787],{"emptyLinePlaceholder":786},[86,2032,2033],{"class":88,"line":1064},[86,2034,2035],{"class":1005},"# from launch.substitutions import LaunchConfiguration\n",[86,2037,2038],{"class":88,"line":1084},[86,2039,787],{"emptyLinePlaceholder":786},[86,2041,2042],{"class":88,"line":1115},[86,2043,2044],{"class":1005},"# 文件包含相关\n",[86,2046,2047],{"class":88,"line":1120},[86,2048,787],{"emptyLinePlaceholder":786},[86,2050,2051],{"class":88,"line":1126},[86,2052,2053],{"class":1005},"# from launch.actions import IncludeLaunchDescription\n",[86,2055,2056],{"class":88,"line":1131},[86,2057,787],{"emptyLinePlaceholder":786},[86,2059,2060],{"class":88,"line":1137},[86,2061,2062],{"class":1005},"# from launch.launch_description_sources import PythonLaunchDescriptionSource\n",[86,2064,2065],{"class":88,"line":1159},[86,2066,787],{"emptyLinePlaceholder":786},[86,2068,2069],{"class":88,"line":1170},[86,2070,2071],{"class":1005},"# 分组相关\n",[86,2073,2074],{"class":88,"line":1184},[86,2075,787],{"emptyLinePlaceholder":786},[86,2077,2078],{"class":88,"line":1196},[86,2079,2080],{"class":1005},"# from launch_ros.actions import PushRosNamespace\n",[86,2082,2083],{"class":88,"line":1213},[86,2084,787],{"emptyLinePlaceholder":786},[86,2086,2087],{"class":88,"line":1219},[86,2088,2089],{"class":1005},"# from launch.actions import GroupAction\n",[86,2091,2092],{"class":88,"line":1224},[86,2093,787],{"emptyLinePlaceholder":786},[86,2095,2096],{"class":88,"line":1230},[86,2097,2098],{"class":1005},"# 事件相关\n",[86,2100,2101],{"class":88,"line":1240},[86,2102,787],{"emptyLinePlaceholder":786},[86,2104,2105],{"class":88,"line":1252},[86,2106,2107],{"class":1005},"# from launch.event_handlers import OnProcessStart,OnProcessExit\n",[86,2109,2110],{"class":88,"line":1262},[86,2111,787],{"emptyLinePlaceholder":786},[86,2113,2114],{"class":88,"line":1267},[86,2115,2116],{"class":1005},"# from launch.actions import ExecuteProcess,RegisterEventHandler,LogInfo\n",[86,2118,2119],{"class":88,"line":1272},[86,2120,787],{"emptyLinePlaceholder":786},[86,2122,2123],{"class":88,"line":1278},[86,2124,2125],{"class":1005},"# 获取功能包下share目录或路径\n",[86,2127,2128,2130,2132,2134],{"class":88,"line":1288},[86,2129,920],{"class":639},[86,2131,955],{"class":635},[86,2133,926],{"class":639},[86,2135,960],{"class":635},[86,2137,2138],{"class":88,"line":1300},[86,2139,787],{"emptyLinePlaceholder":786},[86,2141,2142,2144,2146,2148],{"class":88,"line":1310},[86,2143,920],{"class":639},[86,2145,967],{"class":635},[86,2147,926],{"class":639},[86,2149,972],{"class":635},[86,2151,2152,2154,2156,2158],{"class":88,"line":1315},[86,2153,920],{"class":639},[86,2155,979],{"class":635},[86,2157,926],{"class":639},[86,2159,2160],{"class":635}," Command\n",[86,2162,2163],{"class":88,"line":1321},[86,2164,787],{"emptyLinePlaceholder":786},[86,2166,2167,2170,2172,2174,2176,2179,2181,2184,2187,2190],{"class":88,"line":1326},[86,2168,2169],{"class":635},"p_value ",[86,2171,849],{"class":639},[86,2173,1145],{"class":635},[86,2175,1148],{"class":96},[86,2177,2178],{"class":635},",get_package_share_directory(",[86,2180,1036],{"class":96},[86,2182,2183],{"class":635},") ",[86,2185,2186],{"class":639},"+",[86,2188,2189],{"class":96}," \"\u002Furdf\u002Furdf\u002Fdemo01_boxrobot.urdf\"",[86,2191,2192],{"class":635},"]))\n",[86,2194,2195,2198,2200],{"class":88,"line":1335},[86,2196,2197],{"class":635},"robot_state_pub ",[86,2199,849],{"class":639},[86,2201,1167],{"class":635},[86,2203,2204,2207,2209,2211],{"class":88,"line":1341},[86,2205,2206],{"class":1095},"    package",[86,2208,849],{"class":639},[86,2210,1178],{"class":96},[86,2212,1181],{"class":635},[86,2214,2215,2218,2220,2222],{"class":88,"line":1347},[86,2216,2217],{"class":1095},"    executable",[86,2219,849],{"class":639},[86,2221,1178],{"class":96},[86,2223,1181],{"class":635},[86,2225,2226,2229,2231,2233,2235],{"class":88,"line":1353},[86,2227,2228],{"class":1095},"    parameters",[86,2230,849],{"class":639},[86,2232,1204],{"class":635},[86,2234,1207],{"class":96},[86,2236,2237],{"class":635},":p_value}]\n",[86,2239,2240],{"class":88,"line":1359},[86,2241,1039],{"class":635},[86,2243,2245],{"class":88,"line":2244},46,[86,2246,787],{"emptyLinePlaceholder":786},[86,2248,2250,2253,2255],{"class":88,"line":2249},47,[86,2251,2252],{"class":635},"rviz2 ",[86,2254,849],{"class":639},[86,2256,1167],{"class":635},[86,2258,2260,2262,2264,2266],{"class":88,"line":2259},48,[86,2261,2206],{"class":1095},[86,2263,849],{"class":639},[86,2265,1295],{"class":96},[86,2267,1181],{"class":635},[86,2269,2271,2273,2275],{"class":88,"line":2270},49,[86,2272,2217],{"class":1095},[86,2274,849],{"class":639},[86,2276,1307],{"class":96},[86,2278,2280],{"class":88,"line":2279},50,[86,2281,1216],{"class":635},[86,2283,2285],{"class":88,"line":2284},51,[86,2286,787],{"emptyLinePlaceholder":786},[86,2288,2290,2292,2294],{"class":88,"line":2289},52,[86,2291,1011],{"class":639},[86,2293,1014],{"class":92},[86,2295,1017],{"class":635},[86,2297,2299,2301],{"class":88,"line":2298},53,[86,2300,1329],{"class":639},[86,2302,2303],{"class":635}," LaunchDescription([robot_state_pub,rviz2])\n",[16,2305,2306],{},[19,2307],{"alt":21,"src":2308},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1422.webp",[16,2310,2311],{},[19,2312],{"alt":21,"src":2313},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1423.webp",[16,2315,2316],{},[19,2317],{"alt":21,"src":2318},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1424.webp",[16,2320,2321],{},[19,2322],{"alt":21,"src":2323},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1425.webp",[16,2325,2326],{},"点击左下角Add添加RobotModel插件",[16,2328,2329],{},[19,2330],{"alt":21,"src":2331},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1426.webp",[16,2333,2334],{},[19,2335],{"alt":21,"src":2336},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1427.webp",[16,2338,2339,2342],{},[19,2340],{"alt":21,"src":2341},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1428.webp",[19,2343],{"alt":21,"src":2344},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1429.webp",[16,2346,2347],{},[19,2348],{"alt":21,"src":2349},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1430.webp",[16,2351,2352,2355],{},[19,2353],{"alt":21,"src":2354},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1431.webp",[19,2356],{"alt":21,"src":2357},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1432.webp",[16,2359,2360],{},"新建一个坐标系插件，长沿着X，宽沿着Y，高沿着Z",[655,2362,2364],{"id":2363},"launch优化说明与实现","  launch优化说明与实现",[16,2366,2367],{},"我们还需要优化三个点，第一个是打开关节节点，第二是设置rviz2默认配置文件，第三是Launch文件中我们将读取的urdf文件写死了，所以要优化结构。",[16,2369,2370],{},[19,2371],{"alt":21,"src":2372},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1433.webp",[16,2374,2375],{},"还要启动这个节点，来控制关节运动，可以改成joint_state_publisher_gui，出现图形化界面。",[16,2377,2378],{},[19,2379],{"alt":21,"src":2380},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1434.webp",[16,2382,2383],{},[19,2384],{"alt":21,"src":2385},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1435.webp",[16,2387,2388],{},[19,2389],{"alt":21,"src":2390},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1436.webp",[16,2392,2393],{},[19,2394],{"alt":21,"src":2395},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1437.webp",[16,2397,2398],{},[19,2399],{"alt":21,"src":2400},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1438.webp",[16,2402,2403],{},"保存一下rviz2的配置",[16,2405,2406],{},[19,2407],{"alt":21,"src":2408},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1439.webp",[16,2410,2411],{},"正常的指令是",[78,2413,2415],{"className":80,"code":2414,"language":82,"meta":21,"style":21},"ros2 run rviz2 rviz2 -d rviz2配置的路径\n",[73,2416,2417],{"__ignoreMap":21},[86,2418,2419,2421,2424,2427,2429,2432],{"class":88,"line":89},[86,2420,726],{"class":92},[86,2422,2423],{"class":96}," run",[86,2425,2426],{"class":96}," rviz2",[86,2428,2426],{"class":96},[86,2430,2431],{"class":738}," -d",[86,2433,2434],{"class":96}," rviz2配置的路径\n",[16,2436,2437],{},[19,2438],{"alt":21,"src":2439},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1440.webp",[16,2441,2442],{},[19,2443],{"alt":21,"src":2444},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1441.webp",[16,2446,2447],{},[19,2448],{"alt":21,"src":2449},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1442.webp",[16,2451,2452],{},"创建一个参数叫model，值是后面那一长串。",[16,2454,2455],{},[19,2456],{"alt":21,"src":2457},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1443.webp",[16,2459,2460],{},"LaunchConfiguration是解析参数",[16,2462,2463],{},[19,2464],{"alt":21,"src":2465},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1444.webp",[16,2467,2468],{},"记得要把model放在最前面，放在后面是不可以的，现在已经把路径封装完毕了。",[16,2470,2471],{},"现在启动是正常启动默认的urdf路径。",[16,2473,2474],{},[19,2475],{"alt":21,"src":2476},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1445.webp",[16,2478,2479],{},"解析非默认值的urdf，在终端里也有类似于get_package_share_directory，以下就是(这里参数model少写了个L)要把参数值用反引号(ESC与TAB中间的按键)框起来。",[16,2481,2482],{},[19,2483],{"alt":21,"src":2484},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1446.webp",[78,2486,2488],{"className":80,"code":2487,"language":82,"meta":21,"style":21},"ros2 pkg prefix --share cpp06_urdf\n\nros2 run launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fhahah.urdf\n",[73,2489,2490,2504,2508],{"__ignoreMap":21},[86,2491,2492,2494,2496,2499,2502],{"class":88,"line":89},[86,2493,726],{"class":92},[86,2495,729],{"class":96},[86,2497,2498],{"class":96}," prefix",[86,2500,2501],{"class":738}," --share",[86,2503,1503],{"class":96},[86,2505,2506],{"class":88,"line":646},[86,2507,787],{"emptyLinePlaceholder":786},[86,2509,2510,2512,2514,2516,2518,2521,2524,2526,2529,2532,2535],{"class":88,"line":802},[86,2511,726],{"class":92},[86,2513,2423],{"class":96},[86,2515,1528],{"class":96},[86,2517,735],{"class":96},[86,2519,2520],{"class":96}," display.launch.py",[86,2522,2523],{"class":96}," model:=`",[86,2525,726],{"class":92},[86,2527,2528],{"class":96}," pkg prefix ",[86,2530,2531],{"class":738},"--share",[86,2533,2534],{"class":96}," cpp06_urdf`",[86,2536,2537],{"class":92},"\u002Furdf\u002Furdf\u002Fhahah.urdf\n",[16,2539,2540],{},[19,2541],{"alt":21,"src":2542},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1447.webp",[16,2544,2545],{},[19,2546],{"alt":21,"src":2547},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1448.webp",[16,2549,2550],{},[19,2551],{"alt":21,"src":2552},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1449.webp",[78,2554,2556],{"className":911,"code":2555,"language":913,"meta":21,"style":21},"from launch import LaunchDescription\nfrom launch_ros.actions import Node\n\n# 封装终端指令相关类\n\n# from launch.actions import ExecuteProcess\n\n# from launch.substitutions import FindExecutable\n\n# 参数声明与获取\nfrom launch.actions import DeclareLaunchArgument\nfrom launch.substitutions import LaunchConfiguration\n\n# 文件包含相关\n\n# from launch.actions import IncludeLaunchDescription\n\n# from launch.launch_description_sources import PythonLaunchDescriptionSource\n\n# 分组相关\n\n# from launch_ros.actions import PushRosNamespace\n\n# from launch.actions import GroupAction\n\n# 事件相关\n\n# from launch.event_handlers import OnProcessStart,OnProcessExit\n\n# from launch.actions import ExecuteProcess,RegisterEventHandler,LogInfo\n\n# 获取功能包下share目录或路径\nfrom ament_index_python.packages import get_package_share_directory\n\nfrom launch_ros.parameter_descriptions import ParameterValue\nfrom launch.substitutions import Command\n\nmodel = DeclareLaunchArgument(name=\"model\",default_value=get_package_share_directory(\"cpp06_urdf\") + \"\u002Furdf\u002Furdf\u002Fdemo01_boxrobot.urdf\")\n\np_value = ParameterValue(Command([\"xacro \",LaunchConfiguration(\"model\")]))\nrobot_state_pub = Node(\n    package=\"robot_state_publisher\",\n    executable=\"robot_state_publisher\",\n    parameters=[{\"robot_description\":p_value}]\n)\n\njoint_state_pub = Node(\n    package=\"joint_state_publisher\",\n    executable=\"joint_state_publisher\"\n    )\n\nrviz2 = Node(\n    package=\"rviz2\",\n    executable=\"rviz2\",\n    arguments=[\"-d\",get_package_share_directory(\"cpp06_urdf\") + \"\u002Frviz\u002Furdf.rviz\"]\n    )\n\ndef generate_launch_description():\n    return LaunchDescription([model,robot_state_pub,joint_state_pub,rviz2])\n",[73,2557,2558,2568,2578,2582,2586,2590,2594,2598,2602,2606,2610,2620,2631,2635,2639,2643,2647,2651,2655,2659,2663,2667,2671,2675,2679,2683,2687,2691,2695,2699,2703,2707,2711,2721,2725,2735,2745,2749,2783,2787,2803,2811,2821,2831,2843,2847,2851,2860,2870,2878,2882,2886,2894,2904,2915,2943,2948,2953,2962],{"__ignoreMap":21},[86,2559,2560,2562,2564,2566],{"class":88,"line":89},[86,2561,920],{"class":639},[86,2563,923],{"class":635},[86,2565,926],{"class":639},[86,2567,929],{"class":635},[86,2569,2570,2572,2574,2576],{"class":88,"line":646},[86,2571,920],{"class":639},[86,2573,936],{"class":635},[86,2575,926],{"class":639},[86,2577,941],{"class":635},[86,2579,2580],{"class":88,"line":802},[86,2581,787],{"emptyLinePlaceholder":786},[86,2583,2584],{"class":88,"line":814},[86,2585,1990],{"class":1005},[86,2587,2588],{"class":88,"line":826},[86,2589,787],{"emptyLinePlaceholder":786},[86,2591,2592],{"class":88,"line":837},[86,2593,1999],{"class":1005},[86,2595,2596],{"class":88,"line":858},[86,2597,787],{"emptyLinePlaceholder":786},[86,2599,2600],{"class":88,"line":868},[86,2601,2008],{"class":1005},[86,2603,2604],{"class":88,"line":878},[86,2605,787],{"emptyLinePlaceholder":786},[86,2607,2608],{"class":88,"line":888},[86,2609,2017],{"class":1005},[86,2611,2612,2614,2616,2618],{"class":88,"line":1020},[86,2613,920],{"class":639},[86,2615,991],{"class":635},[86,2617,926],{"class":639},[86,2619,996],{"class":635},[86,2621,2622,2624,2626,2628],{"class":88,"line":1025},[86,2623,920],{"class":639},[86,2625,979],{"class":635},[86,2627,926],{"class":639},[86,2629,2630],{"class":635}," LaunchConfiguration\n",[86,2632,2633],{"class":88,"line":1042},[86,2634,787],{"emptyLinePlaceholder":786},[86,2636,2637],{"class":88,"line":1064},[86,2638,2044],{"class":1005},[86,2640,2641],{"class":88,"line":1084},[86,2642,787],{"emptyLinePlaceholder":786},[86,2644,2645],{"class":88,"line":1115},[86,2646,2053],{"class":1005},[86,2648,2649],{"class":88,"line":1120},[86,2650,787],{"emptyLinePlaceholder":786},[86,2652,2653],{"class":88,"line":1126},[86,2654,2062],{"class":1005},[86,2656,2657],{"class":88,"line":1131},[86,2658,787],{"emptyLinePlaceholder":786},[86,2660,2661],{"class":88,"line":1137},[86,2662,2071],{"class":1005},[86,2664,2665],{"class":88,"line":1159},[86,2666,787],{"emptyLinePlaceholder":786},[86,2668,2669],{"class":88,"line":1170},[86,2670,2080],{"class":1005},[86,2672,2673],{"class":88,"line":1184},[86,2674,787],{"emptyLinePlaceholder":786},[86,2676,2677],{"class":88,"line":1196},[86,2678,2089],{"class":1005},[86,2680,2681],{"class":88,"line":1213},[86,2682,787],{"emptyLinePlaceholder":786},[86,2684,2685],{"class":88,"line":1219},[86,2686,2098],{"class":1005},[86,2688,2689],{"class":88,"line":1224},[86,2690,787],{"emptyLinePlaceholder":786},[86,2692,2693],{"class":88,"line":1230},[86,2694,2107],{"class":1005},[86,2696,2697],{"class":88,"line":1240},[86,2698,787],{"emptyLinePlaceholder":786},[86,2700,2701],{"class":88,"line":1252},[86,2702,2116],{"class":1005},[86,2704,2705],{"class":88,"line":1262},[86,2706,787],{"emptyLinePlaceholder":786},[86,2708,2709],{"class":88,"line":1267},[86,2710,2125],{"class":1005},[86,2712,2713,2715,2717,2719],{"class":88,"line":1272},[86,2714,920],{"class":639},[86,2716,955],{"class":635},[86,2718,926],{"class":639},[86,2720,960],{"class":635},[86,2722,2723],{"class":88,"line":1278},[86,2724,787],{"emptyLinePlaceholder":786},[86,2726,2727,2729,2731,2733],{"class":88,"line":1288},[86,2728,920],{"class":639},[86,2730,967],{"class":635},[86,2732,926],{"class":639},[86,2734,972],{"class":635},[86,2736,2737,2739,2741,2743],{"class":88,"line":1300},[86,2738,920],{"class":639},[86,2740,979],{"class":635},[86,2742,926],{"class":639},[86,2744,2160],{"class":635},[86,2746,2747],{"class":88,"line":1310},[86,2748,787],{"emptyLinePlaceholder":786},[86,2750,2751,2754,2756,2758,2760,2762,2764,2766,2768,2770,2773,2775,2777,2779,2781],{"class":88,"line":1315},[86,2752,2753],{"class":635},"model ",[86,2755,849],{"class":639},[86,2757,1092],{"class":635},[86,2759,1096],{"class":1095},[86,2761,849],{"class":639},[86,2763,1101],{"class":96},[86,2765,1056],{"class":635},[86,2767,1107],{"class":1095},[86,2769,849],{"class":639},[86,2771,2772],{"class":635},"get_package_share_directory(",[86,2774,1036],{"class":96},[86,2776,2183],{"class":635},[86,2778,2186],{"class":639},[86,2780,2189],{"class":96},[86,2782,1039],{"class":635},[86,2784,2785],{"class":88,"line":1321},[86,2786,787],{"emptyLinePlaceholder":786},[86,2788,2789,2791,2793,2795,2797,2799,2801],{"class":88,"line":1326},[86,2790,2169],{"class":635},[86,2792,849],{"class":639},[86,2794,1145],{"class":635},[86,2796,1148],{"class":96},[86,2798,1151],{"class":635},[86,2800,1101],{"class":96},[86,2802,1156],{"class":635},[86,2804,2805,2807,2809],{"class":88,"line":1335},[86,2806,2197],{"class":635},[86,2808,849],{"class":639},[86,2810,1167],{"class":635},[86,2812,2813,2815,2817,2819],{"class":88,"line":1341},[86,2814,2206],{"class":1095},[86,2816,849],{"class":639},[86,2818,1178],{"class":96},[86,2820,1181],{"class":635},[86,2822,2823,2825,2827,2829],{"class":88,"line":1347},[86,2824,2217],{"class":1095},[86,2826,849],{"class":639},[86,2828,1178],{"class":96},[86,2830,1181],{"class":635},[86,2832,2833,2835,2837,2839,2841],{"class":88,"line":1353},[86,2834,2228],{"class":1095},[86,2836,849],{"class":639},[86,2838,1204],{"class":635},[86,2840,1207],{"class":96},[86,2842,2237],{"class":635},[86,2844,2845],{"class":88,"line":1359},[86,2846,1039],{"class":635},[86,2848,2849],{"class":88,"line":2244},[86,2850,787],{"emptyLinePlaceholder":786},[86,2852,2853,2856,2858],{"class":88,"line":2249},[86,2854,2855],{"class":635},"joint_state_pub ",[86,2857,849],{"class":639},[86,2859,1167],{"class":635},[86,2861,2862,2864,2866,2868],{"class":88,"line":2259},[86,2863,2206],{"class":1095},[86,2865,849],{"class":639},[86,2867,1247],{"class":96},[86,2869,1181],{"class":635},[86,2871,2872,2874,2876],{"class":88,"line":2270},[86,2873,2217],{"class":1095},[86,2875,849],{"class":639},[86,2877,1259],{"class":96},[86,2879,2880],{"class":88,"line":2279},[86,2881,1216],{"class":635},[86,2883,2884],{"class":88,"line":2284},[86,2885,787],{"emptyLinePlaceholder":786},[86,2887,2888,2890,2892],{"class":88,"line":2289},[86,2889,2252],{"class":635},[86,2891,849],{"class":639},[86,2893,1167],{"class":635},[86,2895,2896,2898,2900,2902],{"class":88,"line":2298},[86,2897,2206],{"class":1095},[86,2899,849],{"class":639},[86,2901,1295],{"class":96},[86,2903,1181],{"class":635},[86,2905,2907,2909,2911,2913],{"class":88,"line":2906},54,[86,2908,2217],{"class":1095},[86,2910,849],{"class":639},[86,2912,1295],{"class":96},[86,2914,1181],{"class":635},[86,2916,2918,2921,2923,2926,2929,2931,2933,2935,2937,2940],{"class":88,"line":2917},55,[86,2919,2920],{"class":1095},"    arguments",[86,2922,849],{"class":639},[86,2924,2925],{"class":635},"[",[86,2927,2928],{"class":96},"\"-d\"",[86,2930,2178],{"class":635},[86,2932,1036],{"class":96},[86,2934,2183],{"class":635},[86,2936,2186],{"class":639},[86,2938,2939],{"class":96}," \"\u002Frviz\u002Furdf.rviz\"",[86,2941,2942],{"class":635},"]\n",[86,2944,2946],{"class":88,"line":2945},56,[86,2947,1216],{"class":635},[86,2949,2951],{"class":88,"line":2950},57,[86,2952,787],{"emptyLinePlaceholder":786},[86,2954,2956,2958,2960],{"class":88,"line":2955},58,[86,2957,1011],{"class":639},[86,2959,1014],{"class":92},[86,2961,1017],{"class":635},[86,2963,2965,2967],{"class":88,"line":2964},59,[86,2966,1329],{"class":639},[86,2968,2969],{"class":635}," LaunchDescription([model,robot_state_pub,joint_state_pub,rviz2])\n",[16,2971,2972],{},"继续优化最终的代码为：",[78,2974,2976],{"className":911,"code":2975,"language":913,"meta":21,"style":21},"from launch import LaunchDescription\nfrom launch_ros.actions import Node\n\n# 封装终端指令相关类\n\n# from launch.actions import ExecuteProcess\n\n# from launch.substitutions import FindExecutable\n\n# 参数声明与获取\nfrom launch.actions import DeclareLaunchArgument\nfrom launch.substitutions import LaunchConfiguration\n\n# 文件包含相关\n\n# from launch.actions import IncludeLaunchDescription\n\n# from launch.launch_description_sources import PythonLaunchDescriptionSource\n\n# 分组相关\n\n# from launch_ros.actions import PushRosNamespace\n\n# from launch.actions import GroupAction\n\n# 事件相关\n\n# from launch.event_handlers import OnProcessStart,OnProcessExit\n\n# from launch.actions import ExecuteProcess,RegisterEventHandler,LogInfo\n\n# 获取功能包下share目录或路径\nfrom ament_index_python.packages import get_package_share_directory\n\nfrom launch_ros.parameter_descriptions import ParameterValue\nfrom launch.substitutions import Command\n\nimport os\n\ncpp06_urdf_dir = get_package_share_directory(\"cpp06_urdf\")\n\ndefault_model_path = os.path.join(cpp06_urdf_dir,\"urdf\u002Furdf\",\"demo01_boxrobot.urdf\")\ndefault_rviz_path = os.path.join(cpp06_urdf_dir,\"rviz\",\"urdf.rviz\")\n\nmodel = DeclareLaunchArgument(name=\"model\",default_value=default_model_path)\n\np_value = ParameterValue(Command([\"xacro \",LaunchConfiguration(\"model\")]))\nrobot_state_pub = Node(\n    package=\"robot_state_publisher\",\n    executable=\"robot_state_publisher\",\n    parameters=[{\"robot_description\":p_value}]\n)\n\n# 关节信息节点\n\n# joint_state_pub = Node(\n\n#     package=\"joint_state_publisher\",\n\n#     executable=\"joint_state_publisher\"\n\n# )\n\n# 关节信息节点图形界面(建议)\njoint_state_pub = Node(\n    package=\"joint_state_publisher_gui\",\n    executable=\"joint_state_publisher_gui\"\n)\n\nrviz2 = Node(\n    package=\"rviz2\",\n    executable=\"rviz2\",\n\n#    arguments=[\"-d\",get_package_share_directory(\"cpp06_urdf\") + \"\u002Frviz\u002Furdf.rviz\"]\n    arguments=[\"-d\",default_rviz_path]\n\n    )\n\ndef generate_launch_description():\n    return LaunchDescription([model,robot_state_pub,joint_state_pub,rviz2])\n",[73,2977,2978,2988,2998,3002,3006,3010,3014,3018,3022,3026,3030,3040,3050,3054,3058,3062,3066,3070,3074,3078,3082,3086,3090,3094,3098,3102,3106,3110,3114,3118,3122,3126,3130,3140,3144,3154,3164,3168,3174,3178,3191,3195,3213,3231,3235,3257,3261,3277,3285,3295,3305,3317,3321,3325,3330,3334,3339,3343,3348,3352,3358,3363,3369,3374,3380,3389,3401,3411,3416,3421,3430,3441,3452,3457,3463,3477,3482,3487,3492,3501],{"__ignoreMap":21},[86,2979,2980,2982,2984,2986],{"class":88,"line":89},[86,2981,920],{"class":639},[86,2983,923],{"class":635},[86,2985,926],{"class":639},[86,2987,929],{"class":635},[86,2989,2990,2992,2994,2996],{"class":88,"line":646},[86,2991,920],{"class":639},[86,2993,936],{"class":635},[86,2995,926],{"class":639},[86,2997,941],{"class":635},[86,2999,3000],{"class":88,"line":802},[86,3001,787],{"emptyLinePlaceholder":786},[86,3003,3004],{"class":88,"line":814},[86,3005,1990],{"class":1005},[86,3007,3008],{"class":88,"line":826},[86,3009,787],{"emptyLinePlaceholder":786},[86,3011,3012],{"class":88,"line":837},[86,3013,1999],{"class":1005},[86,3015,3016],{"class":88,"line":858},[86,3017,787],{"emptyLinePlaceholder":786},[86,3019,3020],{"class":88,"line":868},[86,3021,2008],{"class":1005},[86,3023,3024],{"class":88,"line":878},[86,3025,787],{"emptyLinePlaceholder":786},[86,3027,3028],{"class":88,"line":888},[86,3029,2017],{"class":1005},[86,3031,3032,3034,3036,3038],{"class":88,"line":1020},[86,3033,920],{"class":639},[86,3035,991],{"class":635},[86,3037,926],{"class":639},[86,3039,996],{"class":635},[86,3041,3042,3044,3046,3048],{"class":88,"line":1025},[86,3043,920],{"class":639},[86,3045,979],{"class":635},[86,3047,926],{"class":639},[86,3049,2630],{"class":635},[86,3051,3052],{"class":88,"line":1042},[86,3053,787],{"emptyLinePlaceholder":786},[86,3055,3056],{"class":88,"line":1064},[86,3057,2044],{"class":1005},[86,3059,3060],{"class":88,"line":1084},[86,3061,787],{"emptyLinePlaceholder":786},[86,3063,3064],{"class":88,"line":1115},[86,3065,2053],{"class":1005},[86,3067,3068],{"class":88,"line":1120},[86,3069,787],{"emptyLinePlaceholder":786},[86,3071,3072],{"class":88,"line":1126},[86,3073,2062],{"class":1005},[86,3075,3076],{"class":88,"line":1131},[86,3077,787],{"emptyLinePlaceholder":786},[86,3079,3080],{"class":88,"line":1137},[86,3081,2071],{"class":1005},[86,3083,3084],{"class":88,"line":1159},[86,3085,787],{"emptyLinePlaceholder":786},[86,3087,3088],{"class":88,"line":1170},[86,3089,2080],{"class":1005},[86,3091,3092],{"class":88,"line":1184},[86,3093,787],{"emptyLinePlaceholder":786},[86,3095,3096],{"class":88,"line":1196},[86,3097,2089],{"class":1005},[86,3099,3100],{"class":88,"line":1213},[86,3101,787],{"emptyLinePlaceholder":786},[86,3103,3104],{"class":88,"line":1219},[86,3105,2098],{"class":1005},[86,3107,3108],{"class":88,"line":1224},[86,3109,787],{"emptyLinePlaceholder":786},[86,3111,3112],{"class":88,"line":1230},[86,3113,2107],{"class":1005},[86,3115,3116],{"class":88,"line":1240},[86,3117,787],{"emptyLinePlaceholder":786},[86,3119,3120],{"class":88,"line":1252},[86,3121,2116],{"class":1005},[86,3123,3124],{"class":88,"line":1262},[86,3125,787],{"emptyLinePlaceholder":786},[86,3127,3128],{"class":88,"line":1267},[86,3129,2125],{"class":1005},[86,3131,3132,3134,3136,3138],{"class":88,"line":1272},[86,3133,920],{"class":639},[86,3135,955],{"class":635},[86,3137,926],{"class":639},[86,3139,960],{"class":635},[86,3141,3142],{"class":88,"line":1278},[86,3143,787],{"emptyLinePlaceholder":786},[86,3145,3146,3148,3150,3152],{"class":88,"line":1288},[86,3147,920],{"class":639},[86,3149,967],{"class":635},[86,3151,926],{"class":639},[86,3153,972],{"class":635},[86,3155,3156,3158,3160,3162],{"class":88,"line":1300},[86,3157,920],{"class":639},[86,3159,979],{"class":635},[86,3161,926],{"class":639},[86,3163,2160],{"class":635},[86,3165,3166],{"class":88,"line":1310},[86,3167,787],{"emptyLinePlaceholder":786},[86,3169,3170,3172],{"class":88,"line":1315},[86,3171,926],{"class":639},[86,3173,948],{"class":635},[86,3175,3176],{"class":88,"line":1321},[86,3177,787],{"emptyLinePlaceholder":786},[86,3179,3180,3183,3185,3187,3189],{"class":88,"line":1326},[86,3181,3182],{"class":635},"cpp06_urdf_dir ",[86,3184,849],{"class":639},[86,3186,1033],{"class":635},[86,3188,1036],{"class":96},[86,3190,1039],{"class":635},[86,3192,3193],{"class":88,"line":1335},[86,3194,787],{"emptyLinePlaceholder":786},[86,3196,3197,3200,3202,3204,3206,3208,3211],{"class":88,"line":1341},[86,3198,3199],{"class":635},"default_model_path ",[86,3201,849],{"class":639},[86,3203,1050],{"class":635},[86,3205,1053],{"class":96},[86,3207,1056],{"class":635},[86,3209,3210],{"class":96},"\"demo01_boxrobot.urdf\"",[86,3212,1039],{"class":635},[86,3214,3215,3218,3220,3222,3224,3226,3229],{"class":88,"line":1347},[86,3216,3217],{"class":635},"default_rviz_path ",[86,3219,849],{"class":639},[86,3221,1050],{"class":635},[86,3223,1074],{"class":96},[86,3225,1056],{"class":635},[86,3227,3228],{"class":96},"\"urdf.rviz\"",[86,3230,1039],{"class":635},[86,3232,3233],{"class":88,"line":1353},[86,3234,787],{"emptyLinePlaceholder":786},[86,3236,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255],{"class":88,"line":1359},[86,3238,2753],{"class":635},[86,3240,849],{"class":639},[86,3242,1092],{"class":635},[86,3244,1096],{"class":1095},[86,3246,849],{"class":639},[86,3248,1101],{"class":96},[86,3250,1056],{"class":635},[86,3252,1107],{"class":1095},[86,3254,849],{"class":639},[86,3256,1112],{"class":635},[86,3258,3259],{"class":88,"line":2244},[86,3260,787],{"emptyLinePlaceholder":786},[86,3262,3263,3265,3267,3269,3271,3273,3275],{"class":88,"line":2249},[86,3264,2169],{"class":635},[86,3266,849],{"class":639},[86,3268,1145],{"class":635},[86,3270,1148],{"class":96},[86,3272,1151],{"class":635},[86,3274,1101],{"class":96},[86,3276,1156],{"class":635},[86,3278,3279,3281,3283],{"class":88,"line":2259},[86,3280,2197],{"class":635},[86,3282,849],{"class":639},[86,3284,1167],{"class":635},[86,3286,3287,3289,3291,3293],{"class":88,"line":2270},[86,3288,2206],{"class":1095},[86,3290,849],{"class":639},[86,3292,1178],{"class":96},[86,3294,1181],{"class":635},[86,3296,3297,3299,3301,3303],{"class":88,"line":2279},[86,3298,2217],{"class":1095},[86,3300,849],{"class":639},[86,3302,1178],{"class":96},[86,3304,1181],{"class":635},[86,3306,3307,3309,3311,3313,3315],{"class":88,"line":2284},[86,3308,2228],{"class":1095},[86,3310,849],{"class":639},[86,3312,1204],{"class":635},[86,3314,1207],{"class":96},[86,3316,2237],{"class":635},[86,3318,3319],{"class":88,"line":2289},[86,3320,1039],{"class":635},[86,3322,3323],{"class":88,"line":2298},[86,3324,787],{"emptyLinePlaceholder":786},[86,3326,3327],{"class":88,"line":2906},[86,3328,3329],{"class":1005},"# 关节信息节点\n",[86,3331,3332],{"class":88,"line":2917},[86,3333,787],{"emptyLinePlaceholder":786},[86,3335,3336],{"class":88,"line":2945},[86,3337,3338],{"class":1005},"# joint_state_pub = Node(\n",[86,3340,3341],{"class":88,"line":2950},[86,3342,787],{"emptyLinePlaceholder":786},[86,3344,3345],{"class":88,"line":2955},[86,3346,3347],{"class":1005},"#     package=\"joint_state_publisher\",\n",[86,3349,3350],{"class":88,"line":2964},[86,3351,787],{"emptyLinePlaceholder":786},[86,3353,3355],{"class":88,"line":3354},60,[86,3356,3357],{"class":1005},"#     executable=\"joint_state_publisher\"\n",[86,3359,3361],{"class":88,"line":3360},61,[86,3362,787],{"emptyLinePlaceholder":786},[86,3364,3366],{"class":88,"line":3365},62,[86,3367,3368],{"class":1005},"# )\n",[86,3370,3372],{"class":88,"line":3371},63,[86,3373,787],{"emptyLinePlaceholder":786},[86,3375,3377],{"class":88,"line":3376},64,[86,3378,3379],{"class":1005},"# 关节信息节点图形界面(建议)\n",[86,3381,3383,3385,3387],{"class":88,"line":3382},65,[86,3384,2855],{"class":635},[86,3386,849],{"class":639},[86,3388,1167],{"class":635},[86,3390,3392,3394,3396,3399],{"class":88,"line":3391},66,[86,3393,2206],{"class":1095},[86,3395,849],{"class":639},[86,3397,3398],{"class":96},"\"joint_state_publisher_gui\"",[86,3400,1181],{"class":635},[86,3402,3404,3406,3408],{"class":88,"line":3403},67,[86,3405,2217],{"class":1095},[86,3407,849],{"class":639},[86,3409,3410],{"class":96},"\"joint_state_publisher_gui\"\n",[86,3412,3414],{"class":88,"line":3413},68,[86,3415,1039],{"class":635},[86,3417,3419],{"class":88,"line":3418},69,[86,3420,787],{"emptyLinePlaceholder":786},[86,3422,3424,3426,3428],{"class":88,"line":3423},70,[86,3425,2252],{"class":635},[86,3427,849],{"class":639},[86,3429,1167],{"class":635},[86,3431,3433,3435,3437,3439],{"class":88,"line":3432},71,[86,3434,2206],{"class":1095},[86,3436,849],{"class":639},[86,3438,1295],{"class":96},[86,3440,1181],{"class":635},[86,3442,3444,3446,3448,3450],{"class":88,"line":3443},72,[86,3445,2217],{"class":1095},[86,3447,849],{"class":639},[86,3449,1295],{"class":96},[86,3451,1181],{"class":635},[86,3453,3455],{"class":88,"line":3454},73,[86,3456,787],{"emptyLinePlaceholder":786},[86,3458,3460],{"class":88,"line":3459},74,[86,3461,3462],{"class":1005},"#    arguments=[\"-d\",get_package_share_directory(\"cpp06_urdf\") + \"\u002Frviz\u002Furdf.rviz\"]\n",[86,3464,3466,3468,3470,3472,3474],{"class":88,"line":3465},75,[86,3467,2920],{"class":1095},[86,3469,849],{"class":639},[86,3471,2925],{"class":635},[86,3473,2928],{"class":96},[86,3475,3476],{"class":635},",default_rviz_path]\n",[86,3478,3480],{"class":88,"line":3479},76,[86,3481,787],{"emptyLinePlaceholder":786},[86,3483,3485],{"class":88,"line":3484},77,[86,3486,1216],{"class":635},[86,3488,3490],{"class":88,"line":3489},78,[86,3491,787],{"emptyLinePlaceholder":786},[86,3493,3495,3497,3499],{"class":88,"line":3494},79,[86,3496,1011],{"class":639},[86,3498,1014],{"class":92},[86,3500,1017],{"class":635},[86,3502,3504,3506],{"class":88,"line":3503},80,[86,3505,1329],{"class":639},[86,3507,2969],{"class":635},[12,3509,3511],{"id":3510},"urdf语法","URDF语法",[655,3513,3514],{"id":3514},"简介",[16,3516,3517],{},[19,3518],{"alt":21,"src":3519},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1450.webp",[655,3521,3522],{"id":3522},"robot根标签",[16,3524,3525,3528],{},[19,3526],{"alt":21,"src":3527},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1451.webp",[19,3529],{"alt":21,"src":3530},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1452.webp",[16,3532,3533],{},"对机器人进行分割，分割成几个子集，比如一个子集描述头，一个子集描述身子，最后再合成合集，成机器人",[16,3535,3536],{},"虽然我的子文件和主文件在逻辑上是有包含关系的，但是其实，他们都是单独的urdf文件。主文件中，robot标签的name属性必须写，子文件可以不写，如果写，那么子文件name的值与主文件的必须相同！",[16,3538,3539,3542],{},[19,3540],{"alt":21,"src":3541},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1453.webp",[19,3543],{"alt":21,"src":3544},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1454.webp",[655,3546,3547],{"id":3547},"link标签",[3549,3550,3514],"h5",{"id":3551},"简介-1",[16,3553,3554],{},[19,3555],{"alt":21,"src":3556},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1455.webp",[16,3558,3559],{},"每一个link都是刚体，都是独立部件",[16,3561,3562],{},"Link是通过joint进行拼接的",[16,3564,3565],{},"Link主要包含三部分，Visual，Collision和Inertial",[16,3567,3568],{},[19,3569],{"alt":21,"src":3570},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1456.webp",[16,3572,3573],{},"没加尖括号的是属性，加了的是标签",[16,3575,3576,3580],{},[107,3577,3578],{},[820,3579],{}," （可选）：用于描述link的可视化属性，可以设置link的形状（立方体、球体、圆柱等）。",[165,3582,3583,3588],{},[144,3584,3585,3587],{},[107,3586,1096],{}," （可选）：指定link名称，此名称会映射为同名坐标系，还可以通过引用该值定位定位link。",[144,3589,3590,3594,3595],{},[107,3591,3592],{},[832,3593],{}," （必填）：用于设置link的形状，比如：立方体、球体或圆柱。",[165,3596,3597,3604,3612,3620,3636,3658],{},[144,3598,3599,3603],{},[107,3600,3601],{},[843,3602],{}," ：立方体标签，通过size属性设置立方体的边长，原点为其几何中心。",[144,3605,3606,3611],{},[107,3607,3608],{},[3609,3610],"cylinder",{}," ：圆柱标签，通过radius属性设置圆柱半径，通过length属性设置圆柱高度，原点为其几何中心。",[144,3613,3614,3619],{},[107,3615,3616],{},[3617,3618],"sphere",{}," ：球体标签，通过radius属性设置球体半径，原点为其几何中心。",[144,3621,3622,3627,3628],{},[107,3623,3624],{},[3625,3626],"mesh",{}," ：通过属性filename引用“皮肤”文件，为link设置外观，该文件必须是本地文件。使用 package:\u002F\u002F",[3629,3630,3631,3632],"packagename",{},"\u002F",[3633,3634,3635],"path",{},"为文件名添加前缀。",[144,3637,3638,3643,3644],{},[107,3639,3640],{},[3641,3642],"origin",{}," （可选）：用于设置link的相对偏移量以及旋转角度，如未指定则使用默认值（无偏移且无旋转）。",[165,3645,3646,3652],{},[144,3647,3648,3651],{},[107,3649,3650],{},"xyz"," ：表示x、y、z三个维度上的偏移量（以米为单位），不同数值之间使用空格分隔，如未指定则使用默认值（三个维度无偏移）。",[144,3653,3654,3657],{},[107,3655,3656],{},"rpy"," ：表示翻滚、俯仰与偏航的角度（以弧度为单位），不同数值之间使用空格分隔，如未指定则使用默认值（三个维度无旋转）。",[144,3659,3660,3665,3666],{},[107,3661,3662],{},[3663,3664],"material",{}," （可选）：视觉元素的材质。也可以在根标签robot中定义material标签，然后，可以在link中按名称进行引用。",[165,3667,3668,3673,3681],{},[144,3669,3670,3672],{},[107,3671,1096],{}," （可选）：为material指定名称，可以通过该值进行引用。",[144,3674,3675,3680],{},[107,3676,3677],{},[3678,3679],"color",{}," （可选）：rgba 材质的颜色，由代表red\u002Fgreen\u002Fblue\u002Falpha 的四个数字组成，每个数字的范围为 [0,1]。",[144,3682,3683,3688],{},[107,3684,3685],{},[3686,3687],"texture",{}," （可选）：材质的纹理，可以由属性filename设置。",[16,3690,3691],{},"当有多个Visual的时候，需要给Visual设置name，所以是个可选项。",[16,3693,3694],{},"Collision与仿真有关系，我们可以给我们的机器人的刚体设置一个碰撞区间，只要障碍物进入了区间，那么就发生了碰撞，一般碰撞区间要比实际大小要大。",[16,3696,3697,3702,3703],{},[107,3698,3699],{},[3700,3701],"collision",{}," （可选）：link的碰撞属性。可以与link的视觉属性一致，也可以不同，比如：我们会通常使用更简单的碰撞模型来减少计算时间，或者设置的值大于link的视觉属性，以尽量避免碰撞。另外，同一链接可以存在多个 ",[3700,3704,3705],{},"标签实例，多个几何图形组合表示link的碰撞属性。",[165,3707,3708,3713,3720],{},[144,3709,3710,3712],{},[107,3711,1096],{}," （可选）：为collision设置名称。",[144,3714,3715,3719],{},[107,3716,3717],{},[832,3718],{}," （必须）：请参考visual标签的geometry使用规则。",[144,3721,3722,3726],{},[107,3723,3724],{},[3641,3725],{}," （可选）：请参考visual标签的origin使用规则。",[16,3728,3729],{},"Inertial是设置惯性矩阵的，也是和仿真有关系的。比如说机器人刹车，会出现前倾的情况，比如说惯性矩阵的重心高一些，那么急刹车就会出现翻车的情况了。",[16,3731,3732,3737],{},[107,3733,3734],{},[3735,3736],"inertial",{}," （可选）：用于设置link的质量、质心位置和中心惯性特性，如果未指定，则默认为质量为0、惯性为0。",[165,3739,3740,3759,3767],{},[144,3741,3742,3746,3747],{},[107,3743,3744],{},[3641,3745],{}," （可选）：该位姿（平移、旋转）描述了链接的质心框架 C 相对于链接框架 L 的位置和方向。",[165,3748,3749,3754],{},[144,3750,3751,3753],{},[107,3752,3650],{}," ：表示从 Lo（链接框架原点）到 Co（链接的质心）的位置向量为 x L̂x + y L̂y + z L̂z，其中 L̂x、L̂y、L̂z 是链接框架 L 的正交单位向量。",[144,3755,3756,3758],{},[107,3757,3656],{}," ：将 C 的单位向量 Ĉx、Ĉy、Ĉz 相对于链接框架 L 的方向表示为以弧度为单位的欧拉旋转序列 (r p y)。注意：Ĉx、Ĉy、Ĉz 不需要与连杆的惯性主轴对齐。",[144,3760,3761,3766],{},[107,3762,3763],{},[3764,3765],"mass",{}," （必填）：通过其value属性设置link的质量。",[144,3768,3769,3774],{},[107,3770,3771],{},[3772,3773],"inertia",{}," （必填）：对于固定在质心坐标系 C 中的单位向量 Ĉx、Ĉy、Ĉz，该连杆的惯性矩 ixx、iyy、izz 以及关于 Co（连杆的质心）的惯性 ixy、ixz、iyz 的乘积。",[16,3776,3777,3780,3781],{},[107,3778,3779],{},"注意："," ",[3700,3782,3783,3784],{}," 和 ",[3735,3785,3786],{}," 在仿真环境下才需要使用到，如果只是在 rviz2 中集成 urdf，那么不必须为 link 定义这两个标签。",[3549,3788,3789],{"id":3789},"使用",[16,3791,3792],{},[19,3793],{"alt":21,"src":3794},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1457.webp",[78,3796,3798],{"className":777,"code":3797,"language":779,"meta":21,"style":21},"\u003Crobot name=\"link_demo\">\n\n  \u003Cmaterial name=\"yellow\">\n    \u003Ccolor rgba=\"0.7 0.7 0 0.8\" \u002F>\n  \u003C\u002Fmaterial>\n  \u003Clink name=\"base_link\">\n    \u003Cvisual>\n\n        \u003Cgeometry>\n\n            \u003Cbox size=\"0.5 0.3 0.1\" \u002F>\n\n        \u003C\u002Fgeometry>\n\n        \u003Corigin xyz=\"0 0 0\" rpy=\"0 0 0\" \u002F>\n\n        \u003Cmaterial name=\"yellow\"\u002F>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\u003C\u002Frobot>\n",[73,3799,3800,3815,3819,3835,3852,3860,3874,3882,3886,3894,3898,3914,3918,3926,3930,3953,3957,3971,3979,3987],{"__ignoreMap":21},[86,3801,3802,3804,3806,3808,3810,3813],{"class":88,"line":89},[86,3803,1377],{"class":635},[86,3805,796],{"class":795},[86,3807,1661],{"class":92},[86,3809,849],{"class":635},[86,3811,3812],{"class":96},"\"link_demo\"",[86,3814,823],{"class":635},[86,3816,3817],{"class":88,"line":646},[86,3818,787],{"emptyLinePlaceholder":786},[86,3820,3821,3824,3826,3828,3830,3833],{"class":88,"line":802},[86,3822,3823],{"class":635},"  \u003C",[86,3825,3663],{"class":795},[86,3827,1661],{"class":92},[86,3829,849],{"class":635},[86,3831,3832],{"class":96},"\"yellow\"",[86,3834,823],{"class":635},[86,3836,3837,3839,3841,3844,3846,3849],{"class":88,"line":814},[86,3838,1678],{"class":635},[86,3840,3678],{"class":795},[86,3842,3843],{"class":92}," rgba",[86,3845,849],{"class":635},[86,3847,3848],{"class":96},"\"0.7 0.7 0 0.8\"",[86,3850,3851],{"class":635}," \u002F>\n",[86,3853,3854,3856,3858],{"class":88,"line":826},[86,3855,1767],{"class":635},[86,3857,3663],{"class":795},[86,3859,823],{"class":635},[86,3861,3862,3864,3866,3868,3870,3872],{"class":88,"line":837},[86,3863,3823],{"class":635},[86,3865,808],{"class":795},[86,3867,1661],{"class":92},[86,3869,849],{"class":635},[86,3871,1687],{"class":96},[86,3873,823],{"class":635},[86,3875,3876,3878,3880],{"class":88,"line":858},[86,3877,1678],{"class":635},[86,3879,820],{"class":795},[86,3881,823],{"class":635},[86,3883,3884],{"class":88,"line":868},[86,3885,787],{"emptyLinePlaceholder":786},[86,3887,3888,3890,3892],{"class":88,"line":878},[86,3889,1711],{"class":635},[86,3891,832],{"class":795},[86,3893,823],{"class":635},[86,3895,3896],{"class":88,"line":888},[86,3897,787],{"emptyLinePlaceholder":786},[86,3899,3900,3903,3905,3907,3909,3912],{"class":88,"line":1020},[86,3901,3902],{"class":635},"            \u003C",[86,3904,843],{"class":795},[86,3906,846],{"class":92},[86,3908,849],{"class":635},[86,3910,3911],{"class":96},"\"0.5 0.3 0.1\"",[86,3913,3851],{"class":635},[86,3915,3916],{"class":88,"line":1025},[86,3917,787],{"emptyLinePlaceholder":786},[86,3919,3920,3922,3924],{"class":88,"line":1042},[86,3921,1740],{"class":635},[86,3923,832],{"class":795},[86,3925,823],{"class":635},[86,3927,3928],{"class":88,"line":1064},[86,3929,787],{"emptyLinePlaceholder":786},[86,3931,3932,3934,3936,3939,3941,3944,3947,3949,3951],{"class":88,"line":1084},[86,3933,1711],{"class":635},[86,3935,3641],{"class":795},[86,3937,3938],{"class":92}," xyz",[86,3940,849],{"class":635},[86,3942,3943],{"class":96},"\"0 0 0\"",[86,3945,3946],{"class":92}," rpy",[86,3948,849],{"class":635},[86,3950,3943],{"class":96},[86,3952,3851],{"class":635},[86,3954,3955],{"class":88,"line":1115},[86,3956,787],{"emptyLinePlaceholder":786},[86,3958,3959,3961,3963,3965,3967,3969],{"class":88,"line":1120},[86,3960,1711],{"class":635},[86,3962,3663],{"class":795},[86,3964,1661],{"class":92},[86,3966,849],{"class":635},[86,3968,3832],{"class":96},[86,3970,855],{"class":635},[86,3972,3973,3975,3977],{"class":88,"line":1126},[86,3974,1758],{"class":635},[86,3976,820],{"class":795},[86,3978,823],{"class":635},[86,3980,3981,3983,3985],{"class":88,"line":1131},[86,3982,1767],{"class":635},[86,3984,808],{"class":795},[86,3986,823],{"class":635},[86,3988,3989,3992,3994],{"class":88,"line":1137},[86,3990,3991],{"class":635},"\u003C\u002F",[86,3993,796],{"class":795},[86,3995,823],{"class":635},[16,3997,3998],{},[19,3999],{"alt":21,"src":4000},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1458.webp",[78,4002,4004],{"className":80,"code":4003,"language":82,"meta":21,"style":21},"ros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fdemo02_link.urdf\n",[73,4005,4006],{"__ignoreMap":21},[86,4007,4008,4010,4012,4014,4016,4018,4020,4022,4024,4026],{"class":88,"line":89},[86,4009,726],{"class":92},[86,4011,1528],{"class":96},[86,4013,735],{"class":96},[86,4015,2520],{"class":96},[86,4017,2523],{"class":96},[86,4019,726],{"class":92},[86,4021,2528],{"class":96},[86,4023,2531],{"class":738},[86,4025,2534],{"class":96},[86,4027,4028],{"class":92},"\u002Furdf\u002Furdf\u002Fdemo02_link.urdf\n",[16,4030,4031],{},[19,4032],{"alt":21,"src":4033},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1459.webp",[16,4035,4036],{},[19,4037],{"alt":21,"src":4038},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1460.webp",[16,4040,4041],{},"矩形体，球形，圆柱体",[16,4043,4044],{},[19,4045],{"alt":21,"src":4046},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1461.webp",[16,4048,4049],{},[19,4050],{"alt":21,"src":4051},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1462.webp",[16,4053,4054],{},[19,4055],{"alt":21,"src":4056},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1463.webp",[16,4058,4059],{},[19,4060],{"alt":21,"src":4061},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1464.webp",[16,4063,4064,4067],{},[19,4065],{"alt":21,"src":4066},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1465.webp",[19,4068],{"alt":21,"src":4069},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1466.webp",[16,4071,4072],{},"平移量，X平移1，Y和Z平移0，rpy旋转度设置为0(旋转度分别是欧拉角里的翻滚角Roll(绕X)，俯仰角Pitch(绕Y)，航向角Yaw(绕Z))",[16,4074,4075,4078],{},[19,4076],{"alt":21,"src":4077},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1467.webp",[19,4079],{"alt":21,"src":4080},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1468.webp",[16,4082,4083],{},"发现长方体在X上偏移了1",[16,4085,4086,4089],{},[19,4087],{"alt":21,"src":4088},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1469.webp",[19,4090],{"alt":21,"src":4091},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1470.webp",[16,4093,4094],{},"让航向角Yaw(绕Z运动)为0.5 rad",[16,4096,4097,4100],{},[19,4098],{"alt":21,"src":4099},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1471.webp",[19,4101],{"alt":21,"src":4102},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1472.webp",[16,4104,4105],{},"设置翻滚角Roll(绕X运动)为0.5rad",[16,4107,4108,4111],{},[19,4109],{"alt":21,"src":4110},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1473.webp",[19,4112],{"alt":21,"src":4113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1474.webp",[16,4115,4116],{},"设置俯仰角Pitch(绕Y运动)为0.5rad",[16,4118,4119],{},[19,4120],{"alt":21,"src":4121},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1475.webp",[16,4123,4124],{},"sRGB是R,G,B,Alpha(浮点模型，所以范围是0-1.0)",[16,4126,4127],{},[19,4128],{"alt":21,"src":4129},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1476.webp",[16,4131,4132],{},[19,4133],{"alt":21,"src":4134},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1477.webp",[16,4136,4137,4140],{},[19,4138],{"alt":21,"src":4139},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1478.webp",[19,4141],{"alt":21,"src":4142},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1479.webp",[16,4144,4145,4146],{},"如果一个颜色要被用好几次，可以封装成一个类似于全局变量的东西，然后在其他link中调用时，直接用",[3663,4147,4149],{"name":4148},"对应属性值"," （这里是个闭环，注意）",[16,4151,4152],{},[19,4153],{"alt":21,"src":4154},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1480.webp",[78,4156,4158],{"className":777,"code":4157,"language":779,"meta":21,"style":21},"\u003Crobot name=\"link_demo\">\n\n    \u003Cmaterial name=\"yellow\">\n      \u003Ccolor rgba=\"0.7 0.7 0 0.8\" \u002F>\n    \u003C\u002Fmaterial>\n    \u003Clink name=\"base_link\">\n      \u003Cvisual>\n\n          \u003Cgeometry>\n\n              \u003Cbox size=\"0.5 0.3 0.1\" \u002F>\n\n          \u003C\u002Fgeometry>\n\n          \u003Corigin xyz=\"0 0 0\" rpy=\"0 0 0\" \u002F>\n\n          \u003Cmaterial name=\"yellow\"\u002F>\n      \u003C\u002Fvisual>\n    \u003C\u002Flink>\n  \u003C\u002Frobot>\n",[73,4159,4160,4174,4178,4192,4206,4214,4228,4236,4240,4248,4252,4267,4271,4280,4284,4304,4308,4322,4330,4338],{"__ignoreMap":21},[86,4161,4162,4164,4166,4168,4170,4172],{"class":88,"line":89},[86,4163,1377],{"class":635},[86,4165,796],{"class":795},[86,4167,1661],{"class":92},[86,4169,849],{"class":635},[86,4171,3812],{"class":96},[86,4173,823],{"class":635},[86,4175,4176],{"class":88,"line":646},[86,4177,787],{"emptyLinePlaceholder":786},[86,4179,4180,4182,4184,4186,4188,4190],{"class":88,"line":802},[86,4181,1678],{"class":635},[86,4183,3663],{"class":795},[86,4185,1661],{"class":92},[86,4187,849],{"class":635},[86,4189,3832],{"class":96},[86,4191,823],{"class":635},[86,4193,4194,4196,4198,4200,4202,4204],{"class":88,"line":814},[86,4195,1698],{"class":635},[86,4197,3678],{"class":795},[86,4199,3843],{"class":92},[86,4201,849],{"class":635},[86,4203,3848],{"class":96},[86,4205,3851],{"class":635},[86,4207,4208,4210,4212],{"class":88,"line":826},[86,4209,1758],{"class":635},[86,4211,3663],{"class":795},[86,4213,823],{"class":635},[86,4215,4216,4218,4220,4222,4224,4226],{"class":88,"line":837},[86,4217,1678],{"class":635},[86,4219,808],{"class":795},[86,4221,1661],{"class":92},[86,4223,849],{"class":635},[86,4225,1687],{"class":96},[86,4227,823],{"class":635},[86,4229,4230,4232,4234],{"class":88,"line":858},[86,4231,1698],{"class":635},[86,4233,820],{"class":795},[86,4235,823],{"class":635},[86,4237,4238],{"class":88,"line":868},[86,4239,787],{"emptyLinePlaceholder":786},[86,4241,4242,4244,4246],{"class":88,"line":878},[86,4243,1724],{"class":635},[86,4245,832],{"class":795},[86,4247,823],{"class":635},[86,4249,4250],{"class":88,"line":888},[86,4251,787],{"emptyLinePlaceholder":786},[86,4253,4254,4257,4259,4261,4263,4265],{"class":88,"line":1020},[86,4255,4256],{"class":635},"              \u003C",[86,4258,843],{"class":795},[86,4260,846],{"class":92},[86,4262,849],{"class":635},[86,4264,3911],{"class":96},[86,4266,3851],{"class":635},[86,4268,4269],{"class":88,"line":1025},[86,4270,787],{"emptyLinePlaceholder":786},[86,4272,4273,4276,4278],{"class":88,"line":1042},[86,4274,4275],{"class":635},"          \u003C\u002F",[86,4277,832],{"class":795},[86,4279,823],{"class":635},[86,4281,4282],{"class":88,"line":1064},[86,4283,787],{"emptyLinePlaceholder":786},[86,4285,4286,4288,4290,4292,4294,4296,4298,4300,4302],{"class":88,"line":1084},[86,4287,1724],{"class":635},[86,4289,3641],{"class":795},[86,4291,3938],{"class":92},[86,4293,849],{"class":635},[86,4295,3943],{"class":96},[86,4297,3946],{"class":92},[86,4299,849],{"class":635},[86,4301,3943],{"class":96},[86,4303,3851],{"class":635},[86,4305,4306],{"class":88,"line":1115},[86,4307,787],{"emptyLinePlaceholder":786},[86,4309,4310,4312,4314,4316,4318,4320],{"class":88,"line":1120},[86,4311,1724],{"class":635},[86,4313,3663],{"class":795},[86,4315,1661],{"class":92},[86,4317,849],{"class":635},[86,4319,3832],{"class":96},[86,4321,855],{"class":635},[86,4323,4324,4326,4328],{"class":88,"line":1126},[86,4325,1749],{"class":635},[86,4327,820],{"class":795},[86,4329,823],{"class":635},[86,4331,4332,4334,4336],{"class":88,"line":1131},[86,4333,1758],{"class":635},[86,4335,808],{"class":795},[86,4337,823],{"class":635},[86,4339,4340,4342,4344],{"class":88,"line":1137},[86,4341,1767],{"class":635},[86,4343,796],{"class":795},[86,4345,823],{"class":635},[3549,4347,4348],{"id":4348},"使用补充",[16,4350,4351],{},[19,4352],{"alt":21,"src":4353},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1481.webp",[16,4355,4356],{},"mesh标签是引用皮肤文件，一般是stl文件，可以用SolidWorks导出，可以看文档后面的SW2URDF",[16,4358,4359],{},"如果不会使用solidworks，可以学，这东西2天半就能学会，只是一个工具，只会画图没有啥水平，最重要的还是机械设计比较难。想学的可以看兄弟社团机械学会微信公众号的视频进行学习。",[16,4361,4362],{},[4363,4364,4365],"a",{"href":4365,"rel":4366},"https:\u002F\u002Fmp.weixin.qq.com\u002Fmp\u002Fhomepage?__biz=MzI4MjkyMDgyMA==&hid=7&sn=1efc3d3cee0142970227785f767cc7c8&scene=18",[4367],"nofollow",[16,4369,4370],{},"当然，没时间学习可以直接用别人画好的机器人，在Github上搜索turtlebot3",[16,4372,4373],{},[19,4374],{"alt":21,"src":4375},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1482.webp",[16,4377,4378],{},[19,4379],{"alt":21,"src":4380},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1483.webp",[16,4382,4383],{},[19,4384],{"alt":21,"src":4385},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1484.webp",[16,4387,4388],{},"这里有已经导出的模型，bases里是外观的模型，sensors是传感器的模型，wheels是轮子的模型。",[16,4390,4391],{},"我们克隆下仓库，注意要克隆branch是ros2的分支。",[16,4393,4394],{},[19,4395],{"alt":21,"src":4396},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1485.webp",[16,4398,4399],{},"我们引用一个就行了，看看效果即可，真正的应用还是要用SolidWorks通过SW2URDF插件进行导出",[16,4401,4402],{},"把项目里的meshes\u002Fbases里的burger_base.stl拷贝到我们WS里的meshes目录",[16,4404,4405],{},[19,4406],{"alt":21,"src":4407},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1486.webp",[16,4409,4410],{},[19,4411],{"alt":21,"src":4412},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1487.webp",[16,4414,4415],{},"filename是写刚才的皮肤文件，package:\u002F\u002F就是协议名，后面跟包名，也就是cpp06_urdf。然后跟功能包下的文件路径，也就是meshes\u002Fburger_base.stl（其实也就是share下的路径）",[16,4417,4418],{},[19,4419],{"alt":21,"src":4420},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1488.webp",[16,4422,4423],{},"因为是个三维模型，所以在填scale大小缩放时，需要填3个比例，咱们都填1.0即可。",[16,4425,4426],{},[19,4427],{"alt":21,"src":4428},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1489.webp",[16,4430,4431],{},"为什么显示的模型会这么大呢，因为rviz2以米为单位，而stl是以mm为单位，注意。在机械上，默认不说单位就都是mm，不要乱改单位，一般都要以mm为单位，咱们是做机器人的，要专业一些。",[16,4433,4434],{},[19,4435],{"alt":21,"src":4436},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1490.webp",[16,4438,4439],{},[19,4440],{"alt":21,"src":4441},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1491.webp",[655,4443,4444],{"id":4444},"joint标签",[3549,4446,3514],{"id":4447},"简介-2",[16,4449,4450],{},"urdf 中的 joint 标签用于描述机器人关节的运动学和动力学属性，还可以指定关节运动的安全极限，机器人的两个部件(分别称之为 parent link 与 child link)以”关节“的形式相连接，不同的关节有不同的运动形式: 旋转、滑动、固定、旋转速度、旋转角度限制....,比如:安装在底座上的轮子可以360度旋转，而摄像头则可能是完全固定在底座上。",[16,4452,4453],{},[19,4454],{"alt":21,"src":4455},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1492.webp",[165,4457,4458,4463],{},[144,4459,4460,4462],{},[107,4461,1096],{}," （必填）：为关节命名，名称需要唯一。",[144,4464,4465,4468,4469],{},[107,4466,4467],{},"type"," （必填）：设置关节类型，可用类型如下：",[165,4470,4471,4474,4477,4480,4483,4486],{},[144,4472,4473],{},"continuous：旋转关节，可以绕单轴无限旋转。",[144,4475,4476],{},"revolute：旋转关节，类似于 continues，但是有旋转角度限制。",[144,4478,4479],{},"prismatic：滑动关节，沿某一轴线移动的关节，有位置极限。",[144,4481,4482],{},"planer：平面关节，允许在平面正交方向上平移或旋转。",[144,4484,4485],{},"floating：浮动关节，允许进行平移、旋转运动。",[144,4487,4488],{},"fixed：固定关节，不允许运动的特殊关节。",[16,4490,4491],{},"以下是子级标签",[165,4493,4494,4509,4524,4543,4556,4578,4600,4634,4666],{},[144,4495,4496,4501,4502],{},[107,4497,4498],{},[4499,4500],"parent",{}," （必填）：指定父级link。",[165,4503,4504],{},[144,4505,4506,4508],{},[107,4507,808],{}," （必填）：父级link的名字，是这个link在机器人结构树中的名字。",[144,4510,4511,4516,4517],{},[107,4512,4513],{},[4514,4515],"child",{}," （必填）：指定子级link。",[165,4518,4519],{},[144,4520,4521,4523],{},[107,4522,808],{}," （必填）：子级link的名字，是这个link在机器人结构树中的名字。",[144,4525,4526,4530,4531],{},[107,4527,4528],{},[3641,4529],{}," （可选）：这是从父link到子link的转换，关节位于子link的原点。",[165,4532,4533,4538],{},[144,4534,4535,4537],{},[107,4536,3650],{}," ：各轴线上的偏移量。",[144,4539,4540,4542],{},[107,4541,3656],{}," ：各轴线上的偏移弧度。",[144,4544,4545,4548,4549],{},[107,4546,4547],{},"\u003Caxis>"," （可选）：如不设置，默认值为（1，0，0）。",[165,4550,4551],{},[144,4552,4553,4555],{},[107,4554,3650],{}," ：用于设置围绕哪个关节轴运动。",[144,4557,4558,4563,4564],{},[107,4559,4560],{},[4561,4562],"calibration",{}," （可选）：关节的参考位置，用于校准关节的绝对位置。",[165,4565,4566,4572],{},[144,4567,4568,4571],{},[107,4569,4570],{},"rising"," （可选）：当关节向正方向移动时，该参考位置将触发上升沿。",[144,4573,4574,4577],{},[107,4575,4576],{},"falling"," （可选）：当关节向正方向移动时，该参考位置将触发下降沿。",[144,4579,4580,4585,4586],{},[107,4581,4582],{},[4583,4584],"dynamics",{}," （可选）：指定接头物理特性的元素。这些值用于指定关节的建模属性，对仿真较为有用。",[165,4587,4588,4594],{},[144,4589,4590,4593],{},[107,4591,4592],{},"damping"," （可选）：关节的物理阻尼值，默认为0。",[144,4595,4596,4599],{},[107,4597,4598],{},"friction"," （可选）：关节的物理静摩擦值，默认为0。",[144,4601,4602,4607,4608],{},[107,4603,4604],{},[4605,4606],"limit",{}," （关节类型是revolute或prismatic时为必须的）：",[165,4609,4610,4616,4622,4628],{},[144,4611,4612,4615],{},[107,4613,4614],{},"lower"," （可选）：指定关节下限的属性（旋转关节以弧度为单位，棱柱关节以米为单位）。如果关节是连续的，则省略。",[144,4617,4618,4621],{},[107,4619,4620],{},"upper"," （可选）：指定关节上限的属性（旋转关节以弧度为单位，棱柱关节以米为单位）。如果关节是连续的，则省略。",[144,4623,4624,4627],{},[107,4625,4626],{},"effort"," （必填）：指定关节可受力的最大值。",[144,4629,4630,4633],{},[107,4631,4632],{},"velocity"," （必填）：用于设置最大关节速度（旋转关节以弧度每秒 [rad\u002Fs] 为单位，棱柱关节以米每秒 [m\u002Fs] 为单位）。",[144,4635,4636,4641,4642,129,4646],{},[107,4637,4638],{},[4639,4640],"mimic",{}," （可选）：此标签用于指定定义的关节模仿另一个现有关节。该关节的值可以计算为",[4643,4644,4645],"em",{},"value = multiplier * other_joint_value + offset",[165,4647,4648,4654,4660],{},[144,4649,4650,4653],{},[107,4651,4652],{},"joint"," （必填）：指定要模拟的关节的名称。",[144,4655,4656,4659],{},[107,4657,4658],{},"multiplier"," （可选）：指定上述公式中的乘法因子。",[144,4661,4662,4665],{},[107,4663,4664],{},"offset"," （可选）：指定要在上述公式中添加的偏移量，默认为 0（旋转关节的单位是弧度，棱柱关节的单位是米）。",[144,4667,4668,4671,4672],{},[107,4669,4670],{},"\u003Csafety_controller>"," （可选）：安全控制器。",[165,4673,4674,4680,4686,4692],{},[144,4675,4676,4679],{},[107,4677,4678],{},"soft_lower_limit"," （可选）：指定安全控制器开始限制关节位置的下关节边界，此限制需要大于joint下限。",[144,4681,4682,4685],{},[107,4683,4684],{},"soft_upper_limit"," （可选）：指定安全控制器开始限制关节位置的关节上边界的属性，此限制需要小于joint上限。",[144,4687,4688,4691],{},[107,4689,4690],{},"k_position"," （可选）：指定位置和速度限制之间的关系。",[144,4693,4694,4697],{},[107,4695,4696],{},"k_velocity"," （必填）：指定力和速度限制之间的关系。",[16,4699,4700],{},[19,4701],{"alt":21,"src":4702},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1493.webp",[16,4704,4705],{},"关节名称是必填的，且是唯一的。",[16,4707,4708],{},[19,4709],{"alt":21,"src":4710},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1494.webp",[16,4712,4713],{},"咱们最常用的是有限位的revolute类型的关节，continuous可无限旋转的关节，fixed固定关节，这个根据具体的关节类型来填。",[16,4715,4716],{},"revolute一般用于工业机器人机械臂的关节，continuous比如舵轮结构的“关节”，fixed就是一些固定的不能运动的结构关节。",[16,4718,4719],{},[19,4720],{"alt":21,"src":4721},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1495.webp",[16,4723,4724],{},"子集标签很多，咱们用的最常用的就几个，记住常用的即可。",[16,4726,4727],{},[19,4728],{"alt":21,"src":4729},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1496.webp",[16,4731,4732],{},"parent标签，link属性指定父级link的名字。",[16,4734,4735],{},[19,4736],{"alt":21,"src":4737},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1497.webp",[16,4739,4740],{},"child标签类似。",[16,4742,4743],{},[19,4744],{"alt":21,"src":4745},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1498.webp",[16,4747,4748],{},[19,4749],{"alt":21,"src":4750},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1499.webp",[16,4752,4753],{},"这个轴，默认是1，0，0，以X轴进行旋转，但是咱们一般是需要设置的，可通过SolidWorks设置基准轴进行设置。",[16,4755,4756],{},"剩下的标签，都与关节类型有关，比如limit，如果关节类型是revolute，而且不设置limit，那么在joint_state_publisher_gui里是无法调关节的角度的。",[16,4758,4759],{},[19,4760],{"alt":21,"src":4761},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1500.webp",[16,4763,4764],{},"其他标签用到的时候再进行介绍。",[3549,4766,4767],{"id":4767},"练习",[16,4769,4770],{},[19,4771],{"alt":21,"src":4772},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1501.webp",[16,4774,4775],{},"先把俩关节，单独实现，然后再通过joint关节进行连接。",[16,4777,4778],{},[19,4779],{"alt":21,"src":4780},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1502.webp",[16,4782,4783],{},[19,4784],{"alt":21,"src":4785},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1503.webp",[16,4787,4788],{},[19,4789],{"alt":21,"src":4790},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1504.webp",[16,4792,4793],{},[19,4794],{"alt":21,"src":4795},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1505.webp",[16,4797,4798],{},[19,4799],{"alt":21,"src":4800},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1506.webp",[16,4802,4803],{},[19,4804],{"alt":21,"src":4805},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1507.webp",[16,4807,4808],{},[19,4809],{"alt":21,"src":4810},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1508.webp",[16,4812,4813],{},"黄色的话，红和绿要多一些。",[16,4815,4816],{},[19,4817],{"alt":21,"src":4818},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1509.webp",[16,4820,4821],{},"这是红色。",[16,4823,4824],{},[19,4825],{"alt":21,"src":4826},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1510.webp",[16,4828,4829],{},"底盘Link就创建完毕了，",[16,4831,4832],{},[19,4833],{"alt":21,"src":4834},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1511.webp",[16,4836,4837],{},"摄像头Link也创建完毕了，",[16,4839,4840],{},[19,4841],{"alt":21,"src":4842},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1512.webp",[16,4844,4845],{},"关节名字设置为camera2base_link，也就是摄像头连接底座的joint，然后类型是360度都可以转的continuous。",[16,4847,4848],{},[19,4849],{"alt":21,"src":4850},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1513.webp",[16,4852,4853],{},"填入子级Link与父级Link",[16,4855,4856],{},[19,4857],{"alt":21,"src":4858},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1514.webp",[16,4860,4861],{},"这样两个Link就通过该Joint连接到一起了。",[16,4863,4864],{},[19,4865],{"alt":21,"src":4866},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1515.webp",[16,4868,4869],{},"还需要设置这俩选项，咱们先不设置，先看默认是什么状态。",[78,4871,4873],{"className":80,"code":4872,"language":82,"meta":21,"style":21},"colcon build --packages-select cpp06_urdf\nsource install\u002Fsetup.bash\nros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fdemo03_joint.urdf\n",[73,4874,4875,4885,4891],{"__ignoreMap":21},[86,4876,4877,4879,4881,4883],{"class":88,"line":89},[86,4878,1494],{"class":92},[86,4880,1497],{"class":96},[86,4882,1500],{"class":738},[86,4884,1503],{"class":96},[86,4886,4887,4889],{"class":88,"line":646},[86,4888,1518],{"class":738},[86,4890,1521],{"class":96},[86,4892,4893,4895,4897,4899,4901,4903,4905,4907,4909,4911],{"class":88,"line":802},[86,4894,726],{"class":92},[86,4896,1528],{"class":96},[86,4898,735],{"class":96},[86,4900,2520],{"class":96},[86,4902,2523],{"class":96},[86,4904,726],{"class":92},[86,4906,2528],{"class":96},[86,4908,2531],{"class":738},[86,4910,2534],{"class":96},[86,4912,4913],{"class":92},"\u002Furdf\u002Furdf\u002Fdemo03_joint.urdf\n",[16,4915,4916],{},[19,4917],{"alt":21,"src":4918},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1516.webp",[16,4920,4921],{},[19,4922],{"alt":21,"src":4923},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1517.webp",[16,4925,4926],{},"可以打开TF看看坐标系，勾上Show Names，发现是重合的。所以显示效果不满足咱们的逻辑业务。（默认状态下），所以需要设置偏移量。",[16,4928,4929],{},[19,4930],{"alt":21,"src":4931},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1518.webp",[16,4933,4934],{},"如果咱们想把摄像头移动到车头，如图所示，在X上有偏移量，Y没有，但是Z有。然后roll，pitch，yaw上没有。",[16,4936,4937],{},[19,4938],{"alt":21,"src":4939},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1519.webp",[16,4941,4942,4945],{},[19,4943],{"alt":21,"src":4944},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1520.webp",[19,4946],{"alt":21,"src":4947},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1521.webp",[16,4949,4950],{},"Z的高度就是1\u002F2的底盘高度+1\u002F2的摄像头高度",[16,4952,4953],{},[19,4954],{"alt":21,"src":4955},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1522.webp",[16,4957,4958],{},[19,4959],{"alt":21,"src":4960},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1523.webp",[16,4962,4963],{},[19,4964],{"alt":21,"src":4965},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1524.webp",[16,4967,4968],{},"咱们要绕Yaw旋转，所以也就是绕Z轴旋转，也就是001，注意一定得是整形，不能是浮点型。",[16,4970,4971],{},[19,4972],{"alt":21,"src":4973},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1525.webp",[16,4975,4976],{},"想要看是否能旋转，要打开joint_state_publisher_gui，可以从launch中打开，也可以从终端中直接打开。",[16,4978,4979,4982],{},[19,4980],{"alt":21,"src":4981},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1526.webp",[19,4983],{"alt":21,"src":4984},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1527.webp",[78,4986,4988],{"className":80,"code":4987,"language":82,"meta":21,"style":21},"ros2 run joint_state_publisher_gui joint_state_publisher_gui\n",[73,4989,4990],{"__ignoreMap":21},[86,4991,4992,4994,4996,4999],{"class":88,"line":89},[86,4993,726],{"class":92},[86,4995,2423],{"class":96},[86,4997,4998],{"class":96}," joint_state_publisher_gui",[86,5000,5001],{"class":96}," joint_state_publisher_gui\n",[16,5003,5004],{},[19,5005],{"alt":21,"src":5006},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1528.webp",[16,5008,5009],{},[19,5010],{"alt":21,"src":5011},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1529.webp",[16,5013,5014],{},"拖拽滚动条可改变摄像头的Yaw",[16,5016,5017],{},[19,5018],{"alt":21,"src":5019},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1530.webp",[16,5021,5022],{},"Randomize是随机数，Center是回中(复位)",[78,5024,5026],{"className":777,"code":5025,"language":779,"meta":21,"style":21},"\n \u003Crobot name=\"joint_demo\">\n\n  \u003Cmaterial name=\"yellow\">\n    \u003Ccolor rgba=\"0.7 0.7 0 0.8\" \u002F>\n  \u003C\u002Fmaterial>\n  \u003Cmaterial name=\"red\">\n    \u003Ccolor rgba=\"0.8 0.1 0.1 0.8\" \u002F>\n  \u003C\u002Fmaterial>\n  \u003Clink name=\"base_link\">\n    \u003Cvisual>\n\n        \u003Cgeometry>\n            \u003Cbox size=\"0.5 0.3 0.1\" \u002F>\n        \u003C\u002Fgeometry>\n        \u003Corigin xyz=\"0 0 0\" rpy=\"0 0 0\" \u002F>\n        \u003Cmaterial name=\"yellow\"\u002F>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Clink name=\"camera\">\n      \u003Cvisual>\n          \u003Cgeometry>\n              \u003Cbox size=\"0.02 0.05 0.05\" \u002F>\n          \u003C\u002Fgeometry>\n          \u003Corigin xyz=\"0 0 0\" rpy=\"0 0 0\" \u002F>\n          \u003Cmaterial name=\"red\" \u002F>\n      \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Cjoint name=\"camera2baselink\" type=\"continuous\">\n      \u003Cparent link=\"base_link\"\u002F>\n      \u003Cchild link=\"camera\" \u002F>\n\n      \u003Corigin xyz=\"0.2 0 0.075\" rpy=\"0 0 0\" \u002F>\n      \u003Caxis xyz=\"0 0 1\" \u002F>\n  \u003C\u002Fjoint>\n\n\u003C\u002Frobot>\n",[73,5027,5028,5032,5047,5051,5065,5079,5087,5102,5117,5125,5139,5147,5151,5159,5173,5181,5201,5215,5223,5231,5235,5250,5258,5266,5281,5289,5309,5323,5331,5339,5343,5366,5381,5395,5399,5420,5436,5444,5448],{"__ignoreMap":21},[86,5029,5030],{"class":88,"line":89},[86,5031,787],{"emptyLinePlaceholder":786},[86,5033,5034,5036,5038,5040,5042,5045],{"class":88,"line":646},[86,5035,792],{"class":635},[86,5037,796],{"class":795},[86,5039,1661],{"class":92},[86,5041,849],{"class":635},[86,5043,5044],{"class":96},"\"joint_demo\"",[86,5046,823],{"class":635},[86,5048,5049],{"class":88,"line":802},[86,5050,787],{"emptyLinePlaceholder":786},[86,5052,5053,5055,5057,5059,5061,5063],{"class":88,"line":814},[86,5054,3823],{"class":635},[86,5056,3663],{"class":795},[86,5058,1661],{"class":92},[86,5060,849],{"class":635},[86,5062,3832],{"class":96},[86,5064,823],{"class":635},[86,5066,5067,5069,5071,5073,5075,5077],{"class":88,"line":826},[86,5068,1678],{"class":635},[86,5070,3678],{"class":795},[86,5072,3843],{"class":92},[86,5074,849],{"class":635},[86,5076,3848],{"class":96},[86,5078,3851],{"class":635},[86,5080,5081,5083,5085],{"class":88,"line":837},[86,5082,1767],{"class":635},[86,5084,3663],{"class":795},[86,5086,823],{"class":635},[86,5088,5089,5091,5093,5095,5097,5100],{"class":88,"line":858},[86,5090,3823],{"class":635},[86,5092,3663],{"class":795},[86,5094,1661],{"class":92},[86,5096,849],{"class":635},[86,5098,5099],{"class":96},"\"red\"",[86,5101,823],{"class":635},[86,5103,5104,5106,5108,5110,5112,5115],{"class":88,"line":868},[86,5105,1678],{"class":635},[86,5107,3678],{"class":795},[86,5109,3843],{"class":92},[86,5111,849],{"class":635},[86,5113,5114],{"class":96},"\"0.8 0.1 0.1 0.8\"",[86,5116,3851],{"class":635},[86,5118,5119,5121,5123],{"class":88,"line":878},[86,5120,1767],{"class":635},[86,5122,3663],{"class":795},[86,5124,823],{"class":635},[86,5126,5127,5129,5131,5133,5135,5137],{"class":88,"line":888},[86,5128,3823],{"class":635},[86,5130,808],{"class":795},[86,5132,1661],{"class":92},[86,5134,849],{"class":635},[86,5136,1687],{"class":96},[86,5138,823],{"class":635},[86,5140,5141,5143,5145],{"class":88,"line":1020},[86,5142,1678],{"class":635},[86,5144,820],{"class":795},[86,5146,823],{"class":635},[86,5148,5149],{"class":88,"line":1025},[86,5150,787],{"emptyLinePlaceholder":786},[86,5152,5153,5155,5157],{"class":88,"line":1042},[86,5154,1711],{"class":635},[86,5156,832],{"class":795},[86,5158,823],{"class":635},[86,5160,5161,5163,5165,5167,5169,5171],{"class":88,"line":1064},[86,5162,3902],{"class":635},[86,5164,843],{"class":795},[86,5166,846],{"class":92},[86,5168,849],{"class":635},[86,5170,3911],{"class":96},[86,5172,3851],{"class":635},[86,5174,5175,5177,5179],{"class":88,"line":1084},[86,5176,1740],{"class":635},[86,5178,832],{"class":795},[86,5180,823],{"class":635},[86,5182,5183,5185,5187,5189,5191,5193,5195,5197,5199],{"class":88,"line":1115},[86,5184,1711],{"class":635},[86,5186,3641],{"class":795},[86,5188,3938],{"class":92},[86,5190,849],{"class":635},[86,5192,3943],{"class":96},[86,5194,3946],{"class":92},[86,5196,849],{"class":635},[86,5198,3943],{"class":96},[86,5200,3851],{"class":635},[86,5202,5203,5205,5207,5209,5211,5213],{"class":88,"line":1120},[86,5204,1711],{"class":635},[86,5206,3663],{"class":795},[86,5208,1661],{"class":92},[86,5210,849],{"class":635},[86,5212,3832],{"class":96},[86,5214,855],{"class":635},[86,5216,5217,5219,5221],{"class":88,"line":1126},[86,5218,1758],{"class":635},[86,5220,820],{"class":795},[86,5222,823],{"class":635},[86,5224,5225,5227,5229],{"class":88,"line":1131},[86,5226,1767],{"class":635},[86,5228,808],{"class":795},[86,5230,823],{"class":635},[86,5232,5233],{"class":88,"line":1137},[86,5234,787],{"emptyLinePlaceholder":786},[86,5236,5237,5239,5241,5243,5245,5248],{"class":88,"line":1159},[86,5238,3823],{"class":635},[86,5240,808],{"class":795},[86,5242,1661],{"class":92},[86,5244,849],{"class":635},[86,5246,5247],{"class":96},"\"camera\"",[86,5249,823],{"class":635},[86,5251,5252,5254,5256],{"class":88,"line":1170},[86,5253,1698],{"class":635},[86,5255,820],{"class":795},[86,5257,823],{"class":635},[86,5259,5260,5262,5264],{"class":88,"line":1184},[86,5261,1724],{"class":635},[86,5263,832],{"class":795},[86,5265,823],{"class":635},[86,5267,5268,5270,5272,5274,5276,5279],{"class":88,"line":1196},[86,5269,4256],{"class":635},[86,5271,843],{"class":795},[86,5273,846],{"class":92},[86,5275,849],{"class":635},[86,5277,5278],{"class":96},"\"0.02 0.05 0.05\"",[86,5280,3851],{"class":635},[86,5282,5283,5285,5287],{"class":88,"line":1213},[86,5284,4275],{"class":635},[86,5286,832],{"class":795},[86,5288,823],{"class":635},[86,5290,5291,5293,5295,5297,5299,5301,5303,5305,5307],{"class":88,"line":1219},[86,5292,1724],{"class":635},[86,5294,3641],{"class":795},[86,5296,3938],{"class":92},[86,5298,849],{"class":635},[86,5300,3943],{"class":96},[86,5302,3946],{"class":92},[86,5304,849],{"class":635},[86,5306,3943],{"class":96},[86,5308,3851],{"class":635},[86,5310,5311,5313,5315,5317,5319,5321],{"class":88,"line":1224},[86,5312,1724],{"class":635},[86,5314,3663],{"class":795},[86,5316,1661],{"class":92},[86,5318,849],{"class":635},[86,5320,5099],{"class":96},[86,5322,3851],{"class":635},[86,5324,5325,5327,5329],{"class":88,"line":1230},[86,5326,1749],{"class":635},[86,5328,820],{"class":795},[86,5330,823],{"class":635},[86,5332,5333,5335,5337],{"class":88,"line":1240},[86,5334,1767],{"class":635},[86,5336,808],{"class":795},[86,5338,823],{"class":635},[86,5340,5341],{"class":88,"line":1252},[86,5342,787],{"emptyLinePlaceholder":786},[86,5344,5345,5347,5349,5351,5353,5356,5359,5361,5364],{"class":88,"line":1262},[86,5346,3823],{"class":635},[86,5348,4652],{"class":795},[86,5350,1661],{"class":92},[86,5352,849],{"class":635},[86,5354,5355],{"class":96},"\"camera2baselink\"",[86,5357,5358],{"class":92}," type",[86,5360,849],{"class":635},[86,5362,5363],{"class":96},"\"continuous\"",[86,5365,823],{"class":635},[86,5367,5368,5370,5372,5375,5377,5379],{"class":88,"line":1267},[86,5369,1698],{"class":635},[86,5371,4499],{"class":795},[86,5373,5374],{"class":92}," link",[86,5376,849],{"class":635},[86,5378,1687],{"class":96},[86,5380,855],{"class":635},[86,5382,5383,5385,5387,5389,5391,5393],{"class":88,"line":1272},[86,5384,1698],{"class":635},[86,5386,4514],{"class":795},[86,5388,5374],{"class":92},[86,5390,849],{"class":635},[86,5392,5247],{"class":96},[86,5394,3851],{"class":635},[86,5396,5397],{"class":88,"line":1278},[86,5398,787],{"emptyLinePlaceholder":786},[86,5400,5401,5403,5405,5407,5409,5412,5414,5416,5418],{"class":88,"line":1288},[86,5402,1698],{"class":635},[86,5404,3641],{"class":795},[86,5406,3938],{"class":92},[86,5408,849],{"class":635},[86,5410,5411],{"class":96},"\"0.2 0 0.075\"",[86,5413,3946],{"class":92},[86,5415,849],{"class":635},[86,5417,3943],{"class":96},[86,5419,3851],{"class":635},[86,5421,5422,5424,5427,5429,5431,5434],{"class":88,"line":1300},[86,5423,1698],{"class":635},[86,5425,5426],{"class":795},"axis",[86,5428,3938],{"class":92},[86,5430,849],{"class":635},[86,5432,5433],{"class":96},"\"0 0 1\"",[86,5435,3851],{"class":635},[86,5437,5438,5440,5442],{"class":88,"line":1310},[86,5439,1767],{"class":635},[86,5441,4652],{"class":795},[86,5443,823],{"class":635},[86,5445,5446],{"class":88,"line":1315},[86,5447,787],{"emptyLinePlaceholder":786},[86,5449,5450,5452,5454],{"class":88,"line":1321},[86,5451,3991],{"class":635},[86,5453,796],{"class":795},[86,5455,823],{"class":635},[3549,5457,5458],{"id":5458},"joint_state_publisher",[16,5460,5461],{},"bug:Yaw不稳定，会一直回中。",[16,5463,5464],{},[19,5465],{"alt":21,"src":5466},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1531.webp",[16,5468,5469,5472],{},[19,5470],{"alt":21,"src":5471},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1532.webp",[19,5473],{"alt":21,"src":5474},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1533.webp",[16,5476,5477],{},"其实是因为launch里启动的和终端里启动的冲突了。",[16,5479,5480],{},"解决方案：只启动其中一个。",[16,5482,5483],{},[19,5484],{"alt":21,"src":5485},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1534.webp",[16,5487,5488],{},"解决方案：直接在Launch里启动GUI版本的，这样即可解决。(但是不建议)",[16,5490,5491],{},"建议方案：用非GUI版本的，因为以后，我们控制关节是用程序控制，而不是GUI控制。",[16,5493,5494],{},[19,5495],{"alt":21,"src":5496},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1535.webp",[16,5498,5499],{},"如果只是想展示模型，用GUI，",[16,5501,5502],{},"如果想用程序控制，用普通版。",[3549,5504,5505],{"id":5505},"base_footprint",[16,5507,5508],{},"bug:机器人底盘半沉入地下",[16,5510,5511],{},[19,5512],{"alt":21,"src":5513},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1536.webp",[16,5515,5516],{},[19,5517],{"alt":21,"src":5518},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1537.webp",[16,5520,5521],{},[19,5522],{"alt":21,"src":5523},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1538.webp",[16,5525,5526],{},[19,5527],{"alt":21,"src":5528},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1539.webp",[78,5530,5532],{"className":777,"code":5531,"language":779,"meta":21,"style":21},"  \u003Clink name=\"base_footprint\">\n    \u003Cvisual>\n      \u003Cgeometry>\n          \u003Csphere radius=\"0.001\"\u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n",[73,5533,5534,5549,5557,5565,5581,5589,5597],{"__ignoreMap":21},[86,5535,5536,5538,5540,5542,5544,5547],{"class":88,"line":89},[86,5537,3823],{"class":635},[86,5539,808],{"class":795},[86,5541,1661],{"class":92},[86,5543,849],{"class":635},[86,5545,5546],{"class":96},"\"base_footprint\"",[86,5548,823],{"class":635},[86,5550,5551,5553,5555],{"class":88,"line":646},[86,5552,1678],{"class":635},[86,5554,820],{"class":795},[86,5556,823],{"class":635},[86,5558,5559,5561,5563],{"class":88,"line":802},[86,5560,1698],{"class":635},[86,5562,832],{"class":795},[86,5564,823],{"class":635},[86,5566,5567,5569,5571,5574,5576,5579],{"class":88,"line":814},[86,5568,1724],{"class":635},[86,5570,3617],{"class":795},[86,5572,5573],{"class":92}," radius",[86,5575,849],{"class":635},[86,5577,5578],{"class":96},"\"0.001\"",[86,5580,855],{"class":635},[86,5582,5583,5585,5587],{"class":88,"line":826},[86,5584,1749],{"class":635},[86,5586,832],{"class":795},[86,5588,823],{"class":635},[86,5590,5591,5593,5595],{"class":88,"line":837},[86,5592,1758],{"class":635},[86,5594,820],{"class":795},[86,5596,823],{"class":635},[86,5598,5599,5601,5603],{"class":88,"line":858},[86,5600,1767],{"class":635},[86,5602,808],{"class":795},[86,5604,823],{"class":635},[78,5606,5608],{"className":777,"code":5607,"language":779,"meta":21,"style":21},"    \u003Cjoint name=\"baselink2basefootprint\" type=\"fixed\">\n      \u003Cparent link=\"base_footprint\"\u002F>\n      \u003Cchild link=\"base_link\"\u002F>\n      \u003Corigin xyz=\"0.0 0.0 0.05\"\u002F>\n    \u003C\u002Fjoint>\n",[73,5609,5610,5632,5646,5660,5675],{"__ignoreMap":21},[86,5611,5612,5614,5616,5618,5620,5623,5625,5627,5630],{"class":88,"line":89},[86,5613,1678],{"class":635},[86,5615,4652],{"class":795},[86,5617,1661],{"class":92},[86,5619,849],{"class":635},[86,5621,5622],{"class":96},"\"baselink2basefootprint\"",[86,5624,5358],{"class":92},[86,5626,849],{"class":635},[86,5628,5629],{"class":96},"\"fixed\"",[86,5631,823],{"class":635},[86,5633,5634,5636,5638,5640,5642,5644],{"class":88,"line":646},[86,5635,1698],{"class":635},[86,5637,4499],{"class":795},[86,5639,5374],{"class":92},[86,5641,849],{"class":635},[86,5643,5546],{"class":96},[86,5645,855],{"class":635},[86,5647,5648,5650,5652,5654,5656,5658],{"class":88,"line":802},[86,5649,1698],{"class":635},[86,5651,4514],{"class":795},[86,5653,5374],{"class":92},[86,5655,849],{"class":635},[86,5657,1687],{"class":96},[86,5659,855],{"class":635},[86,5661,5662,5664,5666,5668,5670,5673],{"class":88,"line":814},[86,5663,1698],{"class":635},[86,5665,3641],{"class":795},[86,5667,3938],{"class":92},[86,5669,849],{"class":635},[86,5671,5672],{"class":96},"\"0.0 0.0 0.05\"",[86,5674,855],{"class":635},[86,5676,5677,5679,5681],{"class":88,"line":826},[86,5678,1758],{"class":635},[86,5680,4652],{"class":795},[86,5682,823],{"class":635},[16,5684,5685],{},"Z的偏移量要填下沉底盘的距离，也就是整车底盘的一半。",[16,5687,5688,5691],{},[19,5689],{"alt":21,"src":5690},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1540.webp",[19,5692],{"alt":21,"src":5693},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1541.webp",[16,5695,5696],{},"修改参考坐标系",[16,5698,5699],{},"其实这个优化，可以不做，影响不大。但是建议用有basefootprint版本的。",[78,5701,5703],{"className":777,"code":5702,"language":779,"meta":21,"style":21},"\n \u003Crobot name=\"base_footprint_demo\">\n\n  \u003Cmaterial name=\"yellow\">\n    \u003Ccolor rgba=\"0.7 0.7 0 0.8\" \u002F>\n  \u003C\u002Fmaterial>\n  \u003Cmaterial name=\"red\">\n    \u003Ccolor rgba=\"0.8 0.1 0.1 0.8\" \u002F>\n  \u003C\u002Fmaterial>\n\n  \u003Clink name=\"base_footprint\">\n    \u003Cvisual>\n      \u003Cgeometry>\n          \u003Csphere radius=\"0.001\"\u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Clink name=\"base_link\">\n    \u003Cvisual>\n\n        \u003Cgeometry>\n            \u003Cbox size=\"0.5 0.3 0.1\" \u002F>\n        \u003C\u002Fgeometry>\n        \u003Corigin xyz=\"0 0 0\" rpy=\"0 0 0\" \u002F>\n        \u003Cmaterial name=\"yellow\"\u002F>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Cjoint name=\"baselink2basefootprint\" type=\"fixed\">\n    \u003Cparent link=\"base_footprint\"\u002F>\n    \u003Cchild link=\"base_link\"\u002F>\n    \u003Corigin xyz=\"0.0 0.0 0.05\"\u002F>\n  \u003C\u002Fjoint>\n\n  \u003Clink name=\"camera\">\n      \u003Cvisual>\n          \u003Cgeometry>\n              \u003Cbox size=\"0.02 0.05 0.05\" \u002F>\n          \u003C\u002Fgeometry>\n          \u003Corigin xyz=\"0 0 0\" rpy=\"0 0 0\" \u002F>\n          \u003Cmaterial name=\"red\" \u002F>\n      \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Cjoint name=\"camera2baselink\" type=\"fixed\">\n      \u003Cparent link=\"base_link\"\u002F>\n      \u003Cchild link=\"camera\" \u002F>\n\n      \u003Corigin xyz=\"0.2 0 0.075\" rpy=\"0 0 0\" \u002F>\n      \u003Caxis xyz=\"0 0 1\" \u002F>\n  \u003C\u002Fjoint>\n\n\u003C\u002Frobot>\n",[73,5704,5705,5709,5724,5728,5742,5756,5764,5778,5792,5800,5804,5818,5826,5834,5848,5856,5864,5872,5876,5890,5898,5902,5910,5924,5932,5952,5966,5974,5982,5986,6006,6020,6034,6048,6056,6060,6074,6082,6090,6104,6112,6132,6146,6154,6162,6166,6186,6200,6214,6218,6238,6252,6260,6264],{"__ignoreMap":21},[86,5706,5707],{"class":88,"line":89},[86,5708,787],{"emptyLinePlaceholder":786},[86,5710,5711,5713,5715,5717,5719,5722],{"class":88,"line":646},[86,5712,792],{"class":635},[86,5714,796],{"class":795},[86,5716,1661],{"class":92},[86,5718,849],{"class":635},[86,5720,5721],{"class":96},"\"base_footprint_demo\"",[86,5723,823],{"class":635},[86,5725,5726],{"class":88,"line":802},[86,5727,787],{"emptyLinePlaceholder":786},[86,5729,5730,5732,5734,5736,5738,5740],{"class":88,"line":814},[86,5731,3823],{"class":635},[86,5733,3663],{"class":795},[86,5735,1661],{"class":92},[86,5737,849],{"class":635},[86,5739,3832],{"class":96},[86,5741,823],{"class":635},[86,5743,5744,5746,5748,5750,5752,5754],{"class":88,"line":826},[86,5745,1678],{"class":635},[86,5747,3678],{"class":795},[86,5749,3843],{"class":92},[86,5751,849],{"class":635},[86,5753,3848],{"class":96},[86,5755,3851],{"class":635},[86,5757,5758,5760,5762],{"class":88,"line":837},[86,5759,1767],{"class":635},[86,5761,3663],{"class":795},[86,5763,823],{"class":635},[86,5765,5766,5768,5770,5772,5774,5776],{"class":88,"line":858},[86,5767,3823],{"class":635},[86,5769,3663],{"class":795},[86,5771,1661],{"class":92},[86,5773,849],{"class":635},[86,5775,5099],{"class":96},[86,5777,823],{"class":635},[86,5779,5780,5782,5784,5786,5788,5790],{"class":88,"line":868},[86,5781,1678],{"class":635},[86,5783,3678],{"class":795},[86,5785,3843],{"class":92},[86,5787,849],{"class":635},[86,5789,5114],{"class":96},[86,5791,3851],{"class":635},[86,5793,5794,5796,5798],{"class":88,"line":878},[86,5795,1767],{"class":635},[86,5797,3663],{"class":795},[86,5799,823],{"class":635},[86,5801,5802],{"class":88,"line":888},[86,5803,787],{"emptyLinePlaceholder":786},[86,5805,5806,5808,5810,5812,5814,5816],{"class":88,"line":1020},[86,5807,3823],{"class":635},[86,5809,808],{"class":795},[86,5811,1661],{"class":92},[86,5813,849],{"class":635},[86,5815,5546],{"class":96},[86,5817,823],{"class":635},[86,5819,5820,5822,5824],{"class":88,"line":1025},[86,5821,1678],{"class":635},[86,5823,820],{"class":795},[86,5825,823],{"class":635},[86,5827,5828,5830,5832],{"class":88,"line":1042},[86,5829,1698],{"class":635},[86,5831,832],{"class":795},[86,5833,823],{"class":635},[86,5835,5836,5838,5840,5842,5844,5846],{"class":88,"line":1064},[86,5837,1724],{"class":635},[86,5839,3617],{"class":795},[86,5841,5573],{"class":92},[86,5843,849],{"class":635},[86,5845,5578],{"class":96},[86,5847,855],{"class":635},[86,5849,5850,5852,5854],{"class":88,"line":1084},[86,5851,1749],{"class":635},[86,5853,832],{"class":795},[86,5855,823],{"class":635},[86,5857,5858,5860,5862],{"class":88,"line":1115},[86,5859,1758],{"class":635},[86,5861,820],{"class":795},[86,5863,823],{"class":635},[86,5865,5866,5868,5870],{"class":88,"line":1120},[86,5867,1767],{"class":635},[86,5869,808],{"class":795},[86,5871,823],{"class":635},[86,5873,5874],{"class":88,"line":1126},[86,5875,787],{"emptyLinePlaceholder":786},[86,5877,5878,5880,5882,5884,5886,5888],{"class":88,"line":1131},[86,5879,3823],{"class":635},[86,5881,808],{"class":795},[86,5883,1661],{"class":92},[86,5885,849],{"class":635},[86,5887,1687],{"class":96},[86,5889,823],{"class":635},[86,5891,5892,5894,5896],{"class":88,"line":1137},[86,5893,1678],{"class":635},[86,5895,820],{"class":795},[86,5897,823],{"class":635},[86,5899,5900],{"class":88,"line":1159},[86,5901,787],{"emptyLinePlaceholder":786},[86,5903,5904,5906,5908],{"class":88,"line":1170},[86,5905,1711],{"class":635},[86,5907,832],{"class":795},[86,5909,823],{"class":635},[86,5911,5912,5914,5916,5918,5920,5922],{"class":88,"line":1184},[86,5913,3902],{"class":635},[86,5915,843],{"class":795},[86,5917,846],{"class":92},[86,5919,849],{"class":635},[86,5921,3911],{"class":96},[86,5923,3851],{"class":635},[86,5925,5926,5928,5930],{"class":88,"line":1196},[86,5927,1740],{"class":635},[86,5929,832],{"class":795},[86,5931,823],{"class":635},[86,5933,5934,5936,5938,5940,5942,5944,5946,5948,5950],{"class":88,"line":1213},[86,5935,1711],{"class":635},[86,5937,3641],{"class":795},[86,5939,3938],{"class":92},[86,5941,849],{"class":635},[86,5943,3943],{"class":96},[86,5945,3946],{"class":92},[86,5947,849],{"class":635},[86,5949,3943],{"class":96},[86,5951,3851],{"class":635},[86,5953,5954,5956,5958,5960,5962,5964],{"class":88,"line":1219},[86,5955,1711],{"class":635},[86,5957,3663],{"class":795},[86,5959,1661],{"class":92},[86,5961,849],{"class":635},[86,5963,3832],{"class":96},[86,5965,855],{"class":635},[86,5967,5968,5970,5972],{"class":88,"line":1224},[86,5969,1758],{"class":635},[86,5971,820],{"class":795},[86,5973,823],{"class":635},[86,5975,5976,5978,5980],{"class":88,"line":1230},[86,5977,1767],{"class":635},[86,5979,808],{"class":795},[86,5981,823],{"class":635},[86,5983,5984],{"class":88,"line":1240},[86,5985,787],{"emptyLinePlaceholder":786},[86,5987,5988,5990,5992,5994,5996,5998,6000,6002,6004],{"class":88,"line":1252},[86,5989,3823],{"class":635},[86,5991,4652],{"class":795},[86,5993,1661],{"class":92},[86,5995,849],{"class":635},[86,5997,5622],{"class":96},[86,5999,5358],{"class":92},[86,6001,849],{"class":635},[86,6003,5629],{"class":96},[86,6005,823],{"class":635},[86,6007,6008,6010,6012,6014,6016,6018],{"class":88,"line":1262},[86,6009,1678],{"class":635},[86,6011,4499],{"class":795},[86,6013,5374],{"class":92},[86,6015,849],{"class":635},[86,6017,5546],{"class":96},[86,6019,855],{"class":635},[86,6021,6022,6024,6026,6028,6030,6032],{"class":88,"line":1267},[86,6023,1678],{"class":635},[86,6025,4514],{"class":795},[86,6027,5374],{"class":92},[86,6029,849],{"class":635},[86,6031,1687],{"class":96},[86,6033,855],{"class":635},[86,6035,6036,6038,6040,6042,6044,6046],{"class":88,"line":1272},[86,6037,1678],{"class":635},[86,6039,3641],{"class":795},[86,6041,3938],{"class":92},[86,6043,849],{"class":635},[86,6045,5672],{"class":96},[86,6047,855],{"class":635},[86,6049,6050,6052,6054],{"class":88,"line":1278},[86,6051,1767],{"class":635},[86,6053,4652],{"class":795},[86,6055,823],{"class":635},[86,6057,6058],{"class":88,"line":1288},[86,6059,787],{"emptyLinePlaceholder":786},[86,6061,6062,6064,6066,6068,6070,6072],{"class":88,"line":1300},[86,6063,3823],{"class":635},[86,6065,808],{"class":795},[86,6067,1661],{"class":92},[86,6069,849],{"class":635},[86,6071,5247],{"class":96},[86,6073,823],{"class":635},[86,6075,6076,6078,6080],{"class":88,"line":1310},[86,6077,1698],{"class":635},[86,6079,820],{"class":795},[86,6081,823],{"class":635},[86,6083,6084,6086,6088],{"class":88,"line":1315},[86,6085,1724],{"class":635},[86,6087,832],{"class":795},[86,6089,823],{"class":635},[86,6091,6092,6094,6096,6098,6100,6102],{"class":88,"line":1321},[86,6093,4256],{"class":635},[86,6095,843],{"class":795},[86,6097,846],{"class":92},[86,6099,849],{"class":635},[86,6101,5278],{"class":96},[86,6103,3851],{"class":635},[86,6105,6106,6108,6110],{"class":88,"line":1326},[86,6107,4275],{"class":635},[86,6109,832],{"class":795},[86,6111,823],{"class":635},[86,6113,6114,6116,6118,6120,6122,6124,6126,6128,6130],{"class":88,"line":1335},[86,6115,1724],{"class":635},[86,6117,3641],{"class":795},[86,6119,3938],{"class":92},[86,6121,849],{"class":635},[86,6123,3943],{"class":96},[86,6125,3946],{"class":92},[86,6127,849],{"class":635},[86,6129,3943],{"class":96},[86,6131,3851],{"class":635},[86,6133,6134,6136,6138,6140,6142,6144],{"class":88,"line":1341},[86,6135,1724],{"class":635},[86,6137,3663],{"class":795},[86,6139,1661],{"class":92},[86,6141,849],{"class":635},[86,6143,5099],{"class":96},[86,6145,3851],{"class":635},[86,6147,6148,6150,6152],{"class":88,"line":1347},[86,6149,1749],{"class":635},[86,6151,820],{"class":795},[86,6153,823],{"class":635},[86,6155,6156,6158,6160],{"class":88,"line":1353},[86,6157,1767],{"class":635},[86,6159,808],{"class":795},[86,6161,823],{"class":635},[86,6163,6164],{"class":88,"line":1359},[86,6165,787],{"emptyLinePlaceholder":786},[86,6167,6168,6170,6172,6174,6176,6178,6180,6182,6184],{"class":88,"line":2244},[86,6169,3823],{"class":635},[86,6171,4652],{"class":795},[86,6173,1661],{"class":92},[86,6175,849],{"class":635},[86,6177,5355],{"class":96},[86,6179,5358],{"class":92},[86,6181,849],{"class":635},[86,6183,5629],{"class":96},[86,6185,823],{"class":635},[86,6187,6188,6190,6192,6194,6196,6198],{"class":88,"line":2249},[86,6189,1698],{"class":635},[86,6191,4499],{"class":795},[86,6193,5374],{"class":92},[86,6195,849],{"class":635},[86,6197,1687],{"class":96},[86,6199,855],{"class":635},[86,6201,6202,6204,6206,6208,6210,6212],{"class":88,"line":2259},[86,6203,1698],{"class":635},[86,6205,4514],{"class":795},[86,6207,5374],{"class":92},[86,6209,849],{"class":635},[86,6211,5247],{"class":96},[86,6213,3851],{"class":635},[86,6215,6216],{"class":88,"line":2270},[86,6217,787],{"emptyLinePlaceholder":786},[86,6219,6220,6222,6224,6226,6228,6230,6232,6234,6236],{"class":88,"line":2279},[86,6221,1698],{"class":635},[86,6223,3641],{"class":795},[86,6225,3938],{"class":92},[86,6227,849],{"class":635},[86,6229,5411],{"class":96},[86,6231,3946],{"class":92},[86,6233,849],{"class":635},[86,6235,3943],{"class":96},[86,6237,3851],{"class":635},[86,6239,6240,6242,6244,6246,6248,6250],{"class":88,"line":2284},[86,6241,1698],{"class":635},[86,6243,5426],{"class":795},[86,6245,3938],{"class":92},[86,6247,849],{"class":635},[86,6249,5433],{"class":96},[86,6251,3851],{"class":635},[86,6253,6254,6256,6258],{"class":88,"line":2289},[86,6255,1767],{"class":635},[86,6257,4652],{"class":795},[86,6259,823],{"class":635},[86,6261,6262],{"class":88,"line":2298},[86,6263,787],{"emptyLinePlaceholder":786},[86,6265,6266,6268,6270],{"class":88,"line":2906},[86,6267,3991],{"class":635},[86,6269,796],{"class":795},[86,6271,823],{"class":635},[655,6273,4767],{"id":6274},"练习-1",[16,6276,6277],{},[19,6278],{"alt":21,"src":6279},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1542.webp",[16,6281,6282],{},"没必要太深入练习，咱们可以直接用SolidWorks建模，更为友好。",[16,6284,6285],{},[19,6286],{"alt":21,"src":6287},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1543.webp",[78,6289,6291],{"className":777,"code":6290,"language":779,"meta":21,"style":21},"\n \u003Crobot name=\"exercise_demo\">\n\n  \u003Cmaterial name=\"yellow\">\n    \u003Ccolor rgba=\"0.7 0.7 0 0.8\" \u002F>\n  \u003C\u002Fmaterial>\n  \u003Cmaterial name=\"red\">\n    \u003Ccolor rgba=\"0.8 0.1 0.1 0.8\" \u002F>\n  \u003C\u002Fmaterial>\n  \u003Cmaterial name=\"gray\">\n    \u003Ccolor rgba=\"0.2 0.2 0.2 0.8\" \u002F>\n  \u003C\u002Fmaterial>\n\n  \u003Clink name=\"base_footprint\">\n    \u003Cvisual>\n      \u003Cgeometry>\n          \u003Csphere radius=\"0.001\"\u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Clink name=\"base_link\">\n    \u003Cvisual>\n\n        \u003Cgeometry>\n            \u003Cbox size=\"0.2 0.12 0.07\" \u002F>\n        \u003C\u002Fgeometry>\n        \u003Corigin xyz=\"0 0 0\" rpy=\"0 0 0\" \u002F>\n        \u003Cmaterial name=\"yellow\"\u002F>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Cjoint name=\"baselink2basefootprint\" type=\"fixed\">\n    \u003Cparent link=\"base_footprint\"\u002F>\n    \u003Cchild link=\"base_link\"\u002F>\n    \u003Corigin xyz=\"0.0 0.0 0.05\"\u002F>\n  \u003C\u002Fjoint>\n\n  \u003Clink name=\"front_left_wheel\">\n      \u003Cvisual>\n          \u003Cgeometry>\n              \u003Ccylinder radius=\"0.025\" length=\"0.02\"\u002F>\n          \u003C\u002Fgeometry>\n          \u003Corigin xyz=\"0 0 0\" rpy=\"1.57 0 0\" \u002F>\n          \u003Cmaterial name=\"gray\" \u002F>\n      \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Cjoint name=\"frontleftwheel2baselink\" type=\"continuous\">\n      \u003Cparent link=\"base_link\"\u002F>\n      \u003Cchild link=\"front_left_wheel\" \u002F>\n\n      \u003Corigin xyz=\"0.075 0.06 -0.025\" rpy=\"0 0 0\" \u002F>\n      \u003Caxis xyz=\"0 1 0\" \u002F>\n  \u003C\u002Fjoint>\n\n  \u003Clink name=\"front_right_wheel\">\n    \u003Cvisual>\n        \u003Cgeometry>\n            \u003Ccylinder radius=\"0.025\" length=\"0.02\"\u002F>\n        \u003C\u002Fgeometry>\n        \u003Corigin xyz=\"0 0 0\" rpy=\"1.57 0 0\" \u002F>\n        \u003Cmaterial name=\"gray\" \u002F>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Cjoint name=\"frontrightwheel2baselink\" type=\"continuous\">\n      \u003Cparent link=\"base_link\"\u002F>\n      \u003Cchild link=\"front_right_wheel\" \u002F>\n\n      \u003Corigin xyz=\"0.075 -0.06 -0.025\" rpy=\"0 0 0\" \u002F>\n      \u003Caxis xyz=\"0 1 0\" \u002F>\n  \u003C\u002Fjoint>\n\n  \u003Clink name=\"back_left_wheel\">\n    \u003Cvisual>\n        \u003Cgeometry>\n            \u003Ccylinder radius=\"0.025\" length=\"0.02\"\u002F>\n        \u003C\u002Fgeometry>\n        \u003Corigin xyz=\"0 0 0\" rpy=\"1.57 0 0\" \u002F>\n        \u003Cmaterial name=\"gray\" \u002F>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Cjoint name=\"backleftwheel2baselink\" type=\"continuous\">\n    \u003Cparent link=\"base_link\"\u002F>\n    \u003Cchild link=\"back_left_wheel\" \u002F>\n\n    \u003Corigin xyz=\"-0.075 0.06 -0.025\" rpy=\"0 0 0\" \u002F>\n    \u003Caxis xyz=\"0 1 0\" \u002F>\n  \u003C\u002Fjoint>\n\n  \u003Clink name=\"back_right_wheel\">\n    \u003Cvisual>\n        \u003Cgeometry>\n            \u003Ccylinder radius=\"0.025\" length=\"0.02\"\u002F>\n        \u003C\u002Fgeometry>\n        \u003Corigin xyz=\"0 0 0\" rpy=\"1.57 0 0\" \u002F>\n        \u003Cmaterial name=\"gray\" \u002F>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\n  \u003Cjoint name=\"backrightwheel2baselink\" type=\"continuous\">\n    \u003Cparent link=\"base_link\"\u002F>\n    \u003Cchild link=\"back_right_wheel\" \u002F>\n\n    \u003Corigin xyz=\"-0.075 -0.06 -0.025\" rpy=\"0 0 0\" \u002F>\n    \u003Caxis xyz=\"0 1 0\" \u002F>\n  \u003C\u002Fjoint>\n\n\u003C\u002Frobot>\n",[73,6292,6293,6297,6312,6316,6330,6344,6352,6366,6380,6388,6403,6418,6426,6430,6444,6452,6460,6474,6482,6490,6498,6502,6516,6524,6528,6536,6551,6559,6579,6593,6601,6609,6613,6633,6647,6661,6675,6683,6687,6702,6710,6718,6741,6749,6770,6784,6792,6800,6804,6825,6839,6853,6857,6878,6893,6901,6905,6920,6928,6936,6956,6964,6984,6998,7006,7014,7018,7039,7053,7067,7071,7092,7106,7114,7118,7133,7141,7149,7169,7177,7197,7212,7221,7230,7235,7257,7272,7287,7292,7314,7329,7338,7343,7359,7368,7377,7398,7407,7428,7443,7452,7461,7466,7488,7503,7518,7523,7545,7560,7569,7574],{"__ignoreMap":21},[86,6294,6295],{"class":88,"line":89},[86,6296,787],{"emptyLinePlaceholder":786},[86,6298,6299,6301,6303,6305,6307,6310],{"class":88,"line":646},[86,6300,792],{"class":635},[86,6302,796],{"class":795},[86,6304,1661],{"class":92},[86,6306,849],{"class":635},[86,6308,6309],{"class":96},"\"exercise_demo\"",[86,6311,823],{"class":635},[86,6313,6314],{"class":88,"line":802},[86,6315,787],{"emptyLinePlaceholder":786},[86,6317,6318,6320,6322,6324,6326,6328],{"class":88,"line":814},[86,6319,3823],{"class":635},[86,6321,3663],{"class":795},[86,6323,1661],{"class":92},[86,6325,849],{"class":635},[86,6327,3832],{"class":96},[86,6329,823],{"class":635},[86,6331,6332,6334,6336,6338,6340,6342],{"class":88,"line":826},[86,6333,1678],{"class":635},[86,6335,3678],{"class":795},[86,6337,3843],{"class":92},[86,6339,849],{"class":635},[86,6341,3848],{"class":96},[86,6343,3851],{"class":635},[86,6345,6346,6348,6350],{"class":88,"line":837},[86,6347,1767],{"class":635},[86,6349,3663],{"class":795},[86,6351,823],{"class":635},[86,6353,6354,6356,6358,6360,6362,6364],{"class":88,"line":858},[86,6355,3823],{"class":635},[86,6357,3663],{"class":795},[86,6359,1661],{"class":92},[86,6361,849],{"class":635},[86,6363,5099],{"class":96},[86,6365,823],{"class":635},[86,6367,6368,6370,6372,6374,6376,6378],{"class":88,"line":868},[86,6369,1678],{"class":635},[86,6371,3678],{"class":795},[86,6373,3843],{"class":92},[86,6375,849],{"class":635},[86,6377,5114],{"class":96},[86,6379,3851],{"class":635},[86,6381,6382,6384,6386],{"class":88,"line":878},[86,6383,1767],{"class":635},[86,6385,3663],{"class":795},[86,6387,823],{"class":635},[86,6389,6390,6392,6394,6396,6398,6401],{"class":88,"line":888},[86,6391,3823],{"class":635},[86,6393,3663],{"class":795},[86,6395,1661],{"class":92},[86,6397,849],{"class":635},[86,6399,6400],{"class":96},"\"gray\"",[86,6402,823],{"class":635},[86,6404,6405,6407,6409,6411,6413,6416],{"class":88,"line":1020},[86,6406,1678],{"class":635},[86,6408,3678],{"class":795},[86,6410,3843],{"class":92},[86,6412,849],{"class":635},[86,6414,6415],{"class":96},"\"0.2 0.2 0.2 0.8\"",[86,6417,3851],{"class":635},[86,6419,6420,6422,6424],{"class":88,"line":1025},[86,6421,1767],{"class":635},[86,6423,3663],{"class":795},[86,6425,823],{"class":635},[86,6427,6428],{"class":88,"line":1042},[86,6429,787],{"emptyLinePlaceholder":786},[86,6431,6432,6434,6436,6438,6440,6442],{"class":88,"line":1064},[86,6433,3823],{"class":635},[86,6435,808],{"class":795},[86,6437,1661],{"class":92},[86,6439,849],{"class":635},[86,6441,5546],{"class":96},[86,6443,823],{"class":635},[86,6445,6446,6448,6450],{"class":88,"line":1084},[86,6447,1678],{"class":635},[86,6449,820],{"class":795},[86,6451,823],{"class":635},[86,6453,6454,6456,6458],{"class":88,"line":1115},[86,6455,1698],{"class":635},[86,6457,832],{"class":795},[86,6459,823],{"class":635},[86,6461,6462,6464,6466,6468,6470,6472],{"class":88,"line":1120},[86,6463,1724],{"class":635},[86,6465,3617],{"class":795},[86,6467,5573],{"class":92},[86,6469,849],{"class":635},[86,6471,5578],{"class":96},[86,6473,855],{"class":635},[86,6475,6476,6478,6480],{"class":88,"line":1126},[86,6477,1749],{"class":635},[86,6479,832],{"class":795},[86,6481,823],{"class":635},[86,6483,6484,6486,6488],{"class":88,"line":1131},[86,6485,1758],{"class":635},[86,6487,820],{"class":795},[86,6489,823],{"class":635},[86,6491,6492,6494,6496],{"class":88,"line":1137},[86,6493,1767],{"class":635},[86,6495,808],{"class":795},[86,6497,823],{"class":635},[86,6499,6500],{"class":88,"line":1159},[86,6501,787],{"emptyLinePlaceholder":786},[86,6503,6504,6506,6508,6510,6512,6514],{"class":88,"line":1170},[86,6505,3823],{"class":635},[86,6507,808],{"class":795},[86,6509,1661],{"class":92},[86,6511,849],{"class":635},[86,6513,1687],{"class":96},[86,6515,823],{"class":635},[86,6517,6518,6520,6522],{"class":88,"line":1184},[86,6519,1678],{"class":635},[86,6521,820],{"class":795},[86,6523,823],{"class":635},[86,6525,6526],{"class":88,"line":1196},[86,6527,787],{"emptyLinePlaceholder":786},[86,6529,6530,6532,6534],{"class":88,"line":1213},[86,6531,1711],{"class":635},[86,6533,832],{"class":795},[86,6535,823],{"class":635},[86,6537,6538,6540,6542,6544,6546,6549],{"class":88,"line":1219},[86,6539,3902],{"class":635},[86,6541,843],{"class":795},[86,6543,846],{"class":92},[86,6545,849],{"class":635},[86,6547,6548],{"class":96},"\"0.2 0.12 0.07\"",[86,6550,3851],{"class":635},[86,6552,6553,6555,6557],{"class":88,"line":1224},[86,6554,1740],{"class":635},[86,6556,832],{"class":795},[86,6558,823],{"class":635},[86,6560,6561,6563,6565,6567,6569,6571,6573,6575,6577],{"class":88,"line":1230},[86,6562,1711],{"class":635},[86,6564,3641],{"class":795},[86,6566,3938],{"class":92},[86,6568,849],{"class":635},[86,6570,3943],{"class":96},[86,6572,3946],{"class":92},[86,6574,849],{"class":635},[86,6576,3943],{"class":96},[86,6578,3851],{"class":635},[86,6580,6581,6583,6585,6587,6589,6591],{"class":88,"line":1240},[86,6582,1711],{"class":635},[86,6584,3663],{"class":795},[86,6586,1661],{"class":92},[86,6588,849],{"class":635},[86,6590,3832],{"class":96},[86,6592,855],{"class":635},[86,6594,6595,6597,6599],{"class":88,"line":1252},[86,6596,1758],{"class":635},[86,6598,820],{"class":795},[86,6600,823],{"class":635},[86,6602,6603,6605,6607],{"class":88,"line":1262},[86,6604,1767],{"class":635},[86,6606,808],{"class":795},[86,6608,823],{"class":635},[86,6610,6611],{"class":88,"line":1267},[86,6612,787],{"emptyLinePlaceholder":786},[86,6614,6615,6617,6619,6621,6623,6625,6627,6629,6631],{"class":88,"line":1272},[86,6616,3823],{"class":635},[86,6618,4652],{"class":795},[86,6620,1661],{"class":92},[86,6622,849],{"class":635},[86,6624,5622],{"class":96},[86,6626,5358],{"class":92},[86,6628,849],{"class":635},[86,6630,5629],{"class":96},[86,6632,823],{"class":635},[86,6634,6635,6637,6639,6641,6643,6645],{"class":88,"line":1278},[86,6636,1678],{"class":635},[86,6638,4499],{"class":795},[86,6640,5374],{"class":92},[86,6642,849],{"class":635},[86,6644,5546],{"class":96},[86,6646,855],{"class":635},[86,6648,6649,6651,6653,6655,6657,6659],{"class":88,"line":1288},[86,6650,1678],{"class":635},[86,6652,4514],{"class":795},[86,6654,5374],{"class":92},[86,6656,849],{"class":635},[86,6658,1687],{"class":96},[86,6660,855],{"class":635},[86,6662,6663,6665,6667,6669,6671,6673],{"class":88,"line":1300},[86,6664,1678],{"class":635},[86,6666,3641],{"class":795},[86,6668,3938],{"class":92},[86,6670,849],{"class":635},[86,6672,5672],{"class":96},[86,6674,855],{"class":635},[86,6676,6677,6679,6681],{"class":88,"line":1310},[86,6678,1767],{"class":635},[86,6680,4652],{"class":795},[86,6682,823],{"class":635},[86,6684,6685],{"class":88,"line":1315},[86,6686,787],{"emptyLinePlaceholder":786},[86,6688,6689,6691,6693,6695,6697,6700],{"class":88,"line":1321},[86,6690,3823],{"class":635},[86,6692,808],{"class":795},[86,6694,1661],{"class":92},[86,6696,849],{"class":635},[86,6698,6699],{"class":96},"\"front_left_wheel\"",[86,6701,823],{"class":635},[86,6703,6704,6706,6708],{"class":88,"line":1326},[86,6705,1698],{"class":635},[86,6707,820],{"class":795},[86,6709,823],{"class":635},[86,6711,6712,6714,6716],{"class":88,"line":1335},[86,6713,1724],{"class":635},[86,6715,832],{"class":795},[86,6717,823],{"class":635},[86,6719,6720,6722,6724,6726,6728,6731,6734,6736,6739],{"class":88,"line":1341},[86,6721,4256],{"class":635},[86,6723,3609],{"class":795},[86,6725,5573],{"class":92},[86,6727,849],{"class":635},[86,6729,6730],{"class":96},"\"0.025\"",[86,6732,6733],{"class":92}," length",[86,6735,849],{"class":635},[86,6737,6738],{"class":96},"\"0.02\"",[86,6740,855],{"class":635},[86,6742,6743,6745,6747],{"class":88,"line":1347},[86,6744,4275],{"class":635},[86,6746,832],{"class":795},[86,6748,823],{"class":635},[86,6750,6751,6753,6755,6757,6759,6761,6763,6765,6768],{"class":88,"line":1353},[86,6752,1724],{"class":635},[86,6754,3641],{"class":795},[86,6756,3938],{"class":92},[86,6758,849],{"class":635},[86,6760,3943],{"class":96},[86,6762,3946],{"class":92},[86,6764,849],{"class":635},[86,6766,6767],{"class":96},"\"1.57 0 0\"",[86,6769,3851],{"class":635},[86,6771,6772,6774,6776,6778,6780,6782],{"class":88,"line":1359},[86,6773,1724],{"class":635},[86,6775,3663],{"class":795},[86,6777,1661],{"class":92},[86,6779,849],{"class":635},[86,6781,6400],{"class":96},[86,6783,3851],{"class":635},[86,6785,6786,6788,6790],{"class":88,"line":2244},[86,6787,1749],{"class":635},[86,6789,820],{"class":795},[86,6791,823],{"class":635},[86,6793,6794,6796,6798],{"class":88,"line":2249},[86,6795,1767],{"class":635},[86,6797,808],{"class":795},[86,6799,823],{"class":635},[86,6801,6802],{"class":88,"line":2259},[86,6803,787],{"emptyLinePlaceholder":786},[86,6805,6806,6808,6810,6812,6814,6817,6819,6821,6823],{"class":88,"line":2270},[86,6807,3823],{"class":635},[86,6809,4652],{"class":795},[86,6811,1661],{"class":92},[86,6813,849],{"class":635},[86,6815,6816],{"class":96},"\"frontleftwheel2baselink\"",[86,6818,5358],{"class":92},[86,6820,849],{"class":635},[86,6822,5363],{"class":96},[86,6824,823],{"class":635},[86,6826,6827,6829,6831,6833,6835,6837],{"class":88,"line":2279},[86,6828,1698],{"class":635},[86,6830,4499],{"class":795},[86,6832,5374],{"class":92},[86,6834,849],{"class":635},[86,6836,1687],{"class":96},[86,6838,855],{"class":635},[86,6840,6841,6843,6845,6847,6849,6851],{"class":88,"line":2284},[86,6842,1698],{"class":635},[86,6844,4514],{"class":795},[86,6846,5374],{"class":92},[86,6848,849],{"class":635},[86,6850,6699],{"class":96},[86,6852,3851],{"class":635},[86,6854,6855],{"class":88,"line":2289},[86,6856,787],{"emptyLinePlaceholder":786},[86,6858,6859,6861,6863,6865,6867,6870,6872,6874,6876],{"class":88,"line":2298},[86,6860,1698],{"class":635},[86,6862,3641],{"class":795},[86,6864,3938],{"class":92},[86,6866,849],{"class":635},[86,6868,6869],{"class":96},"\"0.075 0.06 -0.025\"",[86,6871,3946],{"class":92},[86,6873,849],{"class":635},[86,6875,3943],{"class":96},[86,6877,3851],{"class":635},[86,6879,6880,6882,6884,6886,6888,6891],{"class":88,"line":2906},[86,6881,1698],{"class":635},[86,6883,5426],{"class":795},[86,6885,3938],{"class":92},[86,6887,849],{"class":635},[86,6889,6890],{"class":96},"\"0 1 0\"",[86,6892,3851],{"class":635},[86,6894,6895,6897,6899],{"class":88,"line":2917},[86,6896,1767],{"class":635},[86,6898,4652],{"class":795},[86,6900,823],{"class":635},[86,6902,6903],{"class":88,"line":2945},[86,6904,787],{"emptyLinePlaceholder":786},[86,6906,6907,6909,6911,6913,6915,6918],{"class":88,"line":2950},[86,6908,3823],{"class":635},[86,6910,808],{"class":795},[86,6912,1661],{"class":92},[86,6914,849],{"class":635},[86,6916,6917],{"class":96},"\"front_right_wheel\"",[86,6919,823],{"class":635},[86,6921,6922,6924,6926],{"class":88,"line":2955},[86,6923,1678],{"class":635},[86,6925,820],{"class":795},[86,6927,823],{"class":635},[86,6929,6930,6932,6934],{"class":88,"line":2964},[86,6931,1711],{"class":635},[86,6933,832],{"class":795},[86,6935,823],{"class":635},[86,6937,6938,6940,6942,6944,6946,6948,6950,6952,6954],{"class":88,"line":3354},[86,6939,3902],{"class":635},[86,6941,3609],{"class":795},[86,6943,5573],{"class":92},[86,6945,849],{"class":635},[86,6947,6730],{"class":96},[86,6949,6733],{"class":92},[86,6951,849],{"class":635},[86,6953,6738],{"class":96},[86,6955,855],{"class":635},[86,6957,6958,6960,6962],{"class":88,"line":3360},[86,6959,1740],{"class":635},[86,6961,832],{"class":795},[86,6963,823],{"class":635},[86,6965,6966,6968,6970,6972,6974,6976,6978,6980,6982],{"class":88,"line":3365},[86,6967,1711],{"class":635},[86,6969,3641],{"class":795},[86,6971,3938],{"class":92},[86,6973,849],{"class":635},[86,6975,3943],{"class":96},[86,6977,3946],{"class":92},[86,6979,849],{"class":635},[86,6981,6767],{"class":96},[86,6983,3851],{"class":635},[86,6985,6986,6988,6990,6992,6994,6996],{"class":88,"line":3371},[86,6987,1711],{"class":635},[86,6989,3663],{"class":795},[86,6991,1661],{"class":92},[86,6993,849],{"class":635},[86,6995,6400],{"class":96},[86,6997,3851],{"class":635},[86,6999,7000,7002,7004],{"class":88,"line":3376},[86,7001,1758],{"class":635},[86,7003,820],{"class":795},[86,7005,823],{"class":635},[86,7007,7008,7010,7012],{"class":88,"line":3382},[86,7009,1767],{"class":635},[86,7011,808],{"class":795},[86,7013,823],{"class":635},[86,7015,7016],{"class":88,"line":3391},[86,7017,787],{"emptyLinePlaceholder":786},[86,7019,7020,7022,7024,7026,7028,7031,7033,7035,7037],{"class":88,"line":3403},[86,7021,3823],{"class":635},[86,7023,4652],{"class":795},[86,7025,1661],{"class":92},[86,7027,849],{"class":635},[86,7029,7030],{"class":96},"\"frontrightwheel2baselink\"",[86,7032,5358],{"class":92},[86,7034,849],{"class":635},[86,7036,5363],{"class":96},[86,7038,823],{"class":635},[86,7040,7041,7043,7045,7047,7049,7051],{"class":88,"line":3413},[86,7042,1698],{"class":635},[86,7044,4499],{"class":795},[86,7046,5374],{"class":92},[86,7048,849],{"class":635},[86,7050,1687],{"class":96},[86,7052,855],{"class":635},[86,7054,7055,7057,7059,7061,7063,7065],{"class":88,"line":3418},[86,7056,1698],{"class":635},[86,7058,4514],{"class":795},[86,7060,5374],{"class":92},[86,7062,849],{"class":635},[86,7064,6917],{"class":96},[86,7066,3851],{"class":635},[86,7068,7069],{"class":88,"line":3423},[86,7070,787],{"emptyLinePlaceholder":786},[86,7072,7073,7075,7077,7079,7081,7084,7086,7088,7090],{"class":88,"line":3432},[86,7074,1698],{"class":635},[86,7076,3641],{"class":795},[86,7078,3938],{"class":92},[86,7080,849],{"class":635},[86,7082,7083],{"class":96},"\"0.075 -0.06 -0.025\"",[86,7085,3946],{"class":92},[86,7087,849],{"class":635},[86,7089,3943],{"class":96},[86,7091,3851],{"class":635},[86,7093,7094,7096,7098,7100,7102,7104],{"class":88,"line":3443},[86,7095,1698],{"class":635},[86,7097,5426],{"class":795},[86,7099,3938],{"class":92},[86,7101,849],{"class":635},[86,7103,6890],{"class":96},[86,7105,3851],{"class":635},[86,7107,7108,7110,7112],{"class":88,"line":3454},[86,7109,1767],{"class":635},[86,7111,4652],{"class":795},[86,7113,823],{"class":635},[86,7115,7116],{"class":88,"line":3459},[86,7117,787],{"emptyLinePlaceholder":786},[86,7119,7120,7122,7124,7126,7128,7131],{"class":88,"line":3465},[86,7121,3823],{"class":635},[86,7123,808],{"class":795},[86,7125,1661],{"class":92},[86,7127,849],{"class":635},[86,7129,7130],{"class":96},"\"back_left_wheel\"",[86,7132,823],{"class":635},[86,7134,7135,7137,7139],{"class":88,"line":3479},[86,7136,1678],{"class":635},[86,7138,820],{"class":795},[86,7140,823],{"class":635},[86,7142,7143,7145,7147],{"class":88,"line":3484},[86,7144,1711],{"class":635},[86,7146,832],{"class":795},[86,7148,823],{"class":635},[86,7150,7151,7153,7155,7157,7159,7161,7163,7165,7167],{"class":88,"line":3489},[86,7152,3902],{"class":635},[86,7154,3609],{"class":795},[86,7156,5573],{"class":92},[86,7158,849],{"class":635},[86,7160,6730],{"class":96},[86,7162,6733],{"class":92},[86,7164,849],{"class":635},[86,7166,6738],{"class":96},[86,7168,855],{"class":635},[86,7170,7171,7173,7175],{"class":88,"line":3494},[86,7172,1740],{"class":635},[86,7174,832],{"class":795},[86,7176,823],{"class":635},[86,7178,7179,7181,7183,7185,7187,7189,7191,7193,7195],{"class":88,"line":3503},[86,7180,1711],{"class":635},[86,7182,3641],{"class":795},[86,7184,3938],{"class":92},[86,7186,849],{"class":635},[86,7188,3943],{"class":96},[86,7190,3946],{"class":92},[86,7192,849],{"class":635},[86,7194,6767],{"class":96},[86,7196,3851],{"class":635},[86,7198,7200,7202,7204,7206,7208,7210],{"class":88,"line":7199},81,[86,7201,1711],{"class":635},[86,7203,3663],{"class":795},[86,7205,1661],{"class":92},[86,7207,849],{"class":635},[86,7209,6400],{"class":96},[86,7211,3851],{"class":635},[86,7213,7215,7217,7219],{"class":88,"line":7214},82,[86,7216,1758],{"class":635},[86,7218,820],{"class":795},[86,7220,823],{"class":635},[86,7222,7224,7226,7228],{"class":88,"line":7223},83,[86,7225,1767],{"class":635},[86,7227,808],{"class":795},[86,7229,823],{"class":635},[86,7231,7233],{"class":88,"line":7232},84,[86,7234,787],{"emptyLinePlaceholder":786},[86,7236,7238,7240,7242,7244,7246,7249,7251,7253,7255],{"class":88,"line":7237},85,[86,7239,3823],{"class":635},[86,7241,4652],{"class":795},[86,7243,1661],{"class":92},[86,7245,849],{"class":635},[86,7247,7248],{"class":96},"\"backleftwheel2baselink\"",[86,7250,5358],{"class":92},[86,7252,849],{"class":635},[86,7254,5363],{"class":96},[86,7256,823],{"class":635},[86,7258,7260,7262,7264,7266,7268,7270],{"class":88,"line":7259},86,[86,7261,1678],{"class":635},[86,7263,4499],{"class":795},[86,7265,5374],{"class":92},[86,7267,849],{"class":635},[86,7269,1687],{"class":96},[86,7271,855],{"class":635},[86,7273,7275,7277,7279,7281,7283,7285],{"class":88,"line":7274},87,[86,7276,1678],{"class":635},[86,7278,4514],{"class":795},[86,7280,5374],{"class":92},[86,7282,849],{"class":635},[86,7284,7130],{"class":96},[86,7286,3851],{"class":635},[86,7288,7290],{"class":88,"line":7289},88,[86,7291,787],{"emptyLinePlaceholder":786},[86,7293,7295,7297,7299,7301,7303,7306,7308,7310,7312],{"class":88,"line":7294},89,[86,7296,1678],{"class":635},[86,7298,3641],{"class":795},[86,7300,3938],{"class":92},[86,7302,849],{"class":635},[86,7304,7305],{"class":96},"\"-0.075 0.06 -0.025\"",[86,7307,3946],{"class":92},[86,7309,849],{"class":635},[86,7311,3943],{"class":96},[86,7313,3851],{"class":635},[86,7315,7317,7319,7321,7323,7325,7327],{"class":88,"line":7316},90,[86,7318,1678],{"class":635},[86,7320,5426],{"class":795},[86,7322,3938],{"class":92},[86,7324,849],{"class":635},[86,7326,6890],{"class":96},[86,7328,3851],{"class":635},[86,7330,7332,7334,7336],{"class":88,"line":7331},91,[86,7333,1767],{"class":635},[86,7335,4652],{"class":795},[86,7337,823],{"class":635},[86,7339,7341],{"class":88,"line":7340},92,[86,7342,787],{"emptyLinePlaceholder":786},[86,7344,7346,7348,7350,7352,7354,7357],{"class":88,"line":7345},93,[86,7347,3823],{"class":635},[86,7349,808],{"class":795},[86,7351,1661],{"class":92},[86,7353,849],{"class":635},[86,7355,7356],{"class":96},"\"back_right_wheel\"",[86,7358,823],{"class":635},[86,7360,7362,7364,7366],{"class":88,"line":7361},94,[86,7363,1678],{"class":635},[86,7365,820],{"class":795},[86,7367,823],{"class":635},[86,7369,7371,7373,7375],{"class":88,"line":7370},95,[86,7372,1711],{"class":635},[86,7374,832],{"class":795},[86,7376,823],{"class":635},[86,7378,7380,7382,7384,7386,7388,7390,7392,7394,7396],{"class":88,"line":7379},96,[86,7381,3902],{"class":635},[86,7383,3609],{"class":795},[86,7385,5573],{"class":92},[86,7387,849],{"class":635},[86,7389,6730],{"class":96},[86,7391,6733],{"class":92},[86,7393,849],{"class":635},[86,7395,6738],{"class":96},[86,7397,855],{"class":635},[86,7399,7401,7403,7405],{"class":88,"line":7400},97,[86,7402,1740],{"class":635},[86,7404,832],{"class":795},[86,7406,823],{"class":635},[86,7408,7410,7412,7414,7416,7418,7420,7422,7424,7426],{"class":88,"line":7409},98,[86,7411,1711],{"class":635},[86,7413,3641],{"class":795},[86,7415,3938],{"class":92},[86,7417,849],{"class":635},[86,7419,3943],{"class":96},[86,7421,3946],{"class":92},[86,7423,849],{"class":635},[86,7425,6767],{"class":96},[86,7427,3851],{"class":635},[86,7429,7431,7433,7435,7437,7439,7441],{"class":88,"line":7430},99,[86,7432,1711],{"class":635},[86,7434,3663],{"class":795},[86,7436,1661],{"class":92},[86,7438,849],{"class":635},[86,7440,6400],{"class":96},[86,7442,3851],{"class":635},[86,7444,7446,7448,7450],{"class":88,"line":7445},100,[86,7447,1758],{"class":635},[86,7449,820],{"class":795},[86,7451,823],{"class":635},[86,7453,7455,7457,7459],{"class":88,"line":7454},101,[86,7456,1767],{"class":635},[86,7458,808],{"class":795},[86,7460,823],{"class":635},[86,7462,7464],{"class":88,"line":7463},102,[86,7465,787],{"emptyLinePlaceholder":786},[86,7467,7469,7471,7473,7475,7477,7480,7482,7484,7486],{"class":88,"line":7468},103,[86,7470,3823],{"class":635},[86,7472,4652],{"class":795},[86,7474,1661],{"class":92},[86,7476,849],{"class":635},[86,7478,7479],{"class":96},"\"backrightwheel2baselink\"",[86,7481,5358],{"class":92},[86,7483,849],{"class":635},[86,7485,5363],{"class":96},[86,7487,823],{"class":635},[86,7489,7491,7493,7495,7497,7499,7501],{"class":88,"line":7490},104,[86,7492,1678],{"class":635},[86,7494,4499],{"class":795},[86,7496,5374],{"class":92},[86,7498,849],{"class":635},[86,7500,1687],{"class":96},[86,7502,855],{"class":635},[86,7504,7506,7508,7510,7512,7514,7516],{"class":88,"line":7505},105,[86,7507,1678],{"class":635},[86,7509,4514],{"class":795},[86,7511,5374],{"class":92},[86,7513,849],{"class":635},[86,7515,7356],{"class":96},[86,7517,3851],{"class":635},[86,7519,7521],{"class":88,"line":7520},106,[86,7522,787],{"emptyLinePlaceholder":786},[86,7524,7526,7528,7530,7532,7534,7537,7539,7541,7543],{"class":88,"line":7525},107,[86,7527,1678],{"class":635},[86,7529,3641],{"class":795},[86,7531,3938],{"class":92},[86,7533,849],{"class":635},[86,7535,7536],{"class":96},"\"-0.075 -0.06 -0.025\"",[86,7538,3946],{"class":92},[86,7540,849],{"class":635},[86,7542,3943],{"class":96},[86,7544,3851],{"class":635},[86,7546,7548,7550,7552,7554,7556,7558],{"class":88,"line":7547},108,[86,7549,1678],{"class":635},[86,7551,5426],{"class":795},[86,7553,3938],{"class":92},[86,7555,849],{"class":635},[86,7557,6890],{"class":96},[86,7559,3851],{"class":635},[86,7561,7563,7565,7567],{"class":88,"line":7562},109,[86,7564,1767],{"class":635},[86,7566,4652],{"class":795},[86,7568,823],{"class":635},[86,7570,7572],{"class":88,"line":7571},110,[86,7573,787],{"emptyLinePlaceholder":786},[86,7575,7577,7579,7581],{"class":88,"line":7576},111,[86,7578,3991],{"class":635},[86,7580,796],{"class":795},[86,7582,823],{"class":635},[16,7584,7585],{},"终端运行",[78,7587,7589],{"className":80,"code":7588,"language":82,"meta":21,"style":21},"ros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fdemo05_exercise.urdf\n",[73,7590,7591],{"__ignoreMap":21},[86,7592,7593,7595,7597,7599,7601,7603,7605,7607,7609,7611],{"class":88,"line":89},[86,7594,726],{"class":92},[86,7596,1528],{"class":96},[86,7598,735],{"class":96},[86,7600,2520],{"class":96},[86,7602,2523],{"class":96},[86,7604,726],{"class":92},[86,7606,2528],{"class":96},[86,7608,2531],{"class":738},[86,7610,2534],{"class":96},[86,7612,7613],{"class":92},"\u002Furdf\u002Furdf\u002Fdemo05_exercise.urdf\n",[16,7615,7616],{},[19,7617],{"alt":21,"src":7618},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1544.webp",[12,7620,7622],{"id":7621},"urdf工具","URDF工具",[16,7624,7625],{},"在 ROS2 中，提供了一些URDF文件相关的工具，比如:",[165,7627,7628,7634],{},[144,7629,7630,7633],{},[73,7631,7632],{},"check_urdf","命令可以检查复杂的 urdf 文件是否存在语法问题；",[144,7635,7636,7639],{},[73,7637,7638],{},"urdf_to_graphviz","命令可以查看 urdf 模型结构，显示不同 link 的层级关系。",[16,7641,7642,7643,129],{},"当然，要使用工具之前，请先安装，安装命令：",[73,7644,7645],{},"sudo apt install liburdfdom-tools",[655,7647,7649],{"id":7648},"check_urdf-语法检查",[107,7650,7651],{},"check_urdf 语法检查",[16,7653,7654,7655,7658],{},"进入urdf文件所属目录，调用：",[73,7656,7657],{},"check_urdf urdf文件","，如果不抛出异常，说明文件合法，否则非法。",[16,7660,7661],{},"示例，终端下进入功能包 cpp06_urdf 的 urdf\u002Furdf 目录，执行如下命令：",[78,7663,7665],{"className":80,"code":7664,"language":82,"meta":21,"style":21},"check_urdf demo05_exercise.urdf\n",[73,7666,7667],{"__ignoreMap":21},[86,7668,7669,7671],{"class":88,"line":89},[86,7670,7632],{"class":92},[86,7672,7673],{"class":96}," demo05_exercise.urdf\n",[16,7675,7676],{},"urdf 文件如无异常，将显示urdf中link的层级关系，如下图所示：",[16,7678,7679],{},[19,7680],{"alt":21,"src":7681},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1545.webp",[16,7683,7684],{},"否则将会给出错误提示。",[16,7686,7687],{},[19,7688],{"alt":21,"src":7689},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1546.webp",[16,7691,7692],{},"演示错误，",[16,7694,7695],{},[19,7696],{"alt":21,"src":7697},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1547.webp",[655,7699,7701],{"id":7700},"urdf_to_graphviz-结构查看",[107,7702,7703],{},"urdf_to_graphviz 结构查看",[16,7705,7706,7707,7710],{},"进入urdf文件所属目录，调用:",[73,7708,7709],{},"urdf_to_graphviz urdf文件","，当前目录下会生成 pdf 文件。",[16,7712,7661],{},[78,7714,7716],{"className":80,"code":7715,"language":82,"meta":21,"style":21},"urdf_to_graphviz demo05_exercise.urdf\n",[73,7717,7718],{"__ignoreMap":21},[86,7719,7720,7722],{"class":88,"line":89},[86,7721,7638],{"class":92},[86,7723,7673],{"class":96},[16,7725,7726],{},"当前目录下，将生成以urdf中robot名称命名的.pdf和.gv文件，打开pdf文件会显示如下图内容：",[16,7728,7729],{},[19,7730],{"alt":21,"src":7731},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1548.webp",[16,7733,7734],{},"在上图中会以树形结构显示link与joint的关系。",[16,7736,7737,7739,7740,7743,7744,7746],{},[107,7738,3779],{}," 该工具以前名为",[73,7741,7742],{},"urdf_to_graphiz","现建议使用",[73,7745,7638],{},"替代。",[16,7748,7749],{},[19,7750],{"alt":21,"src":7751},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1549.webp",[16,7753,7754,7756,7757,129],{},[73,7755,7742],{},"是历史版本，已经被废弃，建议用",[73,7758,7638],{},[16,7760,7761],{},[19,7762],{"alt":21,"src":7763},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1550.webp",[16,7765,7766],{},[19,7767],{"alt":21,"src":7768},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1551.webp",[16,7770,7771],{},[19,7772],{"alt":21,"src":7773},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1552.webp",[16,7775,7776],{},[19,7777],{"alt":21,"src":7778},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1553.webp",[16,7780,7781],{},"黑色方框代表Link，蓝色代表Joint，也会展示平移量和旋转度等信息。",[12,7783,7785],{"id":7784},"sw2urdf","SW2URDF",[655,7787,7788],{"id":7788},"solidworks简介",[16,7790,7791],{},"SolidWorks是一种计算机辅助设计（CAD）和计算机辅助制造（CAM）软件，由Dassault Systèmes SolidWorks Corp.开发。它主要用于工程设计和制造，可用于创建3D三维模型、进行装配设计、进行工程分析和绘图等。SolidWorks具有直观的用户界面和强大的功能，使工程师和设计师能够快速而精确地设计复杂的零部件和装配体。该软件广泛应用于机械、航空航天、汽车、医疗设备等行业，是工程设计领域的重要工具之一。",[16,7793,7794],{},[19,7795],{"alt":21,"src":7796},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1554.webp",[655,7798,7799],{"id":7799},"solidworks插件sw2urdf介绍",[16,7801,7802],{},"sw2urdf插件维基百科：",[16,7804,7805],{},[4363,7806,7807],{"href":7807,"rel":7808},"https:\u002F\u002Fwiki.ros.org\u002Fsw_urdf_exporter",[4367],[16,7810,7811],{},"github下载链接：",[16,7813,7814],{},[4363,7815,7816],{"href":7816,"rel":7817},"https:\u002F\u002Fgithub.com\u002Fros\u002Fsolidworks_urdf_exporter\u002Freleases",[4367],[16,7819,7820],{},"虽然github链接上写着只支持到SW2021，但是目前发现最新版SW(2022、2024经测试)也是可以正常用的。",[16,7822,7823],{},[19,7824],{"alt":21,"src":7825},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1555.webp",[655,7827,7828],{"id":7828},"安装sw2urdf",[141,7830,7831],{},[144,7832,7833],{},"去github上下载sw2urdf插件（这个SW版本不用管，实测在后续的SW版本依然可用）",[16,7835,7836],{},[19,7837],{"alt":21,"src":7838},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1556.webp",[141,7840,7841],{"start":646},[144,7842,7843],{},"查看SW的安装路径",[16,7845,7846],{},"比如我的路径\"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\\"",[16,7848,7849],{},[19,7850],{"alt":21,"src":7851},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1557.webp",[141,7853,7854],{"start":802},[144,7855,7856],{},"打开插件安装器，默认情况下会自动找到你的SW路径进行安装，如果没有自动找到路径安装，那么需要手动选取SW安装路径。",[16,7858,7859],{},[19,7860],{"alt":21,"src":7861},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1558.webp",[141,7863,7864],{"start":814},[144,7865,7866],{},"查看插件是否安装成功",[16,7868,7869],{},[19,7870],{"alt":21,"src":7871},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1559.webp",[16,7873,7874],{},[19,7875],{"alt":21,"src":7876},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1560.webp",[16,7878,7879],{},"如图这样就是安装成功了。",[655,7881,7883],{"id":7882},"导出urdf与meshes","导出URDF与Meshes",[141,7885,7886],{},[144,7887,7888],{},"如图是一个标准的SW装配体图(大家也可以尝试自己手撸一个，里面没有传动装置也可以)",[16,7890,7891,7892],{},"这个过程看不太懂的话，可以参考一下古月居老师的视频，结合本教程一起学习。 【SolidWorks模型导出urdf（古月居老师）-哔哩哔哩】",[4363,7893,7894],{"href":7894,"rel":7895},"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Tx411o7rH",[4367],[16,7897,7898],{},[19,7899],{"alt":21,"src":7900},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1561.webp",[141,7902,7903],{"start":646},[144,7904,7905],{},"对joint关节建立基准轴",[16,7907,7908],{},[19,7909],{"alt":21,"src":7910},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1562.webp",[16,7912,7913],{},"选择关节的圆柱面或者其他面，对转轴进行标定",[16,7915,7916],{},[19,7917],{"alt":21,"src":7918},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1563.webp",[16,7920,7921],{},"如果建完基准轴，发现不能够正常展示，那么就打开该选项。",[16,7923,7924],{},[19,7925],{"alt":21,"src":7926},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1564.webp",[16,7928,7929],{},[19,7930],{"alt":21,"src":7931},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1565.webp",[16,7933,7934],{},"建完所有系后",[141,7936,7937],{"start":802},[144,7938,7939],{},"打开export as URDF选项",[16,7941,7942],{},[19,7943],{"alt":21,"src":7944},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1566.webp",[141,7946,7947],{"start":814},[144,7948,7949],{},"需要先选择base_link基底刚体",[16,7951,7952],{},[19,7953],{"alt":21,"src":7954},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1567.webp",[16,7956,7957],{},"这里的Global Origin可能需要自己选择，就选择Origin_Global即可，但是一般选择automatically Generate即可。",[141,7959,7960],{"start":826},[144,7961,7962],{},"因为他的base_link通过一个joint连接了一个child_link，所以，这个选项要填1。",[16,7964,7965,7968],{},[19,7966],{"alt":21,"src":7967},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1568.webp",[19,7969],{"alt":21,"src":7970},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1569.webp",[16,7972,7973],{},"咱们把base_link连接的关节叫joint1，把joint1连接的更上面的刚体叫做link1,",[16,7975,7976],{},"然后参考基准轴选择刚才咱们在这个关节处建立的基准轴1，然后joint type关节类型选择revolute（有限位的关节，只有这样，机器人关节才可以正常运动）",[16,7978,7979],{},[19,7980],{"alt":21,"src":7981},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1570.webp",[16,7983,7984],{},"这里的参考坐标系系统可以选择automatically Generate，也可以选择Origin_Joint1。",[16,7986,7987],{},"然后再在link1上加一，创建link2。",[16,7989,7990],{},"后面的link3，link4添加步骤是一样的，不再详细展示。",[16,7992,7993],{},[19,7994],{"alt":21,"src":7995},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1571.webp",[16,7997,7998],{},[19,7999],{"alt":21,"src":8000},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1572.webp",[16,8002,8003],{},[19,8004],{"alt":21,"src":8005},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1573.webp",[141,8007,8008],{"start":837},[144,8009,8010],{},"点击preview and export",[16,8012,8013],{},[19,8014],{"alt":21,"src":8015},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1574.webp",[141,8017,8018],{"start":858},[144,8019,8020],{},"对关节进行限位设置",[16,8022,8023],{},"coordinates是坐标系，axis是轴，如果这里Axis坐标显示错误，那么说明Coordinates或者Axis选择错了，请手动选择正确的坐标系或者基准轴。",[16,8025,8026],{},[19,8027],{"alt":21,"src":8028},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1575.webp",[16,8030,8031],{},"如果转轴生成错误，比如都是000，可以自己填一下。",[16,8033,8034],{},[19,8035],{"alt":21,"src":8036},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1576.webp",[16,8038,8039],{},"比如这里是X轴，可以把左轮全填-100,右轮100（这里，仅供参考，chatgpt提供的解决方案）",[16,8041,8042],{},[19,8043],{"alt":21,"src":8044},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1577.webp",[141,8046,8047],{"start":868},[144,8048,8049],{},"查看矩阵，并点导出urdf与meshes",[16,8051,8052],{},[19,8053],{"alt":21,"src":8054},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1578.webp",[16,8056,8057],{},[19,8058],{"alt":21,"src":8059},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1579.webp",[16,8061,8062],{},[19,8063],{"alt":21,"src":8064},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1580.webp",[16,8066,8067],{},[19,8068],{"alt":21,"src":8069},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1581.webp",[16,8071,8072],{},"这样就成功生成ROS1的WS了，将WS移动至Linux系统。",[655,8074,8076],{"id":8075},"将ros1的ws转化为ros2的ws","将ROS1的WS转化为ROS2的WS",[141,8078,8079],{},[144,8080,8081],{},"先将ROS1的WS移动到Linux系统上",[16,8083,8084],{},[19,8085],{"alt":21,"src":8086},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1582.webp",[141,8088,8089],{"start":646},[144,8090,8091],{},"新建一个ROS2的WS",[16,8093,8094],{},[19,8095],{"alt":21,"src":8096},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1583.webp",[78,8098,8100],{"className":80,"code":8099,"language":82,"meta":21,"style":21},"mkdir -p ros2_4axisrobot_ws\u002Fsrc\ncd ros2_4axisrobot_ws\u002F\ncolcon build\ncd src\nros2 pkg create cpp01_urdf --build-type ament_cmake\ncd ..\ncode .\n",[73,8101,8102,8113,8121,8128,8135,8150,8157],{"__ignoreMap":21},[86,8103,8104,8107,8110],{"class":88,"line":89},[86,8105,8106],{"class":92},"mkdir",[86,8108,8109],{"class":738}," -p",[86,8111,8112],{"class":96}," ros2_4axisrobot_ws\u002Fsrc\n",[86,8114,8115,8118],{"class":88,"line":646},[86,8116,8117],{"class":738},"cd",[86,8119,8120],{"class":96}," ros2_4axisrobot_ws\u002F\n",[86,8122,8123,8125],{"class":88,"line":802},[86,8124,1494],{"class":92},[86,8126,8127],{"class":96}," build\n",[86,8129,8130,8132],{"class":88,"line":814},[86,8131,8117],{"class":738},[86,8133,8134],{"class":96}," src\n",[86,8136,8137,8139,8141,8143,8146,8148],{"class":88,"line":826},[86,8138,726],{"class":92},[86,8140,729],{"class":96},[86,8142,732],{"class":96},[86,8144,8145],{"class":96}," cpp01_urdf",[86,8147,739],{"class":738},[86,8149,742],{"class":96},[86,8151,8152,8154],{"class":88,"line":837},[86,8153,8117],{"class":738},[86,8155,8156],{"class":96}," ..\n",[86,8158,8159,8161],{"class":88,"line":858},[86,8160,73],{"class":92},[86,8162,8163],{"class":96}," .\n",[141,8165,8166],{"start":802},[144,8167,8168],{},"完善WS的目录",[16,8170,8171,8174],{},[19,8172],{"alt":21,"src":8173},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1584.webp",[19,8175],{"alt":21,"src":8176},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1585.webp",[16,8178,8179],{},"在.\u002Fsrc\u002Fcpp01_urdf路径下创建launch、meshes、rviz、urdf等等文件夹，在urdf文件夹下再新建urdf和xacro文件夹",[141,8181,8182],{"start":814},[144,8183,8184],{},"复制ROS1的WS里的URDF和Meshes到ROS2的WS中",[16,8186,8187,8190],{},[19,8188],{"alt":21,"src":8189},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1586.webp",[19,8191],{"alt":21,"src":8192},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1587.webp",[16,8194,8195],{},[19,8196],{"alt":21,"src":8197},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1588.webp",[141,8199,8200],{"start":826},[144,8201,8202],{},"对CMake和package进行配置",[16,8204,8205],{},"在CMake中请添加",[78,8207,8208],{"className":1447,"code":1448,"language":1449,"meta":21,"style":21},[73,8209,8210,8216,8220,8228],{"__ignoreMap":21},[86,8211,8212,8214],{"class":88,"line":89},[86,8213,1456],{"class":639},[86,8215,1459],{"class":635},[86,8217,8218],{"class":88,"line":646},[86,8219,1464],{"class":635},[86,8221,8222,8224,8226],{"class":88,"line":802},[86,8223,1469],{"class":635},[86,8225,1472],{"class":639},[86,8227,1475],{"class":635},[86,8229,8230],{"class":88,"line":814},[86,8231,1039],{"class":635},[16,8233,8234],{},"在Package.xml中请添加",[78,8236,8238],{"className":777,"code":8237,"language":779,"meta":21,"style":21},"  \u003Cexec_depend>rviz2\u003C\u002Fexec_depend>\n  \u003Cexec_depend>xacro\u003C\u002Fexec_depend>\n  \u003Cexec_depend>robot_state_publisher\u003C\u002Fexec_depend>\n  \u003Cexec_depend>joint_state_publisher\u003C\u002Fexec_depend>\n  \u003Cexec_depend>ros2launch\u003C\u002Fexec_depend>\n",[73,8239,8240,8252,8264,8276,8288],{"__ignoreMap":21},[86,8241,8242,8244,8246,8248,8250],{"class":88,"line":89},[86,8243,3823],{"class":635},[86,8245,1380],{"class":795},[86,8247,1383],{"class":635},[86,8249,1380],{"class":795},[86,8251,823],{"class":635},[86,8253,8254,8256,8258,8260,8262],{"class":88,"line":646},[86,8255,3823],{"class":635},[86,8257,1380],{"class":795},[86,8259,1396],{"class":635},[86,8261,1380],{"class":795},[86,8263,823],{"class":635},[86,8265,8266,8268,8270,8272,8274],{"class":88,"line":802},[86,8267,3823],{"class":635},[86,8269,1380],{"class":795},[86,8271,1409],{"class":635},[86,8273,1380],{"class":795},[86,8275,823],{"class":635},[86,8277,8278,8280,8282,8284,8286],{"class":88,"line":814},[86,8279,3823],{"class":635},[86,8281,1380],{"class":795},[86,8283,1422],{"class":635},[86,8285,1380],{"class":795},[86,8287,823],{"class":635},[86,8289,8290,8292,8294,8296,8298],{"class":88,"line":826},[86,8291,3823],{"class":635},[86,8293,1380],{"class":795},[86,8295,1435],{"class":635},[86,8297,1380],{"class":795},[86,8299,823],{"class":635},[16,8301,8302],{},"CMakeLists.txt",[78,8304,8306],{"className":1447,"code":8305,"language":1449,"meta":21,"style":21},"cmake_minimum_required(VERSION 3.8)\nproject(cpp01_urdf)\n\nif(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES \"Clang\")\n  add_compile_options(-Wall -Wextra -Wpedantic)\nendif()\n\n# find dependencies\nfind_package(ament_cmake REQUIRED)\n\n# uncomment the following section in order to fill in\n\n# further dependencies manually.\n\n# find_package(\u003Cdependency> REQUIRED)\n\ninstall(\n  DIRECTORY launch urdf rviz meshes\n  DESTINATION share\u002F${PROJECT_NAME}  \n)\n\nif(BUILD_TESTING)\n  find_package(ament_lint_auto REQUIRED)\n\n  # the following line skips the linter which checks for copyrights\n\n  # comment the line when a copyright and license is added to all source files\n  set(ament_cmake_copyright_FOUND TRUE)\n\n  # the following line skips cpplint (only works in a git repo)\n\n  # comment the line when this package is in a git repo and when\n\n  # a copyright and license is added to all source files\n  set(ament_cmake_cpplint_FOUND TRUE)\n  ament_lint_auto_find_test_dependencies()\nendif()\n\nament_package()\n\n",[73,8307,8308,8322,8330,8334,8356,8364,8372,8376,8381,8389,8393,8398,8402,8407,8411,8416,8420,8426,8430,8438,8442,8446,8453,8461,8465,8470,8474,8479,8492,8496,8501,8505,8510,8514,8519,8530,8535,8541,8545],{"__ignoreMap":21},[86,8309,8310,8313,8316,8319],{"class":88,"line":89},[86,8311,8312],{"class":639},"cmake_minimum_required",[86,8314,8315],{"class":635},"(",[86,8317,8318],{"class":92},"VERSION",[86,8320,8321],{"class":635}," 3.8)\n",[86,8323,8324,8327],{"class":88,"line":646},[86,8325,8326],{"class":639},"project",[86,8328,8329],{"class":635},"(cpp01_urdf)\n",[86,8331,8332],{"class":88,"line":802},[86,8333,787],{"emptyLinePlaceholder":786},[86,8335,8336,8339,8342,8345,8348,8351,8354],{"class":88,"line":814},[86,8337,8338],{"class":639},"if",[86,8340,8341],{"class":635},"(CMAKE_COMPILER_IS_GNUCXX ",[86,8343,8344],{"class":639},"OR",[86,8346,8347],{"class":635}," CMAKE_CXX_COMPILER_ID ",[86,8349,8350],{"class":639},"MATCHES",[86,8352,8353],{"class":96}," \"Clang\"",[86,8355,1039],{"class":635},[86,8357,8358,8361],{"class":88,"line":826},[86,8359,8360],{"class":639},"  add_compile_options",[86,8362,8363],{"class":635},"(-Wall -Wextra -Wpedantic)\n",[86,8365,8366,8369],{"class":88,"line":837},[86,8367,8368],{"class":639},"endif",[86,8370,8371],{"class":635},"()\n",[86,8373,8374],{"class":88,"line":858},[86,8375,787],{"emptyLinePlaceholder":786},[86,8377,8378],{"class":88,"line":868},[86,8379,8380],{"class":1005},"# find dependencies\n",[86,8382,8383,8386],{"class":88,"line":878},[86,8384,8385],{"class":639},"find_package",[86,8387,8388],{"class":635},"(ament_cmake REQUIRED)\n",[86,8390,8391],{"class":88,"line":888},[86,8392,787],{"emptyLinePlaceholder":786},[86,8394,8395],{"class":88,"line":1020},[86,8396,8397],{"class":1005},"# uncomment the following section in order to fill in\n",[86,8399,8400],{"class":88,"line":1025},[86,8401,787],{"emptyLinePlaceholder":786},[86,8403,8404],{"class":88,"line":1042},[86,8405,8406],{"class":1005},"# further dependencies manually.\n",[86,8408,8409],{"class":88,"line":1064},[86,8410,787],{"emptyLinePlaceholder":786},[86,8412,8413],{"class":88,"line":1084},[86,8414,8415],{"class":1005},"# find_package(\u003Cdependency> REQUIRED)\n",[86,8417,8418],{"class":88,"line":1115},[86,8419,787],{"emptyLinePlaceholder":786},[86,8421,8422,8424],{"class":88,"line":1120},[86,8423,1456],{"class":639},[86,8425,1459],{"class":635},[86,8427,8428],{"class":88,"line":1126},[86,8429,1464],{"class":635},[86,8431,8432,8434,8436],{"class":88,"line":1131},[86,8433,1469],{"class":635},[86,8435,1472],{"class":639},[86,8437,1475],{"class":635},[86,8439,8440],{"class":88,"line":1137},[86,8441,1039],{"class":635},[86,8443,8444],{"class":88,"line":1159},[86,8445,787],{"emptyLinePlaceholder":786},[86,8447,8448,8450],{"class":88,"line":1170},[86,8449,8338],{"class":639},[86,8451,8452],{"class":635},"(BUILD_TESTING)\n",[86,8454,8455,8458],{"class":88,"line":1184},[86,8456,8457],{"class":639},"  find_package",[86,8459,8460],{"class":635},"(ament_lint_auto REQUIRED)\n",[86,8462,8463],{"class":88,"line":1196},[86,8464,787],{"emptyLinePlaceholder":786},[86,8466,8467],{"class":88,"line":1213},[86,8468,8469],{"class":1005},"  # the following line skips the linter which checks for copyrights\n",[86,8471,8472],{"class":88,"line":1219},[86,8473,787],{"emptyLinePlaceholder":786},[86,8475,8476],{"class":88,"line":1224},[86,8477,8478],{"class":1005},"  # comment the line when a copyright and license is added to all source files\n",[86,8480,8481,8484,8487,8490],{"class":88,"line":1230},[86,8482,8483],{"class":639},"  set",[86,8485,8486],{"class":635},"(ament_cmake_copyright_FOUND ",[86,8488,8489],{"class":639},"TRUE",[86,8491,1039],{"class":635},[86,8493,8494],{"class":88,"line":1240},[86,8495,787],{"emptyLinePlaceholder":786},[86,8497,8498],{"class":88,"line":1252},[86,8499,8500],{"class":1005},"  # the following line skips cpplint (only works in a git repo)\n",[86,8502,8503],{"class":88,"line":1262},[86,8504,787],{"emptyLinePlaceholder":786},[86,8506,8507],{"class":88,"line":1267},[86,8508,8509],{"class":1005},"  # comment the line when this package is in a git repo and when\n",[86,8511,8512],{"class":88,"line":1272},[86,8513,787],{"emptyLinePlaceholder":786},[86,8515,8516],{"class":88,"line":1278},[86,8517,8518],{"class":1005},"  # a copyright and license is added to all source files\n",[86,8520,8521,8523,8526,8528],{"class":88,"line":1288},[86,8522,8483],{"class":639},[86,8524,8525],{"class":635},"(ament_cmake_cpplint_FOUND ",[86,8527,8489],{"class":639},[86,8529,1039],{"class":635},[86,8531,8532],{"class":88,"line":1300},[86,8533,8534],{"class":635},"  ament_lint_auto_find_test_dependencies()\n",[86,8536,8537,8539],{"class":88,"line":1310},[86,8538,8368],{"class":639},[86,8540,8371],{"class":635},[86,8542,8543],{"class":88,"line":1315},[86,8544,787],{"emptyLinePlaceholder":786},[86,8546,8547],{"class":88,"line":1321},[86,8548,8549],{"class":635},"ament_package()\n",[16,8551,8552],{},"package.xml",[78,8554,8556],{"className":777,"code":8555,"language":779,"meta":21,"style":21},"\u003C?xml version=\"1.0\"?>\n\u003C?xml-model href=\"http:\u002F\u002Fdownload.ros.org\u002Fschema\u002Fpackage_format3.xsd\" schematypens=\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema\"?>\n\u003Cpackage format=\"3\">\n  \u003Cname>cpp01_urdf\u003C\u002Fname>\n  \u003Cversion>0.0.0\u003C\u002Fversion>\n  \u003Cdescription>TODO: Package description\u003C\u002Fdescription>\n  \u003Cmaintainer email=\"tungchiahui@gmail.com\">tungchiahui\u003C\u002Fmaintainer>\n  \u003Clicense>TODO: License declaration\u003C\u002Flicense>\n\n  \u003Cbuildtool_depend>ament_cmake\u003C\u002Fbuildtool_depend>\n\n  \u003Cexec_depend>rviz2\u003C\u002Fexec_depend>\n  \u003Cexec_depend>xacro\u003C\u002Fexec_depend>\n  \u003Cexec_depend>robot_state_publisher\u003C\u002Fexec_depend>\n  \u003Cexec_depend>joint_state_publisher\u003C\u002Fexec_depend>\n  \u003Cexec_depend>ros2launch\u003C\u002Fexec_depend>\n\n  \u003Ctest_depend>ament_lint_auto\u003C\u002Ftest_depend>\n  \u003Ctest_depend>ament_lint_common\u003C\u002Ftest_depend>\n\n  \u003Cexport>\n    \u003Cbuild_type>ament_cmake\u003C\u002Fbuild_type>\n  \u003C\u002Fexport>\n\u003C\u002Fpackage>\n\n",[73,8557,8558,8576,8601,8618,8631,8645,8659,8681,8695,8699,8713,8717,8729,8741,8753,8765,8777,8781,8795,8808,8812,8821,8834,8842],{"__ignoreMap":21},[86,8559,8560,8563,8565,8568,8570,8573],{"class":88,"line":89},[86,8561,8562],{"class":635},"\u003C?",[86,8564,779],{"class":795},[86,8566,8567],{"class":92}," version",[86,8569,849],{"class":635},[86,8571,8572],{"class":96},"\"1.0\"",[86,8574,8575],{"class":635},"?>\n",[86,8577,8578,8580,8583,8586,8588,8591,8594,8596,8599],{"class":88,"line":646},[86,8579,8562],{"class":635},[86,8581,8582],{"class":795},"xml-model",[86,8584,8585],{"class":92}," href",[86,8587,849],{"class":635},[86,8589,8590],{"class":96},"\"http:\u002F\u002Fdownload.ros.org\u002Fschema\u002Fpackage_format3.xsd\"",[86,8592,8593],{"class":92}," schematypens",[86,8595,849],{"class":635},[86,8597,8598],{"class":96},"\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema\"",[86,8600,8575],{"class":635},[86,8602,8603,8605,8608,8611,8613,8616],{"class":88,"line":802},[86,8604,1377],{"class":635},[86,8606,8607],{"class":795},"package",[86,8609,8610],{"class":92}," format",[86,8612,849],{"class":635},[86,8614,8615],{"class":96},"\"3\"",[86,8617,823],{"class":635},[86,8619,8620,8622,8624,8627,8629],{"class":88,"line":814},[86,8621,3823],{"class":635},[86,8623,1096],{"class":795},[86,8625,8626],{"class":635},">cpp01_urdf\u003C\u002F",[86,8628,1096],{"class":795},[86,8630,823],{"class":635},[86,8632,8633,8635,8638,8641,8643],{"class":88,"line":826},[86,8634,3823],{"class":635},[86,8636,8637],{"class":795},"version",[86,8639,8640],{"class":635},">0.0.0\u003C\u002F",[86,8642,8637],{"class":795},[86,8644,823],{"class":635},[86,8646,8647,8649,8652,8655,8657],{"class":88,"line":837},[86,8648,3823],{"class":635},[86,8650,8651],{"class":795},"description",[86,8653,8654],{"class":635},">TODO: Package description\u003C\u002F",[86,8656,8651],{"class":795},[86,8658,823],{"class":635},[86,8660,8661,8663,8666,8669,8671,8674,8677,8679],{"class":88,"line":858},[86,8662,3823],{"class":635},[86,8664,8665],{"class":795},"maintainer",[86,8667,8668],{"class":92}," email",[86,8670,849],{"class":635},[86,8672,8673],{"class":96},"\"tungchiahui@gmail.com\"",[86,8675,8676],{"class":635},">tungchiahui\u003C\u002F",[86,8678,8665],{"class":795},[86,8680,823],{"class":635},[86,8682,8683,8685,8688,8691,8693],{"class":88,"line":868},[86,8684,3823],{"class":635},[86,8686,8687],{"class":795},"license",[86,8689,8690],{"class":635},">TODO: License declaration\u003C\u002F",[86,8692,8687],{"class":795},[86,8694,823],{"class":635},[86,8696,8697],{"class":88,"line":878},[86,8698,787],{"emptyLinePlaceholder":786},[86,8700,8701,8703,8706,8709,8711],{"class":88,"line":888},[86,8702,3823],{"class":635},[86,8704,8705],{"class":795},"buildtool_depend",[86,8707,8708],{"class":635},">ament_cmake\u003C\u002F",[86,8710,8705],{"class":795},[86,8712,823],{"class":635},[86,8714,8715],{"class":88,"line":1020},[86,8716,787],{"emptyLinePlaceholder":786},[86,8718,8719,8721,8723,8725,8727],{"class":88,"line":1025},[86,8720,3823],{"class":635},[86,8722,1380],{"class":795},[86,8724,1383],{"class":635},[86,8726,1380],{"class":795},[86,8728,823],{"class":635},[86,8730,8731,8733,8735,8737,8739],{"class":88,"line":1042},[86,8732,3823],{"class":635},[86,8734,1380],{"class":795},[86,8736,1396],{"class":635},[86,8738,1380],{"class":795},[86,8740,823],{"class":635},[86,8742,8743,8745,8747,8749,8751],{"class":88,"line":1064},[86,8744,3823],{"class":635},[86,8746,1380],{"class":795},[86,8748,1409],{"class":635},[86,8750,1380],{"class":795},[86,8752,823],{"class":635},[86,8754,8755,8757,8759,8761,8763],{"class":88,"line":1084},[86,8756,3823],{"class":635},[86,8758,1380],{"class":795},[86,8760,1422],{"class":635},[86,8762,1380],{"class":795},[86,8764,823],{"class":635},[86,8766,8767,8769,8771,8773,8775],{"class":88,"line":1115},[86,8768,3823],{"class":635},[86,8770,1380],{"class":795},[86,8772,1435],{"class":635},[86,8774,1380],{"class":795},[86,8776,823],{"class":635},[86,8778,8779],{"class":88,"line":1120},[86,8780,787],{"emptyLinePlaceholder":786},[86,8782,8783,8785,8788,8791,8793],{"class":88,"line":1126},[86,8784,3823],{"class":635},[86,8786,8787],{"class":795},"test_depend",[86,8789,8790],{"class":635},">ament_lint_auto\u003C\u002F",[86,8792,8787],{"class":795},[86,8794,823],{"class":635},[86,8796,8797,8799,8801,8804,8806],{"class":88,"line":1131},[86,8798,3823],{"class":635},[86,8800,8787],{"class":795},[86,8802,8803],{"class":635},">ament_lint_common\u003C\u002F",[86,8805,8787],{"class":795},[86,8807,823],{"class":635},[86,8809,8810],{"class":88,"line":1137},[86,8811,787],{"emptyLinePlaceholder":786},[86,8813,8814,8816,8819],{"class":88,"line":1159},[86,8815,3823],{"class":635},[86,8817,8818],{"class":795},"export",[86,8820,823],{"class":635},[86,8822,8823,8825,8828,8830,8832],{"class":88,"line":1170},[86,8824,1678],{"class":635},[86,8826,8827],{"class":795},"build_type",[86,8829,8708],{"class":635},[86,8831,8827],{"class":795},[86,8833,823],{"class":635},[86,8835,8836,8838,8840],{"class":88,"line":1184},[86,8837,1767],{"class":635},[86,8839,8818],{"class":795},[86,8841,823],{"class":635},[86,8843,8844,8846,8848],{"class":88,"line":1196},[86,8845,3991],{"class":635},[86,8847,8607],{"class":795},[86,8849,823],{"class":635},[141,8851,8852],{"start":837},[144,8853,8854],{},"对launch文件进行编写",[16,8856,8857],{},"详细过程请看URDF有关Launch的核心优化那一节",[16,8859,8860],{},[19,8861],{"alt":21,"src":8862},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1589.webp",[78,8864,8866],{"className":911,"code":8865,"language":913,"meta":21,"style":21},"from launch import LaunchDescription\nfrom launch_ros.actions import Node\n\n# 封装终端指令相关类\n\n# from launch.actions import ExecuteProcess\n\n# from launch.substitutions import FindExecutable\n\n# 参数声明与获取\nfrom launch.actions import DeclareLaunchArgument\nfrom launch.substitutions import LaunchConfiguration\n\n# 文件包含相关\n\n# from launch.actions import IncludeLaunchDescription\n\n# from launch.launch_description_sources import PythonLaunchDescriptionSource\n\n# 分组相关\n\n# from launch_ros.actions import PushRosNamespace\n\n# from launch.actions import GroupAction\n\n# 事件相关\n\n# from launch.event_handlers import OnProcessStart,OnProcessExit\n\n# from launch.actions import ExecuteProcess,RegisterEventHandler,LogInfo\n\n# 获取功能包下share目录或路径\nfrom ament_index_python.packages import get_package_share_directory\n\nfrom launch_ros.parameter_descriptions import ParameterValue\nfrom launch.substitutions import Command\n\nimport os\n\ncpp01_urdf_dir = get_package_share_directory(\"cpp01_urdf\")\n\ndefault_model_path = os.path.join(cpp01_urdf_dir,\"urdf\u002Furdf\",\"4axisrobot.urdf\")\ndefault_rviz_path = os.path.join(cpp01_urdf_dir,\"rviz\",\"urdf.rviz\")\n\nmodel = DeclareLaunchArgument(name=\"model\",default_value=default_model_path)\n\np_value = ParameterValue(Command([\"xacro \",LaunchConfiguration(\"model\")]))\nrobot_state_pub = Node(\n    package=\"robot_state_publisher\",\n    executable=\"robot_state_publisher\",\n    parameters=[{\"robot_description\":p_value}]\n)\n\n# 关节信息节点(建议)\n\n# joint_state_pub = Node(\n\n#     package=\"joint_state_publisher\",\n\n#     executable=\"joint_state_publisher\"\n\n# )\n\n# 关节信息节点图形界面\njoint_state_pub = Node(\n    package=\"joint_state_publisher_gui\",\n    executable=\"joint_state_publisher_gui\"\n)\n\nrviz2 = Node(\n    package=\"rviz2\",\n    executable=\"rviz2\",\n\n#    arguments=[\"-d\",get_package_share_directory(\"cpp06_urdf\") + \"\u002Frviz\u002Furdf.rviz\"]\n    arguments=[\"-d\",default_rviz_path]\n\n    )\n\ndef generate_launch_description():\n    return LaunchDescription([model,robot_state_pub,joint_state_pub,rviz2])\n",[73,8867,8868,8878,8888,8892,8896,8900,8904,8908,8912,8916,8920,8930,8940,8944,8948,8952,8956,8960,8964,8968,8972,8976,8980,8984,8988,8992,8996,9000,9004,9008,9012,9016,9020,9030,9034,9044,9054,9058,9064,9068,9082,9086,9104,9120,9124,9146,9150,9166,9174,9184,9194,9206,9210,9214,9219,9223,9227,9231,9235,9239,9243,9247,9251,9255,9260,9268,9278,9286,9290,9294,9302,9312,9322,9326,9330,9342,9346,9350,9354,9362],{"__ignoreMap":21},[86,8869,8870,8872,8874,8876],{"class":88,"line":89},[86,8871,920],{"class":639},[86,8873,923],{"class":635},[86,8875,926],{"class":639},[86,8877,929],{"class":635},[86,8879,8880,8882,8884,8886],{"class":88,"line":646},[86,8881,920],{"class":639},[86,8883,936],{"class":635},[86,8885,926],{"class":639},[86,8887,941],{"class":635},[86,8889,8890],{"class":88,"line":802},[86,8891,787],{"emptyLinePlaceholder":786},[86,8893,8894],{"class":88,"line":814},[86,8895,1990],{"class":1005},[86,8897,8898],{"class":88,"line":826},[86,8899,787],{"emptyLinePlaceholder":786},[86,8901,8902],{"class":88,"line":837},[86,8903,1999],{"class":1005},[86,8905,8906],{"class":88,"line":858},[86,8907,787],{"emptyLinePlaceholder":786},[86,8909,8910],{"class":88,"line":868},[86,8911,2008],{"class":1005},[86,8913,8914],{"class":88,"line":878},[86,8915,787],{"emptyLinePlaceholder":786},[86,8917,8918],{"class":88,"line":888},[86,8919,2017],{"class":1005},[86,8921,8922,8924,8926,8928],{"class":88,"line":1020},[86,8923,920],{"class":639},[86,8925,991],{"class":635},[86,8927,926],{"class":639},[86,8929,996],{"class":635},[86,8931,8932,8934,8936,8938],{"class":88,"line":1025},[86,8933,920],{"class":639},[86,8935,979],{"class":635},[86,8937,926],{"class":639},[86,8939,2630],{"class":635},[86,8941,8942],{"class":88,"line":1042},[86,8943,787],{"emptyLinePlaceholder":786},[86,8945,8946],{"class":88,"line":1064},[86,8947,2044],{"class":1005},[86,8949,8950],{"class":88,"line":1084},[86,8951,787],{"emptyLinePlaceholder":786},[86,8953,8954],{"class":88,"line":1115},[86,8955,2053],{"class":1005},[86,8957,8958],{"class":88,"line":1120},[86,8959,787],{"emptyLinePlaceholder":786},[86,8961,8962],{"class":88,"line":1126},[86,8963,2062],{"class":1005},[86,8965,8966],{"class":88,"line":1131},[86,8967,787],{"emptyLinePlaceholder":786},[86,8969,8970],{"class":88,"line":1137},[86,8971,2071],{"class":1005},[86,8973,8974],{"class":88,"line":1159},[86,8975,787],{"emptyLinePlaceholder":786},[86,8977,8978],{"class":88,"line":1170},[86,8979,2080],{"class":1005},[86,8981,8982],{"class":88,"line":1184},[86,8983,787],{"emptyLinePlaceholder":786},[86,8985,8986],{"class":88,"line":1196},[86,8987,2089],{"class":1005},[86,8989,8990],{"class":88,"line":1213},[86,8991,787],{"emptyLinePlaceholder":786},[86,8993,8994],{"class":88,"line":1219},[86,8995,2098],{"class":1005},[86,8997,8998],{"class":88,"line":1224},[86,8999,787],{"emptyLinePlaceholder":786},[86,9001,9002],{"class":88,"line":1230},[86,9003,2107],{"class":1005},[86,9005,9006],{"class":88,"line":1240},[86,9007,787],{"emptyLinePlaceholder":786},[86,9009,9010],{"class":88,"line":1252},[86,9011,2116],{"class":1005},[86,9013,9014],{"class":88,"line":1262},[86,9015,787],{"emptyLinePlaceholder":786},[86,9017,9018],{"class":88,"line":1267},[86,9019,2125],{"class":1005},[86,9021,9022,9024,9026,9028],{"class":88,"line":1272},[86,9023,920],{"class":639},[86,9025,955],{"class":635},[86,9027,926],{"class":639},[86,9029,960],{"class":635},[86,9031,9032],{"class":88,"line":1278},[86,9033,787],{"emptyLinePlaceholder":786},[86,9035,9036,9038,9040,9042],{"class":88,"line":1288},[86,9037,920],{"class":639},[86,9039,967],{"class":635},[86,9041,926],{"class":639},[86,9043,972],{"class":635},[86,9045,9046,9048,9050,9052],{"class":88,"line":1300},[86,9047,920],{"class":639},[86,9049,979],{"class":635},[86,9051,926],{"class":639},[86,9053,2160],{"class":635},[86,9055,9056],{"class":88,"line":1310},[86,9057,787],{"emptyLinePlaceholder":786},[86,9059,9060,9062],{"class":88,"line":1315},[86,9061,926],{"class":639},[86,9063,948],{"class":635},[86,9065,9066],{"class":88,"line":1321},[86,9067,787],{"emptyLinePlaceholder":786},[86,9069,9070,9073,9075,9077,9080],{"class":88,"line":1326},[86,9071,9072],{"class":635},"cpp01_urdf_dir ",[86,9074,849],{"class":639},[86,9076,1033],{"class":635},[86,9078,9079],{"class":96},"\"cpp01_urdf\"",[86,9081,1039],{"class":635},[86,9083,9084],{"class":88,"line":1335},[86,9085,787],{"emptyLinePlaceholder":786},[86,9087,9088,9090,9092,9095,9097,9099,9102],{"class":88,"line":1341},[86,9089,3199],{"class":635},[86,9091,849],{"class":639},[86,9093,9094],{"class":635}," os.path.join(cpp01_urdf_dir,",[86,9096,1053],{"class":96},[86,9098,1056],{"class":635},[86,9100,9101],{"class":96},"\"4axisrobot.urdf\"",[86,9103,1039],{"class":635},[86,9105,9106,9108,9110,9112,9114,9116,9118],{"class":88,"line":1347},[86,9107,3217],{"class":635},[86,9109,849],{"class":639},[86,9111,9094],{"class":635},[86,9113,1074],{"class":96},[86,9115,1056],{"class":635},[86,9117,3228],{"class":96},[86,9119,1039],{"class":635},[86,9121,9122],{"class":88,"line":1353},[86,9123,787],{"emptyLinePlaceholder":786},[86,9125,9126,9128,9130,9132,9134,9136,9138,9140,9142,9144],{"class":88,"line":1359},[86,9127,2753],{"class":635},[86,9129,849],{"class":639},[86,9131,1092],{"class":635},[86,9133,1096],{"class":1095},[86,9135,849],{"class":639},[86,9137,1101],{"class":96},[86,9139,1056],{"class":635},[86,9141,1107],{"class":1095},[86,9143,849],{"class":639},[86,9145,1112],{"class":635},[86,9147,9148],{"class":88,"line":2244},[86,9149,787],{"emptyLinePlaceholder":786},[86,9151,9152,9154,9156,9158,9160,9162,9164],{"class":88,"line":2249},[86,9153,2169],{"class":635},[86,9155,849],{"class":639},[86,9157,1145],{"class":635},[86,9159,1148],{"class":96},[86,9161,1151],{"class":635},[86,9163,1101],{"class":96},[86,9165,1156],{"class":635},[86,9167,9168,9170,9172],{"class":88,"line":2259},[86,9169,2197],{"class":635},[86,9171,849],{"class":639},[86,9173,1167],{"class":635},[86,9175,9176,9178,9180,9182],{"class":88,"line":2270},[86,9177,2206],{"class":1095},[86,9179,849],{"class":639},[86,9181,1178],{"class":96},[86,9183,1181],{"class":635},[86,9185,9186,9188,9190,9192],{"class":88,"line":2279},[86,9187,2217],{"class":1095},[86,9189,849],{"class":639},[86,9191,1178],{"class":96},[86,9193,1181],{"class":635},[86,9195,9196,9198,9200,9202,9204],{"class":88,"line":2284},[86,9197,2228],{"class":1095},[86,9199,849],{"class":639},[86,9201,1204],{"class":635},[86,9203,1207],{"class":96},[86,9205,2237],{"class":635},[86,9207,9208],{"class":88,"line":2289},[86,9209,1039],{"class":635},[86,9211,9212],{"class":88,"line":2298},[86,9213,787],{"emptyLinePlaceholder":786},[86,9215,9216],{"class":88,"line":2906},[86,9217,9218],{"class":1005},"# 关节信息节点(建议)\n",[86,9220,9221],{"class":88,"line":2917},[86,9222,787],{"emptyLinePlaceholder":786},[86,9224,9225],{"class":88,"line":2945},[86,9226,3338],{"class":1005},[86,9228,9229],{"class":88,"line":2950},[86,9230,787],{"emptyLinePlaceholder":786},[86,9232,9233],{"class":88,"line":2955},[86,9234,3347],{"class":1005},[86,9236,9237],{"class":88,"line":2964},[86,9238,787],{"emptyLinePlaceholder":786},[86,9240,9241],{"class":88,"line":3354},[86,9242,3357],{"class":1005},[86,9244,9245],{"class":88,"line":3360},[86,9246,787],{"emptyLinePlaceholder":786},[86,9248,9249],{"class":88,"line":3365},[86,9250,3368],{"class":1005},[86,9252,9253],{"class":88,"line":3371},[86,9254,787],{"emptyLinePlaceholder":786},[86,9256,9257],{"class":88,"line":3376},[86,9258,9259],{"class":1005},"# 关节信息节点图形界面\n",[86,9261,9262,9264,9266],{"class":88,"line":3382},[86,9263,2855],{"class":635},[86,9265,849],{"class":639},[86,9267,1167],{"class":635},[86,9269,9270,9272,9274,9276],{"class":88,"line":3391},[86,9271,2206],{"class":1095},[86,9273,849],{"class":639},[86,9275,3398],{"class":96},[86,9277,1181],{"class":635},[86,9279,9280,9282,9284],{"class":88,"line":3403},[86,9281,2217],{"class":1095},[86,9283,849],{"class":639},[86,9285,3410],{"class":96},[86,9287,9288],{"class":88,"line":3413},[86,9289,1039],{"class":635},[86,9291,9292],{"class":88,"line":3418},[86,9293,787],{"emptyLinePlaceholder":786},[86,9295,9296,9298,9300],{"class":88,"line":3423},[86,9297,2252],{"class":635},[86,9299,849],{"class":639},[86,9301,1167],{"class":635},[86,9303,9304,9306,9308,9310],{"class":88,"line":3432},[86,9305,2206],{"class":1095},[86,9307,849],{"class":639},[86,9309,1295],{"class":96},[86,9311,1181],{"class":635},[86,9313,9314,9316,9318,9320],{"class":88,"line":3443},[86,9315,2217],{"class":1095},[86,9317,849],{"class":639},[86,9319,1295],{"class":96},[86,9321,1181],{"class":635},[86,9323,9324],{"class":88,"line":3454},[86,9325,787],{"emptyLinePlaceholder":786},[86,9327,9328],{"class":88,"line":3459},[86,9329,3462],{"class":1005},[86,9331,9332,9334,9336,9338,9340],{"class":88,"line":3465},[86,9333,2920],{"class":1095},[86,9335,849],{"class":639},[86,9337,2925],{"class":635},[86,9339,2928],{"class":96},[86,9341,3476],{"class":635},[86,9343,9344],{"class":88,"line":3479},[86,9345,787],{"emptyLinePlaceholder":786},[86,9347,9348],{"class":88,"line":3484},[86,9349,1216],{"class":635},[86,9351,9352],{"class":88,"line":3489},[86,9353,787],{"emptyLinePlaceholder":786},[86,9355,9356,9358,9360],{"class":88,"line":3494},[86,9357,1011],{"class":639},[86,9359,1014],{"class":92},[86,9361,1017],{"class":635},[86,9363,9364,9366],{"class":88,"line":3503},[86,9365,1329],{"class":639},[86,9367,2969],{"class":635},[141,9369,9370],{"start":858},[144,9371,9372],{},"对URDF文件进行修改",[16,9374,9375],{},"修改的内容主要有两项，一个是meshes的路径，一个是删掉易引起报错的注释。",[16,9377,9378],{},"主要由于ROS1的WS和ROS2的WS路径不同，所以，我们只需要修改有关路径的内容，比如说Meshes的路径",[16,9380,9381,9384],{},[19,9382],{"alt":21,"src":9383},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1590.webp",[19,9385],{"alt":21,"src":9386},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1591.webp",[16,9388,9389],{},"package:\u002F\u002F一般是share目录，所以我们需要从cpp01_urdf这一级开始写（share目录需要编译后才会显示）",[16,9391,9392],{},[19,9393],{"alt":21,"src":9394},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1592.webp",[16,9396,9397],{},"然后按Ctrl+H",[16,9399,9400],{},[19,9401],{"alt":21,"src":9402},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1593.webp",[16,9404,9405],{},[19,9406],{"alt":21,"src":9407},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1594.webp",[16,9409,9410],{},"然后还需要删除掉urdf文件刚开始的注释，否则也会报错",[16,9412,9413],{},[19,9414],{"alt":21,"src":9415},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1595.webp",[16,9417,9418],{},"如下是替换完毕的URDF文件：",[78,9420,9422],{"className":777,"code":9421,"language":779,"meta":21,"style":21},"\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n\u003Crobot\n  name=\"4axisrobot\">\n  \u003Clink\n    name=\"base_link\">\n    \u003Cinertial>\n      \u003Corigin\n        xyz=\"-0.0819771145953119 -0.0394328123681598 -0.0605612328464761\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cmass\n        value=\"7.43807257011133\" \u002F>\n      \u003Cinertia\n        ixx=\"0.33173827700719\"\n        ixy=\"-1.91350798633049E-05\"\n        ixz=\"-2.38586363043925E-05\"\n        iyy=\"0.510937907009661\"\n        iyz=\"1.14706407748075E-05\"\n        izz=\"0.66107272632796\" \u002F>\n    \u003C\u002Finertial>\n    \u003Cvisual>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Fbase_link.STL\" \u002F>\n      \u003C\u002Fgeometry>\n      \u003Cmaterial\n        name=\"\">\n        \u003Ccolor\n          rgba=\"0.792156862745098 0.819607843137255 0.933333333333333 1\" \u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n    \u003Ccollision>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Fbase_link.STL\" \u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fcollision>\n  \u003C\u002Flink>\n  \u003Clink\n    name=\"link1\">\n    \u003Cinertial>\n      \u003Corigin\n        xyz=\"0.19141 -0.050676 -0.030057\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cmass\n        value=\"21.822\" \u002F>\n      \u003Cinertia\n        ixx=\"0.50464\"\n        ixy=\"0.13295\"\n        ixz=\"0.087353\"\n        iyy=\"0.59136\"\n        iyz=\"-0.066053\"\n        izz=\"0.64081\" \u002F>\n    \u003C\u002Finertial>\n    \u003Cvisual>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink1.STL\" \u002F>\n      \u003C\u002Fgeometry>\n      \u003Cmaterial\n        name=\"\">\n        \u003Ccolor\n          rgba=\"0.79216 0.81961 0.93333 1\" \u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n    \u003Ccollision>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink1.STL\" \u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fcollision>\n  \u003C\u002Flink>\n  \u003Cjoint\n    name=\"joint1\"\n    type=\"revolute\">\n    \u003Corigin\n      xyz=\"-0.081947 -0.039447 0.11191\"\n      rpy=\"0.40394 -1.5708 0\" \u002F>\n    \u003Cparent\n      link=\"base_link\" \u002F>\n    \u003Cchild\n      link=\"link1\" \u002F>\n    \u003Caxis\n      xyz=\"1 0 0\" \u002F>\n    \u003Climit\n      lower=\"-3.14\"\n      upper=\"3.14\"\n      effort=\"100\"\n      velocity=\"1\" \u002F>\n  \u003C\u002Fjoint>\n  \u003Clink\n    name=\"link2\">\n    \u003Cinertial>\n      \u003Corigin\n        xyz=\"0.00711598521454873 0.430460941882332 -0.181074256126024\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cmass\n        value=\"30.6115349647897\" \u002F>\n      \u003Cinertia\n        ixx=\"2.84056101478768\"\n        ixy=\"0.00176700425270318\"\n        ixz=\"-0.000605507690039326\"\n        iyy=\"0.803420593303961\"\n        iyz=\"0.881921487314161\"\n        izz=\"2.25142021571439\" \u002F>\n    \u003C\u002Finertial>\n    \u003Cvisual>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink2.STL\" \u002F>\n      \u003C\u002Fgeometry>\n      \u003Cmaterial\n        name=\"\">\n        \u003Ccolor\n          rgba=\"0.792156862745098 0.819607843137255 0.933333333333333 1\" \u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n    \u003Ccollision>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink2.STL\" \u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fcollision>\n  \u003C\u002Flink>\n  \u003Cjoint\n    name=\"joint2\"\n    type=\"revolute\">\n    \u003Corigin\n      xyz=\"0.35141 -0.28119 0.13918\"\n      rpy=\"-2.0566 1.1982 1.5708\" \u002F>\n    \u003Cparent\n      link=\"link1\" \u002F>\n    \u003Cchild\n      link=\"link2\" \u002F>\n    \u003Caxis\n      xyz=\"-1 0 0\" \u002F>\n    \u003Climit\n      lower=\"-3.14\"\n      upper=\"3.14\"\n      effort=\"100\"\n      velocity=\"1\" \u002F>\n  \u003C\u002Fjoint>\n  \u003Clink\n    name=\"link3\">\n    \u003Cinertial>\n      \u003Corigin\n        xyz=\"0.00112887115421612 0.0366346915274407 0.31720330934553\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cmass\n        value=\"32.192726667578\" \u002F>\n      \u003Cinertia\n        ixx=\"4.01515983126431\"\n        ixy=\"0.0013193752174692\"\n        ixz=\"0.0113529938102155\"\n        iyy=\"3.86196311673823\"\n        iyz=\"-0.336440022491883\"\n        izz=\"0.399977905540088\" \u002F>\n    \u003C\u002Finertial>\n    \u003Cvisual>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink3.STL\" \u002F>\n      \u003C\u002Fgeometry>\n      \u003Cmaterial\n        name=\"\">\n        \u003Ccolor\n          rgba=\"0.792156862745098 0.819607843137255 0.933333333333333 1\" \u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n    \u003Ccollision>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink3.STL\" \u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fcollision>\n  \u003C\u002Flink>\n  \u003Cjoint\n    name=\"joint3\"\n    type=\"revolute\">\n    \u003Corigin\n      xyz=\"0.3765 0.82481 -0.49591\"\n      rpy=\"2.5802 0 0\" \u002F>\n    \u003Cparent\n      link=\"link2\" \u002F>\n    \u003Cchild\n      link=\"link3\" \u002F>\n    \u003Caxis\n      xyz=\"1 0 0\" \u002F>\n    \u003Climit\n      lower=\"-3.14\"\n      upper=\"3.14\"\n      effort=\"100\"\n      velocity=\"1\" \u002F>\n  \u003C\u002Fjoint>\n  \u003Clink\n    name=\"link4\">\n    \u003Cinertial>\n      \u003Corigin\n        xyz=\"0.162516620557178 -0.213844847423599 3.38133504529381E-07\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cmass\n        value=\"12.1646007734167\" \u002F>\n      \u003Cinertia\n        ixx=\"0.288208127188405\"\n        ixy=\"0.00080326659836716\"\n        ixz=\"8.72489392803044E-07\"\n        iyy=\"0.107000706575729\"\n        iyz=\"-1.48935044230573E-07\"\n        izz=\"0.295147863994059\" \u002F>\n    \u003C\u002Finertial>\n    \u003Cvisual>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink4.STL\" \u002F>\n      \u003C\u002Fgeometry>\n      \u003Cmaterial\n        name=\"\">\n        \u003Ccolor\n          rgba=\"0.792156862745098 0.819607843137255 0.933333333333333 1\" \u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n    \u003Ccollision>\n      \u003Corigin\n        xyz=\"0 0 0\"\n        rpy=\"0 0 0\" \u002F>\n      \u003Cgeometry>\n        \u003Cmesh\n          filename=\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink4.STL\" \u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fcollision>\n  \u003C\u002Flink>\n  \u003Cjoint\n    name=\"joint4\"\n    type=\"revolute\">\n    \u003Corigin\n      xyz=\"0 0.070837 0.99728\"\n      rpy=\"0.82315 -1.5708 0\" \u002F>\n    \u003Cparent\n      link=\"link3\" \u002F>\n    \u003Cchild\n      link=\"link4\" \u002F>\n    \u003Caxis\n      xyz=\"1 0 0\" \u002F>\n    \u003Climit\n      lower=\"-3.14\"\n      upper=\"3.14\"\n      effort=\"100\"\n      velocity=\"1\" \u002F>\n  \u003C\u002Fjoint>\n\u003C\u002Frobot>\n",[73,9423,9424,9446,9453,9465,9472,9483,9491,9498,9508,9519,9526,9538,9545,9555,9565,9575,9585,9595,9607,9615,9623,9629,9638,9648,9656,9663,9675,9683,9690,9702,9709,9721,9729,9737,9745,9751,9759,9769,9777,9783,9793,9801,9809,9817,9823,9834,9842,9848,9857,9867,9873,9884,9890,9899,9908,9917,9926,9935,9946,9954,9962,9968,9976,9986,9994,10000,10011,10019,10025,10035,10041,10052,10060,10068,10076,10082,10090,10100,10108,10114,10124,10132,10140,10148,10155,10164,10176,10182,10192,10204,10211,10222,10229,10239,10246,10257,10264,10274,10284,10294,10306,10314,10320,10331,10339,10345,10354,10364,10370,10381,10387,10396,10406,10416,10426,10436,10448,10457,10466,10473,10482,10493,10502,10509,10521,10530,10537,10548,10555,10566,10575,10584,10593,10600,10609,10620,10629,10636,10647,10656,10665,10674,10681,10691,10702,10709,10719,10731,10738,10749,10756,10767,10774,10786,10793,10802,10811,10820,10831,10840,10847,10859,10868,10875,10885,10896,10903,10915,10922,10932,10942,10952,10962,10972,10984,10993,11002,11009,11018,11029,11038,11045,11057,11066,11073,11084,11091,11102,11111,11120,11129,11136,11145,11156,11165,11172,11183,11192,11201,11210,11217,11227,11238,11245,11255,11267,11274,11285,11292,11303,11310,11321,11328,11337,11346,11355,11366,11375,11382,11394,11403,11410,11420,11431,11438,11450,11457,11467,11477,11487,11497,11507,11519,11528,11537,11544,11553,11564,11573,11580,11592,11601,11608,11619,11626,11637,11646,11655,11664,11671,11680,11691,11700,11707,11718,11727,11736,11745,11752,11762,11773,11780,11790,11802,11809,11820,11827,11838,11845,11856,11863,11872,11881,11890,11901,11910],{"__ignoreMap":21},[86,9425,9426,9428,9430,9432,9434,9436,9439,9441,9444],{"class":88,"line":89},[86,9427,8562],{"class":635},[86,9429,779],{"class":795},[86,9431,8567],{"class":92},[86,9433,849],{"class":635},[86,9435,8572],{"class":96},[86,9437,9438],{"class":92}," encoding",[86,9440,849],{"class":635},[86,9442,9443],{"class":96},"\"utf-8\"",[86,9445,8575],{"class":635},[86,9447,9448,9450],{"class":88,"line":646},[86,9449,1377],{"class":635},[86,9451,9452],{"class":795},"robot\n",[86,9454,9455,9458,9460,9463],{"class":88,"line":802},[86,9456,9457],{"class":92},"  name",[86,9459,849],{"class":635},[86,9461,9462],{"class":96},"\"4axisrobot\"",[86,9464,823],{"class":635},[86,9466,9467,9469],{"class":88,"line":814},[86,9468,3823],{"class":635},[86,9470,9471],{"class":795},"link\n",[86,9473,9474,9477,9479,9481],{"class":88,"line":826},[86,9475,9476],{"class":92},"    name",[86,9478,849],{"class":635},[86,9480,1687],{"class":96},[86,9482,823],{"class":635},[86,9484,9485,9487,9489],{"class":88,"line":837},[86,9486,1678],{"class":635},[86,9488,3735],{"class":795},[86,9490,823],{"class":635},[86,9492,9493,9495],{"class":88,"line":858},[86,9494,1698],{"class":635},[86,9496,9497],{"class":795},"origin\n",[86,9499,9500,9503,9505],{"class":88,"line":868},[86,9501,9502],{"class":92},"        xyz",[86,9504,849],{"class":635},[86,9506,9507],{"class":96},"\"-0.0819771145953119 -0.0394328123681598 -0.0605612328464761\"\n",[86,9509,9510,9513,9515,9517],{"class":88,"line":878},[86,9511,9512],{"class":92},"        rpy",[86,9514,849],{"class":635},[86,9516,3943],{"class":96},[86,9518,3851],{"class":635},[86,9520,9521,9523],{"class":88,"line":888},[86,9522,1698],{"class":635},[86,9524,9525],{"class":795},"mass\n",[86,9527,9528,9531,9533,9536],{"class":88,"line":1020},[86,9529,9530],{"class":92},"        value",[86,9532,849],{"class":635},[86,9534,9535],{"class":96},"\"7.43807257011133\"",[86,9537,3851],{"class":635},[86,9539,9540,9542],{"class":88,"line":1025},[86,9541,1698],{"class":635},[86,9543,9544],{"class":795},"inertia\n",[86,9546,9547,9550,9552],{"class":88,"line":1042},[86,9548,9549],{"class":92},"        ixx",[86,9551,849],{"class":635},[86,9553,9554],{"class":96},"\"0.33173827700719\"\n",[86,9556,9557,9560,9562],{"class":88,"line":1064},[86,9558,9559],{"class":92},"        ixy",[86,9561,849],{"class":635},[86,9563,9564],{"class":96},"\"-1.91350798633049E-05\"\n",[86,9566,9567,9570,9572],{"class":88,"line":1084},[86,9568,9569],{"class":92},"        ixz",[86,9571,849],{"class":635},[86,9573,9574],{"class":96},"\"-2.38586363043925E-05\"\n",[86,9576,9577,9580,9582],{"class":88,"line":1115},[86,9578,9579],{"class":92},"        iyy",[86,9581,849],{"class":635},[86,9583,9584],{"class":96},"\"0.510937907009661\"\n",[86,9586,9587,9590,9592],{"class":88,"line":1120},[86,9588,9589],{"class":92},"        iyz",[86,9591,849],{"class":635},[86,9593,9594],{"class":96},"\"1.14706407748075E-05\"\n",[86,9596,9597,9600,9602,9605],{"class":88,"line":1126},[86,9598,9599],{"class":92},"        izz",[86,9601,849],{"class":635},[86,9603,9604],{"class":96},"\"0.66107272632796\"",[86,9606,3851],{"class":635},[86,9608,9609,9611,9613],{"class":88,"line":1131},[86,9610,1758],{"class":635},[86,9612,3735],{"class":795},[86,9614,823],{"class":635},[86,9616,9617,9619,9621],{"class":88,"line":1137},[86,9618,1678],{"class":635},[86,9620,820],{"class":795},[86,9622,823],{"class":635},[86,9624,9625,9627],{"class":88,"line":1159},[86,9626,1698],{"class":635},[86,9628,9497],{"class":795},[86,9630,9631,9633,9635],{"class":88,"line":1170},[86,9632,9502],{"class":92},[86,9634,849],{"class":635},[86,9636,9637],{"class":96},"\"0 0 0\"\n",[86,9639,9640,9642,9644,9646],{"class":88,"line":1184},[86,9641,9512],{"class":92},[86,9643,849],{"class":635},[86,9645,3943],{"class":96},[86,9647,3851],{"class":635},[86,9649,9650,9652,9654],{"class":88,"line":1196},[86,9651,1698],{"class":635},[86,9653,832],{"class":795},[86,9655,823],{"class":635},[86,9657,9658,9660],{"class":88,"line":1213},[86,9659,1711],{"class":635},[86,9661,9662],{"class":795},"mesh\n",[86,9664,9665,9668,9670,9673],{"class":88,"line":1219},[86,9666,9667],{"class":92},"          filename",[86,9669,849],{"class":635},[86,9671,9672],{"class":96},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Fbase_link.STL\"",[86,9674,3851],{"class":635},[86,9676,9677,9679,9681],{"class":88,"line":1224},[86,9678,1749],{"class":635},[86,9680,832],{"class":795},[86,9682,823],{"class":635},[86,9684,9685,9687],{"class":88,"line":1230},[86,9686,1698],{"class":635},[86,9688,9689],{"class":795},"material\n",[86,9691,9692,9695,9697,9700],{"class":88,"line":1240},[86,9693,9694],{"class":92},"        name",[86,9696,849],{"class":635},[86,9698,9699],{"class":96},"\"\"",[86,9701,823],{"class":635},[86,9703,9704,9706],{"class":88,"line":1252},[86,9705,1711],{"class":635},[86,9707,9708],{"class":795},"color\n",[86,9710,9711,9714,9716,9719],{"class":88,"line":1262},[86,9712,9713],{"class":92},"          rgba",[86,9715,849],{"class":635},[86,9717,9718],{"class":96},"\"0.792156862745098 0.819607843137255 0.933333333333333 1\"",[86,9720,3851],{"class":635},[86,9722,9723,9725,9727],{"class":88,"line":1267},[86,9724,1749],{"class":635},[86,9726,3663],{"class":795},[86,9728,823],{"class":635},[86,9730,9731,9733,9735],{"class":88,"line":1272},[86,9732,1758],{"class":635},[86,9734,820],{"class":795},[86,9736,823],{"class":635},[86,9738,9739,9741,9743],{"class":88,"line":1278},[86,9740,1678],{"class":635},[86,9742,3700],{"class":795},[86,9744,823],{"class":635},[86,9746,9747,9749],{"class":88,"line":1288},[86,9748,1698],{"class":635},[86,9750,9497],{"class":795},[86,9752,9753,9755,9757],{"class":88,"line":1300},[86,9754,9502],{"class":92},[86,9756,849],{"class":635},[86,9758,9637],{"class":96},[86,9760,9761,9763,9765,9767],{"class":88,"line":1310},[86,9762,9512],{"class":92},[86,9764,849],{"class":635},[86,9766,3943],{"class":96},[86,9768,3851],{"class":635},[86,9770,9771,9773,9775],{"class":88,"line":1315},[86,9772,1698],{"class":635},[86,9774,832],{"class":795},[86,9776,823],{"class":635},[86,9778,9779,9781],{"class":88,"line":1321},[86,9780,1711],{"class":635},[86,9782,9662],{"class":795},[86,9784,9785,9787,9789,9791],{"class":88,"line":1326},[86,9786,9667],{"class":92},[86,9788,849],{"class":635},[86,9790,9672],{"class":96},[86,9792,3851],{"class":635},[86,9794,9795,9797,9799],{"class":88,"line":1335},[86,9796,1749],{"class":635},[86,9798,832],{"class":795},[86,9800,823],{"class":635},[86,9802,9803,9805,9807],{"class":88,"line":1341},[86,9804,1758],{"class":635},[86,9806,3700],{"class":795},[86,9808,823],{"class":635},[86,9810,9811,9813,9815],{"class":88,"line":1347},[86,9812,1767],{"class":635},[86,9814,808],{"class":795},[86,9816,823],{"class":635},[86,9818,9819,9821],{"class":88,"line":1353},[86,9820,3823],{"class":635},[86,9822,9471],{"class":795},[86,9824,9825,9827,9829,9832],{"class":88,"line":1359},[86,9826,9476],{"class":92},[86,9828,849],{"class":635},[86,9830,9831],{"class":96},"\"link1\"",[86,9833,823],{"class":635},[86,9835,9836,9838,9840],{"class":88,"line":2244},[86,9837,1678],{"class":635},[86,9839,3735],{"class":795},[86,9841,823],{"class":635},[86,9843,9844,9846],{"class":88,"line":2249},[86,9845,1698],{"class":635},[86,9847,9497],{"class":795},[86,9849,9850,9852,9854],{"class":88,"line":2259},[86,9851,9502],{"class":92},[86,9853,849],{"class":635},[86,9855,9856],{"class":96},"\"0.19141 -0.050676 -0.030057\"\n",[86,9858,9859,9861,9863,9865],{"class":88,"line":2270},[86,9860,9512],{"class":92},[86,9862,849],{"class":635},[86,9864,3943],{"class":96},[86,9866,3851],{"class":635},[86,9868,9869,9871],{"class":88,"line":2279},[86,9870,1698],{"class":635},[86,9872,9525],{"class":795},[86,9874,9875,9877,9879,9882],{"class":88,"line":2284},[86,9876,9530],{"class":92},[86,9878,849],{"class":635},[86,9880,9881],{"class":96},"\"21.822\"",[86,9883,3851],{"class":635},[86,9885,9886,9888],{"class":88,"line":2289},[86,9887,1698],{"class":635},[86,9889,9544],{"class":795},[86,9891,9892,9894,9896],{"class":88,"line":2298},[86,9893,9549],{"class":92},[86,9895,849],{"class":635},[86,9897,9898],{"class":96},"\"0.50464\"\n",[86,9900,9901,9903,9905],{"class":88,"line":2906},[86,9902,9559],{"class":92},[86,9904,849],{"class":635},[86,9906,9907],{"class":96},"\"0.13295\"\n",[86,9909,9910,9912,9914],{"class":88,"line":2917},[86,9911,9569],{"class":92},[86,9913,849],{"class":635},[86,9915,9916],{"class":96},"\"0.087353\"\n",[86,9918,9919,9921,9923],{"class":88,"line":2945},[86,9920,9579],{"class":92},[86,9922,849],{"class":635},[86,9924,9925],{"class":96},"\"0.59136\"\n",[86,9927,9928,9930,9932],{"class":88,"line":2950},[86,9929,9589],{"class":92},[86,9931,849],{"class":635},[86,9933,9934],{"class":96},"\"-0.066053\"\n",[86,9936,9937,9939,9941,9944],{"class":88,"line":2955},[86,9938,9599],{"class":92},[86,9940,849],{"class":635},[86,9942,9943],{"class":96},"\"0.64081\"",[86,9945,3851],{"class":635},[86,9947,9948,9950,9952],{"class":88,"line":2964},[86,9949,1758],{"class":635},[86,9951,3735],{"class":795},[86,9953,823],{"class":635},[86,9955,9956,9958,9960],{"class":88,"line":3354},[86,9957,1678],{"class":635},[86,9959,820],{"class":795},[86,9961,823],{"class":635},[86,9963,9964,9966],{"class":88,"line":3360},[86,9965,1698],{"class":635},[86,9967,9497],{"class":795},[86,9969,9970,9972,9974],{"class":88,"line":3365},[86,9971,9502],{"class":92},[86,9973,849],{"class":635},[86,9975,9637],{"class":96},[86,9977,9978,9980,9982,9984],{"class":88,"line":3371},[86,9979,9512],{"class":92},[86,9981,849],{"class":635},[86,9983,3943],{"class":96},[86,9985,3851],{"class":635},[86,9987,9988,9990,9992],{"class":88,"line":3376},[86,9989,1698],{"class":635},[86,9991,832],{"class":795},[86,9993,823],{"class":635},[86,9995,9996,9998],{"class":88,"line":3382},[86,9997,1711],{"class":635},[86,9999,9662],{"class":795},[86,10001,10002,10004,10006,10009],{"class":88,"line":3391},[86,10003,9667],{"class":92},[86,10005,849],{"class":635},[86,10007,10008],{"class":96},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink1.STL\"",[86,10010,3851],{"class":635},[86,10012,10013,10015,10017],{"class":88,"line":3403},[86,10014,1749],{"class":635},[86,10016,832],{"class":795},[86,10018,823],{"class":635},[86,10020,10021,10023],{"class":88,"line":3413},[86,10022,1698],{"class":635},[86,10024,9689],{"class":795},[86,10026,10027,10029,10031,10033],{"class":88,"line":3418},[86,10028,9694],{"class":92},[86,10030,849],{"class":635},[86,10032,9699],{"class":96},[86,10034,823],{"class":635},[86,10036,10037,10039],{"class":88,"line":3423},[86,10038,1711],{"class":635},[86,10040,9708],{"class":795},[86,10042,10043,10045,10047,10050],{"class":88,"line":3432},[86,10044,9713],{"class":92},[86,10046,849],{"class":635},[86,10048,10049],{"class":96},"\"0.79216 0.81961 0.93333 1\"",[86,10051,3851],{"class":635},[86,10053,10054,10056,10058],{"class":88,"line":3443},[86,10055,1749],{"class":635},[86,10057,3663],{"class":795},[86,10059,823],{"class":635},[86,10061,10062,10064,10066],{"class":88,"line":3454},[86,10063,1758],{"class":635},[86,10065,820],{"class":795},[86,10067,823],{"class":635},[86,10069,10070,10072,10074],{"class":88,"line":3459},[86,10071,1678],{"class":635},[86,10073,3700],{"class":795},[86,10075,823],{"class":635},[86,10077,10078,10080],{"class":88,"line":3465},[86,10079,1698],{"class":635},[86,10081,9497],{"class":795},[86,10083,10084,10086,10088],{"class":88,"line":3479},[86,10085,9502],{"class":92},[86,10087,849],{"class":635},[86,10089,9637],{"class":96},[86,10091,10092,10094,10096,10098],{"class":88,"line":3484},[86,10093,9512],{"class":92},[86,10095,849],{"class":635},[86,10097,3943],{"class":96},[86,10099,3851],{"class":635},[86,10101,10102,10104,10106],{"class":88,"line":3489},[86,10103,1698],{"class":635},[86,10105,832],{"class":795},[86,10107,823],{"class":635},[86,10109,10110,10112],{"class":88,"line":3494},[86,10111,1711],{"class":635},[86,10113,9662],{"class":795},[86,10115,10116,10118,10120,10122],{"class":88,"line":3503},[86,10117,9667],{"class":92},[86,10119,849],{"class":635},[86,10121,10008],{"class":96},[86,10123,3851],{"class":635},[86,10125,10126,10128,10130],{"class":88,"line":7199},[86,10127,1749],{"class":635},[86,10129,832],{"class":795},[86,10131,823],{"class":635},[86,10133,10134,10136,10138],{"class":88,"line":7214},[86,10135,1758],{"class":635},[86,10137,3700],{"class":795},[86,10139,823],{"class":635},[86,10141,10142,10144,10146],{"class":88,"line":7223},[86,10143,1767],{"class":635},[86,10145,808],{"class":795},[86,10147,823],{"class":635},[86,10149,10150,10152],{"class":88,"line":7232},[86,10151,3823],{"class":635},[86,10153,10154],{"class":795},"joint\n",[86,10156,10157,10159,10161],{"class":88,"line":7237},[86,10158,9476],{"class":92},[86,10160,849],{"class":635},[86,10162,10163],{"class":96},"\"joint1\"\n",[86,10165,10166,10169,10171,10174],{"class":88,"line":7259},[86,10167,10168],{"class":92},"    type",[86,10170,849],{"class":635},[86,10172,10173],{"class":96},"\"revolute\"",[86,10175,823],{"class":635},[86,10177,10178,10180],{"class":88,"line":7274},[86,10179,1678],{"class":635},[86,10181,9497],{"class":795},[86,10183,10184,10187,10189],{"class":88,"line":7289},[86,10185,10186],{"class":92},"      xyz",[86,10188,849],{"class":635},[86,10190,10191],{"class":96},"\"-0.081947 -0.039447 0.11191\"\n",[86,10193,10194,10197,10199,10202],{"class":88,"line":7294},[86,10195,10196],{"class":92},"      rpy",[86,10198,849],{"class":635},[86,10200,10201],{"class":96},"\"0.40394 -1.5708 0\"",[86,10203,3851],{"class":635},[86,10205,10206,10208],{"class":88,"line":7316},[86,10207,1678],{"class":635},[86,10209,10210],{"class":795},"parent\n",[86,10212,10213,10216,10218,10220],{"class":88,"line":7331},[86,10214,10215],{"class":92},"      link",[86,10217,849],{"class":635},[86,10219,1687],{"class":96},[86,10221,3851],{"class":635},[86,10223,10224,10226],{"class":88,"line":7340},[86,10225,1678],{"class":635},[86,10227,10228],{"class":795},"child\n",[86,10230,10231,10233,10235,10237],{"class":88,"line":7345},[86,10232,10215],{"class":92},[86,10234,849],{"class":635},[86,10236,9831],{"class":96},[86,10238,3851],{"class":635},[86,10240,10241,10243],{"class":88,"line":7361},[86,10242,1678],{"class":635},[86,10244,10245],{"class":795},"axis\n",[86,10247,10248,10250,10252,10255],{"class":88,"line":7370},[86,10249,10186],{"class":92},[86,10251,849],{"class":635},[86,10253,10254],{"class":96},"\"1 0 0\"",[86,10256,3851],{"class":635},[86,10258,10259,10261],{"class":88,"line":7379},[86,10260,1678],{"class":635},[86,10262,10263],{"class":795},"limit\n",[86,10265,10266,10269,10271],{"class":88,"line":7400},[86,10267,10268],{"class":92},"      lower",[86,10270,849],{"class":635},[86,10272,10273],{"class":96},"\"-3.14\"\n",[86,10275,10276,10279,10281],{"class":88,"line":7409},[86,10277,10278],{"class":92},"      upper",[86,10280,849],{"class":635},[86,10282,10283],{"class":96},"\"3.14\"\n",[86,10285,10286,10289,10291],{"class":88,"line":7430},[86,10287,10288],{"class":92},"      effort",[86,10290,849],{"class":635},[86,10292,10293],{"class":96},"\"100\"\n",[86,10295,10296,10299,10301,10304],{"class":88,"line":7445},[86,10297,10298],{"class":92},"      velocity",[86,10300,849],{"class":635},[86,10302,10303],{"class":96},"\"1\"",[86,10305,3851],{"class":635},[86,10307,10308,10310,10312],{"class":88,"line":7454},[86,10309,1767],{"class":635},[86,10311,4652],{"class":795},[86,10313,823],{"class":635},[86,10315,10316,10318],{"class":88,"line":7463},[86,10317,3823],{"class":635},[86,10319,9471],{"class":795},[86,10321,10322,10324,10326,10329],{"class":88,"line":7468},[86,10323,9476],{"class":92},[86,10325,849],{"class":635},[86,10327,10328],{"class":96},"\"link2\"",[86,10330,823],{"class":635},[86,10332,10333,10335,10337],{"class":88,"line":7490},[86,10334,1678],{"class":635},[86,10336,3735],{"class":795},[86,10338,823],{"class":635},[86,10340,10341,10343],{"class":88,"line":7505},[86,10342,1698],{"class":635},[86,10344,9497],{"class":795},[86,10346,10347,10349,10351],{"class":88,"line":7520},[86,10348,9502],{"class":92},[86,10350,849],{"class":635},[86,10352,10353],{"class":96},"\"0.00711598521454873 0.430460941882332 -0.181074256126024\"\n",[86,10355,10356,10358,10360,10362],{"class":88,"line":7525},[86,10357,9512],{"class":92},[86,10359,849],{"class":635},[86,10361,3943],{"class":96},[86,10363,3851],{"class":635},[86,10365,10366,10368],{"class":88,"line":7547},[86,10367,1698],{"class":635},[86,10369,9525],{"class":795},[86,10371,10372,10374,10376,10379],{"class":88,"line":7562},[86,10373,9530],{"class":92},[86,10375,849],{"class":635},[86,10377,10378],{"class":96},"\"30.6115349647897\"",[86,10380,3851],{"class":635},[86,10382,10383,10385],{"class":88,"line":7571},[86,10384,1698],{"class":635},[86,10386,9544],{"class":795},[86,10388,10389,10391,10393],{"class":88,"line":7576},[86,10390,9549],{"class":92},[86,10392,849],{"class":635},[86,10394,10395],{"class":96},"\"2.84056101478768\"\n",[86,10397,10399,10401,10403],{"class":88,"line":10398},112,[86,10400,9559],{"class":92},[86,10402,849],{"class":635},[86,10404,10405],{"class":96},"\"0.00176700425270318\"\n",[86,10407,10409,10411,10413],{"class":88,"line":10408},113,[86,10410,9569],{"class":92},[86,10412,849],{"class":635},[86,10414,10415],{"class":96},"\"-0.000605507690039326\"\n",[86,10417,10419,10421,10423],{"class":88,"line":10418},114,[86,10420,9579],{"class":92},[86,10422,849],{"class":635},[86,10424,10425],{"class":96},"\"0.803420593303961\"\n",[86,10427,10429,10431,10433],{"class":88,"line":10428},115,[86,10430,9589],{"class":92},[86,10432,849],{"class":635},[86,10434,10435],{"class":96},"\"0.881921487314161\"\n",[86,10437,10439,10441,10443,10446],{"class":88,"line":10438},116,[86,10440,9599],{"class":92},[86,10442,849],{"class":635},[86,10444,10445],{"class":96},"\"2.25142021571439\"",[86,10447,3851],{"class":635},[86,10449,10451,10453,10455],{"class":88,"line":10450},117,[86,10452,1758],{"class":635},[86,10454,3735],{"class":795},[86,10456,823],{"class":635},[86,10458,10460,10462,10464],{"class":88,"line":10459},118,[86,10461,1678],{"class":635},[86,10463,820],{"class":795},[86,10465,823],{"class":635},[86,10467,10469,10471],{"class":88,"line":10468},119,[86,10470,1698],{"class":635},[86,10472,9497],{"class":795},[86,10474,10476,10478,10480],{"class":88,"line":10475},120,[86,10477,9502],{"class":92},[86,10479,849],{"class":635},[86,10481,9637],{"class":96},[86,10483,10485,10487,10489,10491],{"class":88,"line":10484},121,[86,10486,9512],{"class":92},[86,10488,849],{"class":635},[86,10490,3943],{"class":96},[86,10492,3851],{"class":635},[86,10494,10496,10498,10500],{"class":88,"line":10495},122,[86,10497,1698],{"class":635},[86,10499,832],{"class":795},[86,10501,823],{"class":635},[86,10503,10505,10507],{"class":88,"line":10504},123,[86,10506,1711],{"class":635},[86,10508,9662],{"class":795},[86,10510,10512,10514,10516,10519],{"class":88,"line":10511},124,[86,10513,9667],{"class":92},[86,10515,849],{"class":635},[86,10517,10518],{"class":96},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink2.STL\"",[86,10520,3851],{"class":635},[86,10522,10524,10526,10528],{"class":88,"line":10523},125,[86,10525,1749],{"class":635},[86,10527,832],{"class":795},[86,10529,823],{"class":635},[86,10531,10533,10535],{"class":88,"line":10532},126,[86,10534,1698],{"class":635},[86,10536,9689],{"class":795},[86,10538,10540,10542,10544,10546],{"class":88,"line":10539},127,[86,10541,9694],{"class":92},[86,10543,849],{"class":635},[86,10545,9699],{"class":96},[86,10547,823],{"class":635},[86,10549,10551,10553],{"class":88,"line":10550},128,[86,10552,1711],{"class":635},[86,10554,9708],{"class":795},[86,10556,10558,10560,10562,10564],{"class":88,"line":10557},129,[86,10559,9713],{"class":92},[86,10561,849],{"class":635},[86,10563,9718],{"class":96},[86,10565,3851],{"class":635},[86,10567,10569,10571,10573],{"class":88,"line":10568},130,[86,10570,1749],{"class":635},[86,10572,3663],{"class":795},[86,10574,823],{"class":635},[86,10576,10578,10580,10582],{"class":88,"line":10577},131,[86,10579,1758],{"class":635},[86,10581,820],{"class":795},[86,10583,823],{"class":635},[86,10585,10587,10589,10591],{"class":88,"line":10586},132,[86,10588,1678],{"class":635},[86,10590,3700],{"class":795},[86,10592,823],{"class":635},[86,10594,10596,10598],{"class":88,"line":10595},133,[86,10597,1698],{"class":635},[86,10599,9497],{"class":795},[86,10601,10603,10605,10607],{"class":88,"line":10602},134,[86,10604,9502],{"class":92},[86,10606,849],{"class":635},[86,10608,9637],{"class":96},[86,10610,10612,10614,10616,10618],{"class":88,"line":10611},135,[86,10613,9512],{"class":92},[86,10615,849],{"class":635},[86,10617,3943],{"class":96},[86,10619,3851],{"class":635},[86,10621,10623,10625,10627],{"class":88,"line":10622},136,[86,10624,1698],{"class":635},[86,10626,832],{"class":795},[86,10628,823],{"class":635},[86,10630,10632,10634],{"class":88,"line":10631},137,[86,10633,1711],{"class":635},[86,10635,9662],{"class":795},[86,10637,10639,10641,10643,10645],{"class":88,"line":10638},138,[86,10640,9667],{"class":92},[86,10642,849],{"class":635},[86,10644,10518],{"class":96},[86,10646,3851],{"class":635},[86,10648,10650,10652,10654],{"class":88,"line":10649},139,[86,10651,1749],{"class":635},[86,10653,832],{"class":795},[86,10655,823],{"class":635},[86,10657,10659,10661,10663],{"class":88,"line":10658},140,[86,10660,1758],{"class":635},[86,10662,3700],{"class":795},[86,10664,823],{"class":635},[86,10666,10668,10670,10672],{"class":88,"line":10667},141,[86,10669,1767],{"class":635},[86,10671,808],{"class":795},[86,10673,823],{"class":635},[86,10675,10677,10679],{"class":88,"line":10676},142,[86,10678,3823],{"class":635},[86,10680,10154],{"class":795},[86,10682,10684,10686,10688],{"class":88,"line":10683},143,[86,10685,9476],{"class":92},[86,10687,849],{"class":635},[86,10689,10690],{"class":96},"\"joint2\"\n",[86,10692,10694,10696,10698,10700],{"class":88,"line":10693},144,[86,10695,10168],{"class":92},[86,10697,849],{"class":635},[86,10699,10173],{"class":96},[86,10701,823],{"class":635},[86,10703,10705,10707],{"class":88,"line":10704},145,[86,10706,1678],{"class":635},[86,10708,9497],{"class":795},[86,10710,10712,10714,10716],{"class":88,"line":10711},146,[86,10713,10186],{"class":92},[86,10715,849],{"class":635},[86,10717,10718],{"class":96},"\"0.35141 -0.28119 0.13918\"\n",[86,10720,10722,10724,10726,10729],{"class":88,"line":10721},147,[86,10723,10196],{"class":92},[86,10725,849],{"class":635},[86,10727,10728],{"class":96},"\"-2.0566 1.1982 1.5708\"",[86,10730,3851],{"class":635},[86,10732,10734,10736],{"class":88,"line":10733},148,[86,10735,1678],{"class":635},[86,10737,10210],{"class":795},[86,10739,10741,10743,10745,10747],{"class":88,"line":10740},149,[86,10742,10215],{"class":92},[86,10744,849],{"class":635},[86,10746,9831],{"class":96},[86,10748,3851],{"class":635},[86,10750,10752,10754],{"class":88,"line":10751},150,[86,10753,1678],{"class":635},[86,10755,10228],{"class":795},[86,10757,10759,10761,10763,10765],{"class":88,"line":10758},151,[86,10760,10215],{"class":92},[86,10762,849],{"class":635},[86,10764,10328],{"class":96},[86,10766,3851],{"class":635},[86,10768,10770,10772],{"class":88,"line":10769},152,[86,10771,1678],{"class":635},[86,10773,10245],{"class":795},[86,10775,10777,10779,10781,10784],{"class":88,"line":10776},153,[86,10778,10186],{"class":92},[86,10780,849],{"class":635},[86,10782,10783],{"class":96},"\"-1 0 0\"",[86,10785,3851],{"class":635},[86,10787,10789,10791],{"class":88,"line":10788},154,[86,10790,1678],{"class":635},[86,10792,10263],{"class":795},[86,10794,10796,10798,10800],{"class":88,"line":10795},155,[86,10797,10268],{"class":92},[86,10799,849],{"class":635},[86,10801,10273],{"class":96},[86,10803,10805,10807,10809],{"class":88,"line":10804},156,[86,10806,10278],{"class":92},[86,10808,849],{"class":635},[86,10810,10283],{"class":96},[86,10812,10814,10816,10818],{"class":88,"line":10813},157,[86,10815,10288],{"class":92},[86,10817,849],{"class":635},[86,10819,10293],{"class":96},[86,10821,10823,10825,10827,10829],{"class":88,"line":10822},158,[86,10824,10298],{"class":92},[86,10826,849],{"class":635},[86,10828,10303],{"class":96},[86,10830,3851],{"class":635},[86,10832,10834,10836,10838],{"class":88,"line":10833},159,[86,10835,1767],{"class":635},[86,10837,4652],{"class":795},[86,10839,823],{"class":635},[86,10841,10843,10845],{"class":88,"line":10842},160,[86,10844,3823],{"class":635},[86,10846,9471],{"class":795},[86,10848,10850,10852,10854,10857],{"class":88,"line":10849},161,[86,10851,9476],{"class":92},[86,10853,849],{"class":635},[86,10855,10856],{"class":96},"\"link3\"",[86,10858,823],{"class":635},[86,10860,10862,10864,10866],{"class":88,"line":10861},162,[86,10863,1678],{"class":635},[86,10865,3735],{"class":795},[86,10867,823],{"class":635},[86,10869,10871,10873],{"class":88,"line":10870},163,[86,10872,1698],{"class":635},[86,10874,9497],{"class":795},[86,10876,10878,10880,10882],{"class":88,"line":10877},164,[86,10879,9502],{"class":92},[86,10881,849],{"class":635},[86,10883,10884],{"class":96},"\"0.00112887115421612 0.0366346915274407 0.31720330934553\"\n",[86,10886,10888,10890,10892,10894],{"class":88,"line":10887},165,[86,10889,9512],{"class":92},[86,10891,849],{"class":635},[86,10893,3943],{"class":96},[86,10895,3851],{"class":635},[86,10897,10899,10901],{"class":88,"line":10898},166,[86,10900,1698],{"class":635},[86,10902,9525],{"class":795},[86,10904,10906,10908,10910,10913],{"class":88,"line":10905},167,[86,10907,9530],{"class":92},[86,10909,849],{"class":635},[86,10911,10912],{"class":96},"\"32.192726667578\"",[86,10914,3851],{"class":635},[86,10916,10918,10920],{"class":88,"line":10917},168,[86,10919,1698],{"class":635},[86,10921,9544],{"class":795},[86,10923,10925,10927,10929],{"class":88,"line":10924},169,[86,10926,9549],{"class":92},[86,10928,849],{"class":635},[86,10930,10931],{"class":96},"\"4.01515983126431\"\n",[86,10933,10935,10937,10939],{"class":88,"line":10934},170,[86,10936,9559],{"class":92},[86,10938,849],{"class":635},[86,10940,10941],{"class":96},"\"0.0013193752174692\"\n",[86,10943,10945,10947,10949],{"class":88,"line":10944},171,[86,10946,9569],{"class":92},[86,10948,849],{"class":635},[86,10950,10951],{"class":96},"\"0.0113529938102155\"\n",[86,10953,10955,10957,10959],{"class":88,"line":10954},172,[86,10956,9579],{"class":92},[86,10958,849],{"class":635},[86,10960,10961],{"class":96},"\"3.86196311673823\"\n",[86,10963,10965,10967,10969],{"class":88,"line":10964},173,[86,10966,9589],{"class":92},[86,10968,849],{"class":635},[86,10970,10971],{"class":96},"\"-0.336440022491883\"\n",[86,10973,10975,10977,10979,10982],{"class":88,"line":10974},174,[86,10976,9599],{"class":92},[86,10978,849],{"class":635},[86,10980,10981],{"class":96},"\"0.399977905540088\"",[86,10983,3851],{"class":635},[86,10985,10987,10989,10991],{"class":88,"line":10986},175,[86,10988,1758],{"class":635},[86,10990,3735],{"class":795},[86,10992,823],{"class":635},[86,10994,10996,10998,11000],{"class":88,"line":10995},176,[86,10997,1678],{"class":635},[86,10999,820],{"class":795},[86,11001,823],{"class":635},[86,11003,11005,11007],{"class":88,"line":11004},177,[86,11006,1698],{"class":635},[86,11008,9497],{"class":795},[86,11010,11012,11014,11016],{"class":88,"line":11011},178,[86,11013,9502],{"class":92},[86,11015,849],{"class":635},[86,11017,9637],{"class":96},[86,11019,11021,11023,11025,11027],{"class":88,"line":11020},179,[86,11022,9512],{"class":92},[86,11024,849],{"class":635},[86,11026,3943],{"class":96},[86,11028,3851],{"class":635},[86,11030,11032,11034,11036],{"class":88,"line":11031},180,[86,11033,1698],{"class":635},[86,11035,832],{"class":795},[86,11037,823],{"class":635},[86,11039,11041,11043],{"class":88,"line":11040},181,[86,11042,1711],{"class":635},[86,11044,9662],{"class":795},[86,11046,11048,11050,11052,11055],{"class":88,"line":11047},182,[86,11049,9667],{"class":92},[86,11051,849],{"class":635},[86,11053,11054],{"class":96},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink3.STL\"",[86,11056,3851],{"class":635},[86,11058,11060,11062,11064],{"class":88,"line":11059},183,[86,11061,1749],{"class":635},[86,11063,832],{"class":795},[86,11065,823],{"class":635},[86,11067,11069,11071],{"class":88,"line":11068},184,[86,11070,1698],{"class":635},[86,11072,9689],{"class":795},[86,11074,11076,11078,11080,11082],{"class":88,"line":11075},185,[86,11077,9694],{"class":92},[86,11079,849],{"class":635},[86,11081,9699],{"class":96},[86,11083,823],{"class":635},[86,11085,11087,11089],{"class":88,"line":11086},186,[86,11088,1711],{"class":635},[86,11090,9708],{"class":795},[86,11092,11094,11096,11098,11100],{"class":88,"line":11093},187,[86,11095,9713],{"class":92},[86,11097,849],{"class":635},[86,11099,9718],{"class":96},[86,11101,3851],{"class":635},[86,11103,11105,11107,11109],{"class":88,"line":11104},188,[86,11106,1749],{"class":635},[86,11108,3663],{"class":795},[86,11110,823],{"class":635},[86,11112,11114,11116,11118],{"class":88,"line":11113},189,[86,11115,1758],{"class":635},[86,11117,820],{"class":795},[86,11119,823],{"class":635},[86,11121,11123,11125,11127],{"class":88,"line":11122},190,[86,11124,1678],{"class":635},[86,11126,3700],{"class":795},[86,11128,823],{"class":635},[86,11130,11132,11134],{"class":88,"line":11131},191,[86,11133,1698],{"class":635},[86,11135,9497],{"class":795},[86,11137,11139,11141,11143],{"class":88,"line":11138},192,[86,11140,9502],{"class":92},[86,11142,849],{"class":635},[86,11144,9637],{"class":96},[86,11146,11148,11150,11152,11154],{"class":88,"line":11147},193,[86,11149,9512],{"class":92},[86,11151,849],{"class":635},[86,11153,3943],{"class":96},[86,11155,3851],{"class":635},[86,11157,11159,11161,11163],{"class":88,"line":11158},194,[86,11160,1698],{"class":635},[86,11162,832],{"class":795},[86,11164,823],{"class":635},[86,11166,11168,11170],{"class":88,"line":11167},195,[86,11169,1711],{"class":635},[86,11171,9662],{"class":795},[86,11173,11175,11177,11179,11181],{"class":88,"line":11174},196,[86,11176,9667],{"class":92},[86,11178,849],{"class":635},[86,11180,11054],{"class":96},[86,11182,3851],{"class":635},[86,11184,11186,11188,11190],{"class":88,"line":11185},197,[86,11187,1749],{"class":635},[86,11189,832],{"class":795},[86,11191,823],{"class":635},[86,11193,11195,11197,11199],{"class":88,"line":11194},198,[86,11196,1758],{"class":635},[86,11198,3700],{"class":795},[86,11200,823],{"class":635},[86,11202,11204,11206,11208],{"class":88,"line":11203},199,[86,11205,1767],{"class":635},[86,11207,808],{"class":795},[86,11209,823],{"class":635},[86,11211,11213,11215],{"class":88,"line":11212},200,[86,11214,3823],{"class":635},[86,11216,10154],{"class":795},[86,11218,11220,11222,11224],{"class":88,"line":11219},201,[86,11221,9476],{"class":92},[86,11223,849],{"class":635},[86,11225,11226],{"class":96},"\"joint3\"\n",[86,11228,11230,11232,11234,11236],{"class":88,"line":11229},202,[86,11231,10168],{"class":92},[86,11233,849],{"class":635},[86,11235,10173],{"class":96},[86,11237,823],{"class":635},[86,11239,11241,11243],{"class":88,"line":11240},203,[86,11242,1678],{"class":635},[86,11244,9497],{"class":795},[86,11246,11248,11250,11252],{"class":88,"line":11247},204,[86,11249,10186],{"class":92},[86,11251,849],{"class":635},[86,11253,11254],{"class":96},"\"0.3765 0.82481 -0.49591\"\n",[86,11256,11258,11260,11262,11265],{"class":88,"line":11257},205,[86,11259,10196],{"class":92},[86,11261,849],{"class":635},[86,11263,11264],{"class":96},"\"2.5802 0 0\"",[86,11266,3851],{"class":635},[86,11268,11270,11272],{"class":88,"line":11269},206,[86,11271,1678],{"class":635},[86,11273,10210],{"class":795},[86,11275,11277,11279,11281,11283],{"class":88,"line":11276},207,[86,11278,10215],{"class":92},[86,11280,849],{"class":635},[86,11282,10328],{"class":96},[86,11284,3851],{"class":635},[86,11286,11288,11290],{"class":88,"line":11287},208,[86,11289,1678],{"class":635},[86,11291,10228],{"class":795},[86,11293,11295,11297,11299,11301],{"class":88,"line":11294},209,[86,11296,10215],{"class":92},[86,11298,849],{"class":635},[86,11300,10856],{"class":96},[86,11302,3851],{"class":635},[86,11304,11306,11308],{"class":88,"line":11305},210,[86,11307,1678],{"class":635},[86,11309,10245],{"class":795},[86,11311,11313,11315,11317,11319],{"class":88,"line":11312},211,[86,11314,10186],{"class":92},[86,11316,849],{"class":635},[86,11318,10254],{"class":96},[86,11320,3851],{"class":635},[86,11322,11324,11326],{"class":88,"line":11323},212,[86,11325,1678],{"class":635},[86,11327,10263],{"class":795},[86,11329,11331,11333,11335],{"class":88,"line":11330},213,[86,11332,10268],{"class":92},[86,11334,849],{"class":635},[86,11336,10273],{"class":96},[86,11338,11340,11342,11344],{"class":88,"line":11339},214,[86,11341,10278],{"class":92},[86,11343,849],{"class":635},[86,11345,10283],{"class":96},[86,11347,11349,11351,11353],{"class":88,"line":11348},215,[86,11350,10288],{"class":92},[86,11352,849],{"class":635},[86,11354,10293],{"class":96},[86,11356,11358,11360,11362,11364],{"class":88,"line":11357},216,[86,11359,10298],{"class":92},[86,11361,849],{"class":635},[86,11363,10303],{"class":96},[86,11365,3851],{"class":635},[86,11367,11369,11371,11373],{"class":88,"line":11368},217,[86,11370,1767],{"class":635},[86,11372,4652],{"class":795},[86,11374,823],{"class":635},[86,11376,11378,11380],{"class":88,"line":11377},218,[86,11379,3823],{"class":635},[86,11381,9471],{"class":795},[86,11383,11385,11387,11389,11392],{"class":88,"line":11384},219,[86,11386,9476],{"class":92},[86,11388,849],{"class":635},[86,11390,11391],{"class":96},"\"link4\"",[86,11393,823],{"class":635},[86,11395,11397,11399,11401],{"class":88,"line":11396},220,[86,11398,1678],{"class":635},[86,11400,3735],{"class":795},[86,11402,823],{"class":635},[86,11404,11406,11408],{"class":88,"line":11405},221,[86,11407,1698],{"class":635},[86,11409,9497],{"class":795},[86,11411,11413,11415,11417],{"class":88,"line":11412},222,[86,11414,9502],{"class":92},[86,11416,849],{"class":635},[86,11418,11419],{"class":96},"\"0.162516620557178 -0.213844847423599 3.38133504529381E-07\"\n",[86,11421,11423,11425,11427,11429],{"class":88,"line":11422},223,[86,11424,9512],{"class":92},[86,11426,849],{"class":635},[86,11428,3943],{"class":96},[86,11430,3851],{"class":635},[86,11432,11434,11436],{"class":88,"line":11433},224,[86,11435,1698],{"class":635},[86,11437,9525],{"class":795},[86,11439,11441,11443,11445,11448],{"class":88,"line":11440},225,[86,11442,9530],{"class":92},[86,11444,849],{"class":635},[86,11446,11447],{"class":96},"\"12.1646007734167\"",[86,11449,3851],{"class":635},[86,11451,11453,11455],{"class":88,"line":11452},226,[86,11454,1698],{"class":635},[86,11456,9544],{"class":795},[86,11458,11460,11462,11464],{"class":88,"line":11459},227,[86,11461,9549],{"class":92},[86,11463,849],{"class":635},[86,11465,11466],{"class":96},"\"0.288208127188405\"\n",[86,11468,11470,11472,11474],{"class":88,"line":11469},228,[86,11471,9559],{"class":92},[86,11473,849],{"class":635},[86,11475,11476],{"class":96},"\"0.00080326659836716\"\n",[86,11478,11480,11482,11484],{"class":88,"line":11479},229,[86,11481,9569],{"class":92},[86,11483,849],{"class":635},[86,11485,11486],{"class":96},"\"8.72489392803044E-07\"\n",[86,11488,11490,11492,11494],{"class":88,"line":11489},230,[86,11491,9579],{"class":92},[86,11493,849],{"class":635},[86,11495,11496],{"class":96},"\"0.107000706575729\"\n",[86,11498,11500,11502,11504],{"class":88,"line":11499},231,[86,11501,9589],{"class":92},[86,11503,849],{"class":635},[86,11505,11506],{"class":96},"\"-1.48935044230573E-07\"\n",[86,11508,11510,11512,11514,11517],{"class":88,"line":11509},232,[86,11511,9599],{"class":92},[86,11513,849],{"class":635},[86,11515,11516],{"class":96},"\"0.295147863994059\"",[86,11518,3851],{"class":635},[86,11520,11522,11524,11526],{"class":88,"line":11521},233,[86,11523,1758],{"class":635},[86,11525,3735],{"class":795},[86,11527,823],{"class":635},[86,11529,11531,11533,11535],{"class":88,"line":11530},234,[86,11532,1678],{"class":635},[86,11534,820],{"class":795},[86,11536,823],{"class":635},[86,11538,11540,11542],{"class":88,"line":11539},235,[86,11541,1698],{"class":635},[86,11543,9497],{"class":795},[86,11545,11547,11549,11551],{"class":88,"line":11546},236,[86,11548,9502],{"class":92},[86,11550,849],{"class":635},[86,11552,9637],{"class":96},[86,11554,11556,11558,11560,11562],{"class":88,"line":11555},237,[86,11557,9512],{"class":92},[86,11559,849],{"class":635},[86,11561,3943],{"class":96},[86,11563,3851],{"class":635},[86,11565,11567,11569,11571],{"class":88,"line":11566},238,[86,11568,1698],{"class":635},[86,11570,832],{"class":795},[86,11572,823],{"class":635},[86,11574,11576,11578],{"class":88,"line":11575},239,[86,11577,1711],{"class":635},[86,11579,9662],{"class":795},[86,11581,11583,11585,11587,11590],{"class":88,"line":11582},240,[86,11584,9667],{"class":92},[86,11586,849],{"class":635},[86,11588,11589],{"class":96},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink4.STL\"",[86,11591,3851],{"class":635},[86,11593,11595,11597,11599],{"class":88,"line":11594},241,[86,11596,1749],{"class":635},[86,11598,832],{"class":795},[86,11600,823],{"class":635},[86,11602,11604,11606],{"class":88,"line":11603},242,[86,11605,1698],{"class":635},[86,11607,9689],{"class":795},[86,11609,11611,11613,11615,11617],{"class":88,"line":11610},243,[86,11612,9694],{"class":92},[86,11614,849],{"class":635},[86,11616,9699],{"class":96},[86,11618,823],{"class":635},[86,11620,11622,11624],{"class":88,"line":11621},244,[86,11623,1711],{"class":635},[86,11625,9708],{"class":795},[86,11627,11629,11631,11633,11635],{"class":88,"line":11628},245,[86,11630,9713],{"class":92},[86,11632,849],{"class":635},[86,11634,9718],{"class":96},[86,11636,3851],{"class":635},[86,11638,11640,11642,11644],{"class":88,"line":11639},246,[86,11641,1749],{"class":635},[86,11643,3663],{"class":795},[86,11645,823],{"class":635},[86,11647,11649,11651,11653],{"class":88,"line":11648},247,[86,11650,1758],{"class":635},[86,11652,820],{"class":795},[86,11654,823],{"class":635},[86,11656,11658,11660,11662],{"class":88,"line":11657},248,[86,11659,1678],{"class":635},[86,11661,3700],{"class":795},[86,11663,823],{"class":635},[86,11665,11667,11669],{"class":88,"line":11666},249,[86,11668,1698],{"class":635},[86,11670,9497],{"class":795},[86,11672,11674,11676,11678],{"class":88,"line":11673},250,[86,11675,9502],{"class":92},[86,11677,849],{"class":635},[86,11679,9637],{"class":96},[86,11681,11683,11685,11687,11689],{"class":88,"line":11682},251,[86,11684,9512],{"class":92},[86,11686,849],{"class":635},[86,11688,3943],{"class":96},[86,11690,3851],{"class":635},[86,11692,11694,11696,11698],{"class":88,"line":11693},252,[86,11695,1698],{"class":635},[86,11697,832],{"class":795},[86,11699,823],{"class":635},[86,11701,11703,11705],{"class":88,"line":11702},253,[86,11704,1711],{"class":635},[86,11706,9662],{"class":795},[86,11708,11710,11712,11714,11716],{"class":88,"line":11709},254,[86,11711,9667],{"class":92},[86,11713,849],{"class":635},[86,11715,11589],{"class":96},[86,11717,3851],{"class":635},[86,11719,11721,11723,11725],{"class":88,"line":11720},255,[86,11722,1749],{"class":635},[86,11724,832],{"class":795},[86,11726,823],{"class":635},[86,11728,11730,11732,11734],{"class":88,"line":11729},256,[86,11731,1758],{"class":635},[86,11733,3700],{"class":795},[86,11735,823],{"class":635},[86,11737,11739,11741,11743],{"class":88,"line":11738},257,[86,11740,1767],{"class":635},[86,11742,808],{"class":795},[86,11744,823],{"class":635},[86,11746,11748,11750],{"class":88,"line":11747},258,[86,11749,3823],{"class":635},[86,11751,10154],{"class":795},[86,11753,11755,11757,11759],{"class":88,"line":11754},259,[86,11756,9476],{"class":92},[86,11758,849],{"class":635},[86,11760,11761],{"class":96},"\"joint4\"\n",[86,11763,11765,11767,11769,11771],{"class":88,"line":11764},260,[86,11766,10168],{"class":92},[86,11768,849],{"class":635},[86,11770,10173],{"class":96},[86,11772,823],{"class":635},[86,11774,11776,11778],{"class":88,"line":11775},261,[86,11777,1678],{"class":635},[86,11779,9497],{"class":795},[86,11781,11783,11785,11787],{"class":88,"line":11782},262,[86,11784,10186],{"class":92},[86,11786,849],{"class":635},[86,11788,11789],{"class":96},"\"0 0.070837 0.99728\"\n",[86,11791,11793,11795,11797,11800],{"class":88,"line":11792},263,[86,11794,10196],{"class":92},[86,11796,849],{"class":635},[86,11798,11799],{"class":96},"\"0.82315 -1.5708 0\"",[86,11801,3851],{"class":635},[86,11803,11805,11807],{"class":88,"line":11804},264,[86,11806,1678],{"class":635},[86,11808,10210],{"class":795},[86,11810,11812,11814,11816,11818],{"class":88,"line":11811},265,[86,11813,10215],{"class":92},[86,11815,849],{"class":635},[86,11817,10856],{"class":96},[86,11819,3851],{"class":635},[86,11821,11823,11825],{"class":88,"line":11822},266,[86,11824,1678],{"class":635},[86,11826,10228],{"class":795},[86,11828,11830,11832,11834,11836],{"class":88,"line":11829},267,[86,11831,10215],{"class":92},[86,11833,849],{"class":635},[86,11835,11391],{"class":96},[86,11837,3851],{"class":635},[86,11839,11841,11843],{"class":88,"line":11840},268,[86,11842,1678],{"class":635},[86,11844,10245],{"class":795},[86,11846,11848,11850,11852,11854],{"class":88,"line":11847},269,[86,11849,10186],{"class":92},[86,11851,849],{"class":635},[86,11853,10254],{"class":96},[86,11855,3851],{"class":635},[86,11857,11859,11861],{"class":88,"line":11858},270,[86,11860,1678],{"class":635},[86,11862,10263],{"class":795},[86,11864,11866,11868,11870],{"class":88,"line":11865},271,[86,11867,10268],{"class":92},[86,11869,849],{"class":635},[86,11871,10273],{"class":96},[86,11873,11875,11877,11879],{"class":88,"line":11874},272,[86,11876,10278],{"class":92},[86,11878,849],{"class":635},[86,11880,10283],{"class":96},[86,11882,11884,11886,11888],{"class":88,"line":11883},273,[86,11885,10288],{"class":92},[86,11887,849],{"class":635},[86,11889,10293],{"class":96},[86,11891,11893,11895,11897,11899],{"class":88,"line":11892},274,[86,11894,10298],{"class":92},[86,11896,849],{"class":635},[86,11898,10303],{"class":96},[86,11900,3851],{"class":635},[86,11902,11904,11906,11908],{"class":88,"line":11903},275,[86,11905,1767],{"class":635},[86,11907,4652],{"class":795},[86,11909,823],{"class":635},[86,11911,11913,11915,11917],{"class":88,"line":11912},276,[86,11914,3991],{"class":635},[86,11916,796],{"class":795},[86,11918,823],{"class":635},[141,11920,11921],{"start":868},[144,11922,11923],{},"编译",[78,11925,11927],{"className":80,"code":11926,"language":82,"meta":21,"style":21},"colcon build --packages-select cpp01_urdf\n",[73,11928,11929],{"__ignoreMap":21},[86,11930,11931,11933,11935,11937],{"class":88,"line":89},[86,11932,1494],{"class":92},[86,11934,1497],{"class":96},[86,11936,1500],{"class":738},[86,11938,11939],{"class":96}," cpp01_urdf\n",[16,11941,11942],{},[19,11943],{"alt":21,"src":11944},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1596.webp",[16,11946,11947],{},[19,11948],{"alt":21,"src":11949},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1597.webp",[141,11951,11952],{"start":878},[144,11953,11954],{},"更新终端环境",[78,11956,11958],{"className":80,"code":11957,"language":82,"meta":21,"style":21},"source install\u002Fsetup.bash\n",[73,11959,11960],{"__ignoreMap":21},[86,11961,11962,11964],{"class":88,"line":89},[86,11963,1518],{"class":738},[86,11965,1521],{"class":96},[16,11967,11968],{},[19,11969],{"alt":21,"src":11970},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1598.webp",[141,11972,11973],{"start":888},[144,11974,11975],{},"运行Launch",[78,11977,11979],{"className":80,"code":11978,"language":82,"meta":21,"style":21},"ros2 launch cpp01_urdf display.launch.py\n",[73,11980,11981],{"__ignoreMap":21},[86,11982,11983,11985,11987,11989],{"class":88,"line":89},[86,11984,726],{"class":92},[86,11986,1528],{"class":96},[86,11988,8145],{"class":96},[86,11990,1533],{"class":96},[16,11992,11993],{},[19,11994],{"alt":21,"src":11995},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1599.webp",[16,11997,11998],{},[19,11999],{"alt":21,"src":12000},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1600.webp",[141,12002,12003],{"start":1020},[144,12004,12005],{},"在Rviz2中添加插件以及基本配置",[16,12007,12008],{},[19,12009],{"alt":21,"src":12010},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1601.webp",[141,12012,12013],{"start":1025},[144,12014,12015],{},"使用joint_state_publisher_gui可以调关节的角度",[16,12017,12018,12021],{},[19,12019],{"alt":21,"src":12020},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1602.webp",[19,12022],{"alt":21,"src":12023},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1603.webp",[141,12025,12026],{"start":1042},[144,12027,12028],{},"保存rviz2的配置到rviz文件夹中",[16,12030,12031],{},"首先点击rviz2的菜单栏上的File，然后选择Save Config as",[16,12033,12034],{},[19,12035],{"alt":21,"src":12036},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1604.webp",[16,12038,12039],{},"可以去本节简介看效果视频",[655,12041,12043],{"id":12042},"注意事项仅供参考chatgpt的解决方案","注意事项（仅供参考，ChatGPT的解决方案）",[3549,12045,12046],{"id":12046},"坐标系1",[16,12048,12049],{},"轮子要用continuous的关节，并且尽量自己选坐标系，要求从后面看车的话，左是Y，前是X，上是Z。所有的坐标系都要求。",[16,12051,12052],{},"可以先让他帮你自动生成一个，你再去修改坐标系，要简单一些。",[16,12054,12055],{},[19,12056],{"alt":21,"src":12057},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1605.webp",[16,12059,12060],{},[19,12061],{"alt":21,"src":12062},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1606.webp",[16,12064,12065],{},[19,12066],{"alt":21,"src":12067},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1607.webp",[3549,12069,12070],{"id":12070},"坐标系让车躺着",[16,12072,12073],{},"如果你的车在rviz2里是侧着睡觉的，那么：",[16,12075,12076,12077,12080],{},"哈哈，没错，这种“整车侧着躺尸”的情况 ",[107,12078,12079],{},"90%就是 STL 的坐标轴方向搞错了"," 。很多 CAD 工具导出的 STL 模型默认是：",[165,12082,12083,12086],{},[144,12084,12085],{},"Z 轴朝前（例如 SolidWorks：Z朝前，Y朝上，用右手坐标系推X坐标系位置，从车屁股后面看是朝左。）",[144,12087,12088],{},"或者 Y 轴朝上（例如 Blender）",[16,12090,12091],{},"而 ROS\u002FURDF 的坐标系统是：",[165,12093,12094,12097,12100],{},[144,12095,12096],{},"X 向前（前进方向）",[144,12098,12099],{},"Y 向左（平移方向）",[144,12101,12102],{},"Z 向上（重力方向）",[3549,12104,12106],{"id":12105},"车直走变旋转旋转变直走","车直走变旋转，旋转变直走",[16,12108,12109],{},"那说明你的转轴有问题。",[16,12111,12112],{},"如果向前走成了左转，那么说明左轮的转轴错了，少了个符号，加上就行了。",[16,12114,12115],{},"比如这个010,你应该改成0-10",[16,12117,12118],{},[19,12119],{"alt":21,"src":12120},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1608.webp",[12,12122,12123],{"id":12123},"xacro",[655,12125,12127],{"id":12126},"场景作用与概念","场景、作用与概念",[16,12129,12130],{},[107,12131,12132],{},"场景",[16,12134,12135],{},"前面 URDF 文件构建机器人模型的过程中，存在若干问题。",[12137,12138,12139,12142,12145],"blockquote",{},[16,12140,12141],{},"问题1：在设计关节的位置时，需要按照一定的规则计算，规则是固定的，但是在 URDF 中依赖于人工计算，存在不便，容易计算失误，且当某些参数发生改变时，还需要重新计算。",[16,12143,12144],{},"问题2：URDF中的部分内容是高度重复的，比如车轮的设计实现，不同轮子只是部分参数不同，形状、颜色、翻转量都是一致的，在实际应用中，构建复杂的机器人模型时，更是易于出现高度重复的设计，按照一般的编程思想涉及到重复代码应该考虑封装、复用，但是在之前的URDF文件中并没有相关操作。",[16,12146,12147],{},"......",[16,12149,12150,12151,12154],{},"如果在一般编程语言中遇到类似问题，我们可以通过变量结合函数解决。对应的，在 ROS 中也给出了类似编程的优化方案，该方案称之为： ",[107,12152,12153],{},"Xacro（可以理解为urdf2.0）"," 。",[16,12156,12157],{},[107,12158,12159],{},"概念",[16,12161,12162],{},"Xacro 是 XML Macros 的缩写，Xacro 是一种 XML 宏语言，是可编程的 XML。",[16,12164,12165],{},"Xacro 可以声明变量，可以通过数学运算求解；可以使用流程控制控制执行顺序；还可以通过宏封装(可以想成函数)、复用功能，从而提高代码复用率以及程序的安全性。",[16,12167,12168],{},[107,12169,12170],{},"作用",[16,12172,12173],{},"较之于纯粹的 URDF 实现，可以编写更安全、精简、易读性更强的机器人模型文件，且可以提高编写效率。",[655,12175,12176],{"id":12176},"快速体验",[16,12178,12179],{},"先安装xacro",[78,12181,12183],{"className":80,"code":12182,"language":82,"meta":21,"style":21},"#humble版本\nsudo apt install ros-humble-xacro\n#jazzy版本\nsudo apt install ros-jazzy-xacro\n",[73,12184,12185,12190,12200,12205],{"__ignoreMap":21},[86,12186,12187],{"class":88,"line":89},[86,12188,12189],{"class":1005},"#humble版本\n",[86,12191,12192,12194,12196,12198],{"class":88,"line":646},[86,12193,93],{"class":92},[86,12195,97],{"class":96},[86,12197,100],{"class":96},[86,12199,1838],{"class":96},[86,12201,12202],{"class":88,"line":802},[86,12203,12204],{"class":1005},"#jazzy版本\n",[86,12206,12207,12209,12211,12213],{"class":88,"line":814},[86,12208,93],{"class":92},[86,12210,97],{"class":96},[86,12212,100],{"class":96},[86,12214,12215],{"class":96}," ros-jazzy-xacro\n",[16,12217,12218],{},"1.需求",[16,12220,12221,12222,12225],{},"使用xacro优化 ",[107,12223,12224],{},"6.4.4 URDF练习"," 中的小车底盘实现，需要使用变量封装车辆参数，并使用 xacro 宏封装轮子重复的代码并调用宏创建四个轮子(注意: 在此，演示 xacro 的基本使用，不必要生成合法的 URDF )。",[16,12227,12228],{},"2.实现",[16,12230,12231],{},"功能包cpp06_urdf的urdf\u002Fxacro目录下，新建xacro文件demo01_helloworld.urdf.xacro，并编辑文件，输入如下内容：",[78,12233,12235],{"className":777,"code":12234,"language":779,"meta":21,"style":21},"\u003Crobot name=\"mycar\" xmlns:xacro=\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\">\n\n    \u003Cxacro:property name=\"wheel_radius\" value=\"0.025\" \u002F>\n    \u003Cxacro:property name=\"wheel_length\" value=\"0.02\" \u002F>\n    \u003Cxacro:property name=\"PI\" value=\"3.1415927\" \u002F>\n\n    \u003Cxacro:macro name=\"wheel_func\" params=\"wheel_name\" >\n        \u003Clink name=\"${wheel_name}_wheel\">\n            \u003Cvisual>\n                \u003Cgeometry>\n                    \u003Ccylinder radius=\"${wheel_radius}\" length=\"${wheel_length}\" \u002F>\n                \u003C\u002Fgeometry>\n\n                \u003Corigin xyz=\"0 0 0\" rpy=\"${PI \u002F 2} 0 0\" \u002F>\n\n                \u003Cmaterial name=\"wheel_color\">\n                    \u003Ccolor rgba=\"0 0 0 0.3\" \u002F>\n                \u003C\u002Fmaterial>\n            \u003C\u002Fvisual>\n        \u003C\u002Flink>\n    \u003C\u002Fxacro:macro>\n    \u003Cxacro:wheel_func wheel_name=\"left_front\"\u002F>\n    \u003Cxacro:wheel_func wheel_name=\"left_back\"\u002F>\n    \u003Cxacro:wheel_func wheel_name=\"right_front\"\u002F>\n    \u003Cxacro:wheel_func wheel_name=\"right_back\"\u002F>\n\u003C\u002Frobot>\n",[73,12236,12237,12260,12264,12287,12308,12330,12334,12359,12374,12382,12391,12414,12423,12427,12448,12452,12467,12482,12490,12499,12507,12515,12532,12547,12562,12577],{"__ignoreMap":21},[86,12238,12239,12241,12243,12245,12247,12250,12253,12255,12258],{"class":88,"line":89},[86,12240,1377],{"class":635},[86,12242,796],{"class":795},[86,12244,1661],{"class":92},[86,12246,849],{"class":635},[86,12248,12249],{"class":96},"\"mycar\"",[86,12251,12252],{"class":92}," xmlns:xacro",[86,12254,849],{"class":635},[86,12256,12257],{"class":96},"\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\"",[86,12259,823],{"class":635},[86,12261,12262],{"class":88,"line":646},[86,12263,787],{"emptyLinePlaceholder":786},[86,12265,12266,12268,12271,12273,12275,12278,12281,12283,12285],{"class":88,"line":802},[86,12267,1678],{"class":635},[86,12269,12270],{"class":795},"xacro:property",[86,12272,1661],{"class":92},[86,12274,849],{"class":635},[86,12276,12277],{"class":96},"\"wheel_radius\"",[86,12279,12280],{"class":92}," value",[86,12282,849],{"class":635},[86,12284,6730],{"class":96},[86,12286,3851],{"class":635},[86,12288,12289,12291,12293,12295,12297,12300,12302,12304,12306],{"class":88,"line":814},[86,12290,1678],{"class":635},[86,12292,12270],{"class":795},[86,12294,1661],{"class":92},[86,12296,849],{"class":635},[86,12298,12299],{"class":96},"\"wheel_length\"",[86,12301,12280],{"class":92},[86,12303,849],{"class":635},[86,12305,6738],{"class":96},[86,12307,3851],{"class":635},[86,12309,12310,12312,12314,12316,12318,12321,12323,12325,12328],{"class":88,"line":826},[86,12311,1678],{"class":635},[86,12313,12270],{"class":795},[86,12315,1661],{"class":92},[86,12317,849],{"class":635},[86,12319,12320],{"class":96},"\"PI\"",[86,12322,12280],{"class":92},[86,12324,849],{"class":635},[86,12326,12327],{"class":96},"\"3.1415927\"",[86,12329,3851],{"class":635},[86,12331,12332],{"class":88,"line":837},[86,12333,787],{"emptyLinePlaceholder":786},[86,12335,12336,12338,12341,12343,12345,12348,12351,12353,12356],{"class":88,"line":858},[86,12337,1678],{"class":635},[86,12339,12340],{"class":795},"xacro:macro",[86,12342,1661],{"class":92},[86,12344,849],{"class":635},[86,12346,12347],{"class":96},"\"wheel_func\"",[86,12349,12350],{"class":92}," params",[86,12352,849],{"class":635},[86,12354,12355],{"class":96},"\"wheel_name\"",[86,12357,12358],{"class":635}," >\n",[86,12360,12361,12363,12365,12367,12369,12372],{"class":88,"line":868},[86,12362,1711],{"class":635},[86,12364,808],{"class":795},[86,12366,1661],{"class":92},[86,12368,849],{"class":635},[86,12370,12371],{"class":96},"\"${wheel_name}_wheel\"",[86,12373,823],{"class":635},[86,12375,12376,12378,12380],{"class":88,"line":878},[86,12377,3902],{"class":635},[86,12379,820],{"class":795},[86,12381,823],{"class":635},[86,12383,12384,12387,12389],{"class":88,"line":888},[86,12385,12386],{"class":635},"                \u003C",[86,12388,832],{"class":795},[86,12390,823],{"class":635},[86,12392,12393,12396,12398,12400,12402,12405,12407,12409,12412],{"class":88,"line":1020},[86,12394,12395],{"class":635},"                    \u003C",[86,12397,3609],{"class":795},[86,12399,5573],{"class":92},[86,12401,849],{"class":635},[86,12403,12404],{"class":96},"\"${wheel_radius}\"",[86,12406,6733],{"class":92},[86,12408,849],{"class":635},[86,12410,12411],{"class":96},"\"${wheel_length}\"",[86,12413,3851],{"class":635},[86,12415,12416,12419,12421],{"class":88,"line":1025},[86,12417,12418],{"class":635},"                \u003C\u002F",[86,12420,832],{"class":795},[86,12422,823],{"class":635},[86,12424,12425],{"class":88,"line":1042},[86,12426,787],{"emptyLinePlaceholder":786},[86,12428,12429,12431,12433,12435,12437,12439,12441,12443,12446],{"class":88,"line":1064},[86,12430,12386],{"class":635},[86,12432,3641],{"class":795},[86,12434,3938],{"class":92},[86,12436,849],{"class":635},[86,12438,3943],{"class":96},[86,12440,3946],{"class":92},[86,12442,849],{"class":635},[86,12444,12445],{"class":96},"\"${PI \u002F 2} 0 0\"",[86,12447,3851],{"class":635},[86,12449,12450],{"class":88,"line":1084},[86,12451,787],{"emptyLinePlaceholder":786},[86,12453,12454,12456,12458,12460,12462,12465],{"class":88,"line":1115},[86,12455,12386],{"class":635},[86,12457,3663],{"class":795},[86,12459,1661],{"class":92},[86,12461,849],{"class":635},[86,12463,12464],{"class":96},"\"wheel_color\"",[86,12466,823],{"class":635},[86,12468,12469,12471,12473,12475,12477,12480],{"class":88,"line":1120},[86,12470,12395],{"class":635},[86,12472,3678],{"class":795},[86,12474,3843],{"class":92},[86,12476,849],{"class":635},[86,12478,12479],{"class":96},"\"0 0 0 0.3\"",[86,12481,3851],{"class":635},[86,12483,12484,12486,12488],{"class":88,"line":1126},[86,12485,12418],{"class":635},[86,12487,3663],{"class":795},[86,12489,823],{"class":635},[86,12491,12492,12495,12497],{"class":88,"line":1131},[86,12493,12494],{"class":635},"            \u003C\u002F",[86,12496,820],{"class":795},[86,12498,823],{"class":635},[86,12500,12501,12503,12505],{"class":88,"line":1137},[86,12502,1740],{"class":635},[86,12504,808],{"class":795},[86,12506,823],{"class":635},[86,12508,12509,12511,12513],{"class":88,"line":1159},[86,12510,1758],{"class":635},[86,12512,12340],{"class":795},[86,12514,823],{"class":635},[86,12516,12517,12519,12522,12525,12527,12530],{"class":88,"line":1170},[86,12518,1678],{"class":635},[86,12520,12521],{"class":795},"xacro:wheel_func",[86,12523,12524],{"class":92}," wheel_name",[86,12526,849],{"class":635},[86,12528,12529],{"class":96},"\"left_front\"",[86,12531,855],{"class":635},[86,12533,12534,12536,12538,12540,12542,12545],{"class":88,"line":1184},[86,12535,1678],{"class":635},[86,12537,12521],{"class":795},[86,12539,12524],{"class":92},[86,12541,849],{"class":635},[86,12543,12544],{"class":96},"\"left_back\"",[86,12546,855],{"class":635},[86,12548,12549,12551,12553,12555,12557,12560],{"class":88,"line":1196},[86,12550,1678],{"class":635},[86,12552,12521],{"class":795},[86,12554,12524],{"class":92},[86,12556,849],{"class":635},[86,12558,12559],{"class":96},"\"right_front\"",[86,12561,855],{"class":635},[86,12563,12564,12566,12568,12570,12572,12575],{"class":88,"line":1213},[86,12565,1678],{"class":635},[86,12567,12521],{"class":795},[86,12569,12524],{"class":92},[86,12571,849],{"class":635},[86,12573,12574],{"class":96},"\"right_back\"",[86,12576,855],{"class":635},[86,12578,12579,12581,12583],{"class":88,"line":1219},[86,12580,3991],{"class":635},[86,12582,796],{"class":795},[86,12584,823],{"class":635},[16,12586,12587],{},[19,12588],{"alt":21,"src":12589},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1609.webp",[16,12591,12592],{},"宏类似函数",[16,12594,12595],{},"params类似入口参数",[16,12597,12598],{},"子标签类似函数体",[16,12600,12601],{},"终端下进入当前文件所述目录，输入如下指令：",[78,12603,12605],{"className":80,"code":12604,"language":82,"meta":21,"style":21},"cd src\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002F\nxacro demo01_helloworld.urdf.xacro\n#或者\nros2 run xacro xacro demo01_helloworld.urdf.xacro\n",[73,12606,12607,12614,12621,12626],{"__ignoreMap":21},[86,12608,12609,12611],{"class":88,"line":89},[86,12610,8117],{"class":738},[86,12612,12613],{"class":96}," src\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002F\n",[86,12615,12616,12618],{"class":88,"line":646},[86,12617,12123],{"class":92},[86,12619,12620],{"class":96}," demo01_helloworld.urdf.xacro\n",[86,12622,12623],{"class":88,"line":802},[86,12624,12625],{"class":1005},"#或者\n",[86,12627,12628,12630,12632,12635,12637],{"class":88,"line":814},[86,12629,726],{"class":92},[86,12631,2423],{"class":96},[86,12633,12634],{"class":96}," xacro",[86,12636,12634],{"class":96},[86,12638,12620],{"class":96},[16,12640,12641],{},"终端将会输出如下内容（以下内容是纯urdf）：",[78,12643,12645],{"className":777,"code":12644,"language":779,"meta":21,"style":21},"\u003C?xml version=\"1.0\" ?>\n\n\u003Crobot name=\"mycar\">\n  \u003Clink name=\"left_front_wheel\">\n    \u003Cvisual>\n      \u003Cgeometry>\n        \u003Ccylinder length=\"0.02\" radius=\"0.025\"\u002F>\n      \u003C\u002Fgeometry>\n      \u003Corigin rpy=\"1.57079635 0 0\" xyz=\"0 0 0\"\u002F>\n      \u003Cmaterial name=\"wheel_color\">\n        \u003Ccolor rgba=\"0 0 0 0.3\"\u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n  \u003Clink name=\"left_back_wheel\">\n    \u003Cvisual>\n      \u003Cgeometry>\n        \u003Ccylinder length=\"0.02\" radius=\"0.025\"\u002F>\n      \u003C\u002Fgeometry>\n      \u003Corigin rpy=\"1.57079635 0 0\" xyz=\"0 0 0\"\u002F>\n      \u003Cmaterial name=\"wheel_color\">\n        \u003Ccolor rgba=\"0 0 0 0.3\"\u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n  \u003Clink name=\"right_front_wheel\">\n    \u003Cvisual>\n      \u003Cgeometry>\n        \u003Ccylinder length=\"0.02\" radius=\"0.025\"\u002F>\n      \u003C\u002Fgeometry>\n      \u003Corigin rpy=\"1.57079635 0 0\" xyz=\"0 0 0\"\u002F>\n      \u003Cmaterial name=\"wheel_color\">\n        \u003Ccolor rgba=\"0 0 0 0.3\"\u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n  \u003Clink name=\"right_back_wheel\">\n    \u003Cvisual>\n      \u003Cgeometry>\n        \u003Ccylinder length=\"0.02\" radius=\"0.025\"\u002F>\n      \u003C\u002Fgeometry>\n      \u003Corigin rpy=\"1.57079635 0 0\" xyz=\"0 0 0\"\u002F>\n      \u003Cmaterial name=\"wheel_color\">\n        \u003Ccolor rgba=\"0 0 0 0.3\"\u002F>\n      \u003C\u002Fmaterial>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n\u003C\u002Frobot>\n",[73,12646,12647,12662,12666,12680,12695,12703,12711,12731,12739,12760,12774,12788,12796,12804,12812,12827,12835,12843,12863,12871,12891,12905,12919,12927,12935,12943,12958,12966,12974,12994,13002,13022,13036,13050,13058,13066,13074,13089,13097,13105,13125,13133,13153,13167,13181,13189,13197,13205],{"__ignoreMap":21},[86,12648,12649,12651,12653,12655,12657,12659],{"class":88,"line":89},[86,12650,8562],{"class":635},[86,12652,779],{"class":795},[86,12654,8567],{"class":92},[86,12656,849],{"class":635},[86,12658,8572],{"class":96},[86,12660,12661],{"class":635}," ?>\n",[86,12663,12664],{"class":88,"line":646},[86,12665,787],{"emptyLinePlaceholder":786},[86,12667,12668,12670,12672,12674,12676,12678],{"class":88,"line":802},[86,12669,1377],{"class":635},[86,12671,796],{"class":795},[86,12673,1661],{"class":92},[86,12675,849],{"class":635},[86,12677,12249],{"class":96},[86,12679,823],{"class":635},[86,12681,12682,12684,12686,12688,12690,12693],{"class":88,"line":814},[86,12683,3823],{"class":635},[86,12685,808],{"class":795},[86,12687,1661],{"class":92},[86,12689,849],{"class":635},[86,12691,12692],{"class":96},"\"left_front_wheel\"",[86,12694,823],{"class":635},[86,12696,12697,12699,12701],{"class":88,"line":826},[86,12698,1678],{"class":635},[86,12700,820],{"class":795},[86,12702,823],{"class":635},[86,12704,12705,12707,12709],{"class":88,"line":837},[86,12706,1698],{"class":635},[86,12708,832],{"class":795},[86,12710,823],{"class":635},[86,12712,12713,12715,12717,12719,12721,12723,12725,12727,12729],{"class":88,"line":858},[86,12714,1711],{"class":635},[86,12716,3609],{"class":795},[86,12718,6733],{"class":92},[86,12720,849],{"class":635},[86,12722,6738],{"class":96},[86,12724,5573],{"class":92},[86,12726,849],{"class":635},[86,12728,6730],{"class":96},[86,12730,855],{"class":635},[86,12732,12733,12735,12737],{"class":88,"line":868},[86,12734,1749],{"class":635},[86,12736,832],{"class":795},[86,12738,823],{"class":635},[86,12740,12741,12743,12745,12747,12749,12752,12754,12756,12758],{"class":88,"line":878},[86,12742,1698],{"class":635},[86,12744,3641],{"class":795},[86,12746,3946],{"class":92},[86,12748,849],{"class":635},[86,12750,12751],{"class":96},"\"1.57079635 0 0\"",[86,12753,3938],{"class":92},[86,12755,849],{"class":635},[86,12757,3943],{"class":96},[86,12759,855],{"class":635},[86,12761,12762,12764,12766,12768,12770,12772],{"class":88,"line":888},[86,12763,1698],{"class":635},[86,12765,3663],{"class":795},[86,12767,1661],{"class":92},[86,12769,849],{"class":635},[86,12771,12464],{"class":96},[86,12773,823],{"class":635},[86,12775,12776,12778,12780,12782,12784,12786],{"class":88,"line":1020},[86,12777,1711],{"class":635},[86,12779,3678],{"class":795},[86,12781,3843],{"class":92},[86,12783,849],{"class":635},[86,12785,12479],{"class":96},[86,12787,855],{"class":635},[86,12789,12790,12792,12794],{"class":88,"line":1025},[86,12791,1749],{"class":635},[86,12793,3663],{"class":795},[86,12795,823],{"class":635},[86,12797,12798,12800,12802],{"class":88,"line":1042},[86,12799,1758],{"class":635},[86,12801,820],{"class":795},[86,12803,823],{"class":635},[86,12805,12806,12808,12810],{"class":88,"line":1064},[86,12807,1767],{"class":635},[86,12809,808],{"class":795},[86,12811,823],{"class":635},[86,12813,12814,12816,12818,12820,12822,12825],{"class":88,"line":1084},[86,12815,3823],{"class":635},[86,12817,808],{"class":795},[86,12819,1661],{"class":92},[86,12821,849],{"class":635},[86,12823,12824],{"class":96},"\"left_back_wheel\"",[86,12826,823],{"class":635},[86,12828,12829,12831,12833],{"class":88,"line":1115},[86,12830,1678],{"class":635},[86,12832,820],{"class":795},[86,12834,823],{"class":635},[86,12836,12837,12839,12841],{"class":88,"line":1120},[86,12838,1698],{"class":635},[86,12840,832],{"class":795},[86,12842,823],{"class":635},[86,12844,12845,12847,12849,12851,12853,12855,12857,12859,12861],{"class":88,"line":1126},[86,12846,1711],{"class":635},[86,12848,3609],{"class":795},[86,12850,6733],{"class":92},[86,12852,849],{"class":635},[86,12854,6738],{"class":96},[86,12856,5573],{"class":92},[86,12858,849],{"class":635},[86,12860,6730],{"class":96},[86,12862,855],{"class":635},[86,12864,12865,12867,12869],{"class":88,"line":1131},[86,12866,1749],{"class":635},[86,12868,832],{"class":795},[86,12870,823],{"class":635},[86,12872,12873,12875,12877,12879,12881,12883,12885,12887,12889],{"class":88,"line":1137},[86,12874,1698],{"class":635},[86,12876,3641],{"class":795},[86,12878,3946],{"class":92},[86,12880,849],{"class":635},[86,12882,12751],{"class":96},[86,12884,3938],{"class":92},[86,12886,849],{"class":635},[86,12888,3943],{"class":96},[86,12890,855],{"class":635},[86,12892,12893,12895,12897,12899,12901,12903],{"class":88,"line":1159},[86,12894,1698],{"class":635},[86,12896,3663],{"class":795},[86,12898,1661],{"class":92},[86,12900,849],{"class":635},[86,12902,12464],{"class":96},[86,12904,823],{"class":635},[86,12906,12907,12909,12911,12913,12915,12917],{"class":88,"line":1170},[86,12908,1711],{"class":635},[86,12910,3678],{"class":795},[86,12912,3843],{"class":92},[86,12914,849],{"class":635},[86,12916,12479],{"class":96},[86,12918,855],{"class":635},[86,12920,12921,12923,12925],{"class":88,"line":1184},[86,12922,1749],{"class":635},[86,12924,3663],{"class":795},[86,12926,823],{"class":635},[86,12928,12929,12931,12933],{"class":88,"line":1196},[86,12930,1758],{"class":635},[86,12932,820],{"class":795},[86,12934,823],{"class":635},[86,12936,12937,12939,12941],{"class":88,"line":1213},[86,12938,1767],{"class":635},[86,12940,808],{"class":795},[86,12942,823],{"class":635},[86,12944,12945,12947,12949,12951,12953,12956],{"class":88,"line":1219},[86,12946,3823],{"class":635},[86,12948,808],{"class":795},[86,12950,1661],{"class":92},[86,12952,849],{"class":635},[86,12954,12955],{"class":96},"\"right_front_wheel\"",[86,12957,823],{"class":635},[86,12959,12960,12962,12964],{"class":88,"line":1224},[86,12961,1678],{"class":635},[86,12963,820],{"class":795},[86,12965,823],{"class":635},[86,12967,12968,12970,12972],{"class":88,"line":1230},[86,12969,1698],{"class":635},[86,12971,832],{"class":795},[86,12973,823],{"class":635},[86,12975,12976,12978,12980,12982,12984,12986,12988,12990,12992],{"class":88,"line":1240},[86,12977,1711],{"class":635},[86,12979,3609],{"class":795},[86,12981,6733],{"class":92},[86,12983,849],{"class":635},[86,12985,6738],{"class":96},[86,12987,5573],{"class":92},[86,12989,849],{"class":635},[86,12991,6730],{"class":96},[86,12993,855],{"class":635},[86,12995,12996,12998,13000],{"class":88,"line":1252},[86,12997,1749],{"class":635},[86,12999,832],{"class":795},[86,13001,823],{"class":635},[86,13003,13004,13006,13008,13010,13012,13014,13016,13018,13020],{"class":88,"line":1262},[86,13005,1698],{"class":635},[86,13007,3641],{"class":795},[86,13009,3946],{"class":92},[86,13011,849],{"class":635},[86,13013,12751],{"class":96},[86,13015,3938],{"class":92},[86,13017,849],{"class":635},[86,13019,3943],{"class":96},[86,13021,855],{"class":635},[86,13023,13024,13026,13028,13030,13032,13034],{"class":88,"line":1267},[86,13025,1698],{"class":635},[86,13027,3663],{"class":795},[86,13029,1661],{"class":92},[86,13031,849],{"class":635},[86,13033,12464],{"class":96},[86,13035,823],{"class":635},[86,13037,13038,13040,13042,13044,13046,13048],{"class":88,"line":1272},[86,13039,1711],{"class":635},[86,13041,3678],{"class":795},[86,13043,3843],{"class":92},[86,13045,849],{"class":635},[86,13047,12479],{"class":96},[86,13049,855],{"class":635},[86,13051,13052,13054,13056],{"class":88,"line":1278},[86,13053,1749],{"class":635},[86,13055,3663],{"class":795},[86,13057,823],{"class":635},[86,13059,13060,13062,13064],{"class":88,"line":1288},[86,13061,1758],{"class":635},[86,13063,820],{"class":795},[86,13065,823],{"class":635},[86,13067,13068,13070,13072],{"class":88,"line":1300},[86,13069,1767],{"class":635},[86,13071,808],{"class":795},[86,13073,823],{"class":635},[86,13075,13076,13078,13080,13082,13084,13087],{"class":88,"line":1310},[86,13077,3823],{"class":635},[86,13079,808],{"class":795},[86,13081,1661],{"class":92},[86,13083,849],{"class":635},[86,13085,13086],{"class":96},"\"right_back_wheel\"",[86,13088,823],{"class":635},[86,13090,13091,13093,13095],{"class":88,"line":1315},[86,13092,1678],{"class":635},[86,13094,820],{"class":795},[86,13096,823],{"class":635},[86,13098,13099,13101,13103],{"class":88,"line":1321},[86,13100,1698],{"class":635},[86,13102,832],{"class":795},[86,13104,823],{"class":635},[86,13106,13107,13109,13111,13113,13115,13117,13119,13121,13123],{"class":88,"line":1326},[86,13108,1711],{"class":635},[86,13110,3609],{"class":795},[86,13112,6733],{"class":92},[86,13114,849],{"class":635},[86,13116,6738],{"class":96},[86,13118,5573],{"class":92},[86,13120,849],{"class":635},[86,13122,6730],{"class":96},[86,13124,855],{"class":635},[86,13126,13127,13129,13131],{"class":88,"line":1335},[86,13128,1749],{"class":635},[86,13130,832],{"class":795},[86,13132,823],{"class":635},[86,13134,13135,13137,13139,13141,13143,13145,13147,13149,13151],{"class":88,"line":1341},[86,13136,1698],{"class":635},[86,13138,3641],{"class":795},[86,13140,3946],{"class":92},[86,13142,849],{"class":635},[86,13144,12751],{"class":96},[86,13146,3938],{"class":92},[86,13148,849],{"class":635},[86,13150,3943],{"class":96},[86,13152,855],{"class":635},[86,13154,13155,13157,13159,13161,13163,13165],{"class":88,"line":1347},[86,13156,1698],{"class":635},[86,13158,3663],{"class":795},[86,13160,1661],{"class":92},[86,13162,849],{"class":635},[86,13164,12464],{"class":96},[86,13166,823],{"class":635},[86,13168,13169,13171,13173,13175,13177,13179],{"class":88,"line":1353},[86,13170,1711],{"class":635},[86,13172,3678],{"class":795},[86,13174,3843],{"class":92},[86,13176,849],{"class":635},[86,13178,12479],{"class":96},[86,13180,855],{"class":635},[86,13182,13183,13185,13187],{"class":88,"line":1359},[86,13184,1749],{"class":635},[86,13186,3663],{"class":795},[86,13188,823],{"class":635},[86,13190,13191,13193,13195],{"class":88,"line":2244},[86,13192,1758],{"class":635},[86,13194,820],{"class":795},[86,13196,823],{"class":635},[86,13198,13199,13201,13203],{"class":88,"line":2249},[86,13200,1767],{"class":635},[86,13202,808],{"class":795},[86,13204,823],{"class":635},[86,13206,13207,13209,13211],{"class":88,"line":2259},[86,13208,3991],{"class":635},[86,13210,796],{"class":795},[86,13212,823],{"class":635},[16,13214,13215],{},"显然的，通过xacro我们方便的实现了代码复用。",[16,13217,13218],{},[19,13219],{"alt":21,"src":13220},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1610.webp",[3549,13222,13223],{"id":13223},"语法",[78,13225,13230],{"className":13226,"code":13228,"language":13229},[13227],"language-text","1.  简介\n\n![](https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1611.webp)\n\n  xacro 提供了可编程接口，类似于计算机语言，包括变量声明调用、函数声明与调用等语法实现。在使用 xacro 生成 urdf 时，根标签`robot`中**必须**包含命名空间声明:`xmlns:xacro=\"``http:\u002F\u002Fwiki.ros.org\u002Fxacro``\"`。\n\n   **变量**\n\n  变量用于封装 URDF 中的一些字段，比如: PAI 值，小车的尺寸，轮子半径 ....，变量的基本使用语法包括变量定义、变量调用、变量运算等。\n\n  1.1变量定义\n\n  语法格式：\n\n```xml\n\u003Cxacro:property name=\"变量名\" value=\"变量值\" \u002F>\n```\n\n  示例：\n\n```xml\n\u003Cxacro:property name=\"PI\" value=\"3.1416\"\u002F>\n\u003Cxacro:property name=\"wheel_radius\" value=\"0.025\"\u002F>\n\u003Cxacro:property name=\"wheel_length\" value=\"0.02\"\u002F>\n```\n\n  1.2变量调用\n\n  语法格式：\n\n```xml\n${变量名}\n```\n\n  示例：\n\n```xml\n\u003Cgeometry>\n    \u003Ccylinder radius=\"${wheel_radius}\" length=\"${wheel_length}\" \u002F>\n\u003C\u002Fgeometry>\n```\n\n  1.3变量运算\n\n  语法格式：\n\n```xml\n${数学表达式}\n```\n\n  示例：\n\n```xml\n\u003Corigin xyz=\"0 0 0\" rpy=\"${PI \u002F 2} 0 0\" \u002F>\n```\n\n```xml\n\u003Crobot xmlns:xacro=\"http:\u002F\u002Fwww.ros.org\u002Fwiki\u002Fxacro\" name=\"demo2_pro\">\n\n\u003Cxacro:property name=\"num1\" value=\"10\"\u002F>\n\u003Cxacro:property name=\"num2\" value=\"20\"\u002F>\n\n\u003Ccar length=\"${num1}\" width=\"${num2}\"\u002F>\n\n\u003Csum value=\"${num1 + num2}\"\u002F>\n\u003C\u002Frobot>\n```\n\n![](https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1612.webp)\n\n   **宏**\n\n  类似于函数实现，提高代码复用率，优化代码结构，提高安全性。宏的基本使用语法包括宏的定义与调用。\n\n  2.1宏定义\n\n  语法格式：\n\n```xml\n\u003Cxacro:macro name=\"宏名称\" params=\"参数列表(多参数之间使用空格分隔)\">\n    .....\n    参数调用格式: ${参数名}\n\u003C\u002Fxacro:macro>\n```\n\n  示例：\n\n```xml\n\u003Cxacro:macro name=\"wheel_func\" params=\"wheel_name\" >\n    \u003Clink name=\"${wheel_name}_wheel\">\n        \u003Cvisual>\n            \u003Cgeometry>\n                \u003Ccylinder radius=\"${wheel_radius}\" length=\"${wheel_length}\" \u002F>\n            \u003C\u002Fgeometry>\n\n            \u003Corigin xyz=\"0 0 0\" rpy=\"${PI \u002F 2} 0 0\" \u002F>\n\n            \u003Cmaterial name=\"wheel_color\">\n                \u003Ccolor rgba=\"0 0 0 0.3\" \u002F>\n            \u003C\u002Fmaterial>\n        \u003C\u002Fvisual>\n    \u003C\u002Flink>\n\u003C\u002Fxacro:macro>\n```\n\n  2.2宏调用\n\n  语法格式：\n\n```xml\n\u003Cxacro:宏名称 参数1=xxx 参数2=xxx\u002F>\n```\n\n  示例：\n\n```xml\n\u003Cxacro:wheel_func wheel_name=\"left_front\"\u002F>\n\u003Cxacro:wheel_func wheel_name=\"left_back\"\u002F>\n\u003Cxacro:wheel_func wheel_name=\"right_front\"\u002F>\n\u003Cxacro:wheel_func wheel_name=\"right_back\"\u002F>\n```\n\n```xml\n\u003Crobot xmlns:xacro=\"http:\u002F\u002Fwww.ros.org\u002Fwiki\u002Fxacro\" name=\"demo3_func\">\n\n    \u003Cxacro:macro name=\"get_sum\" params=\"num1 num2\">\n        \u003Csum value=\"${num1 + num2}\"\u002F>\n    \u003C\u002Fxacro:macro>\n\n    \u003Cxacro:get_sum num1=\"20\" num2=\"30\"\u002F>\n    \u003Cxacro:get_sum num1=\"70\" num2=\"30\"\u002F>\n\n\u003C\u002Frobot>\n```\n\n![](https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1613.webp)\n\n   **文件**\n","text",[73,13231,13228],{"__ignoreMap":21},[16,13233,13234],{},"机器人由多部件组成，不同部件可能封装为单独的 xacro 文件，最后再将不同的文件集成，组合为完整机器人，可以使用文件包含实现。",[16,13236,13237],{},"语法格式：",[78,13239,13241],{"className":777,"code":13240,"language":779,"meta":21,"style":21},"\u003Cxacro:include filename=\"其他xacro文件\" \u002F>\n",[73,13242,13243],{"__ignoreMap":21},[86,13244,13245,13247,13250,13253,13255,13258],{"class":88,"line":89},[86,13246,1377],{"class":635},[86,13248,13249],{"class":795},"xacro:include",[86,13251,13252],{"class":92}," filename",[86,13254,849],{"class":635},[86,13256,13257],{"class":96},"\"其他xacro文件\"",[86,13259,3851],{"class":635},[16,13261,13262],{},"示例：",[78,13264,13266],{"className":777,"code":13265,"language":779,"meta":21,"style":21},"\u003Crobot name=\"car\" xmlns:xacro=\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\">\n      \u003Cxacro:include filename=\"car_base.xacro\" \u002F>\n      \u003Cxacro:include filename=\"car_camera.xacro\" \u002F>\n      \u003Cxacro:include filename=\"car_laser.xacro\" \u002F>\n\u003C\u002Frobot>\n",[73,13267,13268,13289,13304,13319,13334],{"__ignoreMap":21},[86,13269,13270,13272,13274,13276,13278,13281,13283,13285,13287],{"class":88,"line":89},[86,13271,1377],{"class":635},[86,13273,796],{"class":795},[86,13275,1661],{"class":92},[86,13277,849],{"class":635},[86,13279,13280],{"class":96},"\"car\"",[86,13282,12252],{"class":92},[86,13284,849],{"class":635},[86,13286,12257],{"class":96},[86,13288,823],{"class":635},[86,13290,13291,13293,13295,13297,13299,13302],{"class":88,"line":646},[86,13292,1698],{"class":635},[86,13294,13249],{"class":795},[86,13296,13252],{"class":92},[86,13298,849],{"class":635},[86,13300,13301],{"class":96},"\"car_base.xacro\"",[86,13303,3851],{"class":635},[86,13305,13306,13308,13310,13312,13314,13317],{"class":88,"line":802},[86,13307,1698],{"class":635},[86,13309,13249],{"class":795},[86,13311,13252],{"class":92},[86,13313,849],{"class":635},[86,13315,13316],{"class":96},"\"car_camera.xacro\"",[86,13318,3851],{"class":635},[86,13320,13321,13323,13325,13327,13329,13332],{"class":88,"line":814},[86,13322,1698],{"class":635},[86,13324,13249],{"class":795},[86,13326,13252],{"class":92},[86,13328,849],{"class":635},[86,13330,13331],{"class":96},"\"car_laser.xacro\"",[86,13333,3851],{"class":635},[86,13335,13336,13338,13340],{"class":88,"line":826},[86,13337,3991],{"class":635},[86,13339,796],{"class":795},[86,13341,823],{"class":635},[78,13343,13345],{"className":777,"code":13344,"language":779,"meta":21,"style":21},"\u003Crobot xmlns:xacro=\"http:\u002F\u002Fwww.ros.org\u002Fwiki\u002Fxacro\" name=\"demo4_include\">\n    \u003Cxacro:include filename=\"demo02_base_pro.urdf.xacro\"\u002F>\n    \u003Cxacro:include filename=\"demo03_base_func.urdf.xacro\"\u002F>\n\u003C\u002Frobot>\n",[73,13346,13347,13369,13384,13399],{"__ignoreMap":21},[86,13348,13349,13351,13353,13355,13357,13360,13362,13364,13367],{"class":88,"line":89},[86,13350,1377],{"class":635},[86,13352,796],{"class":795},[86,13354,12252],{"class":92},[86,13356,849],{"class":635},[86,13358,13359],{"class":96},"\"http:\u002F\u002Fwww.ros.org\u002Fwiki\u002Fxacro\"",[86,13361,1661],{"class":92},[86,13363,849],{"class":635},[86,13365,13366],{"class":96},"\"demo4_include\"",[86,13368,823],{"class":635},[86,13370,13371,13373,13375,13377,13379,13382],{"class":88,"line":646},[86,13372,1678],{"class":635},[86,13374,13249],{"class":795},[86,13376,13252],{"class":92},[86,13378,849],{"class":635},[86,13380,13381],{"class":96},"\"demo02_base_pro.urdf.xacro\"",[86,13383,855],{"class":635},[86,13385,13386,13388,13390,13392,13394,13397],{"class":88,"line":802},[86,13387,1678],{"class":635},[86,13389,13249],{"class":795},[86,13391,13252],{"class":92},[86,13393,849],{"class":635},[86,13395,13396],{"class":96},"\"demo03_base_func.urdf.xacro\"",[86,13398,855],{"class":635},[86,13400,13401,13403,13405],{"class":88,"line":814},[86,13402,3991],{"class":635},[86,13404,796],{"class":795},[86,13406,823],{"class":635},[16,13408,13409],{},[19,13410],{"alt":21,"src":13411},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1614.webp",[16,13413,13414],{},[4643,13415,13416],{},"但不建议这样，建议父级xacro和子级xacro使用同样的name。",[655,13418,4767],{"id":13419},"练习-2",[3549,13421,13422],{"id":13422},"框架",[16,13424,12218],{},[16,13426,13427,13428,13430],{},"使用xacro创建一个四轮机器人模型，该模型底盘可以参考 ",[107,13429,12224],{}," 中的实现，并且在底盘之上添加了相机与激光雷达。相机与激光雷达的尺寸参数、安装位置可自定义。",[16,13432,13433],{},[19,13434],{"alt":21,"src":13435},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1615.webp",[16,13437,13438],{},"2.实现分析",[16,13440,13441],{},"需求中的机器人模型是由底盘、摄像头和雷达三部分组成的，那么可以将每一部分都封装进一个xacro文件，最后再通过xacro文件包含组织成一个完整的机器人模型。",[16,13443,13444],{},"3.实现",[16,13446,13447],{},"功能包cpp06_urdf的urdf\u002Fxacro目录下，新建多个xacro文件，分别为：",[165,13449,13450,13453,13456,13459],{},[144,13451,13452],{},"car.urdf.xacro：用于包含不同机器人部件对应的xacro文件；",[144,13454,13455],{},"car_base.urdf.xacro：描述机器人底盘的xacro文件；",[144,13457,13458],{},"car_camera.urdf.xacro：描述摄像头的xacro文件；",[144,13460,13461],{},"car_laser.urdf.xacro：描述雷达的xacro文件。",[16,13463,13464],{},"编辑car.urdf.xacro文件，输入如下内容：",[78,13466,13468],{"className":777,"code":13467,"language":779,"meta":21,"style":21},"\u003Crobot name=\"car\" xmlns:xacro=\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\">\n    \u003Cxacro:include filename=\"car_base.urdf.xacro\"\u002F>\n    \u003Cxacro:include filename=\"car_camera.urdf.xacro\"\u002F>\n    \u003Cxacro:include filename=\"car_laser.urdf.xacro\"\u002F>\n\u003C\u002Frobot>\n",[73,13469,13470,13490,13505,13520,13535],{"__ignoreMap":21},[86,13471,13472,13474,13476,13478,13480,13482,13484,13486,13488],{"class":88,"line":89},[86,13473,1377],{"class":635},[86,13475,796],{"class":795},[86,13477,1661],{"class":92},[86,13479,849],{"class":635},[86,13481,13280],{"class":96},[86,13483,12252],{"class":92},[86,13485,849],{"class":635},[86,13487,12257],{"class":96},[86,13489,823],{"class":635},[86,13491,13492,13494,13496,13498,13500,13503],{"class":88,"line":646},[86,13493,1678],{"class":635},[86,13495,13249],{"class":795},[86,13497,13252],{"class":92},[86,13499,849],{"class":635},[86,13501,13502],{"class":96},"\"car_base.urdf.xacro\"",[86,13504,855],{"class":635},[86,13506,13507,13509,13511,13513,13515,13518],{"class":88,"line":802},[86,13508,1678],{"class":635},[86,13510,13249],{"class":795},[86,13512,13252],{"class":92},[86,13514,849],{"class":635},[86,13516,13517],{"class":96},"\"car_camera.urdf.xacro\"",[86,13519,855],{"class":635},[86,13521,13522,13524,13526,13528,13530,13533],{"class":88,"line":814},[86,13523,1678],{"class":635},[86,13525,13249],{"class":795},[86,13527,13252],{"class":92},[86,13529,849],{"class":635},[86,13531,13532],{"class":96},"\"car_laser.urdf.xacro\"",[86,13534,855],{"class":635},[86,13536,13537,13539,13541],{"class":88,"line":826},[86,13538,3991],{"class":635},[86,13540,796],{"class":795},[86,13542,823],{"class":635},[3549,13544,13545],{"id":13545},"车体",[16,13547,13548],{},"编辑car_base.urdf.xacro文件，输入如下内容：",[78,13550,13552],{"className":777,"code":13551,"language":779,"meta":21,"style":21},"\u003Crobot xmlns:xacro=\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\">\n\n    \u003Cxacro:property name=\"PI\" value=\"3.1416\"\u002F>\n\n    \u003Cxacro:property name=\"base_link_x\" value=\"0.2\"\u002F>\n    \u003Cxacro:property name=\"base_link_y\" value=\"0.12\"\u002F>\n    \u003Cxacro:property name=\"base_link_z\" value=\"0.07\"\u002F>\n\n    \u003Cxacro:property name=\"distance\" value=\"0.015\"\u002F>\n\n    \u003Cxacro:property name=\"wheel_radius\" value=\"0.025\"\u002F>\n    \u003Cxacro:property name=\"wheel_length\" value=\"0.02\"\u002F>\n\n    \u003Cmaterial name=\"yellow\">\n        \u003Ccolor rgba=\"0.7 0.7 0 0.8\" \u002F>\n    \u003C\u002Fmaterial>\n    \u003Cmaterial name=\"red\">\n        \u003Ccolor rgba=\"0.8 0.1 0.1 0.8\" \u002F>\n    \u003C\u002Fmaterial>\n    \u003Cmaterial name=\"gray\">\n        \u003Ccolor rgba=\"0.2 0.2 0.2 0.95\" \u002F>\n      \u003C\u002Fmaterial>\n\n    \u003Clink name=\"base_footprint\">\n        \u003Cvisual>\n            \u003Cgeometry>\n                \u003Csphere radius=\"0.001\"\u002F>\n            \u003C\u002Fgeometry>\n        \u003C\u002Fvisual>\n    \u003C\u002Flink>\n\n    \u003Clink name=\"base_link\">\n        \u003Cvisual>\n\n            \u003Cgeometry>\n                \u003Cbox size=\"${base_link_x} ${base_link_y} ${base_link_z}\" \u002F>\n            \u003C\u002Fgeometry>\n            \u003Corigin xyz=\"0 0 0\" rpy=\"0 0 0\" \u002F>\n            \u003Cmaterial name=\"yellow\"\u002F>\n        \u003C\u002Fvisual>\n    \u003C\u002Flink>\n    \u003Cjoint name=\"baselink2basefootprint\" type=\"fixed\">\n        \u003Cparent link=\"base_footprint\"\u002F>\n        \u003Cchild link=\"base_link\"\u002F>\n        \u003Corigin xyz=\"0.0 0.0 ${distance + base_link_z \u002F 2}\"\u002F>\n    \u003C\u002Fjoint>\n\n    \u003Cxacro:macro name=\"wheel_func\" params=\"wheel_name is_front is_left\" >\n        \u003Clink name=\"${wheel_name}_wheel\">\n            \u003Cvisual>\n                \u003Cgeometry>\n                    \u003Ccylinder radius=\"${wheel_radius}\" length=\"${wheel_length}\" \u002F>\n                \u003C\u002Fgeometry>\n                \u003Corigin xyz=\"0 0 0\" rpy=\"${PI \u002F 2} 0 0\" \u002F>\n                \u003Cmaterial name=\"gray\"\u002F>\n            \u003C\u002Fvisual>\n        \u003C\u002Flink>\n        \u003Cjoint name=\"${wheel_name}2baselink\" type=\"continuous\">\n            \u003Cparent link=\"base_link\"  \u002F>\n            \u003Cchild link=\"${wheel_name}_wheel\" \u002F>\n            \u003Corigin xyz=\"${(base_link_x \u002F 2 - wheel_radius) * is_front} ${base_link_y \u002F 2 * is_left} ${(base_link_z \u002F 2 + distance - wheel_radius) * -1}\" rpy=\"0 0 0\" \u002F>\n            \u003Caxis xyz=\"0 1 0\" \u002F>\n        \u003C\u002Fjoint>\n    \u003C\u002Fxacro:macro>\n\n    \u003Cxacro:wheel_func wheel_name=\"left_front\" is_front=\"1\" is_left=\"1\" \u002F>\n    \u003Cxacro:wheel_func wheel_name=\"left_back\" is_front=\"-1\" is_left=\"1\" \u002F>\n    \u003Cxacro:wheel_func wheel_name=\"right_front\" is_front=\"1\" is_left=\"-1\" \u002F>\n    \u003Cxacro:wheel_func wheel_name=\"right_back\" is_front=\"-1\" is_left=\"-1\" \u002F>\n\u003C\u002Frobot>\n",[73,13553,13554,13568,13572,13593,13597,13619,13641,13663,13667,13689,13693,13713,13733,13737,13751,13765,13773,13787,13801,13809,13823,13838,13846,13850,13864,13872,13880,13894,13902,13910,13918,13922,13936,13944,13948,13956,13971,13979,13999,14013,14021,14029,14049,14063,14077,14092,14100,14104,14125,14139,14147,14155,14175,14183,14203,14217,14225,14233,14254,14269,14283,14304,14318,14326,14334,14338,14366,14393,14419,14445],{"__ignoreMap":21},[86,13555,13556,13558,13560,13562,13564,13566],{"class":88,"line":89},[86,13557,1377],{"class":635},[86,13559,796],{"class":795},[86,13561,12252],{"class":92},[86,13563,849],{"class":635},[86,13565,12257],{"class":96},[86,13567,823],{"class":635},[86,13569,13570],{"class":88,"line":646},[86,13571,787],{"emptyLinePlaceholder":786},[86,13573,13574,13576,13578,13580,13582,13584,13586,13588,13591],{"class":88,"line":802},[86,13575,1678],{"class":635},[86,13577,12270],{"class":795},[86,13579,1661],{"class":92},[86,13581,849],{"class":635},[86,13583,12320],{"class":96},[86,13585,12280],{"class":92},[86,13587,849],{"class":635},[86,13589,13590],{"class":96},"\"3.1416\"",[86,13592,855],{"class":635},[86,13594,13595],{"class":88,"line":814},[86,13596,787],{"emptyLinePlaceholder":786},[86,13598,13599,13601,13603,13605,13607,13610,13612,13614,13617],{"class":88,"line":826},[86,13600,1678],{"class":635},[86,13602,12270],{"class":795},[86,13604,1661],{"class":92},[86,13606,849],{"class":635},[86,13608,13609],{"class":96},"\"base_link_x\"",[86,13611,12280],{"class":92},[86,13613,849],{"class":635},[86,13615,13616],{"class":96},"\"0.2\"",[86,13618,855],{"class":635},[86,13620,13621,13623,13625,13627,13629,13632,13634,13636,13639],{"class":88,"line":837},[86,13622,1678],{"class":635},[86,13624,12270],{"class":795},[86,13626,1661],{"class":92},[86,13628,849],{"class":635},[86,13630,13631],{"class":96},"\"base_link_y\"",[86,13633,12280],{"class":92},[86,13635,849],{"class":635},[86,13637,13638],{"class":96},"\"0.12\"",[86,13640,855],{"class":635},[86,13642,13643,13645,13647,13649,13651,13654,13656,13658,13661],{"class":88,"line":858},[86,13644,1678],{"class":635},[86,13646,12270],{"class":795},[86,13648,1661],{"class":92},[86,13650,849],{"class":635},[86,13652,13653],{"class":96},"\"base_link_z\"",[86,13655,12280],{"class":92},[86,13657,849],{"class":635},[86,13659,13660],{"class":96},"\"0.07\"",[86,13662,855],{"class":635},[86,13664,13665],{"class":88,"line":868},[86,13666,787],{"emptyLinePlaceholder":786},[86,13668,13669,13671,13673,13675,13677,13680,13682,13684,13687],{"class":88,"line":878},[86,13670,1678],{"class":635},[86,13672,12270],{"class":795},[86,13674,1661],{"class":92},[86,13676,849],{"class":635},[86,13678,13679],{"class":96},"\"distance\"",[86,13681,12280],{"class":92},[86,13683,849],{"class":635},[86,13685,13686],{"class":96},"\"0.015\"",[86,13688,855],{"class":635},[86,13690,13691],{"class":88,"line":888},[86,13692,787],{"emptyLinePlaceholder":786},[86,13694,13695,13697,13699,13701,13703,13705,13707,13709,13711],{"class":88,"line":1020},[86,13696,1678],{"class":635},[86,13698,12270],{"class":795},[86,13700,1661],{"class":92},[86,13702,849],{"class":635},[86,13704,12277],{"class":96},[86,13706,12280],{"class":92},[86,13708,849],{"class":635},[86,13710,6730],{"class":96},[86,13712,855],{"class":635},[86,13714,13715,13717,13719,13721,13723,13725,13727,13729,13731],{"class":88,"line":1025},[86,13716,1678],{"class":635},[86,13718,12270],{"class":795},[86,13720,1661],{"class":92},[86,13722,849],{"class":635},[86,13724,12299],{"class":96},[86,13726,12280],{"class":92},[86,13728,849],{"class":635},[86,13730,6738],{"class":96},[86,13732,855],{"class":635},[86,13734,13735],{"class":88,"line":1042},[86,13736,787],{"emptyLinePlaceholder":786},[86,13738,13739,13741,13743,13745,13747,13749],{"class":88,"line":1064},[86,13740,1678],{"class":635},[86,13742,3663],{"class":795},[86,13744,1661],{"class":92},[86,13746,849],{"class":635},[86,13748,3832],{"class":96},[86,13750,823],{"class":635},[86,13752,13753,13755,13757,13759,13761,13763],{"class":88,"line":1084},[86,13754,1711],{"class":635},[86,13756,3678],{"class":795},[86,13758,3843],{"class":92},[86,13760,849],{"class":635},[86,13762,3848],{"class":96},[86,13764,3851],{"class":635},[86,13766,13767,13769,13771],{"class":88,"line":1115},[86,13768,1758],{"class":635},[86,13770,3663],{"class":795},[86,13772,823],{"class":635},[86,13774,13775,13777,13779,13781,13783,13785],{"class":88,"line":1120},[86,13776,1678],{"class":635},[86,13778,3663],{"class":795},[86,13780,1661],{"class":92},[86,13782,849],{"class":635},[86,13784,5099],{"class":96},[86,13786,823],{"class":635},[86,13788,13789,13791,13793,13795,13797,13799],{"class":88,"line":1126},[86,13790,1711],{"class":635},[86,13792,3678],{"class":795},[86,13794,3843],{"class":92},[86,13796,849],{"class":635},[86,13798,5114],{"class":96},[86,13800,3851],{"class":635},[86,13802,13803,13805,13807],{"class":88,"line":1131},[86,13804,1758],{"class":635},[86,13806,3663],{"class":795},[86,13808,823],{"class":635},[86,13810,13811,13813,13815,13817,13819,13821],{"class":88,"line":1137},[86,13812,1678],{"class":635},[86,13814,3663],{"class":795},[86,13816,1661],{"class":92},[86,13818,849],{"class":635},[86,13820,6400],{"class":96},[86,13822,823],{"class":635},[86,13824,13825,13827,13829,13831,13833,13836],{"class":88,"line":1159},[86,13826,1711],{"class":635},[86,13828,3678],{"class":795},[86,13830,3843],{"class":92},[86,13832,849],{"class":635},[86,13834,13835],{"class":96},"\"0.2 0.2 0.2 0.95\"",[86,13837,3851],{"class":635},[86,13839,13840,13842,13844],{"class":88,"line":1170},[86,13841,1749],{"class":635},[86,13843,3663],{"class":795},[86,13845,823],{"class":635},[86,13847,13848],{"class":88,"line":1184},[86,13849,787],{"emptyLinePlaceholder":786},[86,13851,13852,13854,13856,13858,13860,13862],{"class":88,"line":1196},[86,13853,1678],{"class":635},[86,13855,808],{"class":795},[86,13857,1661],{"class":92},[86,13859,849],{"class":635},[86,13861,5546],{"class":96},[86,13863,823],{"class":635},[86,13865,13866,13868,13870],{"class":88,"line":1213},[86,13867,1711],{"class":635},[86,13869,820],{"class":795},[86,13871,823],{"class":635},[86,13873,13874,13876,13878],{"class":88,"line":1219},[86,13875,3902],{"class":635},[86,13877,832],{"class":795},[86,13879,823],{"class":635},[86,13881,13882,13884,13886,13888,13890,13892],{"class":88,"line":1224},[86,13883,12386],{"class":635},[86,13885,3617],{"class":795},[86,13887,5573],{"class":92},[86,13889,849],{"class":635},[86,13891,5578],{"class":96},[86,13893,855],{"class":635},[86,13895,13896,13898,13900],{"class":88,"line":1230},[86,13897,12494],{"class":635},[86,13899,832],{"class":795},[86,13901,823],{"class":635},[86,13903,13904,13906,13908],{"class":88,"line":1240},[86,13905,1740],{"class":635},[86,13907,820],{"class":795},[86,13909,823],{"class":635},[86,13911,13912,13914,13916],{"class":88,"line":1252},[86,13913,1758],{"class":635},[86,13915,808],{"class":795},[86,13917,823],{"class":635},[86,13919,13920],{"class":88,"line":1262},[86,13921,787],{"emptyLinePlaceholder":786},[86,13923,13924,13926,13928,13930,13932,13934],{"class":88,"line":1267},[86,13925,1678],{"class":635},[86,13927,808],{"class":795},[86,13929,1661],{"class":92},[86,13931,849],{"class":635},[86,13933,1687],{"class":96},[86,13935,823],{"class":635},[86,13937,13938,13940,13942],{"class":88,"line":1272},[86,13939,1711],{"class":635},[86,13941,820],{"class":795},[86,13943,823],{"class":635},[86,13945,13946],{"class":88,"line":1278},[86,13947,787],{"emptyLinePlaceholder":786},[86,13949,13950,13952,13954],{"class":88,"line":1288},[86,13951,3902],{"class":635},[86,13953,832],{"class":795},[86,13955,823],{"class":635},[86,13957,13958,13960,13962,13964,13966,13969],{"class":88,"line":1300},[86,13959,12386],{"class":635},[86,13961,843],{"class":795},[86,13963,846],{"class":92},[86,13965,849],{"class":635},[86,13967,13968],{"class":96},"\"${base_link_x} ${base_link_y} ${base_link_z}\"",[86,13970,3851],{"class":635},[86,13972,13973,13975,13977],{"class":88,"line":1310},[86,13974,12494],{"class":635},[86,13976,832],{"class":795},[86,13978,823],{"class":635},[86,13980,13981,13983,13985,13987,13989,13991,13993,13995,13997],{"class":88,"line":1315},[86,13982,3902],{"class":635},[86,13984,3641],{"class":795},[86,13986,3938],{"class":92},[86,13988,849],{"class":635},[86,13990,3943],{"class":96},[86,13992,3946],{"class":92},[86,13994,849],{"class":635},[86,13996,3943],{"class":96},[86,13998,3851],{"class":635},[86,14000,14001,14003,14005,14007,14009,14011],{"class":88,"line":1321},[86,14002,3902],{"class":635},[86,14004,3663],{"class":795},[86,14006,1661],{"class":92},[86,14008,849],{"class":635},[86,14010,3832],{"class":96},[86,14012,855],{"class":635},[86,14014,14015,14017,14019],{"class":88,"line":1326},[86,14016,1740],{"class":635},[86,14018,820],{"class":795},[86,14020,823],{"class":635},[86,14022,14023,14025,14027],{"class":88,"line":1335},[86,14024,1758],{"class":635},[86,14026,808],{"class":795},[86,14028,823],{"class":635},[86,14030,14031,14033,14035,14037,14039,14041,14043,14045,14047],{"class":88,"line":1341},[86,14032,1678],{"class":635},[86,14034,4652],{"class":795},[86,14036,1661],{"class":92},[86,14038,849],{"class":635},[86,14040,5622],{"class":96},[86,14042,5358],{"class":92},[86,14044,849],{"class":635},[86,14046,5629],{"class":96},[86,14048,823],{"class":635},[86,14050,14051,14053,14055,14057,14059,14061],{"class":88,"line":1347},[86,14052,1711],{"class":635},[86,14054,4499],{"class":795},[86,14056,5374],{"class":92},[86,14058,849],{"class":635},[86,14060,5546],{"class":96},[86,14062,855],{"class":635},[86,14064,14065,14067,14069,14071,14073,14075],{"class":88,"line":1353},[86,14066,1711],{"class":635},[86,14068,4514],{"class":795},[86,14070,5374],{"class":92},[86,14072,849],{"class":635},[86,14074,1687],{"class":96},[86,14076,855],{"class":635},[86,14078,14079,14081,14083,14085,14087,14090],{"class":88,"line":1359},[86,14080,1711],{"class":635},[86,14082,3641],{"class":795},[86,14084,3938],{"class":92},[86,14086,849],{"class":635},[86,14088,14089],{"class":96},"\"0.0 0.0 ${distance + base_link_z \u002F 2}\"",[86,14091,855],{"class":635},[86,14093,14094,14096,14098],{"class":88,"line":2244},[86,14095,1758],{"class":635},[86,14097,4652],{"class":795},[86,14099,823],{"class":635},[86,14101,14102],{"class":88,"line":2249},[86,14103,787],{"emptyLinePlaceholder":786},[86,14105,14106,14108,14110,14112,14114,14116,14118,14120,14123],{"class":88,"line":2259},[86,14107,1678],{"class":635},[86,14109,12340],{"class":795},[86,14111,1661],{"class":92},[86,14113,849],{"class":635},[86,14115,12347],{"class":96},[86,14117,12350],{"class":92},[86,14119,849],{"class":635},[86,14121,14122],{"class":96},"\"wheel_name is_front is_left\"",[86,14124,12358],{"class":635},[86,14126,14127,14129,14131,14133,14135,14137],{"class":88,"line":2270},[86,14128,1711],{"class":635},[86,14130,808],{"class":795},[86,14132,1661],{"class":92},[86,14134,849],{"class":635},[86,14136,12371],{"class":96},[86,14138,823],{"class":635},[86,14140,14141,14143,14145],{"class":88,"line":2279},[86,14142,3902],{"class":635},[86,14144,820],{"class":795},[86,14146,823],{"class":635},[86,14148,14149,14151,14153],{"class":88,"line":2284},[86,14150,12386],{"class":635},[86,14152,832],{"class":795},[86,14154,823],{"class":635},[86,14156,14157,14159,14161,14163,14165,14167,14169,14171,14173],{"class":88,"line":2289},[86,14158,12395],{"class":635},[86,14160,3609],{"class":795},[86,14162,5573],{"class":92},[86,14164,849],{"class":635},[86,14166,12404],{"class":96},[86,14168,6733],{"class":92},[86,14170,849],{"class":635},[86,14172,12411],{"class":96},[86,14174,3851],{"class":635},[86,14176,14177,14179,14181],{"class":88,"line":2298},[86,14178,12418],{"class":635},[86,14180,832],{"class":795},[86,14182,823],{"class":635},[86,14184,14185,14187,14189,14191,14193,14195,14197,14199,14201],{"class":88,"line":2906},[86,14186,12386],{"class":635},[86,14188,3641],{"class":795},[86,14190,3938],{"class":92},[86,14192,849],{"class":635},[86,14194,3943],{"class":96},[86,14196,3946],{"class":92},[86,14198,849],{"class":635},[86,14200,12445],{"class":96},[86,14202,3851],{"class":635},[86,14204,14205,14207,14209,14211,14213,14215],{"class":88,"line":2917},[86,14206,12386],{"class":635},[86,14208,3663],{"class":795},[86,14210,1661],{"class":92},[86,14212,849],{"class":635},[86,14214,6400],{"class":96},[86,14216,855],{"class":635},[86,14218,14219,14221,14223],{"class":88,"line":2945},[86,14220,12494],{"class":635},[86,14222,820],{"class":795},[86,14224,823],{"class":635},[86,14226,14227,14229,14231],{"class":88,"line":2950},[86,14228,1740],{"class":635},[86,14230,808],{"class":795},[86,14232,823],{"class":635},[86,14234,14235,14237,14239,14241,14243,14246,14248,14250,14252],{"class":88,"line":2955},[86,14236,1711],{"class":635},[86,14238,4652],{"class":795},[86,14240,1661],{"class":92},[86,14242,849],{"class":635},[86,14244,14245],{"class":96},"\"${wheel_name}2baselink\"",[86,14247,5358],{"class":92},[86,14249,849],{"class":635},[86,14251,5363],{"class":96},[86,14253,823],{"class":635},[86,14255,14256,14258,14260,14262,14264,14266],{"class":88,"line":2964},[86,14257,3902],{"class":635},[86,14259,4499],{"class":795},[86,14261,5374],{"class":92},[86,14263,849],{"class":635},[86,14265,1687],{"class":96},[86,14267,14268],{"class":635},"  \u002F>\n",[86,14270,14271,14273,14275,14277,14279,14281],{"class":88,"line":3354},[86,14272,3902],{"class":635},[86,14274,4514],{"class":795},[86,14276,5374],{"class":92},[86,14278,849],{"class":635},[86,14280,12371],{"class":96},[86,14282,3851],{"class":635},[86,14284,14285,14287,14289,14291,14293,14296,14298,14300,14302],{"class":88,"line":3360},[86,14286,3902],{"class":635},[86,14288,3641],{"class":795},[86,14290,3938],{"class":92},[86,14292,849],{"class":635},[86,14294,14295],{"class":96},"\"${(base_link_x \u002F 2 - wheel_radius) * is_front} ${base_link_y \u002F 2 * is_left} ${(base_link_z \u002F 2 + distance - wheel_radius) * -1}\"",[86,14297,3946],{"class":92},[86,14299,849],{"class":635},[86,14301,3943],{"class":96},[86,14303,3851],{"class":635},[86,14305,14306,14308,14310,14312,14314,14316],{"class":88,"line":3365},[86,14307,3902],{"class":635},[86,14309,5426],{"class":795},[86,14311,3938],{"class":92},[86,14313,849],{"class":635},[86,14315,6890],{"class":96},[86,14317,3851],{"class":635},[86,14319,14320,14322,14324],{"class":88,"line":3371},[86,14321,1740],{"class":635},[86,14323,4652],{"class":795},[86,14325,823],{"class":635},[86,14327,14328,14330,14332],{"class":88,"line":3376},[86,14329,1758],{"class":635},[86,14331,12340],{"class":795},[86,14333,823],{"class":635},[86,14335,14336],{"class":88,"line":3382},[86,14337,787],{"emptyLinePlaceholder":786},[86,14339,14340,14342,14344,14346,14348,14350,14353,14355,14357,14360,14362,14364],{"class":88,"line":3391},[86,14341,1678],{"class":635},[86,14343,12521],{"class":795},[86,14345,12524],{"class":92},[86,14347,849],{"class":635},[86,14349,12529],{"class":96},[86,14351,14352],{"class":92}," is_front",[86,14354,849],{"class":635},[86,14356,10303],{"class":96},[86,14358,14359],{"class":92}," is_left",[86,14361,849],{"class":635},[86,14363,10303],{"class":96},[86,14365,3851],{"class":635},[86,14367,14368,14370,14372,14374,14376,14378,14380,14382,14385,14387,14389,14391],{"class":88,"line":3403},[86,14369,1678],{"class":635},[86,14371,12521],{"class":795},[86,14373,12524],{"class":92},[86,14375,849],{"class":635},[86,14377,12544],{"class":96},[86,14379,14352],{"class":92},[86,14381,849],{"class":635},[86,14383,14384],{"class":96},"\"-1\"",[86,14386,14359],{"class":92},[86,14388,849],{"class":635},[86,14390,10303],{"class":96},[86,14392,3851],{"class":635},[86,14394,14395,14397,14399,14401,14403,14405,14407,14409,14411,14413,14415,14417],{"class":88,"line":3413},[86,14396,1678],{"class":635},[86,14398,12521],{"class":795},[86,14400,12524],{"class":92},[86,14402,849],{"class":635},[86,14404,12559],{"class":96},[86,14406,14352],{"class":92},[86,14408,849],{"class":635},[86,14410,10303],{"class":96},[86,14412,14359],{"class":92},[86,14414,849],{"class":635},[86,14416,14384],{"class":96},[86,14418,3851],{"class":635},[86,14420,14421,14423,14425,14427,14429,14431,14433,14435,14437,14439,14441,14443],{"class":88,"line":3418},[86,14422,1678],{"class":635},[86,14424,12521],{"class":795},[86,14426,12524],{"class":92},[86,14428,849],{"class":635},[86,14430,12574],{"class":96},[86,14432,14352],{"class":92},[86,14434,849],{"class":635},[86,14436,14384],{"class":96},[86,14438,14359],{"class":92},[86,14440,849],{"class":635},[86,14442,14384],{"class":96},[86,14444,3851],{"class":635},[86,14446,14447,14449,14451],{"class":88,"line":3423},[86,14448,3991],{"class":635},[86,14450,796],{"class":795},[86,14452,823],{"class":635},[3549,14454,14455],{"id":14455},"添加摄像头",[16,14457,14458],{},"编辑car_camera.urdf.xacro文件，输入如下内容：",[78,14460,14462],{"className":777,"code":14461,"language":779,"meta":21,"style":21},"\n\u003Crobot xmlns:xacro=\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\">\n\n    \u003Cxacro:property name=\"camera_x\" value=\"0.012\" \u002F> \n    \u003Cxacro:property name=\"camera_y\" value=\"0.05\" \u002F> \n    \u003Cxacro:property name=\"camera_z\" value=\"0.01\" \u002F> \n    \u003Cxacro:property name=\"camera_joint_x\" value=\"${base_link_x \u002F 2 - camera_x \u002F 2}\" \u002F> \n    \u003Cxacro:property name=\"camera_joint_y\" value=\"0.0\" \u002F> \n    \u003Cxacro:property name=\"camera_joint_z\" value=\"${base_link_z \u002F 2 + camera_z \u002F 2}\" \u002F> \n\n    \u003Clink name=\"camera\">\n        \u003Cvisual>\n            \u003Cgeometry>\n                \u003Cbox size=\"${camera_x} ${camera_y} ${camera_z}\" \u002F>\n            \u003C\u002Fgeometry>\n            \u003Corigin xyz=\"0.0 0.0 0.0\" rpy=\"0.0 0.0 0.0\" \u002F>\n            \u003Cmaterial name=\"red\" \u002F>\n        \u003C\u002Fvisual>\n    \u003C\u002Flink>\n\n    \u003Cjoint name=\"camera2baselink\" type=\"fixed\">\n        \u003Cparent link=\"base_link\" \u002F>\n        \u003Cchild link=\"camera\" \u002F>\n        \u003Corigin xyz=\"${camera_joint_x} ${camera_joint_y} ${camera_joint_z}\" \u002F>\n    \u003C\u002Fjoint>\n\u003C\u002Frobot>\n",[73,14463,14464,14468,14482,14486,14509,14531,14553,14575,14597,14619,14623,14637,14645,14653,14668,14676,14697,14711,14719,14727,14731,14751,14765,14779,14794,14802],{"__ignoreMap":21},[86,14465,14466],{"class":88,"line":89},[86,14467,787],{"emptyLinePlaceholder":786},[86,14469,14470,14472,14474,14476,14478,14480],{"class":88,"line":646},[86,14471,1377],{"class":635},[86,14473,796],{"class":795},[86,14475,12252],{"class":92},[86,14477,849],{"class":635},[86,14479,12257],{"class":96},[86,14481,823],{"class":635},[86,14483,14484],{"class":88,"line":802},[86,14485,787],{"emptyLinePlaceholder":786},[86,14487,14488,14490,14492,14494,14496,14499,14501,14503,14506],{"class":88,"line":814},[86,14489,1678],{"class":635},[86,14491,12270],{"class":795},[86,14493,1661],{"class":92},[86,14495,849],{"class":635},[86,14497,14498],{"class":96},"\"camera_x\"",[86,14500,12280],{"class":92},[86,14502,849],{"class":635},[86,14504,14505],{"class":96},"\"0.012\"",[86,14507,14508],{"class":635}," \u002F> \n",[86,14510,14511,14513,14515,14517,14519,14522,14524,14526,14529],{"class":88,"line":826},[86,14512,1678],{"class":635},[86,14514,12270],{"class":795},[86,14516,1661],{"class":92},[86,14518,849],{"class":635},[86,14520,14521],{"class":96},"\"camera_y\"",[86,14523,12280],{"class":92},[86,14525,849],{"class":635},[86,14527,14528],{"class":96},"\"0.05\"",[86,14530,14508],{"class":635},[86,14532,14533,14535,14537,14539,14541,14544,14546,14548,14551],{"class":88,"line":837},[86,14534,1678],{"class":635},[86,14536,12270],{"class":795},[86,14538,1661],{"class":92},[86,14540,849],{"class":635},[86,14542,14543],{"class":96},"\"camera_z\"",[86,14545,12280],{"class":92},[86,14547,849],{"class":635},[86,14549,14550],{"class":96},"\"0.01\"",[86,14552,14508],{"class":635},[86,14554,14555,14557,14559,14561,14563,14566,14568,14570,14573],{"class":88,"line":858},[86,14556,1678],{"class":635},[86,14558,12270],{"class":795},[86,14560,1661],{"class":92},[86,14562,849],{"class":635},[86,14564,14565],{"class":96},"\"camera_joint_x\"",[86,14567,12280],{"class":92},[86,14569,849],{"class":635},[86,14571,14572],{"class":96},"\"${base_link_x \u002F 2 - camera_x \u002F 2}\"",[86,14574,14508],{"class":635},[86,14576,14577,14579,14581,14583,14585,14588,14590,14592,14595],{"class":88,"line":868},[86,14578,1678],{"class":635},[86,14580,12270],{"class":795},[86,14582,1661],{"class":92},[86,14584,849],{"class":635},[86,14586,14587],{"class":96},"\"camera_joint_y\"",[86,14589,12280],{"class":92},[86,14591,849],{"class":635},[86,14593,14594],{"class":96},"\"0.0\"",[86,14596,14508],{"class":635},[86,14598,14599,14601,14603,14605,14607,14610,14612,14614,14617],{"class":88,"line":878},[86,14600,1678],{"class":635},[86,14602,12270],{"class":795},[86,14604,1661],{"class":92},[86,14606,849],{"class":635},[86,14608,14609],{"class":96},"\"camera_joint_z\"",[86,14611,12280],{"class":92},[86,14613,849],{"class":635},[86,14615,14616],{"class":96},"\"${base_link_z \u002F 2 + camera_z \u002F 2}\"",[86,14618,14508],{"class":635},[86,14620,14621],{"class":88,"line":888},[86,14622,787],{"emptyLinePlaceholder":786},[86,14624,14625,14627,14629,14631,14633,14635],{"class":88,"line":1020},[86,14626,1678],{"class":635},[86,14628,808],{"class":795},[86,14630,1661],{"class":92},[86,14632,849],{"class":635},[86,14634,5247],{"class":96},[86,14636,823],{"class":635},[86,14638,14639,14641,14643],{"class":88,"line":1025},[86,14640,1711],{"class":635},[86,14642,820],{"class":795},[86,14644,823],{"class":635},[86,14646,14647,14649,14651],{"class":88,"line":1042},[86,14648,3902],{"class":635},[86,14650,832],{"class":795},[86,14652,823],{"class":635},[86,14654,14655,14657,14659,14661,14663,14666],{"class":88,"line":1064},[86,14656,12386],{"class":635},[86,14658,843],{"class":795},[86,14660,846],{"class":92},[86,14662,849],{"class":635},[86,14664,14665],{"class":96},"\"${camera_x} ${camera_y} ${camera_z}\"",[86,14667,3851],{"class":635},[86,14669,14670,14672,14674],{"class":88,"line":1084},[86,14671,12494],{"class":635},[86,14673,832],{"class":795},[86,14675,823],{"class":635},[86,14677,14678,14680,14682,14684,14686,14689,14691,14693,14695],{"class":88,"line":1115},[86,14679,3902],{"class":635},[86,14681,3641],{"class":795},[86,14683,3938],{"class":92},[86,14685,849],{"class":635},[86,14687,14688],{"class":96},"\"0.0 0.0 0.0\"",[86,14690,3946],{"class":92},[86,14692,849],{"class":635},[86,14694,14688],{"class":96},[86,14696,3851],{"class":635},[86,14698,14699,14701,14703,14705,14707,14709],{"class":88,"line":1120},[86,14700,3902],{"class":635},[86,14702,3663],{"class":795},[86,14704,1661],{"class":92},[86,14706,849],{"class":635},[86,14708,5099],{"class":96},[86,14710,3851],{"class":635},[86,14712,14713,14715,14717],{"class":88,"line":1126},[86,14714,1740],{"class":635},[86,14716,820],{"class":795},[86,14718,823],{"class":635},[86,14720,14721,14723,14725],{"class":88,"line":1131},[86,14722,1758],{"class":635},[86,14724,808],{"class":795},[86,14726,823],{"class":635},[86,14728,14729],{"class":88,"line":1137},[86,14730,787],{"emptyLinePlaceholder":786},[86,14732,14733,14735,14737,14739,14741,14743,14745,14747,14749],{"class":88,"line":1159},[86,14734,1678],{"class":635},[86,14736,4652],{"class":795},[86,14738,1661],{"class":92},[86,14740,849],{"class":635},[86,14742,5355],{"class":96},[86,14744,5358],{"class":92},[86,14746,849],{"class":635},[86,14748,5629],{"class":96},[86,14750,823],{"class":635},[86,14752,14753,14755,14757,14759,14761,14763],{"class":88,"line":1170},[86,14754,1711],{"class":635},[86,14756,4499],{"class":795},[86,14758,5374],{"class":92},[86,14760,849],{"class":635},[86,14762,1687],{"class":96},[86,14764,3851],{"class":635},[86,14766,14767,14769,14771,14773,14775,14777],{"class":88,"line":1184},[86,14768,1711],{"class":635},[86,14770,4514],{"class":795},[86,14772,5374],{"class":92},[86,14774,849],{"class":635},[86,14776,5247],{"class":96},[86,14778,3851],{"class":635},[86,14780,14781,14783,14785,14787,14789,14792],{"class":88,"line":1196},[86,14782,1711],{"class":635},[86,14784,3641],{"class":795},[86,14786,3938],{"class":92},[86,14788,849],{"class":635},[86,14790,14791],{"class":96},"\"${camera_joint_x} ${camera_joint_y} ${camera_joint_z}\"",[86,14793,3851],{"class":635},[86,14795,14796,14798,14800],{"class":88,"line":1213},[86,14797,1758],{"class":635},[86,14799,4652],{"class":795},[86,14801,823],{"class":635},[86,14803,14804,14806,14808],{"class":88,"line":1219},[86,14805,3991],{"class":635},[86,14807,796],{"class":795},[86,14809,823],{"class":635},[3549,14811,14812],{"id":14812},"添加雷达",[16,14814,14815],{},"编辑car_laser.urdf.xacro文件，输入如下内容：",[78,14817,14819],{"className":777,"code":14818,"language":779,"meta":21,"style":21},"\n\u003Crobot xmlns:xacro=\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\">\n\n    \u003Cmaterial name=\"blue\">\n        \u003Ccolor rgba=\"0.0 0.0 0.4 0.95\" \u002F>\n    \u003C\u002Fmaterial>\n\n    \u003Cxacro:property name=\"laser_length\" value=\"0.03\" \u002F> \n    \u003Cxacro:property name=\"laser_radius\" value=\"0.03\" \u002F> \n    \u003Cxacro:property name=\"laser_joint_x\" value=\"0.0\" \u002F> \n    \u003Cxacro:property name=\"laser_joint_y\" value=\"0.0\" \u002F> \n    \u003Cxacro:property name=\"laser_joint_z\" value=\"${base_link_z \u002F 2 + laser_length \u002F 2}\" \u002F> \n\n    \u003Clink name=\"laser\">\n        \u003Cvisual>\n            \u003Cgeometry>\n                \u003Ccylinder radius=\"${laser_radius}\" length=\"${laser_length}\" \u002F>\n            \u003C\u002Fgeometry>\n            \u003Corigin xyz=\"0.0 0.0 0.0\" rpy=\"0.0 0.0 0.0\" \u002F>\n            \u003Cmaterial name=\"blue\" \u002F>\n        \u003C\u002Fvisual>\n    \u003C\u002Flink>\n\n    \u003Cjoint name=\"laser2baselink\" type=\"fixed\">\n        \u003Cparent link=\"base_link\" \u002F>\n        \u003Cchild link=\"laser\" \u002F>\n        \u003Corigin xyz=\"${laser_joint_x} ${laser_joint_y} ${laser_joint_z}\" \u002F>\n    \u003C\u002Fjoint>\n\u003C\u002Frobot>\n",[73,14820,14821,14825,14839,14843,14858,14873,14881,14885,14907,14928,14949,14970,14992,14996,15011,15019,15027,15049,15057,15077,15091,15099,15107,15111,15132,15146,15160,15175,15183],{"__ignoreMap":21},[86,14822,14823],{"class":88,"line":89},[86,14824,787],{"emptyLinePlaceholder":786},[86,14826,14827,14829,14831,14833,14835,14837],{"class":88,"line":646},[86,14828,1377],{"class":635},[86,14830,796],{"class":795},[86,14832,12252],{"class":92},[86,14834,849],{"class":635},[86,14836,12257],{"class":96},[86,14838,823],{"class":635},[86,14840,14841],{"class":88,"line":802},[86,14842,787],{"emptyLinePlaceholder":786},[86,14844,14845,14847,14849,14851,14853,14856],{"class":88,"line":814},[86,14846,1678],{"class":635},[86,14848,3663],{"class":795},[86,14850,1661],{"class":92},[86,14852,849],{"class":635},[86,14854,14855],{"class":96},"\"blue\"",[86,14857,823],{"class":635},[86,14859,14860,14862,14864,14866,14868,14871],{"class":88,"line":826},[86,14861,1711],{"class":635},[86,14863,3678],{"class":795},[86,14865,3843],{"class":92},[86,14867,849],{"class":635},[86,14869,14870],{"class":96},"\"0.0 0.0 0.4 0.95\"",[86,14872,3851],{"class":635},[86,14874,14875,14877,14879],{"class":88,"line":837},[86,14876,1758],{"class":635},[86,14878,3663],{"class":795},[86,14880,823],{"class":635},[86,14882,14883],{"class":88,"line":858},[86,14884,787],{"emptyLinePlaceholder":786},[86,14886,14887,14889,14891,14893,14895,14898,14900,14902,14905],{"class":88,"line":868},[86,14888,1678],{"class":635},[86,14890,12270],{"class":795},[86,14892,1661],{"class":92},[86,14894,849],{"class":635},[86,14896,14897],{"class":96},"\"laser_length\"",[86,14899,12280],{"class":92},[86,14901,849],{"class":635},[86,14903,14904],{"class":96},"\"0.03\"",[86,14906,14508],{"class":635},[86,14908,14909,14911,14913,14915,14917,14920,14922,14924,14926],{"class":88,"line":878},[86,14910,1678],{"class":635},[86,14912,12270],{"class":795},[86,14914,1661],{"class":92},[86,14916,849],{"class":635},[86,14918,14919],{"class":96},"\"laser_radius\"",[86,14921,12280],{"class":92},[86,14923,849],{"class":635},[86,14925,14904],{"class":96},[86,14927,14508],{"class":635},[86,14929,14930,14932,14934,14936,14938,14941,14943,14945,14947],{"class":88,"line":888},[86,14931,1678],{"class":635},[86,14933,12270],{"class":795},[86,14935,1661],{"class":92},[86,14937,849],{"class":635},[86,14939,14940],{"class":96},"\"laser_joint_x\"",[86,14942,12280],{"class":92},[86,14944,849],{"class":635},[86,14946,14594],{"class":96},[86,14948,14508],{"class":635},[86,14950,14951,14953,14955,14957,14959,14962,14964,14966,14968],{"class":88,"line":1020},[86,14952,1678],{"class":635},[86,14954,12270],{"class":795},[86,14956,1661],{"class":92},[86,14958,849],{"class":635},[86,14960,14961],{"class":96},"\"laser_joint_y\"",[86,14963,12280],{"class":92},[86,14965,849],{"class":635},[86,14967,14594],{"class":96},[86,14969,14508],{"class":635},[86,14971,14972,14974,14976,14978,14980,14983,14985,14987,14990],{"class":88,"line":1025},[86,14973,1678],{"class":635},[86,14975,12270],{"class":795},[86,14977,1661],{"class":92},[86,14979,849],{"class":635},[86,14981,14982],{"class":96},"\"laser_joint_z\"",[86,14984,12280],{"class":92},[86,14986,849],{"class":635},[86,14988,14989],{"class":96},"\"${base_link_z \u002F 2 + laser_length \u002F 2}\"",[86,14991,14508],{"class":635},[86,14993,14994],{"class":88,"line":1042},[86,14995,787],{"emptyLinePlaceholder":786},[86,14997,14998,15000,15002,15004,15006,15009],{"class":88,"line":1064},[86,14999,1678],{"class":635},[86,15001,808],{"class":795},[86,15003,1661],{"class":92},[86,15005,849],{"class":635},[86,15007,15008],{"class":96},"\"laser\"",[86,15010,823],{"class":635},[86,15012,15013,15015,15017],{"class":88,"line":1084},[86,15014,1711],{"class":635},[86,15016,820],{"class":795},[86,15018,823],{"class":635},[86,15020,15021,15023,15025],{"class":88,"line":1115},[86,15022,3902],{"class":635},[86,15024,832],{"class":795},[86,15026,823],{"class":635},[86,15028,15029,15031,15033,15035,15037,15040,15042,15044,15047],{"class":88,"line":1120},[86,15030,12386],{"class":635},[86,15032,3609],{"class":795},[86,15034,5573],{"class":92},[86,15036,849],{"class":635},[86,15038,15039],{"class":96},"\"${laser_radius}\"",[86,15041,6733],{"class":92},[86,15043,849],{"class":635},[86,15045,15046],{"class":96},"\"${laser_length}\"",[86,15048,3851],{"class":635},[86,15050,15051,15053,15055],{"class":88,"line":1126},[86,15052,12494],{"class":635},[86,15054,832],{"class":795},[86,15056,823],{"class":635},[86,15058,15059,15061,15063,15065,15067,15069,15071,15073,15075],{"class":88,"line":1131},[86,15060,3902],{"class":635},[86,15062,3641],{"class":795},[86,15064,3938],{"class":92},[86,15066,849],{"class":635},[86,15068,14688],{"class":96},[86,15070,3946],{"class":92},[86,15072,849],{"class":635},[86,15074,14688],{"class":96},[86,15076,3851],{"class":635},[86,15078,15079,15081,15083,15085,15087,15089],{"class":88,"line":1137},[86,15080,3902],{"class":635},[86,15082,3663],{"class":795},[86,15084,1661],{"class":92},[86,15086,849],{"class":635},[86,15088,14855],{"class":96},[86,15090,3851],{"class":635},[86,15092,15093,15095,15097],{"class":88,"line":1159},[86,15094,1740],{"class":635},[86,15096,820],{"class":795},[86,15098,823],{"class":635},[86,15100,15101,15103,15105],{"class":88,"line":1170},[86,15102,1758],{"class":635},[86,15104,808],{"class":795},[86,15106,823],{"class":635},[86,15108,15109],{"class":88,"line":1184},[86,15110,787],{"emptyLinePlaceholder":786},[86,15112,15113,15115,15117,15119,15121,15124,15126,15128,15130],{"class":88,"line":1196},[86,15114,1678],{"class":635},[86,15116,4652],{"class":795},[86,15118,1661],{"class":92},[86,15120,849],{"class":635},[86,15122,15123],{"class":96},"\"laser2baselink\"",[86,15125,5358],{"class":92},[86,15127,849],{"class":635},[86,15129,5629],{"class":96},[86,15131,823],{"class":635},[86,15133,15134,15136,15138,15140,15142,15144],{"class":88,"line":1213},[86,15135,1711],{"class":635},[86,15137,4499],{"class":795},[86,15139,5374],{"class":92},[86,15141,849],{"class":635},[86,15143,1687],{"class":96},[86,15145,3851],{"class":635},[86,15147,15148,15150,15152,15154,15156,15158],{"class":88,"line":1219},[86,15149,1711],{"class":635},[86,15151,4514],{"class":795},[86,15153,5374],{"class":92},[86,15155,849],{"class":635},[86,15157,15008],{"class":96},[86,15159,3851],{"class":635},[86,15161,15162,15164,15166,15168,15170,15173],{"class":88,"line":1224},[86,15163,1711],{"class":635},[86,15165,3641],{"class":795},[86,15167,3938],{"class":92},[86,15169,849],{"class":635},[86,15171,15172],{"class":96},"\"${laser_joint_x} ${laser_joint_y} ${laser_joint_z}\"",[86,15174,3851],{"class":635},[86,15176,15177,15179,15181],{"class":88,"line":1230},[86,15178,1758],{"class":635},[86,15180,4652],{"class":795},[86,15182,823],{"class":635},[86,15184,15185,15187,15189],{"class":88,"line":1240},[86,15186,3991],{"class":635},[86,15188,796],{"class":795},[86,15190,823],{"class":635},[3549,15192,15193],{"id":15193},"执行",[16,15195,15196],{},"编译后，工作空间终端下调用如下命令执行：",[78,15198,15200],{"className":80,"code":15199,"language":82,"meta":21,"style":21},"\n# ROS Humble\nros2 launch cpp06_urdf display.launch.py model:=ros2 pkg prefix --share cpp06_urdf\u002Furdf\u002Fxacro\u002Fcar.urdf.xacro\n#ROS Jazzy\ncolcon build\nsource install\u002Fsetup.bash\nros2 run xacro xacro $(ros2 pkg prefix cpp06_urdf)\u002Fshare\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002Fcar.urdf.xacro -o .\u002Fsrc\u002Fcpp06_urdf\u002Furdf\u002Furdf\u002Fcar.urdf\nros2 launch cpp06_urdf display.launch.py model:=.\u002Fsrc\u002Fcpp06_urdf\u002Furdf\u002Furdf\u002Fcar.urdf\n",[73,15201,15202,15206,15211,15233,15238,15244,15250,15283],{"__ignoreMap":21},[86,15203,15204],{"class":88,"line":89},[86,15205,787],{"emptyLinePlaceholder":786},[86,15207,15208],{"class":88,"line":646},[86,15209,15210],{"class":1005},"# ROS Humble\n",[86,15212,15213,15215,15217,15219,15221,15224,15226,15228,15230],{"class":88,"line":802},[86,15214,726],{"class":92},[86,15216,1528],{"class":96},[86,15218,735],{"class":96},[86,15220,2520],{"class":96},[86,15222,15223],{"class":96}," model:=ros2",[86,15225,729],{"class":96},[86,15227,2498],{"class":96},[86,15229,2501],{"class":738},[86,15231,15232],{"class":96}," cpp06_urdf\u002Furdf\u002Fxacro\u002Fcar.urdf.xacro\n",[86,15234,15235],{"class":88,"line":814},[86,15236,15237],{"class":1005},"#ROS Jazzy\n",[86,15239,15240,15242],{"class":88,"line":826},[86,15241,1494],{"class":92},[86,15243,8127],{"class":96},[86,15245,15246,15248],{"class":88,"line":837},[86,15247,1518],{"class":738},[86,15249,1521],{"class":96},[86,15251,15252,15254,15256,15258,15260,15263,15265,15267,15269,15271,15274,15277,15280],{"class":88,"line":858},[86,15253,726],{"class":92},[86,15255,2423],{"class":96},[86,15257,12634],{"class":96},[86,15259,12634],{"class":96},[86,15261,15262],{"class":635}," $(",[86,15264,726],{"class":92},[86,15266,729],{"class":96},[86,15268,2498],{"class":96},[86,15270,735],{"class":96},[86,15272,15273],{"class":635},")",[86,15275,15276],{"class":96},"\u002Fshare\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002Fcar.urdf.xacro",[86,15278,15279],{"class":738}," -o",[86,15281,15282],{"class":96}," .\u002Fsrc\u002Fcpp06_urdf\u002Furdf\u002Furdf\u002Fcar.urdf\n",[86,15284,15285,15287,15289,15291,15293],{"class":88,"line":868},[86,15286,726],{"class":92},[86,15288,1528],{"class":96},[86,15290,735],{"class":96},[86,15292,2520],{"class":96},[86,15294,15295],{"class":96}," model:=.\u002Fsrc\u002Fcpp06_urdf\u002Furdf\u002Furdf\u002Fcar.urdf\n",[16,15297,15298],{},"命令执行后，rviz2 中可以显示与需求类似的机器人模型。",[16,15300,15301],{},[19,15302],{"alt":21,"src":15303},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1616.webp",[12,15305,15306],{"id":15306},"小结",[16,15308,15309],{},[19,15310],{"alt":21,"src":15311},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1617.webp",[16,15313,15314],{},"目前只是空壳，激光雷达和摄像头以及轮子还都是空壳，到进阶联系中，才可以实现作用。",[15316,15317,15318],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":21,"searchDepth":646,"depth":646,"links":15320},[15321,15322,15323,15324,15325,15326,15327,15328],{"id":14,"depth":802,"text":14},{"id":63,"depth":802,"text":63},{"id":652,"depth":802,"text":653},{"id":3510,"depth":802,"text":3511},{"id":7621,"depth":802,"text":7622},{"id":7784,"depth":802,"text":7785},{"id":12123,"depth":802,"text":12123},{"id":15306,"depth":802,"text":15306},0,"0900","2023-12-30","2023-12-30-ros2-tutorial","\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md",false,{},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan",{"title":5,"description":21},"wiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","9prsy7gkfbHRGa1NLrCjbfhuIkIDnBl91PVq6XGSr_U",[15343,15349,15355,15361,15367,15373,15379,15385,15391,15393,15399,15405,15411,15417,15423,15429,15435,15441,15447,15453,15459,15465,15471,15477,15483,15489,15495,15501,15507,15513,15519,15525,15531,15537,15543,15548,15554,15559,15565,15571,15577,15583,15589,15595,15601,15607,15613,15619,15625,15631,15637,15643,15649,15655,15661,15667,15673,15679,15685,15691,15697,15703,15709,15715,15721,15727,15733,15739,15745],{"path":15344,"stem":15345,"title":15346,"authors":15347,"date":15331,"chapterOrder":15348,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","wiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","ROS2介绍",[7],"0100",{"path":15350,"stem":15351,"title":15352,"authors":15353,"date":15331,"chapterOrder":15354,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","wiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","入门操作",[7],"0200",{"path":15356,"stem":15357,"title":15358,"authors":15359,"date":15331,"chapterOrder":15360,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","wiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","工作空间与功能包",[7],"0300",{"path":15362,"stem":15363,"title":15364,"authors":15365,"date":15331,"chapterOrder":15366,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","四大通信",[7],"0400",{"path":15368,"stem":15369,"title":15370,"authors":15371,"date":15331,"chapterOrder":15372,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2其他通信机制",[7],"0500",{"path":15374,"stem":15375,"title":15376,"authors":15377,"date":15331,"chapterOrder":15378,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","wiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch",[7],"0600",{"path":15380,"stem":15381,"title":15382,"authors":15383,"date":15331,"chapterOrder":15384,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","wiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","回溯rosbag2",[7],"0700",{"path":15386,"stem":15387,"title":15388,"authors":15389,"date":15331,"chapterOrder":15390,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","wiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","坐标变换TF",[7],"0800",{"path":15338,"stem":15340,"title":5,"authors":15392,"date":15331,"chapterOrder":15330,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},[7],{"path":15394,"stem":15395,"title":15396,"authors":15397,"date":15331,"chapterOrder":15398,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2仿真平台",[7],"1000",{"path":15400,"stem":15401,"title":15402,"authors":15403,"date":15331,"chapterOrder":15404,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic",[7],"1100-0100",{"path":15406,"stem":15407,"title":15408,"authors":15409,"date":15331,"chapterOrder":15410,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）",[7],"1100-0200",{"path":15412,"stem":15413,"title":15414,"authors":15415,"date":15331,"chapterOrder":15416,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）",[7],"1100-0300",{"path":15418,"stem":15419,"title":15420,"authors":15421,"date":15331,"chapterOrder":15422,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","将Ign Gazebo迁移至Gz Sim",[7],"1100-0400",{"path":15424,"stem":15425,"title":15426,"authors":15427,"date":15331,"chapterOrder":15428,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gezebo仿真平台",[7],"1100",{"path":15430,"stem":15431,"title":15432,"authors":15433,"date":15331,"chapterOrder":15434,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble导航仿真",[7],"1200-0100",{"path":15436,"stem":15437,"title":15438,"authors":15439,"date":15331,"chapterOrder":15440,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy导航仿真",[7],"1200-0200",{"path":15442,"stem":15443,"title":15444,"authors":15445,"date":15331,"chapterOrder":15446,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Humble与Jazzy导航的差异",[7],"1200-0300",{"path":15448,"stem":15449,"title":15450,"authors":15451,"date":15331,"chapterOrder":15452,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0100-you-xian-zhuang-tai-ji-fsm","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0100-有限状态机FSM","有限状态机（Finite State Machine）",[7],"1200-0400-0100",{"path":15454,"stem":15455,"title":15456,"authors":15457,"date":15331,"chapterOrder":15458,"chapterDepth":802,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0100-ji-ben-gai-nian","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0100-基本概念","基本概念",[7],"1200-0400-0200-0100",{"path":15460,"stem":15461,"title":15462,"authors":15463,"date":15331,"chapterOrder":15464,"chapterDepth":802,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0200-kong-zhi-yu-zhuang-shi-gui-ze","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0200-控制与装饰规则","控制与装饰规则",[7],"1200-0400-0200-0200",{"path":15466,"stem":15467,"title":15468,"authors":15469,"date":15331,"chapterOrder":15470,"chapterDepth":802,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0300-di-yi-ge-wan-zheng-cheng-xu","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0300-第一个完整程序","第一个完整程序",[7],"1200-0400-0200-0300",{"path":15472,"stem":15473,"title":15474,"authors":15475,"date":15331,"chapterOrder":15476,"chapterDepth":802,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0400-jie-dian-zhi-jian-chuan-shu-ju","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0400-节点之间传数据","节点之间传数据",[7],"1200-0400-0200-0400",{"path":15478,"stem":15479,"title":15480,"authors":15481,"date":15331,"chapterOrder":15482,"chapterDepth":802,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0500-chi-xu-ren-wu-yu-zhong-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0500-持续任务与中止","持续任务与中止",[7],"1200-0400-0200-0500",{"path":15484,"stem":15485,"title":15486,"authors":15487,"date":15331,"chapterOrder":15488,"chapterDepth":802,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0600-zu-he-shi-ji-ren-wu","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0600-组合实际任务","组合实际任务",[7],"1200-0400-0200-0600",{"path":15490,"stem":15491,"title":15492,"authors":15493,"date":15331,"chapterOrder":15494,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-xing-wei-shu-bt","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-行为树BT","行为树（BehaviorTree.CPP）",[7],"1200-0400-0200",{"path":15496,"stem":15497,"title":15498,"authors":15499,"date":15331,"chapterOrder":15500,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-fsm-yu-bt","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-FSM与BT","有限状态机FSM与行为树BT",[7],"1200-0400",{"path":15502,"stem":15503,"title":15504,"authors":15505,"date":15331,"chapterOrder":15506,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","机器人导航Navigation2(仿真篇)",[7],"1200",{"path":15508,"stem":15509,"title":15510,"authors":15511,"date":15331,"chapterOrder":15512,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio库",[7],"1300-0100-0100",{"path":15514,"stem":15515,"title":15516,"authors":15517,"date":15331,"chapterOrder":15518,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver库",[7],"1300-0100-0200",{"path":15520,"stem":15521,"title":15522,"authors":15523,"date":15331,"chapterOrder":15524,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART串口通信",[7],"1300-0100",{"path":15526,"stem":15527,"title":15528,"authors":15529,"date":15331,"chapterOrder":15530,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","SocketCAN",[7],"1300-0200-0100",{"path":15532,"stem":15533,"title":15534,"authors":15535,"date":15331,"chapterOrder":15536,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN",[7],"1300-0200-0200",{"path":15538,"stem":15539,"title":15540,"authors":15541,"date":15331,"chapterOrder":15542,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN通信",[7],"1300-0200",{"path":15544,"stem":15545,"title":15510,"authors":15546,"date":15331,"chapterOrder":15547,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso",[7],"1300-0300-0100",{"path":15549,"stem":15550,"title":15551,"authors":15552,"date":15331,"chapterOrder":15553,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP通信",[7],"1300-0300",{"path":15555,"stem":15556,"title":15510,"authors":15557,"date":15331,"chapterOrder":15558,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso",[7],"1300-0400-0100",{"path":15560,"stem":15561,"title":15562,"authors":15563,"date":15331,"chapterOrder":15564,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP通信",[7],"1300-0400",{"path":15566,"stem":15567,"title":15568,"authors":15569,"date":15331,"chapterOrder":15570,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux硬件通信",[7],"1300",{"path":15572,"stem":15573,"title":15574,"authors":15575,"date":15331,"chapterOrder":15576,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","机器人组成",[7],"1400-0100",{"path":15578,"stem":15579,"title":15580,"authors":15581,"date":15331,"chapterOrder":15582,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","远程开发SSH",[7],"1400-0200-0100",{"path":15584,"stem":15585,"title":15586,"authors":15587,"date":15331,"chapterOrder":15588,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","远程访问桌面",[7],"1400-0200-0200",{"path":15590,"stem":15591,"title":15592,"authors":15593,"date":15331,"chapterOrder":15594,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","工控机之远程开发环境",[7],"1400-0200",{"path":15596,"stem":15597,"title":15598,"authors":15599,"date":15331,"chapterOrder":15600,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","工控机之外接USB设备",[7],"1400-0300",{"path":15602,"stem":15603,"title":15604,"authors":15605,"date":15331,"chapterOrder":15606,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","分布式搭建",[7],"1400-0400",{"path":15608,"stem":15609,"title":15610,"authors":15611,"date":15331,"chapterOrder":15612,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","优化日志",[7],"1400-0500",{"path":15614,"stem":15615,"title":15616,"authors":15617,"date":15331,"chapterOrder":15618,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","里程计Odom",[7],"1400-0600-0100",{"path":15620,"stem":15621,"title":15622,"authors":15623,"date":15331,"chapterOrder":15624,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","惯性计IMU",[7],"1400-0600-0200",{"path":15626,"stem":15627,"title":15628,"authors":15629,"date":15331,"chapterOrder":15630,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","激光雷达LiDAR",[7],"1400-0600-0300",{"path":15632,"stem":15633,"title":15634,"authors":15635,"date":15331,"chapterOrder":15636,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","相机Camera",[7],"1400-0600-0400",{"path":15638,"stem":15639,"title":15640,"authors":15641,"date":15331,"chapterOrder":15642,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","全球定位GNSS",[7],"1400-0600-0500",{"path":15644,"stem":15645,"title":15646,"authors":15647,"date":15331,"chapterOrder":15648,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","手柄JOY",[7],"1400-0600-0600",{"path":15650,"stem":15651,"title":15652,"authors":15653,"date":15331,"chapterOrder":15654,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","键盘控制节点",[7],"1400-0600-0700",{"path":15656,"stem":15657,"title":15658,"authors":15659,"date":15331,"chapterOrder":15660,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","硬件平台",[7],"1400-0600",{"path":15662,"stem":15663,"title":15664,"authors":15665,"date":15331,"chapterOrder":15666,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","坐标系与话题关系",[7],"1400-0700",{"path":15668,"stem":15669,"title":15670,"authors":15671,"date":15331,"chapterOrder":15672,"chapterDepth":802,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","轮式里程计标定",[7],"1400-0800-0100-0100",{"path":15674,"stem":15675,"title":15676,"authors":15677,"date":15331,"chapterOrder":15678,"chapterDepth":802,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","轮式里程计与IMU融合",[7],"1400-0800-0100-0200",{"path":15680,"stem":15681,"title":15682,"authors":15683,"date":15331,"chapterOrder":15684,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","轮式里程计标定与融合",[7],"1400-0800-0100",{"path":15686,"stem":15687,"title":15688,"authors":15689,"date":15331,"chapterOrder":15690,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","激光雷达工具",[7],"1400-0800-0200",{"path":15692,"stem":15693,"title":15694,"authors":15695,"date":15331,"chapterOrder":15696,"chapterDepth":646,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","相机使用进阶",[7],"1400-0800-0300",{"path":15698,"stem":15699,"title":15700,"authors":15701,"date":15331,"chapterOrder":15702,"chapterDepth":89,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","硬件平台进阶",[7],"1400-0800",{"path":15704,"stem":15705,"title":15706,"authors":15707,"date":15331,"chapterOrder":15708,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","机器人硬件",[7],"1400",{"path":15710,"stem":15711,"title":15712,"authors":15713,"date":15331,"chapterOrder":15714,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","wiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control",[7],"1500",{"path":15716,"stem":15717,"title":15718,"authors":15719,"date":15331,"chapterOrder":15720,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","wiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","Moveit2工业机器人机械臂",[7],"1600",{"path":15722,"stem":15723,"title":15724,"authors":15725,"date":15331,"chapterOrder":15726,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","wiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","机器人导航Navigation2(实体篇)",[7],"1700",{"path":15728,"stem":15729,"title":15730,"authors":15731,"date":15331,"chapterOrder":15732,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","wiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS",[7],"1800",{"path":15734,"stem":15735,"title":15736,"authors":15737,"date":15331,"chapterOrder":15738,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots仿真平台",[7],"1900",{"path":15740,"stem":15741,"title":15742,"authors":15743,"date":15331,"chapterOrder":15744,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","wiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV",[7],"2000",{"path":15333,"stem":15746,"title":15747,"authors":15748,"date":15331,"chapterOrder":15749,"chapterDepth":15329,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":786,"isWikiIndex":786},"wiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2机器人操作系统教程",[7],null,[15751,15753,15756,15759],{"name":7,"image":15752},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":15754,"image":15755},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":15757,"image":15758},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":15760,"image":15761},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431901582]