[{"data":1,"prerenderedAt":15654},["ShallowReactive",2],{"wiki-page-\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan":3,"wiki-doc-items-\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan":15345,"language-switcher-data-\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan":15638,"wiki-i18n-paths-\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan":15653},{"id":4,"title":5,"body":6,"canonicalPath":15327,"chapterDepth":15328,"chapterOrder":15329,"date":15330,"description":19,"docI18nKey":15331,"docKey":15332,"docRoot":15333,"docTitle":15334,"extension":15335,"i18nKey":15336,"isBlogPost":15337,"isWikiDoc":784,"isWikiIndex":15337,"layout":15338,"legacyPath":15339,"locale":15340,"localeSlug":15341,"meta":15342,"navigation":784,"path":15327,"seo":15343,"sourcePath":15339,"sourceStem":15336,"stem":15336,"wikiDepth":87,"__hash__":15344},"content\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言.md","可视化平台RVIZ2与URDF建模语言",{"type":7,"value":8,"toc":15317},"minimark",[9,13,21,26,31,34,39,44,49,54,59,62,67,75,102,109,114,121,128,133,138,157,162,171,176,179,184,187,192,195,200,203,208,211,216,219,224,227,232,235,240,243,248,251,254,257,262,265,270,273,278,281,286,602,605,610,613,616,619,622,648,652,657,662,667,672,677,682,685,712,715,741,744,749,752,755,758,761,764,768,773,894,897,902,907,1361,1366,1438,1443,1478,1483,1502,1507,1532,1537,1543,1546,1551,1556,1564,1568,1571,1579,1584,1587,1592,1595,1600,1603,1611,1614,1617,1622,1625,1628,1631,1634,1637,1642,1770,1774,1777,1803,1808,1811,1837,1840,1845,1848,1852,1855,1860,1863,1866,1869,1872,1877,1882,1887,1892,1895,1900,1905,1908,1913,1916,1924,1927,1932,1937,1940,1945,1950,1955,2302,2307,2312,2317,2322,2325,2330,2335,2343,2348,2356,2359,2363,2366,2371,2374,2379,2384,2389,2394,2399,2402,2407,2410,2433,2438,2443,2448,2451,2456,2459,2464,2467,2470,2475,2478,2483,2536,2541,2546,2551,2968,2971,3506,3510,3513,3518,3521,3529,3532,3535,3543,3546,3550,3555,3558,3561,3564,3569,3572,3579,3687,3690,3693,3704,3725,3728,3736,3773,3785,3788,3793,3994,3999,4027,4032,4037,4040,4045,4050,4055,4060,4068,4071,4079,4082,4090,4093,4101,4104,4112,4115,4120,4123,4128,4133,4141,4148,4153,4344,4347,4352,4355,4358,4366,4369,4374,4379,4384,4387,4390,4395,4398,4401,4406,4411,4414,4419,4422,4427,4430,4435,4440,4443,4446,4449,4454,4487,4490,4696,4701,4704,4709,4712,4715,4720,4723,4728,4731,4736,4739,4744,4749,4752,4755,4760,4763,4766,4771,4774,4779,4784,4789,4794,4799,4804,4809,4812,4817,4820,4825,4828,4833,4836,4841,4844,4849,4852,4857,4860,4865,4868,4912,4917,4922,4925,4930,4933,4938,4946,4949,4954,4959,4964,4967,4972,4975,4983,5000,5005,5010,5013,5018,5021,5454,5457,5460,5465,5473,5476,5479,5484,5487,5490,5495,5498,5501,5504,5507,5512,5517,5522,5527,5603,5681,5684,5692,5695,5698,6270,6273,6278,6281,6286,7581,7584,7612,7617,7621,7624,7638,7644,7650,7657,7660,7672,7675,7680,7683,7688,7691,7696,7702,7709,7711,7722,7725,7730,7733,7745,7750,7757,7762,7767,7772,7777,7780,7784,7787,7790,7795,7798,7801,7807,7810,7816,7819,7824,7827,7832,7837,7842,7845,7850,7855,7860,7865,7870,7875,7878,7882,7887,7894,7899,7904,7909,7912,7917,7920,7925,7930,7933,7938,7943,7948,7953,7956,7961,7969,7972,7975,7980,7983,7986,7989,7994,7999,8004,8009,8014,8019,8022,8027,8030,8035,8038,8043,8048,8053,8058,8063,8068,8071,8075,8080,8085,8090,8095,8162,8167,8175,8178,8183,8191,8196,8201,8204,8230,8233,8298,8301,8548,8551,8848,8853,8856,8861,9366,9371,9374,9377,9385,9388,9393,9396,9401,9406,9409,9414,9417,11917,11922,11938,11943,11948,11953,11964,11969,11974,11989,11994,11999,12004,12009,12014,12022,12027,12030,12035,12038,12042,12045,12048,12051,12056,12061,12066,12069,12072,12079,12087,12090,12101,12105,12108,12111,12114,12119,12122,12126,12131,12134,12146,12153,12158,12161,12164,12169,12172,12175,12178,12214,12217,12224,12227,12230,12583,12588,12591,12594,12597,12600,12637,12640,13211,13214,13219,13222,13230,13233,13236,13258,13261,13340,13405,13410,13415,13418,13421,13423,13429,13434,13437,13440,13443,13446,13460,13463,13541,13544,13547,14451,14454,14457,14808,14811,14814,15189,15192,15195,15294,15297,15302,15305,15310,15313],[10,11,12],"h3",{"id":12},"可视化简介",[14,15,16],"p",{},[17,18],"img",{"alt":19,"src":20},"","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1353.webp",[14,22,23],{},[17,24],{"alt":19,"src":25},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1354.webp",[14,27,28],{},[17,29],{"alt":19,"src":30},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1355.webp",[14,32,33],{},"坐标相关、激光雷达相关、摄像头相关的rviz2插件",[14,35,36],{},[17,37],{"alt":19,"src":38},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1356.webp",[14,40,41],{},[17,42],{"alt":19,"src":43},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1357.webp",[14,45,46],{},[17,47],{"alt":19,"src":48},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1358.webp",[14,50,51],{},[17,52],{"alt":19,"src":53},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1359.webp",[14,55,56],{},[17,57],{"alt":19,"src":58},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1360.webp",[10,60,61],{"id":61},"rviz2基本使用",[14,63,64],{},[17,65],{"alt":19,"src":66},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1361.webp",[14,68,69,70,74],{},"以",[71,72,73],"code",{},"sudo apt install ros-[ROS_DISTRO]-desktop","格式安装ROS2时，RViz已经默认被安装了。",[76,77,81],"pre",{"className":78,"code":79,"language":80,"meta":19,"style":19},"language-bash shiki shiki-themes github-light github-dark","sudo apt install ros-[ROS_DISTRO]-rviz2\n","bash",[71,82,83],{"__ignoreMap":19},[84,85,88,92,96,99],"span",{"class":86,"line":87},"line",1,[84,89,91],{"class":90},"sScJk","sudo",[84,93,95],{"class":94},"sZZnC"," apt",[84,97,98],{"class":94}," install",[84,100,101],{"class":94}," ros-[ROS_DISTRO]-rviz2\n",[14,103,104,108],{},[105,106,107],"strong",{},"备注："," 命令中的 [ROS_DISTRO] 指代ROS2版本。",[14,110,111],{},[17,112],{"alt":19,"src":113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1362.webp",[14,115,116,117,120],{},"方式1：",[71,118,119],{},"rviz2","；",[14,122,123,124,127],{},"方式2：",[71,125,126],{},"ros2 run rviz2 rviz2","。",[14,129,130],{},[17,131],{"alt":19,"src":132},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1363.webp",[14,134,135],{},[105,136,137],{},"rviz2 启动之后，默认界面如下：",[139,140,141,145,148,151,154],"ol",{},[142,143,144],"li",{},"上部为工具栏：包括视角控制、预估位姿设置、目标设置等，还可以添加自定义插件；",[142,146,147],{},"左侧为插件显示区：包括添加、删除、复制、重命名插件，显示插件，以及设置插件属性等功能；",[142,149,150],{},"中间为3D试图显示区：以可视化的方式显示添加的插件信息；",[142,152,153],{},"右侧为观测视角设置区：可以设置不同的观测视角；",[142,155,156],{},"下侧为时间显示区：包括系统时间和ROS时间。",[14,158,159],{},[105,160,161],{},"左侧插件显示区默认有两个插件：",[163,164,165,168],"ul",{},[142,166,167],{},"Global Options：该插件用于设置全局显示相关的参数，一般情况下，需要自行设置的是 Fixed Frame 选项，该选项是其他所有数据在可视化显示时所参考的全局坐标系；",[142,169,170],{},"Global Status：该插件用于显示在 Global Options 设置完毕 Fixed Frame 之后，所有的坐标变换是否正常。",[14,172,173],{},[17,174],{"alt":19,"src":175},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1364.webp",[14,177,178],{},"最上面是菜单区，左侧是插件显示区，中间是3D调试区，右侧是视角切换区域，最下方是时间区ROS Time是ROS2时间，Wall Time是系统时间，Elapsed是Rviz2运行的时间。",[14,180,181],{},[17,182],{"alt":19,"src":183},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1365.webp",[14,185,186],{},"可以保存rviz2的配置，也可以打开配置",[14,188,189],{},[17,190],{"alt":19,"src":191},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1366.webp",[14,193,194],{},"设置显示面板",[14,196,197],{},[17,198],{"alt":19,"src":199},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1367.webp",[14,201,202],{},"可以设置平面网格的个数",[14,204,205],{},[17,206],{"alt":19,"src":207},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1368.webp",[14,209,210],{},"可以设置竖直方向网格的个数",[14,212,213],{},[17,214],{"alt":19,"src":215},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1369.webp",[14,217,218],{},"可以设置网格边长是多大",[14,220,221],{},[17,222],{"alt":19,"src":223},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1370.webp",[14,225,226],{},"改变sRGB的4个通道",[14,228,229],{},[17,230],{"alt":19,"src":231},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1371.webp",[14,233,234],{},"可以改变视角",[14,236,237],{},[17,238],{"alt":19,"src":239},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1372.webp",[14,241,242],{},"设置偏移量，如果Z是-1，那么网格会相对于坐标系下沉1个单位",[14,244,245],{},[17,246],{"alt":19,"src":247},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1373.webp",[14,249,250],{},"Fixed name一般是根坐标系的名称",[14,252,253],{},"background color就是背景色",[14,255,256],{},"frame rate是坐标系的发布频率",[14,258,259],{},[17,260],{"alt":19,"src":261},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1374.webp",[14,263,264],{},"全局状态，当fixed name设置对后，就无警告了",[14,266,267],{},[17,268],{"alt":19,"src":269},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1375.webp",[14,271,272],{},"视角切换(一般默认)",[14,274,275],{},[17,276],{"alt":19,"src":277},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1376.webp",[14,279,280],{},"可以翻转Z轴",[14,282,283],{},[105,284,285],{},"常用插件：",[287,288,289,309],"table",{},[290,291,292],"thead",{},[293,294,295,300,303,306],"tr",{},[296,297,299],"th",{"align":298},"left","序号",[296,301,302],{"align":298},"名称",[296,304,305],{"align":298},"功能",[296,307,308],{"align":298},"消息类型",[310,311,312,326,340,353,367,381,395,409,423,437,451,465,479,493,507,521,535,549,562,575,589],"tbody",{},[293,313,314,318,321,324],{},[315,316,317],"td",{"align":298},"1",[315,319,320],{"align":298},"Axes",[315,322,323],{"align":298},"显示 rviz2 默认的坐标系。",[315,325],{"align":298},[293,327,328,331,334,337],{},[315,329,330],{"align":298},"2",[315,332,333],{"align":298},"Camera",[315,335,336],{"align":298},"显示相机图像，必须需要使用消息：CameraInfo。",[315,338,339],{"align":298},"sensor_msgs\u002Fmsg\u002FImage，sensor_msgs\u002Fmsg\u002FCameraInfo",[293,341,342,345,348,351],{},[315,343,344],{"align":298},"3",[315,346,347],{"align":298},"Grid",[315,349,350],{"align":298},"显示以参考坐标系原点为中心的网格。",[315,352],{"align":298},[293,354,355,358,361,364],{},[315,356,357],{"align":298},"4",[315,359,360],{"align":298},"Grid Cells",[315,362,363],{"align":298},"从网格中绘制单元格，通常是导航堆栈中成本地图中的障碍物。",[315,365,366],{"align":298},"nav_msgs\u002Fmsg\u002FGridCells",[293,368,369,372,375,378],{},[315,370,371],{"align":298},"5",[315,373,374],{"align":298},"Image",[315,376,377],{"align":298},"显示相机图像，但是和Camera插件不同，它不需要使用 CameraInfo 消息。",[315,379,380],{"align":298},"sensor_msgs\u002Fmsg\u002FImage",[293,382,383,386,389,392],{},[315,384,385],{"align":298},"6",[315,387,388],{"align":298},"InteractiveMarker",[315,390,391],{"align":298},"显示来自一个或多个交互式标记服务器的 3D 对象，并允许与它们进行鼠标交互。",[315,393,394],{"align":298},"visualization_msgs\u002Fmsg\u002FInteractiveMarker",[293,396,397,400,403,406],{},[315,398,399],{"align":298},"7",[315,401,402],{"align":298},"Laser Scan",[315,404,405],{"align":298},"显示激光雷达数据。",[315,407,408],{"align":298},"sensor_msgs\u002Fmsg\u002FLaserScan",[293,410,411,414,417,420],{},[315,412,413],{"align":298},"8",[315,415,416],{"align":298},"Map",[315,418,419],{"align":298},"显示地图数据。",[315,421,422],{"align":298},"nav_msgs\u002Fmsg\u002FOccupancyGrid",[293,424,425,428,431,434],{},[315,426,427],{"align":298},"9",[315,429,430],{"align":298},"Markers",[315,432,433],{"align":298},"允许开发者通过主题显示任意原始形状的几何体。",[315,435,436],{"align":298},"visualization_msgs\u002Fmsg\u002FMarker，visualization_msgs\u002Fmsg\u002FMarkerArray",[293,438,439,442,445,448],{},[315,440,441],{"align":298},"10",[315,443,444],{"align":298},"Path",[315,446,447],{"align":298},"显示机器人导航中的路径相关数据。",[315,449,450],{"align":298},"nav_msgs\u002Fmsg\u002FPath",[293,452,453,456,459,462],{},[315,454,455],{"align":298},"11",[315,457,458],{"align":298},"PointStamped",[315,460,461],{"align":298},"以小球的形式绘制一个点。",[315,463,464],{"align":298},"geometry_msgs\u002Fmsg\u002FPointStamped",[293,466,467,470,473,476],{},[315,468,469],{"align":298},"12",[315,471,472],{"align":298},"Pose",[315,474,475],{"align":298},"以箭头或坐标轴的方式绘制位姿。",[315,477,478],{"align":298},"geometry_msgs\u002Fmsg\u002FPoseStamped",[293,480,481,484,487,490],{},[315,482,483],{"align":298},"13",[315,485,486],{"align":298},"Pose Array",[315,488,489],{"align":298},"绘制一组 Pose。",[315,491,492],{"align":298},"geometry_msgs\u002Fmsg\u002FPoseArray",[293,494,495,498,501,504],{},[315,496,497],{"align":298},"14",[315,499,500],{"align":298},"Point Cloud2",[315,502,503],{"align":298},"绘制点云数据。",[315,505,506],{"align":298},"sensor_msgs\u002Fmsg\u002FPointCloud，sensor_msgs\u002Fmsg\u002FPointCloud2",[293,508,509,512,515,518],{},[315,510,511],{"align":298},"15",[315,513,514],{"align":298},"Polygon",[315,516,517],{"align":298},"将多边形的轮廓绘制为线。",[315,519,520],{"align":298},"geometry_msgs\u002Fmsg\u002FPolygon",[293,522,523,526,529,532],{},[315,524,525],{"align":298},"16",[315,527,528],{"align":298},"Odometry",[315,530,531],{"align":298},"显示随着时间推移累积的里程计消息。",[315,533,534],{"align":298},"nav_msgs\u002Fmsg\u002FOdometry",[293,536,537,540,543,546],{},[315,538,539],{"align":298},"17",[315,541,542],{"align":298},"Range",[315,544,545],{"align":298},"显示表示来自声纳或红外距离传感器的距离测量值的圆锥。",[315,547,548],{"align":298},"sensor_msgs\u002Fmsg\u002FRange",[293,550,551,554,557,560],{},[315,552,553],{"align":298},"18",[315,555,556],{"align":298},"RobotModel",[315,558,559],{"align":298},"显示机器人模型。",[315,561],{"align":298},[293,563,564,567,570,573],{},[315,565,566],{"align":298},"19",[315,568,569],{"align":298},"TF",[315,571,572],{"align":298},"显示 tf 变换层次结构。",[315,574],{"align":298},[293,576,577,580,583,586],{},[315,578,579],{"align":298},"20",[315,581,582],{"align":298},"Wrench",[315,584,585],{"align":298},"将geometry_msgs \u002FWrenchStamped消息显示为表示力的箭头和表示扭矩的箭头加圆圈。",[315,587,588],{"align":298},"geometry_msgs\u002Fmsg\u002FWrenchStamped",[293,590,591,594,597,600],{},[315,592,593],{"align":298},"21",[315,595,596],{"align":298},"Oculus",[315,598,599],{"align":298},"将 RViz 场景渲染到 Oculus 头戴设备。",[315,601],{"align":298},[14,603,604],{},"上述每一种插件又包含了诸多属性，可以通过设置插件属性来控制插件的最终显示效果。",[14,606,607],{},[17,608],{"alt":19,"src":609},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1377.webp",[14,611,612],{},"Image是摄像头数据插件",[14,614,615],{},"LaserScan是激光雷达数据插件",[14,617,618],{},"TF是坐标变换插件",[14,620,621],{},"RobotModel是机器人模型插件",[76,623,627],{"className":624,"code":625,"language":626,"meta":19,"style":19},"language-TypeScript shiki shiki-themes github-light github-dark","ros2 run rviz2 rviz2 -d xxx.rviz\n#可以读取自己保存的rviz配置\n","TypeScript",[71,628,629,642],{"__ignoreMap":19},[84,630,631,635,639],{"class":86,"line":87},[84,632,634],{"class":633},"sVt8B","ros2 run rviz2 rviz2 ",[84,636,638],{"class":637},"szBVR","-",[84,640,641],{"class":633},"d xxx.rviz\n",[84,643,645],{"class":86,"line":644},2,[84,646,647],{"class":633},"#可以读取自己保存的rviz配置\n",[10,649,651],{"id":650},"rviz2集成urdf基本流程","rviz2集成URDF基本流程",[653,654,656],"h4",{"id":655},"案例分析","  案例分析",[14,658,659],{},[17,660],{"alt":19,"src":661},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1378.webp",[14,663,664],{},[17,665],{"alt":19,"src":666},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1379.webp",[14,668,669],{},[17,670],{"alt":19,"src":671},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1380.webp",[14,673,674],{},[17,675],{"alt":19,"src":676},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1381.webp",[14,678,679],{},[17,680],{"alt":19,"src":681},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1382.webp",[14,683,684],{},"请调用如下命令，安装案例所需的两个功能包(可以控制机器人关节运动)：",[76,686,688],{"className":78,"code":687,"language":80,"meta":19,"style":19},"sudo apt install ros-humble-joint-state-publisher\nsudo apt install ros-humble-joint-state-publisher-gui\n",[71,689,690,701],{"__ignoreMap":19},[84,691,692,694,696,698],{"class":86,"line":87},[84,693,91],{"class":90},[84,695,95],{"class":94},[84,697,98],{"class":94},[84,699,700],{"class":94}," ros-humble-joint-state-publisher\n",[84,702,703,705,707,709],{"class":86,"line":644},[84,704,91],{"class":90},[84,706,95],{"class":94},[84,708,98],{"class":94},[84,710,711],{"class":94}," ros-humble-joint-state-publisher-gui\n",[14,713,714],{},"终端下进入工作空间的src目录，调用如下命令创建C++功能包。",[76,716,718],{"className":78,"code":717,"language":80,"meta":19,"style":19},"ros2 pkg create cpp06_urdf --build-type ament_cmake\n",[71,719,720],{"__ignoreMap":19},[84,721,722,725,728,731,734,738],{"class":86,"line":87},[84,723,724],{"class":90},"ros2",[84,726,727],{"class":94}," pkg",[84,729,730],{"class":94}," create",[84,732,733],{"class":94}," cpp06_urdf",[84,735,737],{"class":736},"sj4cs"," --build-type",[84,739,740],{"class":94}," ament_cmake\n",[14,742,743],{},"功能包下新建 urdf、rviz、launch、meshes目录以备用，其中 urdf 目录下再新建子目录 urdf 与 xacro，分别用于存储 urdf 文件和 xacro 文件。",[14,745,746],{},[17,747],{"alt":19,"src":748},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1383.webp",[14,750,751],{},"launch存放launch文件",[14,753,754],{},"urdf文件里面存放urdf三维模型文件",[14,756,757],{},"meshes存放stl模型",[14,759,760],{},"xacro可以简化urdf文件，并且增强其灵活性",[14,762,763],{},"rviz存放rviz2的配置",[653,765,767],{"id":766},"框架搭建","  框架搭建",[14,769,770],{},[17,771],{"alt":19,"src":772},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1384.webp",[76,774,778],{"className":775,"code":776,"language":777,"meta":19,"style":19},"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",[71,779,780,786,798,810,822,833,854,864,874,884],{"__ignoreMap":19},[84,781,782],{"class":86,"line":87},[84,783,785],{"emptyLinePlaceholder":784},true,"\n",[84,787,788,791,795],{"class":86,"line":644},[84,789,790],{"class":633}," \u003C",[84,792,794],{"class":793},"s9eBZ","robot",[84,796,797],{"class":633},"> name=\"hello_world\"\n",[84,799,801,804,807],{"class":86,"line":800},3,[84,802,803],{"class":633},"   \u003C",[84,805,806],{"class":793},"link",[84,808,809],{"class":633},"> name=\"base_link\"\n",[84,811,813,816,819],{"class":86,"line":812},4,[84,814,815],{"class":633},"     \u003C",[84,817,818],{"class":793},"visual",[84,820,821],{"class":633},">\n",[84,823,825,828,831],{"class":86,"line":824},5,[84,826,827],{"class":633},"       \u003C",[84,829,830],{"class":793},"geometry",[84,832,821],{"class":633},[84,834,836,839,842,845,848,851],{"class":86,"line":835},6,[84,837,838],{"class":633},"         \u003C",[84,840,841],{"class":793},"box",[84,843,844],{"class":90}," size",[84,846,847],{"class":633},"=",[84,849,850],{"class":94},"\"0.5 0.2 0.1\"",[84,852,853],{"class":633},"\u002F>\n",[84,855,857,860,862],{"class":86,"line":856},7,[84,858,859],{"class":633},"       \u003C\u002F",[84,861,830],{"class":793},[84,863,821],{"class":633},[84,865,867,870,872],{"class":86,"line":866},8,[84,868,869],{"class":633},"     \u003C\u002F",[84,871,818],{"class":793},[84,873,821],{"class":633},[84,875,877,880,882],{"class":86,"line":876},9,[84,878,879],{"class":633},"   \u003C\u002F",[84,881,806],{"class":793},[84,883,821],{"class":633},[84,885,887,890,892],{"class":86,"line":886},10,[84,888,889],{"class":633}," \u003C\u002F",[84,891,794],{"class":793},[84,893,821],{"class":633},[14,895,896],{},"  标准的XML文件",[14,898,899],{},[17,900],{"alt":19,"src":901},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1385.webp",[14,903,904],{},[17,905],{"alt":19,"src":906},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1386.webp",[76,908,912],{"className":909,"code":910,"language":911,"meta":19,"style":19},"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",[71,913,914,928,940,947,959,971,983,995,999,1005,1016,1021,1038,1060,1080,1111,1116,1122,1127,1133,1155,1166,1180,1192,1209,1215,1220,1226,1236,1248,1258,1263,1268,1274,1284,1296,1306,1311,1317,1322,1331,1337,1343,1349,1355],{"__ignoreMap":19},[84,915,916,919,922,925],{"class":86,"line":87},[84,917,918],{"class":637},"from",[84,920,921],{"class":633}," launch ",[84,923,924],{"class":637},"import",[84,926,927],{"class":633}," LaunchDescription\n",[84,929,930,932,935,937],{"class":86,"line":644},[84,931,918],{"class":637},[84,933,934],{"class":633}," launch_ros.actions ",[84,936,924],{"class":637},[84,938,939],{"class":633}," Node\n",[84,941,942,944],{"class":86,"line":800},[84,943,924],{"class":637},[84,945,946],{"class":633}," os\n",[84,948,949,951,954,956],{"class":86,"line":812},[84,950,918],{"class":637},[84,952,953],{"class":633}," ament_index_python.packages ",[84,955,924],{"class":637},[84,957,958],{"class":633}," get_package_share_directory\n",[84,960,961,963,966,968],{"class":86,"line":824},[84,962,918],{"class":637},[84,964,965],{"class":633}," launch_ros.parameter_descriptions ",[84,967,924],{"class":637},[84,969,970],{"class":633}," ParameterValue\n",[84,972,973,975,978,980],{"class":86,"line":835},[84,974,918],{"class":637},[84,976,977],{"class":633}," launch.substitutions ",[84,979,924],{"class":637},[84,981,982],{"class":633}," Command,LaunchConfiguration\n",[84,984,985,987,990,992],{"class":86,"line":856},[84,986,918],{"class":637},[84,988,989],{"class":633}," launch.actions ",[84,991,924],{"class":637},[84,993,994],{"class":633}," DeclareLaunchArgument\n",[84,996,997],{"class":86,"line":866},[84,998,785],{"emptyLinePlaceholder":784},[84,1000,1001],{"class":86,"line":876},[84,1002,1004],{"class":1003},"sJ8bj","#示例：ros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fdemo01_helloworld.urdf\n",[84,1006,1007,1010,1013],{"class":86,"line":886},[84,1008,1009],{"class":637},"def",[84,1011,1012],{"class":90}," generate_launch_description",[84,1014,1015],{"class":633},"():\n",[84,1017,1019],{"class":86,"line":1018},11,[84,1020,785],{"emptyLinePlaceholder":784},[84,1022,1024,1027,1029,1032,1035],{"class":86,"line":1023},12,[84,1025,1026],{"class":633},"    cpp06_urdf_dir ",[84,1028,847],{"class":637},[84,1030,1031],{"class":633}," get_package_share_directory(",[84,1033,1034],{"class":94},"\"cpp06_urdf\"",[84,1036,1037],{"class":633},")\n",[84,1039,1041,1044,1046,1049,1052,1055,1058],{"class":86,"line":1040},13,[84,1042,1043],{"class":633},"    default_model_path ",[84,1045,847],{"class":637},[84,1047,1048],{"class":633}," os.path.join(cpp06_urdf_dir,",[84,1050,1051],{"class":94},"\"urdf\u002Furdf\"",[84,1053,1054],{"class":633},",",[84,1056,1057],{"class":94},"\"demo01_helloworld.urdf\"",[84,1059,1037],{"class":633},[84,1061,1063,1066,1068,1070,1073,1075,1078],{"class":86,"line":1062},14,[84,1064,1065],{"class":633},"    default_rviz_path ",[84,1067,847],{"class":637},[84,1069,1048],{"class":633},[84,1071,1072],{"class":94},"\"rviz\"",[84,1074,1054],{"class":633},[84,1076,1077],{"class":94},"\"display.rviz\"",[84,1079,1037],{"class":633},[84,1081,1083,1086,1088,1091,1095,1097,1100,1103,1106,1108],{"class":86,"line":1082},15,[84,1084,1085],{"class":633},"    model ",[84,1087,847],{"class":637},[84,1089,1090],{"class":633}," DeclareLaunchArgument(",[84,1092,1094],{"class":1093},"s4XuR","name",[84,1096,847],{"class":637},[84,1098,1099],{"class":94},"\"model\"",[84,1101,1102],{"class":633},", ",[84,1104,1105],{"class":1093},"default_value",[84,1107,847],{"class":637},[84,1109,1110],{"class":633},"default_model_path)\n",[84,1112,1114],{"class":86,"line":1113},16,[84,1115,785],{"emptyLinePlaceholder":784},[84,1117,1119],{"class":86,"line":1118},17,[84,1120,1121],{"class":1003},"    # 加载机器人模型\n",[84,1123,1125],{"class":86,"line":1124},18,[84,1126,785],{"emptyLinePlaceholder":784},[84,1128,1130],{"class":86,"line":1129},19,[84,1131,1132],{"class":1003},"    # 1.启动 robot_state_publisher 节点并以参数方式加载 urdf 文件\n",[84,1134,1136,1139,1141,1144,1147,1150,1152],{"class":86,"line":1135},20,[84,1137,1138],{"class":633},"    robot_description ",[84,1140,847],{"class":637},[84,1142,1143],{"class":633}," ParameterValue(Command([",[84,1145,1146],{"class":94},"\"xacro \"",[84,1148,1149],{"class":633},",LaunchConfiguration(",[84,1151,1099],{"class":94},[84,1153,1154],{"class":633},")]))\n",[84,1156,1158,1161,1163],{"class":86,"line":1157},21,[84,1159,1160],{"class":633},"    robot_state_publisher ",[84,1162,847],{"class":637},[84,1164,1165],{"class":633}," Node(\n",[84,1167,1169,1172,1174,1177],{"class":86,"line":1168},22,[84,1170,1171],{"class":1093},"        package",[84,1173,847],{"class":637},[84,1175,1176],{"class":94},"\"robot_state_publisher\"",[84,1178,1179],{"class":633},",\n",[84,1181,1183,1186,1188,1190],{"class":86,"line":1182},23,[84,1184,1185],{"class":1093},"        executable",[84,1187,847],{"class":637},[84,1189,1176],{"class":94},[84,1191,1179],{"class":633},[84,1193,1195,1198,1200,1203,1206],{"class":86,"line":1194},24,[84,1196,1197],{"class":1093},"        parameters",[84,1199,847],{"class":637},[84,1201,1202],{"class":633},"[{",[84,1204,1205],{"class":94},"\"robot_description\"",[84,1207,1208],{"class":633},": robot_description}]\n",[84,1210,1212],{"class":86,"line":1211},25,[84,1213,1214],{"class":633},"    )\n",[84,1216,1218],{"class":86,"line":1217},26,[84,1219,785],{"emptyLinePlaceholder":784},[84,1221,1223],{"class":86,"line":1222},27,[84,1224,1225],{"class":1003},"    # 2.启动 joint_state_publisher 节点发布非固定关节状态\n",[84,1227,1229,1232,1234],{"class":86,"line":1228},28,[84,1230,1231],{"class":633},"    joint_state_publisher ",[84,1233,847],{"class":637},[84,1235,1165],{"class":633},[84,1237,1239,1241,1243,1246],{"class":86,"line":1238},29,[84,1240,1171],{"class":1093},[84,1242,847],{"class":637},[84,1244,1245],{"class":94},"\"joint_state_publisher\"",[84,1247,1179],{"class":633},[84,1249,1251,1253,1255],{"class":86,"line":1250},30,[84,1252,1185],{"class":1093},[84,1254,847],{"class":637},[84,1256,1257],{"class":94},"\"joint_state_publisher\"\n",[84,1259,1261],{"class":86,"line":1260},31,[84,1262,1214],{"class":633},[84,1264,1266],{"class":86,"line":1265},32,[84,1267,785],{"emptyLinePlaceholder":784},[84,1269,1271],{"class":86,"line":1270},33,[84,1272,1273],{"class":1003},"    # rviz2 节点\n",[84,1275,1277,1280,1282],{"class":86,"line":1276},34,[84,1278,1279],{"class":633},"    rviz2 ",[84,1281,847],{"class":637},[84,1283,1165],{"class":633},[84,1285,1287,1289,1291,1294],{"class":86,"line":1286},35,[84,1288,1171],{"class":1093},[84,1290,847],{"class":637},[84,1292,1293],{"class":94},"\"rviz2\"",[84,1295,1179],{"class":633},[84,1297,1299,1301,1303],{"class":86,"line":1298},36,[84,1300,1185],{"class":1093},[84,1302,847],{"class":637},[84,1304,1305],{"class":94},"\"rviz2\"\n",[84,1307,1309],{"class":86,"line":1308},37,[84,1310,785],{"emptyLinePlaceholder":784},[84,1312,1314],{"class":86,"line":1313},38,[84,1315,1316],{"class":1003},"        # arguments=[\"-d\", default_rviz_path]\n",[84,1318,1320],{"class":86,"line":1319},39,[84,1321,1214],{"class":633},[84,1323,1325,1328],{"class":86,"line":1324},40,[84,1326,1327],{"class":637},"    return",[84,1329,1330],{"class":633}," LaunchDescription([\n",[84,1332,1334],{"class":86,"line":1333},41,[84,1335,1336],{"class":633},"        model,\n",[84,1338,1340],{"class":86,"line":1339},42,[84,1341,1342],{"class":633},"        robot_state_publisher,\n",[84,1344,1346],{"class":86,"line":1345},43,[84,1347,1348],{"class":633},"        joint_state_publisher,\n",[84,1350,1352],{"class":86,"line":1351},44,[84,1353,1354],{"class":633},"        rviz2\n",[84,1356,1358],{"class":86,"line":1357},45,[84,1359,1360],{"class":633},"    ])\n",[14,1362,1363],{},[17,1364],{"alt":19,"src":1365},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1387.webp",[76,1367,1369],{"className":775,"code":1368,"language":777,"meta":19,"style":19},"\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",[71,1370,1371,1386,1399,1412,1425],{"__ignoreMap":19},[84,1372,1373,1376,1379,1382,1384],{"class":86,"line":87},[84,1374,1375],{"class":633},"\u003C",[84,1377,1378],{"class":793},"exec_depend",[84,1380,1381],{"class":633},">rviz2\u003C\u002F",[84,1383,1378],{"class":793},[84,1385,821],{"class":633},[84,1387,1388,1390,1392,1395,1397],{"class":86,"line":644},[84,1389,1375],{"class":633},[84,1391,1378],{"class":793},[84,1393,1394],{"class":633},">xacro\u003C\u002F",[84,1396,1378],{"class":793},[84,1398,821],{"class":633},[84,1400,1401,1403,1405,1408,1410],{"class":86,"line":800},[84,1402,1375],{"class":633},[84,1404,1378],{"class":793},[84,1406,1407],{"class":633},">robot_state_publisher\u003C\u002F",[84,1409,1378],{"class":793},[84,1411,821],{"class":633},[84,1413,1414,1416,1418,1421,1423],{"class":86,"line":812},[84,1415,1375],{"class":633},[84,1417,1378],{"class":793},[84,1419,1420],{"class":633},">joint_state_publisher\u003C\u002F",[84,1422,1378],{"class":793},[84,1424,821],{"class":633},[84,1426,1427,1429,1431,1434,1436],{"class":86,"line":824},[84,1428,1375],{"class":633},[84,1430,1378],{"class":793},[84,1432,1433],{"class":633},">ros2launch\u003C\u002F",[84,1435,1378],{"class":793},[84,1437,821],{"class":633},[14,1439,1440],{},[17,1441],{"alt":19,"src":1442},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1388.webp",[76,1444,1448],{"className":1445,"code":1446,"language":1447,"meta":19,"style":19},"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",[71,1449,1450,1458,1463,1474],{"__ignoreMap":19},[84,1451,1452,1455],{"class":86,"line":87},[84,1453,1454],{"class":637},"install",[84,1456,1457],{"class":633},"(\n",[84,1459,1460],{"class":86,"line":644},[84,1461,1462],{"class":633},"  DIRECTORY launch urdf rviz meshes\n",[84,1464,1465,1468,1471],{"class":86,"line":800},[84,1466,1467],{"class":633},"  DESTINATION share\u002F",[84,1469,1470],{"class":637},"${PROJECT_NAME}",[84,1472,1473],{"class":633},"  \n",[84,1475,1476],{"class":86,"line":812},[84,1477,1037],{"class":633},[14,1479,1480],{},[17,1481],{"alt":19,"src":1482},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1389.webp",[76,1484,1486],{"className":78,"code":1485,"language":80,"meta":19,"style":19},"colcon build --packages-select cpp06_urdf\n",[71,1487,1488],{"__ignoreMap":19},[84,1489,1490,1493,1496,1499],{"class":86,"line":87},[84,1491,1492],{"class":90},"colcon",[84,1494,1495],{"class":94}," build",[84,1497,1498],{"class":736}," --packages-select",[84,1500,1501],{"class":94}," cpp06_urdf\n",[14,1503,1504],{},[17,1505],{"alt":19,"src":1506},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1390.webp",[76,1508,1510],{"className":78,"code":1509,"language":80,"meta":19,"style":19},"source install\u002Fsetup.bash\nros2 launch cpp06_urdf display.launch.py\n",[71,1511,1512,1520],{"__ignoreMap":19},[84,1513,1514,1517],{"class":86,"line":87},[84,1515,1516],{"class":736},"source",[84,1518,1519],{"class":94}," install\u002Fsetup.bash\n",[84,1521,1522,1524,1527,1529],{"class":86,"line":644},[84,1523,724],{"class":90},[84,1525,1526],{"class":94}," launch",[84,1528,733],{"class":94},[84,1530,1531],{"class":94}," display.launch.py\n",[14,1533,1534],{},[17,1535],{"alt":19,"src":1536},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1391.webp",[14,1538,1539,1540],{},"   ",[105,1541,1542],{},"小提示：",[14,1544,1545],{},"  在本章的后续案例中，所有实现都遵循上述步骤，在后续案例中我们只需要关注 urdf 实现即可，launch 文件和 配置文件无需修改。",[14,1547,1548],{},[17,1549],{"alt":19,"src":1550},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1392.webp",[14,1552,1553],{},[17,1554],{"alt":19,"src":1555},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1393.webp",[14,1557,1558,1561],{},[17,1559],{"alt":19,"src":1560},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1394.webp",[17,1562],{"alt":19,"src":1563},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1395.webp",[653,1565,1567],{"id":1566},"urdf文件","  urdf文件",[14,1569,1570],{},"  按ctrl+\\生成注释",[14,1572,1573,1576],{},[17,1574],{"alt":19,"src":1575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1396.webp",[17,1577],{"alt":19,"src":1578},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1397.webp",[14,1580,1581],{},[17,1582],{"alt":19,"src":1583},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1398.webp",[14,1585,1586],{},"因为安装过urdf插件，所以有提示，需要创建robot根标签",[14,1588,1589],{},[17,1590],{"alt":19,"src":1591},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1399.webp",[14,1593,1594],{},"第一个属性为机器人名字",[14,1596,1597],{},[17,1598],{"alt":19,"src":1599},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1400.webp",[14,1601,1602],{},"第二个有个xml namespace，指向xacro",[14,1604,1605,1608],{},[17,1606],{"alt":19,"src":1607},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1401.webp",[17,1609],{"alt":19,"src":1610},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1402.webp",[14,1612,1613],{},"第三个有个xml namespace，指向xacro，然后还有一个机器人名字",[14,1615,1616],{},"(暂时用最简单的，也就是第一个)",[14,1618,1619],{},[17,1620],{"alt":19,"src":1621},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1403.webp",[14,1623,1624],{},"link标签叫连杆，也需要起个名字，连杆一般指刚体部分",[14,1626,1627],{},"link有个子集标签，叫visual",[14,1629,1630],{},"visual标签下要写机器人形状",[14,1632,1633],{},"然后该标签下又有一个子集标签叫geometry(几何形状)",[14,1635,1636],{},"然后又有子集标签叫box(矩形体状)后面的size后面对应长宽高",[14,1638,1639],{},[17,1640],{"alt":19,"src":1641},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1404.webp",[76,1643,1645],{"className":775,"code":1644,"language":777,"meta":19,"style":19},"\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",[71,1646,1647,1651,1668,1672,1688,1692,1701,1705,1714,1718,1734,1743,1752,1761],{"__ignoreMap":19},[84,1648,1649],{"class":86,"line":87},[84,1650,785],{"emptyLinePlaceholder":784},[84,1652,1653,1655,1657,1660,1662,1665],{"class":86,"line":644},[84,1654,790],{"class":633},[84,1656,794],{"class":793},[84,1658,1659],{"class":90}," name",[84,1661,847],{"class":633},[84,1663,1664],{"class":94},"\"boxrobot\"",[84,1666,1667],{"class":633},"> \n",[84,1669,1670],{"class":86,"line":800},[84,1671,785],{"emptyLinePlaceholder":784},[84,1673,1674,1677,1679,1681,1683,1686],{"class":86,"line":812},[84,1675,1676],{"class":633},"    \u003C",[84,1678,806],{"class":793},[84,1680,1659],{"class":90},[84,1682,847],{"class":633},[84,1684,1685],{"class":94},"\"base_link\"",[84,1687,1667],{"class":633},[84,1689,1690],{"class":86,"line":824},[84,1691,785],{"emptyLinePlaceholder":784},[84,1693,1694,1697,1699],{"class":86,"line":835},[84,1695,1696],{"class":633},"      \u003C",[84,1698,818],{"class":793},[84,1700,821],{"class":633},[84,1702,1703],{"class":86,"line":856},[84,1704,785],{"emptyLinePlaceholder":784},[84,1706,1707,1710,1712],{"class":86,"line":866},[84,1708,1709],{"class":633},"        \u003C",[84,1711,830],{"class":793},[84,1713,821],{"class":633},[84,1715,1716],{"class":86,"line":876},[84,1717,785],{"emptyLinePlaceholder":784},[84,1719,1720,1723,1725,1727,1729,1732],{"class":86,"line":886},[84,1721,1722],{"class":633},"          \u003C",[84,1724,841],{"class":793},[84,1726,844],{"class":90},[84,1728,847],{"class":633},[84,1730,1731],{"class":94},"\"1.0 0.5 0.1\"",[84,1733,853],{"class":633},[84,1735,1736,1739,1741],{"class":86,"line":1018},[84,1737,1738],{"class":633},"        \u003C\u002F",[84,1740,830],{"class":793},[84,1742,821],{"class":633},[84,1744,1745,1748,1750],{"class":86,"line":1023},[84,1746,1747],{"class":633},"      \u003C\u002F",[84,1749,818],{"class":793},[84,1751,821],{"class":633},[84,1753,1754,1757,1759],{"class":86,"line":1040},[84,1755,1756],{"class":633},"    \u003C\u002F",[84,1758,806],{"class":793},[84,1760,821],{"class":633},[84,1762,1763,1766,1768],{"class":86,"line":1062},[84,1764,1765],{"class":633},"  \u003C\u002F",[84,1767,794],{"class":793},[84,1769,821],{"class":633},[653,1771,1773],{"id":1772},"xacro工具将磁盘文件加载到ros2中的工具","  xacro工具(将磁盘文件加载到ROS2中的工具)",[14,1775,1776],{},"搜索是否安装过xacro",[76,1778,1780],{"className":78,"code":1779,"language":80,"meta":19,"style":19},"ros2 pkg list | grep -i xacro\n",[71,1781,1782],{"__ignoreMap":19},[84,1783,1784,1786,1788,1791,1794,1797,1800],{"class":86,"line":87},[84,1785,724],{"class":90},[84,1787,727],{"class":94},[84,1789,1790],{"class":94}," list",[84,1792,1793],{"class":637}," |",[84,1795,1796],{"class":90}," grep",[84,1798,1799],{"class":736}," -i",[84,1801,1802],{"class":94}," xacro\n",[14,1804,1805],{},[17,1806],{"alt":19,"src":1807},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1405.webp",[14,1809,1810],{},"如果打印了xacro说明安装了，如果没打印，则要手动安装",[76,1812,1814],{"className":78,"code":1813,"language":80,"meta":19,"style":19},"sudo apt-get update\nsudo apt-get install ros-humble-xacro\n",[71,1815,1816,1826],{"__ignoreMap":19},[84,1817,1818,1820,1823],{"class":86,"line":87},[84,1819,91],{"class":90},[84,1821,1822],{"class":94}," apt-get",[84,1824,1825],{"class":94}," update\n",[84,1827,1828,1830,1832,1834],{"class":86,"line":644},[84,1829,91],{"class":90},[84,1831,1822],{"class":94},[84,1833,98],{"class":94},[84,1835,1836],{"class":94}," ros-humble-xacro\n",[14,1838,1839],{},"使用xacro读取文件",[14,1841,1842],{},[17,1843],{"alt":19,"src":1844},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1406.webp",[14,1846,1847],{},"文件里的内容被输出到了终端，咱们一般集成到launch文件中。咱们在终端里是只能查看内容，但是用launch就可以把文件弄到节点里，也就是集成到ROS2里。",[653,1849,1851],{"id":1850},"launch核心实现","  launch核心实现",[14,1853,1854],{},"核心实现就三步，加载机器人模型，节点发布非固定关节的状态，启动rviz2节点",[14,1856,1857],{},[17,1858],{"alt":19,"src":1859},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1407.webp",[14,1861,1862],{},"创建rviz2节点很简单，就声明下包名，声明下executable。",[14,1864,1865],{},"加载机器人模型比较复杂，加载机器人模型，也要创建一个节点，",[14,1867,1868],{},"然后有参数，参数里有个键叫robot_description，然后这个键对应一个值",[14,1870,1871],{},"值是ParameterValue对象，这个对象里执行了一个指令，叫xacro，然后后面又有一个Launch配置，其实就是urdf文件的路径。",[14,1873,1874],{},[17,1875],{"alt":19,"src":1876},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1408.webp",[14,1878,1879],{},[17,1880],{"alt":19,"src":1881},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1409.webp",[14,1883,1884],{},[17,1885],{"alt":19,"src":1886},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1410.webp",[14,1888,1889],{},[17,1890],{"alt":19,"src":1891},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1411.webp",[14,1893,1894],{},"这个值，其实就是URDF文件里的内容，但是内容太长了，所以我们把它封装成一个对象。",[14,1896,1897],{},[17,1898],{"alt":19,"src":1899},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1412.webp",[14,1901,1902],{},[17,1903],{"alt":19,"src":1904},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1413.webp",[14,1906,1907],{},"命令行，不能直接当对象参数值，所以还要封装",[14,1909,1910],{},[17,1911],{"alt":19,"src":1912},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1414.webp",[14,1914,1915],{},"Comand是专门封装终端指令执行的",[14,1917,1918,1921],{},[17,1919],{"alt":19,"src":1920},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1415.webp",[17,1922],{"alt":19,"src":1923},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1416.webp",[14,1925,1926],{},"记得xacro后面要有空格，这里填路径",[14,1928,1929],{},[17,1930],{"alt":19,"src":1931},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1417.webp",[14,1933,1934],{},[17,1935],{"alt":19,"src":1936},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1418.webp",[14,1938,1939],{},"此时已经定位到cpp06_urdf的share路径下的cpp06_urdf路径了，返回的也就是该路径的字符串",[14,1941,1942],{},[17,1943],{"alt":19,"src":1944},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1419.webp",[14,1946,1947],{},[17,1948],{"alt":19,"src":1949},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1420.webp",[14,1951,1952],{},[17,1953],{"alt":19,"src":1954},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1421.webp",[76,1956,1958],{"className":909,"code":1957,"language":911,"meta":19,"style":19},"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",[71,1959,1960,1970,1980,1984,1989,1993,1998,2002,2007,2011,2016,2020,2025,2029,2034,2038,2043,2047,2052,2056,2061,2065,2070,2074,2079,2083,2088,2092,2097,2101,2106,2110,2115,2119,2124,2134,2138,2148,2159,2163,2191,2200,2211,2222,2236,2240,2245,2255,2266,2275,2280,2285,2294],{"__ignoreMap":19},[84,1961,1962,1964,1966,1968],{"class":86,"line":87},[84,1963,918],{"class":637},[84,1965,921],{"class":633},[84,1967,924],{"class":637},[84,1969,927],{"class":633},[84,1971,1972,1974,1976,1978],{"class":86,"line":644},[84,1973,918],{"class":637},[84,1975,934],{"class":633},[84,1977,924],{"class":637},[84,1979,939],{"class":633},[84,1981,1982],{"class":86,"line":800},[84,1983,785],{"emptyLinePlaceholder":784},[84,1985,1986],{"class":86,"line":812},[84,1987,1988],{"class":1003},"# 封装终端指令相关类\n",[84,1990,1991],{"class":86,"line":824},[84,1992,785],{"emptyLinePlaceholder":784},[84,1994,1995],{"class":86,"line":835},[84,1996,1997],{"class":1003},"# from launch.actions import ExecuteProcess\n",[84,1999,2000],{"class":86,"line":856},[84,2001,785],{"emptyLinePlaceholder":784},[84,2003,2004],{"class":86,"line":866},[84,2005,2006],{"class":1003},"# from launch.substitutions import FindExecutable\n",[84,2008,2009],{"class":86,"line":876},[84,2010,785],{"emptyLinePlaceholder":784},[84,2012,2013],{"class":86,"line":886},[84,2014,2015],{"class":1003},"# 参数声明与获取\n",[84,2017,2018],{"class":86,"line":1018},[84,2019,785],{"emptyLinePlaceholder":784},[84,2021,2022],{"class":86,"line":1023},[84,2023,2024],{"class":1003},"# from launch.actions import DeclareLaunchArgument\n",[84,2026,2027],{"class":86,"line":1040},[84,2028,785],{"emptyLinePlaceholder":784},[84,2030,2031],{"class":86,"line":1062},[84,2032,2033],{"class":1003},"# from launch.substitutions import LaunchConfiguration\n",[84,2035,2036],{"class":86,"line":1082},[84,2037,785],{"emptyLinePlaceholder":784},[84,2039,2040],{"class":86,"line":1113},[84,2041,2042],{"class":1003},"# 文件包含相关\n",[84,2044,2045],{"class":86,"line":1118},[84,2046,785],{"emptyLinePlaceholder":784},[84,2048,2049],{"class":86,"line":1124},[84,2050,2051],{"class":1003},"# from launch.actions import IncludeLaunchDescription\n",[84,2053,2054],{"class":86,"line":1129},[84,2055,785],{"emptyLinePlaceholder":784},[84,2057,2058],{"class":86,"line":1135},[84,2059,2060],{"class":1003},"# from launch.launch_description_sources import PythonLaunchDescriptionSource\n",[84,2062,2063],{"class":86,"line":1157},[84,2064,785],{"emptyLinePlaceholder":784},[84,2066,2067],{"class":86,"line":1168},[84,2068,2069],{"class":1003},"# 分组相关\n",[84,2071,2072],{"class":86,"line":1182},[84,2073,785],{"emptyLinePlaceholder":784},[84,2075,2076],{"class":86,"line":1194},[84,2077,2078],{"class":1003},"# from launch_ros.actions import PushRosNamespace\n",[84,2080,2081],{"class":86,"line":1211},[84,2082,785],{"emptyLinePlaceholder":784},[84,2084,2085],{"class":86,"line":1217},[84,2086,2087],{"class":1003},"# from launch.actions import GroupAction\n",[84,2089,2090],{"class":86,"line":1222},[84,2091,785],{"emptyLinePlaceholder":784},[84,2093,2094],{"class":86,"line":1228},[84,2095,2096],{"class":1003},"# 事件相关\n",[84,2098,2099],{"class":86,"line":1238},[84,2100,785],{"emptyLinePlaceholder":784},[84,2102,2103],{"class":86,"line":1250},[84,2104,2105],{"class":1003},"# from launch.event_handlers import OnProcessStart,OnProcessExit\n",[84,2107,2108],{"class":86,"line":1260},[84,2109,785],{"emptyLinePlaceholder":784},[84,2111,2112],{"class":86,"line":1265},[84,2113,2114],{"class":1003},"# from launch.actions import ExecuteProcess,RegisterEventHandler,LogInfo\n",[84,2116,2117],{"class":86,"line":1270},[84,2118,785],{"emptyLinePlaceholder":784},[84,2120,2121],{"class":86,"line":1276},[84,2122,2123],{"class":1003},"# 获取功能包下share目录或路径\n",[84,2125,2126,2128,2130,2132],{"class":86,"line":1286},[84,2127,918],{"class":637},[84,2129,953],{"class":633},[84,2131,924],{"class":637},[84,2133,958],{"class":633},[84,2135,2136],{"class":86,"line":1298},[84,2137,785],{"emptyLinePlaceholder":784},[84,2139,2140,2142,2144,2146],{"class":86,"line":1308},[84,2141,918],{"class":637},[84,2143,965],{"class":633},[84,2145,924],{"class":637},[84,2147,970],{"class":633},[84,2149,2150,2152,2154,2156],{"class":86,"line":1313},[84,2151,918],{"class":637},[84,2153,977],{"class":633},[84,2155,924],{"class":637},[84,2157,2158],{"class":633}," Command\n",[84,2160,2161],{"class":86,"line":1319},[84,2162,785],{"emptyLinePlaceholder":784},[84,2164,2165,2168,2170,2172,2174,2177,2179,2182,2185,2188],{"class":86,"line":1324},[84,2166,2167],{"class":633},"p_value ",[84,2169,847],{"class":637},[84,2171,1143],{"class":633},[84,2173,1146],{"class":94},[84,2175,2176],{"class":633},",get_package_share_directory(",[84,2178,1034],{"class":94},[84,2180,2181],{"class":633},") ",[84,2183,2184],{"class":637},"+",[84,2186,2187],{"class":94}," \"\u002Furdf\u002Furdf\u002Fdemo01_boxrobot.urdf\"",[84,2189,2190],{"class":633},"]))\n",[84,2192,2193,2196,2198],{"class":86,"line":1333},[84,2194,2195],{"class":633},"robot_state_pub ",[84,2197,847],{"class":637},[84,2199,1165],{"class":633},[84,2201,2202,2205,2207,2209],{"class":86,"line":1339},[84,2203,2204],{"class":1093},"    package",[84,2206,847],{"class":637},[84,2208,1176],{"class":94},[84,2210,1179],{"class":633},[84,2212,2213,2216,2218,2220],{"class":86,"line":1345},[84,2214,2215],{"class":1093},"    executable",[84,2217,847],{"class":637},[84,2219,1176],{"class":94},[84,2221,1179],{"class":633},[84,2223,2224,2227,2229,2231,2233],{"class":86,"line":1351},[84,2225,2226],{"class":1093},"    parameters",[84,2228,847],{"class":637},[84,2230,1202],{"class":633},[84,2232,1205],{"class":94},[84,2234,2235],{"class":633},":p_value}]\n",[84,2237,2238],{"class":86,"line":1357},[84,2239,1037],{"class":633},[84,2241,2243],{"class":86,"line":2242},46,[84,2244,785],{"emptyLinePlaceholder":784},[84,2246,2248,2251,2253],{"class":86,"line":2247},47,[84,2249,2250],{"class":633},"rviz2 ",[84,2252,847],{"class":637},[84,2254,1165],{"class":633},[84,2256,2258,2260,2262,2264],{"class":86,"line":2257},48,[84,2259,2204],{"class":1093},[84,2261,847],{"class":637},[84,2263,1293],{"class":94},[84,2265,1179],{"class":633},[84,2267,2269,2271,2273],{"class":86,"line":2268},49,[84,2270,2215],{"class":1093},[84,2272,847],{"class":637},[84,2274,1305],{"class":94},[84,2276,2278],{"class":86,"line":2277},50,[84,2279,1214],{"class":633},[84,2281,2283],{"class":86,"line":2282},51,[84,2284,785],{"emptyLinePlaceholder":784},[84,2286,2288,2290,2292],{"class":86,"line":2287},52,[84,2289,1009],{"class":637},[84,2291,1012],{"class":90},[84,2293,1015],{"class":633},[84,2295,2297,2299],{"class":86,"line":2296},53,[84,2298,1327],{"class":637},[84,2300,2301],{"class":633}," LaunchDescription([robot_state_pub,rviz2])\n",[14,2303,2304],{},[17,2305],{"alt":19,"src":2306},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1422.webp",[14,2308,2309],{},[17,2310],{"alt":19,"src":2311},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1423.webp",[14,2313,2314],{},[17,2315],{"alt":19,"src":2316},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1424.webp",[14,2318,2319],{},[17,2320],{"alt":19,"src":2321},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1425.webp",[14,2323,2324],{},"点击左下角Add添加RobotModel插件",[14,2326,2327],{},[17,2328],{"alt":19,"src":2329},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1426.webp",[14,2331,2332],{},[17,2333],{"alt":19,"src":2334},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1427.webp",[14,2336,2337,2340],{},[17,2338],{"alt":19,"src":2339},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1428.webp",[17,2341],{"alt":19,"src":2342},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1429.webp",[14,2344,2345],{},[17,2346],{"alt":19,"src":2347},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1430.webp",[14,2349,2350,2353],{},[17,2351],{"alt":19,"src":2352},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1431.webp",[17,2354],{"alt":19,"src":2355},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1432.webp",[14,2357,2358],{},"新建一个坐标系插件，长沿着X，宽沿着Y，高沿着Z",[653,2360,2362],{"id":2361},"launch优化说明与实现","  launch优化说明与实现",[14,2364,2365],{},"我们还需要优化三个点，第一个是打开关节节点，第二是设置rviz2默认配置文件，第三是Launch文件中我们将读取的urdf文件写死了，所以要优化结构。",[14,2367,2368],{},[17,2369],{"alt":19,"src":2370},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1433.webp",[14,2372,2373],{},"还要启动这个节点，来控制关节运动，可以改成joint_state_publisher_gui，出现图形化界面。",[14,2375,2376],{},[17,2377],{"alt":19,"src":2378},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1434.webp",[14,2380,2381],{},[17,2382],{"alt":19,"src":2383},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1435.webp",[14,2385,2386],{},[17,2387],{"alt":19,"src":2388},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1436.webp",[14,2390,2391],{},[17,2392],{"alt":19,"src":2393},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1437.webp",[14,2395,2396],{},[17,2397],{"alt":19,"src":2398},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1438.webp",[14,2400,2401],{},"保存一下rviz2的配置",[14,2403,2404],{},[17,2405],{"alt":19,"src":2406},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1439.webp",[14,2408,2409],{},"正常的指令是",[76,2411,2413],{"className":78,"code":2412,"language":80,"meta":19,"style":19},"ros2 run rviz2 rviz2 -d rviz2配置的路径\n",[71,2414,2415],{"__ignoreMap":19},[84,2416,2417,2419,2422,2425,2427,2430],{"class":86,"line":87},[84,2418,724],{"class":90},[84,2420,2421],{"class":94}," run",[84,2423,2424],{"class":94}," rviz2",[84,2426,2424],{"class":94},[84,2428,2429],{"class":736}," -d",[84,2431,2432],{"class":94}," rviz2配置的路径\n",[14,2434,2435],{},[17,2436],{"alt":19,"src":2437},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1440.webp",[14,2439,2440],{},[17,2441],{"alt":19,"src":2442},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1441.webp",[14,2444,2445],{},[17,2446],{"alt":19,"src":2447},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1442.webp",[14,2449,2450],{},"创建一个参数叫model，值是后面那一长串。",[14,2452,2453],{},[17,2454],{"alt":19,"src":2455},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1443.webp",[14,2457,2458],{},"LaunchConfiguration是解析参数",[14,2460,2461],{},[17,2462],{"alt":19,"src":2463},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1444.webp",[14,2465,2466],{},"记得要把model放在最前面，放在后面是不可以的，现在已经把路径封装完毕了。",[14,2468,2469],{},"现在启动是正常启动默认的urdf路径。",[14,2471,2472],{},[17,2473],{"alt":19,"src":2474},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1445.webp",[14,2476,2477],{},"解析非默认值的urdf，在终端里也有类似于get_package_share_directory，以下就是(这里参数model少写了个L)要把参数值用反引号(ESC与TAB中间的按键)框起来。",[14,2479,2480],{},[17,2481],{"alt":19,"src":2482},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1446.webp",[76,2484,2486],{"className":78,"code":2485,"language":80,"meta":19,"style":19},"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",[71,2487,2488,2502,2506],{"__ignoreMap":19},[84,2489,2490,2492,2494,2497,2500],{"class":86,"line":87},[84,2491,724],{"class":90},[84,2493,727],{"class":94},[84,2495,2496],{"class":94}," prefix",[84,2498,2499],{"class":736}," --share",[84,2501,1501],{"class":94},[84,2503,2504],{"class":86,"line":644},[84,2505,785],{"emptyLinePlaceholder":784},[84,2507,2508,2510,2512,2514,2516,2519,2522,2524,2527,2530,2533],{"class":86,"line":800},[84,2509,724],{"class":90},[84,2511,2421],{"class":94},[84,2513,1526],{"class":94},[84,2515,733],{"class":94},[84,2517,2518],{"class":94}," display.launch.py",[84,2520,2521],{"class":94}," model:=`",[84,2523,724],{"class":90},[84,2525,2526],{"class":94}," pkg prefix ",[84,2528,2529],{"class":736},"--share",[84,2531,2532],{"class":94}," cpp06_urdf`",[84,2534,2535],{"class":90},"\u002Furdf\u002Furdf\u002Fhahah.urdf\n",[14,2537,2538],{},[17,2539],{"alt":19,"src":2540},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1447.webp",[14,2542,2543],{},[17,2544],{"alt":19,"src":2545},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1448.webp",[14,2547,2548],{},[17,2549],{"alt":19,"src":2550},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1449.webp",[76,2552,2554],{"className":909,"code":2553,"language":911,"meta":19,"style":19},"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",[71,2555,2556,2566,2576,2580,2584,2588,2592,2596,2600,2604,2608,2618,2629,2633,2637,2641,2645,2649,2653,2657,2661,2665,2669,2673,2677,2681,2685,2689,2693,2697,2701,2705,2709,2719,2723,2733,2743,2747,2781,2785,2801,2809,2819,2829,2841,2845,2849,2858,2868,2876,2880,2884,2892,2902,2913,2941,2946,2951,2960],{"__ignoreMap":19},[84,2557,2558,2560,2562,2564],{"class":86,"line":87},[84,2559,918],{"class":637},[84,2561,921],{"class":633},[84,2563,924],{"class":637},[84,2565,927],{"class":633},[84,2567,2568,2570,2572,2574],{"class":86,"line":644},[84,2569,918],{"class":637},[84,2571,934],{"class":633},[84,2573,924],{"class":637},[84,2575,939],{"class":633},[84,2577,2578],{"class":86,"line":800},[84,2579,785],{"emptyLinePlaceholder":784},[84,2581,2582],{"class":86,"line":812},[84,2583,1988],{"class":1003},[84,2585,2586],{"class":86,"line":824},[84,2587,785],{"emptyLinePlaceholder":784},[84,2589,2590],{"class":86,"line":835},[84,2591,1997],{"class":1003},[84,2593,2594],{"class":86,"line":856},[84,2595,785],{"emptyLinePlaceholder":784},[84,2597,2598],{"class":86,"line":866},[84,2599,2006],{"class":1003},[84,2601,2602],{"class":86,"line":876},[84,2603,785],{"emptyLinePlaceholder":784},[84,2605,2606],{"class":86,"line":886},[84,2607,2015],{"class":1003},[84,2609,2610,2612,2614,2616],{"class":86,"line":1018},[84,2611,918],{"class":637},[84,2613,989],{"class":633},[84,2615,924],{"class":637},[84,2617,994],{"class":633},[84,2619,2620,2622,2624,2626],{"class":86,"line":1023},[84,2621,918],{"class":637},[84,2623,977],{"class":633},[84,2625,924],{"class":637},[84,2627,2628],{"class":633}," LaunchConfiguration\n",[84,2630,2631],{"class":86,"line":1040},[84,2632,785],{"emptyLinePlaceholder":784},[84,2634,2635],{"class":86,"line":1062},[84,2636,2042],{"class":1003},[84,2638,2639],{"class":86,"line":1082},[84,2640,785],{"emptyLinePlaceholder":784},[84,2642,2643],{"class":86,"line":1113},[84,2644,2051],{"class":1003},[84,2646,2647],{"class":86,"line":1118},[84,2648,785],{"emptyLinePlaceholder":784},[84,2650,2651],{"class":86,"line":1124},[84,2652,2060],{"class":1003},[84,2654,2655],{"class":86,"line":1129},[84,2656,785],{"emptyLinePlaceholder":784},[84,2658,2659],{"class":86,"line":1135},[84,2660,2069],{"class":1003},[84,2662,2663],{"class":86,"line":1157},[84,2664,785],{"emptyLinePlaceholder":784},[84,2666,2667],{"class":86,"line":1168},[84,2668,2078],{"class":1003},[84,2670,2671],{"class":86,"line":1182},[84,2672,785],{"emptyLinePlaceholder":784},[84,2674,2675],{"class":86,"line":1194},[84,2676,2087],{"class":1003},[84,2678,2679],{"class":86,"line":1211},[84,2680,785],{"emptyLinePlaceholder":784},[84,2682,2683],{"class":86,"line":1217},[84,2684,2096],{"class":1003},[84,2686,2687],{"class":86,"line":1222},[84,2688,785],{"emptyLinePlaceholder":784},[84,2690,2691],{"class":86,"line":1228},[84,2692,2105],{"class":1003},[84,2694,2695],{"class":86,"line":1238},[84,2696,785],{"emptyLinePlaceholder":784},[84,2698,2699],{"class":86,"line":1250},[84,2700,2114],{"class":1003},[84,2702,2703],{"class":86,"line":1260},[84,2704,785],{"emptyLinePlaceholder":784},[84,2706,2707],{"class":86,"line":1265},[84,2708,2123],{"class":1003},[84,2710,2711,2713,2715,2717],{"class":86,"line":1270},[84,2712,918],{"class":637},[84,2714,953],{"class":633},[84,2716,924],{"class":637},[84,2718,958],{"class":633},[84,2720,2721],{"class":86,"line":1276},[84,2722,785],{"emptyLinePlaceholder":784},[84,2724,2725,2727,2729,2731],{"class":86,"line":1286},[84,2726,918],{"class":637},[84,2728,965],{"class":633},[84,2730,924],{"class":637},[84,2732,970],{"class":633},[84,2734,2735,2737,2739,2741],{"class":86,"line":1298},[84,2736,918],{"class":637},[84,2738,977],{"class":633},[84,2740,924],{"class":637},[84,2742,2158],{"class":633},[84,2744,2745],{"class":86,"line":1308},[84,2746,785],{"emptyLinePlaceholder":784},[84,2748,2749,2752,2754,2756,2758,2760,2762,2764,2766,2768,2771,2773,2775,2777,2779],{"class":86,"line":1313},[84,2750,2751],{"class":633},"model ",[84,2753,847],{"class":637},[84,2755,1090],{"class":633},[84,2757,1094],{"class":1093},[84,2759,847],{"class":637},[84,2761,1099],{"class":94},[84,2763,1054],{"class":633},[84,2765,1105],{"class":1093},[84,2767,847],{"class":637},[84,2769,2770],{"class":633},"get_package_share_directory(",[84,2772,1034],{"class":94},[84,2774,2181],{"class":633},[84,2776,2184],{"class":637},[84,2778,2187],{"class":94},[84,2780,1037],{"class":633},[84,2782,2783],{"class":86,"line":1319},[84,2784,785],{"emptyLinePlaceholder":784},[84,2786,2787,2789,2791,2793,2795,2797,2799],{"class":86,"line":1324},[84,2788,2167],{"class":633},[84,2790,847],{"class":637},[84,2792,1143],{"class":633},[84,2794,1146],{"class":94},[84,2796,1149],{"class":633},[84,2798,1099],{"class":94},[84,2800,1154],{"class":633},[84,2802,2803,2805,2807],{"class":86,"line":1333},[84,2804,2195],{"class":633},[84,2806,847],{"class":637},[84,2808,1165],{"class":633},[84,2810,2811,2813,2815,2817],{"class":86,"line":1339},[84,2812,2204],{"class":1093},[84,2814,847],{"class":637},[84,2816,1176],{"class":94},[84,2818,1179],{"class":633},[84,2820,2821,2823,2825,2827],{"class":86,"line":1345},[84,2822,2215],{"class":1093},[84,2824,847],{"class":637},[84,2826,1176],{"class":94},[84,2828,1179],{"class":633},[84,2830,2831,2833,2835,2837,2839],{"class":86,"line":1351},[84,2832,2226],{"class":1093},[84,2834,847],{"class":637},[84,2836,1202],{"class":633},[84,2838,1205],{"class":94},[84,2840,2235],{"class":633},[84,2842,2843],{"class":86,"line":1357},[84,2844,1037],{"class":633},[84,2846,2847],{"class":86,"line":2242},[84,2848,785],{"emptyLinePlaceholder":784},[84,2850,2851,2854,2856],{"class":86,"line":2247},[84,2852,2853],{"class":633},"joint_state_pub ",[84,2855,847],{"class":637},[84,2857,1165],{"class":633},[84,2859,2860,2862,2864,2866],{"class":86,"line":2257},[84,2861,2204],{"class":1093},[84,2863,847],{"class":637},[84,2865,1245],{"class":94},[84,2867,1179],{"class":633},[84,2869,2870,2872,2874],{"class":86,"line":2268},[84,2871,2215],{"class":1093},[84,2873,847],{"class":637},[84,2875,1257],{"class":94},[84,2877,2878],{"class":86,"line":2277},[84,2879,1214],{"class":633},[84,2881,2882],{"class":86,"line":2282},[84,2883,785],{"emptyLinePlaceholder":784},[84,2885,2886,2888,2890],{"class":86,"line":2287},[84,2887,2250],{"class":633},[84,2889,847],{"class":637},[84,2891,1165],{"class":633},[84,2893,2894,2896,2898,2900],{"class":86,"line":2296},[84,2895,2204],{"class":1093},[84,2897,847],{"class":637},[84,2899,1293],{"class":94},[84,2901,1179],{"class":633},[84,2903,2905,2907,2909,2911],{"class":86,"line":2904},54,[84,2906,2215],{"class":1093},[84,2908,847],{"class":637},[84,2910,1293],{"class":94},[84,2912,1179],{"class":633},[84,2914,2916,2919,2921,2924,2927,2929,2931,2933,2935,2938],{"class":86,"line":2915},55,[84,2917,2918],{"class":1093},"    arguments",[84,2920,847],{"class":637},[84,2922,2923],{"class":633},"[",[84,2925,2926],{"class":94},"\"-d\"",[84,2928,2176],{"class":633},[84,2930,1034],{"class":94},[84,2932,2181],{"class":633},[84,2934,2184],{"class":637},[84,2936,2937],{"class":94}," \"\u002Frviz\u002Furdf.rviz\"",[84,2939,2940],{"class":633},"]\n",[84,2942,2944],{"class":86,"line":2943},56,[84,2945,1214],{"class":633},[84,2947,2949],{"class":86,"line":2948},57,[84,2950,785],{"emptyLinePlaceholder":784},[84,2952,2954,2956,2958],{"class":86,"line":2953},58,[84,2955,1009],{"class":637},[84,2957,1012],{"class":90},[84,2959,1015],{"class":633},[84,2961,2963,2965],{"class":86,"line":2962},59,[84,2964,1327],{"class":637},[84,2966,2967],{"class":633}," LaunchDescription([model,robot_state_pub,joint_state_pub,rviz2])\n",[14,2969,2970],{},"继续优化最终的代码为：",[76,2972,2974],{"className":909,"code":2973,"language":911,"meta":19,"style":19},"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",[71,2975,2976,2986,2996,3000,3004,3008,3012,3016,3020,3024,3028,3038,3048,3052,3056,3060,3064,3068,3072,3076,3080,3084,3088,3092,3096,3100,3104,3108,3112,3116,3120,3124,3128,3138,3142,3152,3162,3166,3172,3176,3189,3193,3211,3229,3233,3255,3259,3275,3283,3293,3303,3315,3319,3323,3328,3332,3337,3341,3346,3350,3356,3361,3367,3372,3378,3387,3399,3409,3414,3419,3428,3439,3450,3455,3461,3475,3480,3485,3490,3499],{"__ignoreMap":19},[84,2977,2978,2980,2982,2984],{"class":86,"line":87},[84,2979,918],{"class":637},[84,2981,921],{"class":633},[84,2983,924],{"class":637},[84,2985,927],{"class":633},[84,2987,2988,2990,2992,2994],{"class":86,"line":644},[84,2989,918],{"class":637},[84,2991,934],{"class":633},[84,2993,924],{"class":637},[84,2995,939],{"class":633},[84,2997,2998],{"class":86,"line":800},[84,2999,785],{"emptyLinePlaceholder":784},[84,3001,3002],{"class":86,"line":812},[84,3003,1988],{"class":1003},[84,3005,3006],{"class":86,"line":824},[84,3007,785],{"emptyLinePlaceholder":784},[84,3009,3010],{"class":86,"line":835},[84,3011,1997],{"class":1003},[84,3013,3014],{"class":86,"line":856},[84,3015,785],{"emptyLinePlaceholder":784},[84,3017,3018],{"class":86,"line":866},[84,3019,2006],{"class":1003},[84,3021,3022],{"class":86,"line":876},[84,3023,785],{"emptyLinePlaceholder":784},[84,3025,3026],{"class":86,"line":886},[84,3027,2015],{"class":1003},[84,3029,3030,3032,3034,3036],{"class":86,"line":1018},[84,3031,918],{"class":637},[84,3033,989],{"class":633},[84,3035,924],{"class":637},[84,3037,994],{"class":633},[84,3039,3040,3042,3044,3046],{"class":86,"line":1023},[84,3041,918],{"class":637},[84,3043,977],{"class":633},[84,3045,924],{"class":637},[84,3047,2628],{"class":633},[84,3049,3050],{"class":86,"line":1040},[84,3051,785],{"emptyLinePlaceholder":784},[84,3053,3054],{"class":86,"line":1062},[84,3055,2042],{"class":1003},[84,3057,3058],{"class":86,"line":1082},[84,3059,785],{"emptyLinePlaceholder":784},[84,3061,3062],{"class":86,"line":1113},[84,3063,2051],{"class":1003},[84,3065,3066],{"class":86,"line":1118},[84,3067,785],{"emptyLinePlaceholder":784},[84,3069,3070],{"class":86,"line":1124},[84,3071,2060],{"class":1003},[84,3073,3074],{"class":86,"line":1129},[84,3075,785],{"emptyLinePlaceholder":784},[84,3077,3078],{"class":86,"line":1135},[84,3079,2069],{"class":1003},[84,3081,3082],{"class":86,"line":1157},[84,3083,785],{"emptyLinePlaceholder":784},[84,3085,3086],{"class":86,"line":1168},[84,3087,2078],{"class":1003},[84,3089,3090],{"class":86,"line":1182},[84,3091,785],{"emptyLinePlaceholder":784},[84,3093,3094],{"class":86,"line":1194},[84,3095,2087],{"class":1003},[84,3097,3098],{"class":86,"line":1211},[84,3099,785],{"emptyLinePlaceholder":784},[84,3101,3102],{"class":86,"line":1217},[84,3103,2096],{"class":1003},[84,3105,3106],{"class":86,"line":1222},[84,3107,785],{"emptyLinePlaceholder":784},[84,3109,3110],{"class":86,"line":1228},[84,3111,2105],{"class":1003},[84,3113,3114],{"class":86,"line":1238},[84,3115,785],{"emptyLinePlaceholder":784},[84,3117,3118],{"class":86,"line":1250},[84,3119,2114],{"class":1003},[84,3121,3122],{"class":86,"line":1260},[84,3123,785],{"emptyLinePlaceholder":784},[84,3125,3126],{"class":86,"line":1265},[84,3127,2123],{"class":1003},[84,3129,3130,3132,3134,3136],{"class":86,"line":1270},[84,3131,918],{"class":637},[84,3133,953],{"class":633},[84,3135,924],{"class":637},[84,3137,958],{"class":633},[84,3139,3140],{"class":86,"line":1276},[84,3141,785],{"emptyLinePlaceholder":784},[84,3143,3144,3146,3148,3150],{"class":86,"line":1286},[84,3145,918],{"class":637},[84,3147,965],{"class":633},[84,3149,924],{"class":637},[84,3151,970],{"class":633},[84,3153,3154,3156,3158,3160],{"class":86,"line":1298},[84,3155,918],{"class":637},[84,3157,977],{"class":633},[84,3159,924],{"class":637},[84,3161,2158],{"class":633},[84,3163,3164],{"class":86,"line":1308},[84,3165,785],{"emptyLinePlaceholder":784},[84,3167,3168,3170],{"class":86,"line":1313},[84,3169,924],{"class":637},[84,3171,946],{"class":633},[84,3173,3174],{"class":86,"line":1319},[84,3175,785],{"emptyLinePlaceholder":784},[84,3177,3178,3181,3183,3185,3187],{"class":86,"line":1324},[84,3179,3180],{"class":633},"cpp06_urdf_dir ",[84,3182,847],{"class":637},[84,3184,1031],{"class":633},[84,3186,1034],{"class":94},[84,3188,1037],{"class":633},[84,3190,3191],{"class":86,"line":1333},[84,3192,785],{"emptyLinePlaceholder":784},[84,3194,3195,3198,3200,3202,3204,3206,3209],{"class":86,"line":1339},[84,3196,3197],{"class":633},"default_model_path ",[84,3199,847],{"class":637},[84,3201,1048],{"class":633},[84,3203,1051],{"class":94},[84,3205,1054],{"class":633},[84,3207,3208],{"class":94},"\"demo01_boxrobot.urdf\"",[84,3210,1037],{"class":633},[84,3212,3213,3216,3218,3220,3222,3224,3227],{"class":86,"line":1345},[84,3214,3215],{"class":633},"default_rviz_path ",[84,3217,847],{"class":637},[84,3219,1048],{"class":633},[84,3221,1072],{"class":94},[84,3223,1054],{"class":633},[84,3225,3226],{"class":94},"\"urdf.rviz\"",[84,3228,1037],{"class":633},[84,3230,3231],{"class":86,"line":1351},[84,3232,785],{"emptyLinePlaceholder":784},[84,3234,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253],{"class":86,"line":1357},[84,3236,2751],{"class":633},[84,3238,847],{"class":637},[84,3240,1090],{"class":633},[84,3242,1094],{"class":1093},[84,3244,847],{"class":637},[84,3246,1099],{"class":94},[84,3248,1054],{"class":633},[84,3250,1105],{"class":1093},[84,3252,847],{"class":637},[84,3254,1110],{"class":633},[84,3256,3257],{"class":86,"line":2242},[84,3258,785],{"emptyLinePlaceholder":784},[84,3260,3261,3263,3265,3267,3269,3271,3273],{"class":86,"line":2247},[84,3262,2167],{"class":633},[84,3264,847],{"class":637},[84,3266,1143],{"class":633},[84,3268,1146],{"class":94},[84,3270,1149],{"class":633},[84,3272,1099],{"class":94},[84,3274,1154],{"class":633},[84,3276,3277,3279,3281],{"class":86,"line":2257},[84,3278,2195],{"class":633},[84,3280,847],{"class":637},[84,3282,1165],{"class":633},[84,3284,3285,3287,3289,3291],{"class":86,"line":2268},[84,3286,2204],{"class":1093},[84,3288,847],{"class":637},[84,3290,1176],{"class":94},[84,3292,1179],{"class":633},[84,3294,3295,3297,3299,3301],{"class":86,"line":2277},[84,3296,2215],{"class":1093},[84,3298,847],{"class":637},[84,3300,1176],{"class":94},[84,3302,1179],{"class":633},[84,3304,3305,3307,3309,3311,3313],{"class":86,"line":2282},[84,3306,2226],{"class":1093},[84,3308,847],{"class":637},[84,3310,1202],{"class":633},[84,3312,1205],{"class":94},[84,3314,2235],{"class":633},[84,3316,3317],{"class":86,"line":2287},[84,3318,1037],{"class":633},[84,3320,3321],{"class":86,"line":2296},[84,3322,785],{"emptyLinePlaceholder":784},[84,3324,3325],{"class":86,"line":2904},[84,3326,3327],{"class":1003},"# 关节信息节点\n",[84,3329,3330],{"class":86,"line":2915},[84,3331,785],{"emptyLinePlaceholder":784},[84,3333,3334],{"class":86,"line":2943},[84,3335,3336],{"class":1003},"# joint_state_pub = Node(\n",[84,3338,3339],{"class":86,"line":2948},[84,3340,785],{"emptyLinePlaceholder":784},[84,3342,3343],{"class":86,"line":2953},[84,3344,3345],{"class":1003},"#     package=\"joint_state_publisher\",\n",[84,3347,3348],{"class":86,"line":2962},[84,3349,785],{"emptyLinePlaceholder":784},[84,3351,3353],{"class":86,"line":3352},60,[84,3354,3355],{"class":1003},"#     executable=\"joint_state_publisher\"\n",[84,3357,3359],{"class":86,"line":3358},61,[84,3360,785],{"emptyLinePlaceholder":784},[84,3362,3364],{"class":86,"line":3363},62,[84,3365,3366],{"class":1003},"# )\n",[84,3368,3370],{"class":86,"line":3369},63,[84,3371,785],{"emptyLinePlaceholder":784},[84,3373,3375],{"class":86,"line":3374},64,[84,3376,3377],{"class":1003},"# 关节信息节点图形界面(建议)\n",[84,3379,3381,3383,3385],{"class":86,"line":3380},65,[84,3382,2853],{"class":633},[84,3384,847],{"class":637},[84,3386,1165],{"class":633},[84,3388,3390,3392,3394,3397],{"class":86,"line":3389},66,[84,3391,2204],{"class":1093},[84,3393,847],{"class":637},[84,3395,3396],{"class":94},"\"joint_state_publisher_gui\"",[84,3398,1179],{"class":633},[84,3400,3402,3404,3406],{"class":86,"line":3401},67,[84,3403,2215],{"class":1093},[84,3405,847],{"class":637},[84,3407,3408],{"class":94},"\"joint_state_publisher_gui\"\n",[84,3410,3412],{"class":86,"line":3411},68,[84,3413,1037],{"class":633},[84,3415,3417],{"class":86,"line":3416},69,[84,3418,785],{"emptyLinePlaceholder":784},[84,3420,3422,3424,3426],{"class":86,"line":3421},70,[84,3423,2250],{"class":633},[84,3425,847],{"class":637},[84,3427,1165],{"class":633},[84,3429,3431,3433,3435,3437],{"class":86,"line":3430},71,[84,3432,2204],{"class":1093},[84,3434,847],{"class":637},[84,3436,1293],{"class":94},[84,3438,1179],{"class":633},[84,3440,3442,3444,3446,3448],{"class":86,"line":3441},72,[84,3443,2215],{"class":1093},[84,3445,847],{"class":637},[84,3447,1293],{"class":94},[84,3449,1179],{"class":633},[84,3451,3453],{"class":86,"line":3452},73,[84,3454,785],{"emptyLinePlaceholder":784},[84,3456,3458],{"class":86,"line":3457},74,[84,3459,3460],{"class":1003},"#    arguments=[\"-d\",get_package_share_directory(\"cpp06_urdf\") + \"\u002Frviz\u002Furdf.rviz\"]\n",[84,3462,3464,3466,3468,3470,3472],{"class":86,"line":3463},75,[84,3465,2918],{"class":1093},[84,3467,847],{"class":637},[84,3469,2923],{"class":633},[84,3471,2926],{"class":94},[84,3473,3474],{"class":633},",default_rviz_path]\n",[84,3476,3478],{"class":86,"line":3477},76,[84,3479,785],{"emptyLinePlaceholder":784},[84,3481,3483],{"class":86,"line":3482},77,[84,3484,1214],{"class":633},[84,3486,3488],{"class":86,"line":3487},78,[84,3489,785],{"emptyLinePlaceholder":784},[84,3491,3493,3495,3497],{"class":86,"line":3492},79,[84,3494,1009],{"class":637},[84,3496,1012],{"class":90},[84,3498,1015],{"class":633},[84,3500,3502,3504],{"class":86,"line":3501},80,[84,3503,1327],{"class":637},[84,3505,2967],{"class":633},[10,3507,3509],{"id":3508},"urdf语法","URDF语法",[653,3511,3512],{"id":3512},"简介",[14,3514,3515],{},[17,3516],{"alt":19,"src":3517},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1450.webp",[653,3519,3520],{"id":3520},"robot根标签",[14,3522,3523,3526],{},[17,3524],{"alt":19,"src":3525},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1451.webp",[17,3527],{"alt":19,"src":3528},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1452.webp",[14,3530,3531],{},"对机器人进行分割，分割成几个子集，比如一个子集描述头，一个子集描述身子，最后再合成合集，成机器人",[14,3533,3534],{},"虽然我的子文件和主文件在逻辑上是有包含关系的，但是其实，他们都是单独的urdf文件。主文件中，robot标签的name属性必须写，子文件可以不写，如果写，那么子文件name的值与主文件的必须相同！",[14,3536,3537,3540],{},[17,3538],{"alt":19,"src":3539},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1453.webp",[17,3541],{"alt":19,"src":3542},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1454.webp",[653,3544,3545],{"id":3545},"link标签",[3547,3548,3512],"h5",{"id":3549},"简介-1",[14,3551,3552],{},[17,3553],{"alt":19,"src":3554},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1455.webp",[14,3556,3557],{},"每一个link都是刚体，都是独立部件",[14,3559,3560],{},"Link是通过joint进行拼接的",[14,3562,3563],{},"Link主要包含三部分，Visual，Collision和Inertial",[14,3565,3566],{},[17,3567],{"alt":19,"src":3568},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1456.webp",[14,3570,3571],{},"没加尖括号的是属性，加了的是标签",[14,3573,3574,3578],{},[105,3575,3576],{},[818,3577],{}," （可选）：用于描述link的可视化属性，可以设置link的形状（立方体、球体、圆柱等）。",[163,3580,3581,3586],{},[142,3582,3583,3585],{},[105,3584,1094],{}," （可选）：指定link名称，此名称会映射为同名坐标系，还可以通过引用该值定位定位link。",[142,3587,3588,3592,3593],{},[105,3589,3590],{},[830,3591],{}," （必填）：用于设置link的形状，比如：立方体、球体或圆柱。",[163,3594,3595,3602,3610,3618,3634,3656],{},[142,3596,3597,3601],{},[105,3598,3599],{},[841,3600],{}," ：立方体标签，通过size属性设置立方体的边长，原点为其几何中心。",[142,3603,3604,3609],{},[105,3605,3606],{},[3607,3608],"cylinder",{}," ：圆柱标签，通过radius属性设置圆柱半径，通过length属性设置圆柱高度，原点为其几何中心。",[142,3611,3612,3617],{},[105,3613,3614],{},[3615,3616],"sphere",{}," ：球体标签，通过radius属性设置球体半径，原点为其几何中心。",[142,3619,3620,3625,3626],{},[105,3621,3622],{},[3623,3624],"mesh",{}," ：通过属性filename引用“皮肤”文件，为link设置外观，该文件必须是本地文件。使用 package:\u002F\u002F",[3627,3628,3629,3630],"packagename",{},"\u002F",[3631,3632,3633],"path",{},"为文件名添加前缀。",[142,3635,3636,3641,3642],{},[105,3637,3638],{},[3639,3640],"origin",{}," （可选）：用于设置link的相对偏移量以及旋转角度，如未指定则使用默认值（无偏移且无旋转）。",[163,3643,3644,3650],{},[142,3645,3646,3649],{},[105,3647,3648],{},"xyz"," ：表示x、y、z三个维度上的偏移量（以米为单位），不同数值之间使用空格分隔，如未指定则使用默认值（三个维度无偏移）。",[142,3651,3652,3655],{},[105,3653,3654],{},"rpy"," ：表示翻滚、俯仰与偏航的角度（以弧度为单位），不同数值之间使用空格分隔，如未指定则使用默认值（三个维度无旋转）。",[142,3657,3658,3663,3664],{},[105,3659,3660],{},[3661,3662],"material",{}," （可选）：视觉元素的材质。也可以在根标签robot中定义material标签，然后，可以在link中按名称进行引用。",[163,3665,3666,3671,3679],{},[142,3667,3668,3670],{},[105,3669,1094],{}," （可选）：为material指定名称，可以通过该值进行引用。",[142,3672,3673,3678],{},[105,3674,3675],{},[3676,3677],"color",{}," （可选）：rgba 材质的颜色，由代表red\u002Fgreen\u002Fblue\u002Falpha 的四个数字组成，每个数字的范围为 [0,1]。",[142,3680,3681,3686],{},[105,3682,3683],{},[3684,3685],"texture",{}," （可选）：材质的纹理，可以由属性filename设置。",[14,3688,3689],{},"当有多个Visual的时候，需要给Visual设置name，所以是个可选项。",[14,3691,3692],{},"Collision与仿真有关系，我们可以给我们的机器人的刚体设置一个碰撞区间，只要障碍物进入了区间，那么就发生了碰撞，一般碰撞区间要比实际大小要大。",[14,3694,3695,3700,3701],{},[105,3696,3697],{},[3698,3699],"collision",{}," （可选）：link的碰撞属性。可以与link的视觉属性一致，也可以不同，比如：我们会通常使用更简单的碰撞模型来减少计算时间，或者设置的值大于link的视觉属性，以尽量避免碰撞。另外，同一链接可以存在多个 ",[3698,3702,3703],{},"标签实例，多个几何图形组合表示link的碰撞属性。",[163,3705,3706,3711,3718],{},[142,3707,3708,3710],{},[105,3709,1094],{}," （可选）：为collision设置名称。",[142,3712,3713,3717],{},[105,3714,3715],{},[830,3716],{}," （必须）：请参考visual标签的geometry使用规则。",[142,3719,3720,3724],{},[105,3721,3722],{},[3639,3723],{}," （可选）：请参考visual标签的origin使用规则。",[14,3726,3727],{},"Inertial是设置惯性矩阵的，也是和仿真有关系的。比如说机器人刹车，会出现前倾的情况，比如说惯性矩阵的重心高一些，那么急刹车就会出现翻车的情况了。",[14,3729,3730,3735],{},[105,3731,3732],{},[3733,3734],"inertial",{}," （可选）：用于设置link的质量、质心位置和中心惯性特性，如果未指定，则默认为质量为0、惯性为0。",[163,3737,3738,3757,3765],{},[142,3739,3740,3744,3745],{},[105,3741,3742],{},[3639,3743],{}," （可选）：该位姿（平移、旋转）描述了链接的质心框架 C 相对于链接框架 L 的位置和方向。",[163,3746,3747,3752],{},[142,3748,3749,3751],{},[105,3750,3648],{}," ：表示从 Lo（链接框架原点）到 Co（链接的质心）的位置向量为 x L̂x + y L̂y + z L̂z，其中 L̂x、L̂y、L̂z 是链接框架 L 的正交单位向量。",[142,3753,3754,3756],{},[105,3755,3654],{}," ：将 C 的单位向量 Ĉx、Ĉy、Ĉz 相对于链接框架 L 的方向表示为以弧度为单位的欧拉旋转序列 (r p y)。注意：Ĉx、Ĉy、Ĉz 不需要与连杆的惯性主轴对齐。",[142,3758,3759,3764],{},[105,3760,3761],{},[3762,3763],"mass",{}," （必填）：通过其value属性设置link的质量。",[142,3766,3767,3772],{},[105,3768,3769],{},[3770,3771],"inertia",{}," （必填）：对于固定在质心坐标系 C 中的单位向量 Ĉx、Ĉy、Ĉz，该连杆的惯性矩 ixx、iyy、izz 以及关于 Co（连杆的质心）的惯性 ixy、ixz、iyz 的乘积。",[14,3774,3775,3778,3779],{},[105,3776,3777],{},"注意："," ",[3698,3780,3781,3782],{}," 和 ",[3733,3783,3784],{}," 在仿真环境下才需要使用到，如果只是在 rviz2 中集成 urdf，那么不必须为 link 定义这两个标签。",[3547,3786,3787],{"id":3787},"使用",[14,3789,3790],{},[17,3791],{"alt":19,"src":3792},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1457.webp",[76,3794,3796],{"className":775,"code":3795,"language":777,"meta":19,"style":19},"\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",[71,3797,3798,3813,3817,3833,3850,3858,3872,3880,3884,3892,3896,3912,3916,3924,3928,3951,3955,3969,3977,3985],{"__ignoreMap":19},[84,3799,3800,3802,3804,3806,3808,3811],{"class":86,"line":87},[84,3801,1375],{"class":633},[84,3803,794],{"class":793},[84,3805,1659],{"class":90},[84,3807,847],{"class":633},[84,3809,3810],{"class":94},"\"link_demo\"",[84,3812,821],{"class":633},[84,3814,3815],{"class":86,"line":644},[84,3816,785],{"emptyLinePlaceholder":784},[84,3818,3819,3822,3824,3826,3828,3831],{"class":86,"line":800},[84,3820,3821],{"class":633},"  \u003C",[84,3823,3661],{"class":793},[84,3825,1659],{"class":90},[84,3827,847],{"class":633},[84,3829,3830],{"class":94},"\"yellow\"",[84,3832,821],{"class":633},[84,3834,3835,3837,3839,3842,3844,3847],{"class":86,"line":812},[84,3836,1676],{"class":633},[84,3838,3676],{"class":793},[84,3840,3841],{"class":90}," rgba",[84,3843,847],{"class":633},[84,3845,3846],{"class":94},"\"0.7 0.7 0 0.8\"",[84,3848,3849],{"class":633}," \u002F>\n",[84,3851,3852,3854,3856],{"class":86,"line":824},[84,3853,1765],{"class":633},[84,3855,3661],{"class":793},[84,3857,821],{"class":633},[84,3859,3860,3862,3864,3866,3868,3870],{"class":86,"line":835},[84,3861,3821],{"class":633},[84,3863,806],{"class":793},[84,3865,1659],{"class":90},[84,3867,847],{"class":633},[84,3869,1685],{"class":94},[84,3871,821],{"class":633},[84,3873,3874,3876,3878],{"class":86,"line":856},[84,3875,1676],{"class":633},[84,3877,818],{"class":793},[84,3879,821],{"class":633},[84,3881,3882],{"class":86,"line":866},[84,3883,785],{"emptyLinePlaceholder":784},[84,3885,3886,3888,3890],{"class":86,"line":876},[84,3887,1709],{"class":633},[84,3889,830],{"class":793},[84,3891,821],{"class":633},[84,3893,3894],{"class":86,"line":886},[84,3895,785],{"emptyLinePlaceholder":784},[84,3897,3898,3901,3903,3905,3907,3910],{"class":86,"line":1018},[84,3899,3900],{"class":633},"            \u003C",[84,3902,841],{"class":793},[84,3904,844],{"class":90},[84,3906,847],{"class":633},[84,3908,3909],{"class":94},"\"0.5 0.3 0.1\"",[84,3911,3849],{"class":633},[84,3913,3914],{"class":86,"line":1023},[84,3915,785],{"emptyLinePlaceholder":784},[84,3917,3918,3920,3922],{"class":86,"line":1040},[84,3919,1738],{"class":633},[84,3921,830],{"class":793},[84,3923,821],{"class":633},[84,3925,3926],{"class":86,"line":1062},[84,3927,785],{"emptyLinePlaceholder":784},[84,3929,3930,3932,3934,3937,3939,3942,3945,3947,3949],{"class":86,"line":1082},[84,3931,1709],{"class":633},[84,3933,3639],{"class":793},[84,3935,3936],{"class":90}," xyz",[84,3938,847],{"class":633},[84,3940,3941],{"class":94},"\"0 0 0\"",[84,3943,3944],{"class":90}," rpy",[84,3946,847],{"class":633},[84,3948,3941],{"class":94},[84,3950,3849],{"class":633},[84,3952,3953],{"class":86,"line":1113},[84,3954,785],{"emptyLinePlaceholder":784},[84,3956,3957,3959,3961,3963,3965,3967],{"class":86,"line":1118},[84,3958,1709],{"class":633},[84,3960,3661],{"class":793},[84,3962,1659],{"class":90},[84,3964,847],{"class":633},[84,3966,3830],{"class":94},[84,3968,853],{"class":633},[84,3970,3971,3973,3975],{"class":86,"line":1124},[84,3972,1756],{"class":633},[84,3974,818],{"class":793},[84,3976,821],{"class":633},[84,3978,3979,3981,3983],{"class":86,"line":1129},[84,3980,1765],{"class":633},[84,3982,806],{"class":793},[84,3984,821],{"class":633},[84,3986,3987,3990,3992],{"class":86,"line":1135},[84,3988,3989],{"class":633},"\u003C\u002F",[84,3991,794],{"class":793},[84,3993,821],{"class":633},[14,3995,3996],{},[17,3997],{"alt":19,"src":3998},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1458.webp",[76,4000,4002],{"className":78,"code":4001,"language":80,"meta":19,"style":19},"ros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fdemo02_link.urdf\n",[71,4003,4004],{"__ignoreMap":19},[84,4005,4006,4008,4010,4012,4014,4016,4018,4020,4022,4024],{"class":86,"line":87},[84,4007,724],{"class":90},[84,4009,1526],{"class":94},[84,4011,733],{"class":94},[84,4013,2518],{"class":94},[84,4015,2521],{"class":94},[84,4017,724],{"class":90},[84,4019,2526],{"class":94},[84,4021,2529],{"class":736},[84,4023,2532],{"class":94},[84,4025,4026],{"class":90},"\u002Furdf\u002Furdf\u002Fdemo02_link.urdf\n",[14,4028,4029],{},[17,4030],{"alt":19,"src":4031},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1459.webp",[14,4033,4034],{},[17,4035],{"alt":19,"src":4036},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1460.webp",[14,4038,4039],{},"矩形体，球形，圆柱体",[14,4041,4042],{},[17,4043],{"alt":19,"src":4044},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1461.webp",[14,4046,4047],{},[17,4048],{"alt":19,"src":4049},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1462.webp",[14,4051,4052],{},[17,4053],{"alt":19,"src":4054},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1463.webp",[14,4056,4057],{},[17,4058],{"alt":19,"src":4059},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1464.webp",[14,4061,4062,4065],{},[17,4063],{"alt":19,"src":4064},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1465.webp",[17,4066],{"alt":19,"src":4067},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1466.webp",[14,4069,4070],{},"平移量，X平移1，Y和Z平移0，rpy旋转度设置为0(旋转度分别是欧拉角里的翻滚角Roll(绕X)，俯仰角Pitch(绕Y)，航向角Yaw(绕Z))",[14,4072,4073,4076],{},[17,4074],{"alt":19,"src":4075},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1467.webp",[17,4077],{"alt":19,"src":4078},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1468.webp",[14,4080,4081],{},"发现长方体在X上偏移了1",[14,4083,4084,4087],{},[17,4085],{"alt":19,"src":4086},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1469.webp",[17,4088],{"alt":19,"src":4089},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1470.webp",[14,4091,4092],{},"让航向角Yaw(绕Z运动)为0.5 rad",[14,4094,4095,4098],{},[17,4096],{"alt":19,"src":4097},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1471.webp",[17,4099],{"alt":19,"src":4100},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1472.webp",[14,4102,4103],{},"设置翻滚角Roll(绕X运动)为0.5rad",[14,4105,4106,4109],{},[17,4107],{"alt":19,"src":4108},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1473.webp",[17,4110],{"alt":19,"src":4111},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1474.webp",[14,4113,4114],{},"设置俯仰角Pitch(绕Y运动)为0.5rad",[14,4116,4117],{},[17,4118],{"alt":19,"src":4119},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1475.webp",[14,4121,4122],{},"sRGB是R,G,B,Alpha(浮点模型，所以范围是0-1.0)",[14,4124,4125],{},[17,4126],{"alt":19,"src":4127},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1476.webp",[14,4129,4130],{},[17,4131],{"alt":19,"src":4132},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1477.webp",[14,4134,4135,4138],{},[17,4136],{"alt":19,"src":4137},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1478.webp",[17,4139],{"alt":19,"src":4140},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1479.webp",[14,4142,4143,4144],{},"如果一个颜色要被用好几次，可以封装成一个类似于全局变量的东西，然后在其他link中调用时，直接用",[3661,4145,4147],{"name":4146},"对应属性值"," （这里是个闭环，注意）",[14,4149,4150],{},[17,4151],{"alt":19,"src":4152},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1480.webp",[76,4154,4156],{"className":775,"code":4155,"language":777,"meta":19,"style":19},"\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",[71,4157,4158,4172,4176,4190,4204,4212,4226,4234,4238,4246,4250,4265,4269,4278,4282,4302,4306,4320,4328,4336],{"__ignoreMap":19},[84,4159,4160,4162,4164,4166,4168,4170],{"class":86,"line":87},[84,4161,1375],{"class":633},[84,4163,794],{"class":793},[84,4165,1659],{"class":90},[84,4167,847],{"class":633},[84,4169,3810],{"class":94},[84,4171,821],{"class":633},[84,4173,4174],{"class":86,"line":644},[84,4175,785],{"emptyLinePlaceholder":784},[84,4177,4178,4180,4182,4184,4186,4188],{"class":86,"line":800},[84,4179,1676],{"class":633},[84,4181,3661],{"class":793},[84,4183,1659],{"class":90},[84,4185,847],{"class":633},[84,4187,3830],{"class":94},[84,4189,821],{"class":633},[84,4191,4192,4194,4196,4198,4200,4202],{"class":86,"line":812},[84,4193,1696],{"class":633},[84,4195,3676],{"class":793},[84,4197,3841],{"class":90},[84,4199,847],{"class":633},[84,4201,3846],{"class":94},[84,4203,3849],{"class":633},[84,4205,4206,4208,4210],{"class":86,"line":824},[84,4207,1756],{"class":633},[84,4209,3661],{"class":793},[84,4211,821],{"class":633},[84,4213,4214,4216,4218,4220,4222,4224],{"class":86,"line":835},[84,4215,1676],{"class":633},[84,4217,806],{"class":793},[84,4219,1659],{"class":90},[84,4221,847],{"class":633},[84,4223,1685],{"class":94},[84,4225,821],{"class":633},[84,4227,4228,4230,4232],{"class":86,"line":856},[84,4229,1696],{"class":633},[84,4231,818],{"class":793},[84,4233,821],{"class":633},[84,4235,4236],{"class":86,"line":866},[84,4237,785],{"emptyLinePlaceholder":784},[84,4239,4240,4242,4244],{"class":86,"line":876},[84,4241,1722],{"class":633},[84,4243,830],{"class":793},[84,4245,821],{"class":633},[84,4247,4248],{"class":86,"line":886},[84,4249,785],{"emptyLinePlaceholder":784},[84,4251,4252,4255,4257,4259,4261,4263],{"class":86,"line":1018},[84,4253,4254],{"class":633},"              \u003C",[84,4256,841],{"class":793},[84,4258,844],{"class":90},[84,4260,847],{"class":633},[84,4262,3909],{"class":94},[84,4264,3849],{"class":633},[84,4266,4267],{"class":86,"line":1023},[84,4268,785],{"emptyLinePlaceholder":784},[84,4270,4271,4274,4276],{"class":86,"line":1040},[84,4272,4273],{"class":633},"          \u003C\u002F",[84,4275,830],{"class":793},[84,4277,821],{"class":633},[84,4279,4280],{"class":86,"line":1062},[84,4281,785],{"emptyLinePlaceholder":784},[84,4283,4284,4286,4288,4290,4292,4294,4296,4298,4300],{"class":86,"line":1082},[84,4285,1722],{"class":633},[84,4287,3639],{"class":793},[84,4289,3936],{"class":90},[84,4291,847],{"class":633},[84,4293,3941],{"class":94},[84,4295,3944],{"class":90},[84,4297,847],{"class":633},[84,4299,3941],{"class":94},[84,4301,3849],{"class":633},[84,4303,4304],{"class":86,"line":1113},[84,4305,785],{"emptyLinePlaceholder":784},[84,4307,4308,4310,4312,4314,4316,4318],{"class":86,"line":1118},[84,4309,1722],{"class":633},[84,4311,3661],{"class":793},[84,4313,1659],{"class":90},[84,4315,847],{"class":633},[84,4317,3830],{"class":94},[84,4319,853],{"class":633},[84,4321,4322,4324,4326],{"class":86,"line":1124},[84,4323,1747],{"class":633},[84,4325,818],{"class":793},[84,4327,821],{"class":633},[84,4329,4330,4332,4334],{"class":86,"line":1129},[84,4331,1756],{"class":633},[84,4333,806],{"class":793},[84,4335,821],{"class":633},[84,4337,4338,4340,4342],{"class":86,"line":1135},[84,4339,1765],{"class":633},[84,4341,794],{"class":793},[84,4343,821],{"class":633},[3547,4345,4346],{"id":4346},"使用补充",[14,4348,4349],{},[17,4350],{"alt":19,"src":4351},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1481.webp",[14,4353,4354],{},"mesh标签是引用皮肤文件，一般是stl文件，可以用SolidWorks导出，可以看文档后面的SW2URDF",[14,4356,4357],{},"如果不会使用solidworks，可以学，这东西2天半就能学会，只是一个工具，只会画图没有啥水平，最重要的还是机械设计比较难。想学的可以看兄弟社团机械学会微信公众号的视频进行学习。",[14,4359,4360],{},[4361,4362,4363],"a",{"href":4363,"rel":4364},"https:\u002F\u002Fmp.weixin.qq.com\u002Fmp\u002Fhomepage?__biz=MzI4MjkyMDgyMA==&hid=7&sn=1efc3d3cee0142970227785f767cc7c8&scene=18",[4365],"nofollow",[14,4367,4368],{},"当然，没时间学习可以直接用别人画好的机器人，在Github上搜索turtlebot3",[14,4370,4371],{},[17,4372],{"alt":19,"src":4373},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1482.webp",[14,4375,4376],{},[17,4377],{"alt":19,"src":4378},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1483.webp",[14,4380,4381],{},[17,4382],{"alt":19,"src":4383},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1484.webp",[14,4385,4386],{},"这里有已经导出的模型，bases里是外观的模型，sensors是传感器的模型，wheels是轮子的模型。",[14,4388,4389],{},"我们克隆下仓库，注意要克隆branch是ros2的分支。",[14,4391,4392],{},[17,4393],{"alt":19,"src":4394},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1485.webp",[14,4396,4397],{},"我们引用一个就行了，看看效果即可，真正的应用还是要用SolidWorks通过SW2URDF插件进行导出",[14,4399,4400],{},"把项目里的meshes\u002Fbases里的burger_base.stl拷贝到我们WS里的meshes目录",[14,4402,4403],{},[17,4404],{"alt":19,"src":4405},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1486.webp",[14,4407,4408],{},[17,4409],{"alt":19,"src":4410},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1487.webp",[14,4412,4413],{},"filename是写刚才的皮肤文件，package:\u002F\u002F就是协议名，后面跟包名，也就是cpp06_urdf。然后跟功能包下的文件路径，也就是meshes\u002Fburger_base.stl（其实也就是share下的路径）",[14,4415,4416],{},[17,4417],{"alt":19,"src":4418},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1488.webp",[14,4420,4421],{},"因为是个三维模型，所以在填scale大小缩放时，需要填3个比例，咱们都填1.0即可。",[14,4423,4424],{},[17,4425],{"alt":19,"src":4426},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1489.webp",[14,4428,4429],{},"为什么显示的模型会这么大呢，因为rviz2以米为单位，而stl是以mm为单位，注意。在机械上，默认不说单位就都是mm，不要乱改单位，一般都要以mm为单位，咱们是做机器人的，要专业一些。",[14,4431,4432],{},[17,4433],{"alt":19,"src":4434},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1490.webp",[14,4436,4437],{},[17,4438],{"alt":19,"src":4439},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1491.webp",[653,4441,4442],{"id":4442},"joint标签",[3547,4444,3512],{"id":4445},"简介-2",[14,4447,4448],{},"urdf 中的 joint 标签用于描述机器人关节的运动学和动力学属性，还可以指定关节运动的安全极限，机器人的两个部件(分别称之为 parent link 与 child link)以”关节“的形式相连接，不同的关节有不同的运动形式: 旋转、滑动、固定、旋转速度、旋转角度限制....,比如:安装在底座上的轮子可以360度旋转，而摄像头则可能是完全固定在底座上。",[14,4450,4451],{},[17,4452],{"alt":19,"src":4453},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1492.webp",[163,4455,4456,4461],{},[142,4457,4458,4460],{},[105,4459,1094],{}," （必填）：为关节命名，名称需要唯一。",[142,4462,4463,4466,4467],{},[105,4464,4465],{},"type"," （必填）：设置关节类型，可用类型如下：",[163,4468,4469,4472,4475,4478,4481,4484],{},[142,4470,4471],{},"continuous：旋转关节，可以绕单轴无限旋转。",[142,4473,4474],{},"revolute：旋转关节，类似于 continues，但是有旋转角度限制。",[142,4476,4477],{},"prismatic：滑动关节，沿某一轴线移动的关节，有位置极限。",[142,4479,4480],{},"planer：平面关节，允许在平面正交方向上平移或旋转。",[142,4482,4483],{},"floating：浮动关节，允许进行平移、旋转运动。",[142,4485,4486],{},"fixed：固定关节，不允许运动的特殊关节。",[14,4488,4489],{},"以下是子级标签",[163,4491,4492,4507,4522,4541,4554,4576,4598,4632,4664],{},[142,4493,4494,4499,4500],{},[105,4495,4496],{},[4497,4498],"parent",{}," （必填）：指定父级link。",[163,4501,4502],{},[142,4503,4504,4506],{},[105,4505,806],{}," （必填）：父级link的名字，是这个link在机器人结构树中的名字。",[142,4508,4509,4514,4515],{},[105,4510,4511],{},[4512,4513],"child",{}," （必填）：指定子级link。",[163,4516,4517],{},[142,4518,4519,4521],{},[105,4520,806],{}," （必填）：子级link的名字，是这个link在机器人结构树中的名字。",[142,4523,4524,4528,4529],{},[105,4525,4526],{},[3639,4527],{}," （可选）：这是从父link到子link的转换，关节位于子link的原点。",[163,4530,4531,4536],{},[142,4532,4533,4535],{},[105,4534,3648],{}," ：各轴线上的偏移量。",[142,4537,4538,4540],{},[105,4539,3654],{}," ：各轴线上的偏移弧度。",[142,4542,4543,4546,4547],{},[105,4544,4545],{},"\u003Caxis>"," （可选）：如不设置，默认值为（1，0，0）。",[163,4548,4549],{},[142,4550,4551,4553],{},[105,4552,3648],{}," ：用于设置围绕哪个关节轴运动。",[142,4555,4556,4561,4562],{},[105,4557,4558],{},[4559,4560],"calibration",{}," （可选）：关节的参考位置，用于校准关节的绝对位置。",[163,4563,4564,4570],{},[142,4565,4566,4569],{},[105,4567,4568],{},"rising"," （可选）：当关节向正方向移动时，该参考位置将触发上升沿。",[142,4571,4572,4575],{},[105,4573,4574],{},"falling"," （可选）：当关节向正方向移动时，该参考位置将触发下降沿。",[142,4577,4578,4583,4584],{},[105,4579,4580],{},[4581,4582],"dynamics",{}," （可选）：指定接头物理特性的元素。这些值用于指定关节的建模属性，对仿真较为有用。",[163,4585,4586,4592],{},[142,4587,4588,4591],{},[105,4589,4590],{},"damping"," （可选）：关节的物理阻尼值，默认为0。",[142,4593,4594,4597],{},[105,4595,4596],{},"friction"," （可选）：关节的物理静摩擦值，默认为0。",[142,4599,4600,4605,4606],{},[105,4601,4602],{},[4603,4604],"limit",{}," （关节类型是revolute或prismatic时为必须的）：",[163,4607,4608,4614,4620,4626],{},[142,4609,4610,4613],{},[105,4611,4612],{},"lower"," （可选）：指定关节下限的属性（旋转关节以弧度为单位，棱柱关节以米为单位）。如果关节是连续的，则省略。",[142,4615,4616,4619],{},[105,4617,4618],{},"upper"," （可选）：指定关节上限的属性（旋转关节以弧度为单位，棱柱关节以米为单位）。如果关节是连续的，则省略。",[142,4621,4622,4625],{},[105,4623,4624],{},"effort"," （必填）：指定关节可受力的最大值。",[142,4627,4628,4631],{},[105,4629,4630],{},"velocity"," （必填）：用于设置最大关节速度（旋转关节以弧度每秒 [rad\u002Fs] 为单位，棱柱关节以米每秒 [m\u002Fs] 为单位）。",[142,4633,4634,4639,4640,127,4644],{},[105,4635,4636],{},[4637,4638],"mimic",{}," （可选）：此标签用于指定定义的关节模仿另一个现有关节。该关节的值可以计算为",[4641,4642,4643],"em",{},"value = multiplier * other_joint_value + offset",[163,4645,4646,4652,4658],{},[142,4647,4648,4651],{},[105,4649,4650],{},"joint"," （必填）：指定要模拟的关节的名称。",[142,4653,4654,4657],{},[105,4655,4656],{},"multiplier"," （可选）：指定上述公式中的乘法因子。",[142,4659,4660,4663],{},[105,4661,4662],{},"offset"," （可选）：指定要在上述公式中添加的偏移量，默认为 0（旋转关节的单位是弧度，棱柱关节的单位是米）。",[142,4665,4666,4669,4670],{},[105,4667,4668],{},"\u003Csafety_controller>"," （可选）：安全控制器。",[163,4671,4672,4678,4684,4690],{},[142,4673,4674,4677],{},[105,4675,4676],{},"soft_lower_limit"," （可选）：指定安全控制器开始限制关节位置的下关节边界，此限制需要大于joint下限。",[142,4679,4680,4683],{},[105,4681,4682],{},"soft_upper_limit"," （可选）：指定安全控制器开始限制关节位置的关节上边界的属性，此限制需要小于joint上限。",[142,4685,4686,4689],{},[105,4687,4688],{},"k_position"," （可选）：指定位置和速度限制之间的关系。",[142,4691,4692,4695],{},[105,4693,4694],{},"k_velocity"," （必填）：指定力和速度限制之间的关系。",[14,4697,4698],{},[17,4699],{"alt":19,"src":4700},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1493.webp",[14,4702,4703],{},"关节名称是必填的，且是唯一的。",[14,4705,4706],{},[17,4707],{"alt":19,"src":4708},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1494.webp",[14,4710,4711],{},"咱们最常用的是有限位的revolute类型的关节，continuous可无限旋转的关节，fixed固定关节，这个根据具体的关节类型来填。",[14,4713,4714],{},"revolute一般用于工业机器人机械臂的关节，continuous比如舵轮结构的“关节”，fixed就是一些固定的不能运动的结构关节。",[14,4716,4717],{},[17,4718],{"alt":19,"src":4719},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1495.webp",[14,4721,4722],{},"子集标签很多，咱们用的最常用的就几个，记住常用的即可。",[14,4724,4725],{},[17,4726],{"alt":19,"src":4727},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1496.webp",[14,4729,4730],{},"parent标签，link属性指定父级link的名字。",[14,4732,4733],{},[17,4734],{"alt":19,"src":4735},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1497.webp",[14,4737,4738],{},"child标签类似。",[14,4740,4741],{},[17,4742],{"alt":19,"src":4743},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1498.webp",[14,4745,4746],{},[17,4747],{"alt":19,"src":4748},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1499.webp",[14,4750,4751],{},"这个轴，默认是1，0，0，以X轴进行旋转，但是咱们一般是需要设置的，可通过SolidWorks设置基准轴进行设置。",[14,4753,4754],{},"剩下的标签，都与关节类型有关，比如limit，如果关节类型是revolute，而且不设置limit，那么在joint_state_publisher_gui里是无法调关节的角度的。",[14,4756,4757],{},[17,4758],{"alt":19,"src":4759},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1500.webp",[14,4761,4762],{},"其他标签用到的时候再进行介绍。",[3547,4764,4765],{"id":4765},"练习",[14,4767,4768],{},[17,4769],{"alt":19,"src":4770},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1501.webp",[14,4772,4773],{},"先把俩关节，单独实现，然后再通过joint关节进行连接。",[14,4775,4776],{},[17,4777],{"alt":19,"src":4778},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1502.webp",[14,4780,4781],{},[17,4782],{"alt":19,"src":4783},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1503.webp",[14,4785,4786],{},[17,4787],{"alt":19,"src":4788},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1504.webp",[14,4790,4791],{},[17,4792],{"alt":19,"src":4793},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1505.webp",[14,4795,4796],{},[17,4797],{"alt":19,"src":4798},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1506.webp",[14,4800,4801],{},[17,4802],{"alt":19,"src":4803},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1507.webp",[14,4805,4806],{},[17,4807],{"alt":19,"src":4808},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1508.webp",[14,4810,4811],{},"黄色的话，红和绿要多一些。",[14,4813,4814],{},[17,4815],{"alt":19,"src":4816},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1509.webp",[14,4818,4819],{},"这是红色。",[14,4821,4822],{},[17,4823],{"alt":19,"src":4824},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1510.webp",[14,4826,4827],{},"底盘Link就创建完毕了，",[14,4829,4830],{},[17,4831],{"alt":19,"src":4832},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1511.webp",[14,4834,4835],{},"摄像头Link也创建完毕了，",[14,4837,4838],{},[17,4839],{"alt":19,"src":4840},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1512.webp",[14,4842,4843],{},"关节名字设置为camera2base_link，也就是摄像头连接底座的joint，然后类型是360度都可以转的continuous。",[14,4845,4846],{},[17,4847],{"alt":19,"src":4848},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1513.webp",[14,4850,4851],{},"填入子级Link与父级Link",[14,4853,4854],{},[17,4855],{"alt":19,"src":4856},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1514.webp",[14,4858,4859],{},"这样两个Link就通过该Joint连接到一起了。",[14,4861,4862],{},[17,4863],{"alt":19,"src":4864},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1515.webp",[14,4866,4867],{},"还需要设置这俩选项，咱们先不设置，先看默认是什么状态。",[76,4869,4871],{"className":78,"code":4870,"language":80,"meta":19,"style":19},"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",[71,4872,4873,4883,4889],{"__ignoreMap":19},[84,4874,4875,4877,4879,4881],{"class":86,"line":87},[84,4876,1492],{"class":90},[84,4878,1495],{"class":94},[84,4880,1498],{"class":736},[84,4882,1501],{"class":94},[84,4884,4885,4887],{"class":86,"line":644},[84,4886,1516],{"class":736},[84,4888,1519],{"class":94},[84,4890,4891,4893,4895,4897,4899,4901,4903,4905,4907,4909],{"class":86,"line":800},[84,4892,724],{"class":90},[84,4894,1526],{"class":94},[84,4896,733],{"class":94},[84,4898,2518],{"class":94},[84,4900,2521],{"class":94},[84,4902,724],{"class":90},[84,4904,2526],{"class":94},[84,4906,2529],{"class":736},[84,4908,2532],{"class":94},[84,4910,4911],{"class":90},"\u002Furdf\u002Furdf\u002Fdemo03_joint.urdf\n",[14,4913,4914],{},[17,4915],{"alt":19,"src":4916},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1516.webp",[14,4918,4919],{},[17,4920],{"alt":19,"src":4921},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1517.webp",[14,4923,4924],{},"可以打开TF看看坐标系，勾上Show Names，发现是重合的。所以显示效果不满足咱们的逻辑业务。（默认状态下），所以需要设置偏移量。",[14,4926,4927],{},[17,4928],{"alt":19,"src":4929},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1518.webp",[14,4931,4932],{},"如果咱们想把摄像头移动到车头，如图所示，在X上有偏移量，Y没有，但是Z有。然后roll，pitch，yaw上没有。",[14,4934,4935],{},[17,4936],{"alt":19,"src":4937},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1519.webp",[14,4939,4940,4943],{},[17,4941],{"alt":19,"src":4942},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1520.webp",[17,4944],{"alt":19,"src":4945},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1521.webp",[14,4947,4948],{},"Z的高度就是1\u002F2的底盘高度+1\u002F2的摄像头高度",[14,4950,4951],{},[17,4952],{"alt":19,"src":4953},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1522.webp",[14,4955,4956],{},[17,4957],{"alt":19,"src":4958},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1523.webp",[14,4960,4961],{},[17,4962],{"alt":19,"src":4963},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1524.webp",[14,4965,4966],{},"咱们要绕Yaw旋转，所以也就是绕Z轴旋转，也就是001，注意一定得是整形，不能是浮点型。",[14,4968,4969],{},[17,4970],{"alt":19,"src":4971},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1525.webp",[14,4973,4974],{},"想要看是否能旋转，要打开joint_state_publisher_gui，可以从launch中打开，也可以从终端中直接打开。",[14,4976,4977,4980],{},[17,4978],{"alt":19,"src":4979},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1526.webp",[17,4981],{"alt":19,"src":4982},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1527.webp",[76,4984,4986],{"className":78,"code":4985,"language":80,"meta":19,"style":19},"ros2 run joint_state_publisher_gui joint_state_publisher_gui\n",[71,4987,4988],{"__ignoreMap":19},[84,4989,4990,4992,4994,4997],{"class":86,"line":87},[84,4991,724],{"class":90},[84,4993,2421],{"class":94},[84,4995,4996],{"class":94}," joint_state_publisher_gui",[84,4998,4999],{"class":94}," joint_state_publisher_gui\n",[14,5001,5002],{},[17,5003],{"alt":19,"src":5004},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1528.webp",[14,5006,5007],{},[17,5008],{"alt":19,"src":5009},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1529.webp",[14,5011,5012],{},"拖拽滚动条可改变摄像头的Yaw",[14,5014,5015],{},[17,5016],{"alt":19,"src":5017},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1530.webp",[14,5019,5020],{},"Randomize是随机数，Center是回中(复位)",[76,5022,5024],{"className":775,"code":5023,"language":777,"meta":19,"style":19},"\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",[71,5025,5026,5030,5045,5049,5063,5077,5085,5100,5115,5123,5137,5145,5149,5157,5171,5179,5199,5213,5221,5229,5233,5248,5256,5264,5279,5287,5307,5321,5329,5337,5341,5364,5379,5393,5397,5418,5434,5442,5446],{"__ignoreMap":19},[84,5027,5028],{"class":86,"line":87},[84,5029,785],{"emptyLinePlaceholder":784},[84,5031,5032,5034,5036,5038,5040,5043],{"class":86,"line":644},[84,5033,790],{"class":633},[84,5035,794],{"class":793},[84,5037,1659],{"class":90},[84,5039,847],{"class":633},[84,5041,5042],{"class":94},"\"joint_demo\"",[84,5044,821],{"class":633},[84,5046,5047],{"class":86,"line":800},[84,5048,785],{"emptyLinePlaceholder":784},[84,5050,5051,5053,5055,5057,5059,5061],{"class":86,"line":812},[84,5052,3821],{"class":633},[84,5054,3661],{"class":793},[84,5056,1659],{"class":90},[84,5058,847],{"class":633},[84,5060,3830],{"class":94},[84,5062,821],{"class":633},[84,5064,5065,5067,5069,5071,5073,5075],{"class":86,"line":824},[84,5066,1676],{"class":633},[84,5068,3676],{"class":793},[84,5070,3841],{"class":90},[84,5072,847],{"class":633},[84,5074,3846],{"class":94},[84,5076,3849],{"class":633},[84,5078,5079,5081,5083],{"class":86,"line":835},[84,5080,1765],{"class":633},[84,5082,3661],{"class":793},[84,5084,821],{"class":633},[84,5086,5087,5089,5091,5093,5095,5098],{"class":86,"line":856},[84,5088,3821],{"class":633},[84,5090,3661],{"class":793},[84,5092,1659],{"class":90},[84,5094,847],{"class":633},[84,5096,5097],{"class":94},"\"red\"",[84,5099,821],{"class":633},[84,5101,5102,5104,5106,5108,5110,5113],{"class":86,"line":866},[84,5103,1676],{"class":633},[84,5105,3676],{"class":793},[84,5107,3841],{"class":90},[84,5109,847],{"class":633},[84,5111,5112],{"class":94},"\"0.8 0.1 0.1 0.8\"",[84,5114,3849],{"class":633},[84,5116,5117,5119,5121],{"class":86,"line":876},[84,5118,1765],{"class":633},[84,5120,3661],{"class":793},[84,5122,821],{"class":633},[84,5124,5125,5127,5129,5131,5133,5135],{"class":86,"line":886},[84,5126,3821],{"class":633},[84,5128,806],{"class":793},[84,5130,1659],{"class":90},[84,5132,847],{"class":633},[84,5134,1685],{"class":94},[84,5136,821],{"class":633},[84,5138,5139,5141,5143],{"class":86,"line":1018},[84,5140,1676],{"class":633},[84,5142,818],{"class":793},[84,5144,821],{"class":633},[84,5146,5147],{"class":86,"line":1023},[84,5148,785],{"emptyLinePlaceholder":784},[84,5150,5151,5153,5155],{"class":86,"line":1040},[84,5152,1709],{"class":633},[84,5154,830],{"class":793},[84,5156,821],{"class":633},[84,5158,5159,5161,5163,5165,5167,5169],{"class":86,"line":1062},[84,5160,3900],{"class":633},[84,5162,841],{"class":793},[84,5164,844],{"class":90},[84,5166,847],{"class":633},[84,5168,3909],{"class":94},[84,5170,3849],{"class":633},[84,5172,5173,5175,5177],{"class":86,"line":1082},[84,5174,1738],{"class":633},[84,5176,830],{"class":793},[84,5178,821],{"class":633},[84,5180,5181,5183,5185,5187,5189,5191,5193,5195,5197],{"class":86,"line":1113},[84,5182,1709],{"class":633},[84,5184,3639],{"class":793},[84,5186,3936],{"class":90},[84,5188,847],{"class":633},[84,5190,3941],{"class":94},[84,5192,3944],{"class":90},[84,5194,847],{"class":633},[84,5196,3941],{"class":94},[84,5198,3849],{"class":633},[84,5200,5201,5203,5205,5207,5209,5211],{"class":86,"line":1118},[84,5202,1709],{"class":633},[84,5204,3661],{"class":793},[84,5206,1659],{"class":90},[84,5208,847],{"class":633},[84,5210,3830],{"class":94},[84,5212,853],{"class":633},[84,5214,5215,5217,5219],{"class":86,"line":1124},[84,5216,1756],{"class":633},[84,5218,818],{"class":793},[84,5220,821],{"class":633},[84,5222,5223,5225,5227],{"class":86,"line":1129},[84,5224,1765],{"class":633},[84,5226,806],{"class":793},[84,5228,821],{"class":633},[84,5230,5231],{"class":86,"line":1135},[84,5232,785],{"emptyLinePlaceholder":784},[84,5234,5235,5237,5239,5241,5243,5246],{"class":86,"line":1157},[84,5236,3821],{"class":633},[84,5238,806],{"class":793},[84,5240,1659],{"class":90},[84,5242,847],{"class":633},[84,5244,5245],{"class":94},"\"camera\"",[84,5247,821],{"class":633},[84,5249,5250,5252,5254],{"class":86,"line":1168},[84,5251,1696],{"class":633},[84,5253,818],{"class":793},[84,5255,821],{"class":633},[84,5257,5258,5260,5262],{"class":86,"line":1182},[84,5259,1722],{"class":633},[84,5261,830],{"class":793},[84,5263,821],{"class":633},[84,5265,5266,5268,5270,5272,5274,5277],{"class":86,"line":1194},[84,5267,4254],{"class":633},[84,5269,841],{"class":793},[84,5271,844],{"class":90},[84,5273,847],{"class":633},[84,5275,5276],{"class":94},"\"0.02 0.05 0.05\"",[84,5278,3849],{"class":633},[84,5280,5281,5283,5285],{"class":86,"line":1211},[84,5282,4273],{"class":633},[84,5284,830],{"class":793},[84,5286,821],{"class":633},[84,5288,5289,5291,5293,5295,5297,5299,5301,5303,5305],{"class":86,"line":1217},[84,5290,1722],{"class":633},[84,5292,3639],{"class":793},[84,5294,3936],{"class":90},[84,5296,847],{"class":633},[84,5298,3941],{"class":94},[84,5300,3944],{"class":90},[84,5302,847],{"class":633},[84,5304,3941],{"class":94},[84,5306,3849],{"class":633},[84,5308,5309,5311,5313,5315,5317,5319],{"class":86,"line":1222},[84,5310,1722],{"class":633},[84,5312,3661],{"class":793},[84,5314,1659],{"class":90},[84,5316,847],{"class":633},[84,5318,5097],{"class":94},[84,5320,3849],{"class":633},[84,5322,5323,5325,5327],{"class":86,"line":1228},[84,5324,1747],{"class":633},[84,5326,818],{"class":793},[84,5328,821],{"class":633},[84,5330,5331,5333,5335],{"class":86,"line":1238},[84,5332,1765],{"class":633},[84,5334,806],{"class":793},[84,5336,821],{"class":633},[84,5338,5339],{"class":86,"line":1250},[84,5340,785],{"emptyLinePlaceholder":784},[84,5342,5343,5345,5347,5349,5351,5354,5357,5359,5362],{"class":86,"line":1260},[84,5344,3821],{"class":633},[84,5346,4650],{"class":793},[84,5348,1659],{"class":90},[84,5350,847],{"class":633},[84,5352,5353],{"class":94},"\"camera2baselink\"",[84,5355,5356],{"class":90}," type",[84,5358,847],{"class":633},[84,5360,5361],{"class":94},"\"continuous\"",[84,5363,821],{"class":633},[84,5365,5366,5368,5370,5373,5375,5377],{"class":86,"line":1265},[84,5367,1696],{"class":633},[84,5369,4497],{"class":793},[84,5371,5372],{"class":90}," link",[84,5374,847],{"class":633},[84,5376,1685],{"class":94},[84,5378,853],{"class":633},[84,5380,5381,5383,5385,5387,5389,5391],{"class":86,"line":1270},[84,5382,1696],{"class":633},[84,5384,4512],{"class":793},[84,5386,5372],{"class":90},[84,5388,847],{"class":633},[84,5390,5245],{"class":94},[84,5392,3849],{"class":633},[84,5394,5395],{"class":86,"line":1276},[84,5396,785],{"emptyLinePlaceholder":784},[84,5398,5399,5401,5403,5405,5407,5410,5412,5414,5416],{"class":86,"line":1286},[84,5400,1696],{"class":633},[84,5402,3639],{"class":793},[84,5404,3936],{"class":90},[84,5406,847],{"class":633},[84,5408,5409],{"class":94},"\"0.2 0 0.075\"",[84,5411,3944],{"class":90},[84,5413,847],{"class":633},[84,5415,3941],{"class":94},[84,5417,3849],{"class":633},[84,5419,5420,5422,5425,5427,5429,5432],{"class":86,"line":1298},[84,5421,1696],{"class":633},[84,5423,5424],{"class":793},"axis",[84,5426,3936],{"class":90},[84,5428,847],{"class":633},[84,5430,5431],{"class":94},"\"0 0 1\"",[84,5433,3849],{"class":633},[84,5435,5436,5438,5440],{"class":86,"line":1308},[84,5437,1765],{"class":633},[84,5439,4650],{"class":793},[84,5441,821],{"class":633},[84,5443,5444],{"class":86,"line":1313},[84,5445,785],{"emptyLinePlaceholder":784},[84,5447,5448,5450,5452],{"class":86,"line":1319},[84,5449,3989],{"class":633},[84,5451,794],{"class":793},[84,5453,821],{"class":633},[3547,5455,5456],{"id":5456},"joint_state_publisher",[14,5458,5459],{},"bug:Yaw不稳定，会一直回中。",[14,5461,5462],{},[17,5463],{"alt":19,"src":5464},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1531.webp",[14,5466,5467,5470],{},[17,5468],{"alt":19,"src":5469},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1532.webp",[17,5471],{"alt":19,"src":5472},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1533.webp",[14,5474,5475],{},"其实是因为launch里启动的和终端里启动的冲突了。",[14,5477,5478],{},"解决方案：只启动其中一个。",[14,5480,5481],{},[17,5482],{"alt":19,"src":5483},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1534.webp",[14,5485,5486],{},"解决方案：直接在Launch里启动GUI版本的，这样即可解决。(但是不建议)",[14,5488,5489],{},"建议方案：用非GUI版本的，因为以后，我们控制关节是用程序控制，而不是GUI控制。",[14,5491,5492],{},[17,5493],{"alt":19,"src":5494},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1535.webp",[14,5496,5497],{},"如果只是想展示模型，用GUI，",[14,5499,5500],{},"如果想用程序控制，用普通版。",[3547,5502,5503],{"id":5503},"base_footprint",[14,5505,5506],{},"bug:机器人底盘半沉入地下",[14,5508,5509],{},[17,5510],{"alt":19,"src":5511},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1536.webp",[14,5513,5514],{},[17,5515],{"alt":19,"src":5516},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1537.webp",[14,5518,5519],{},[17,5520],{"alt":19,"src":5521},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1538.webp",[14,5523,5524],{},[17,5525],{"alt":19,"src":5526},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1539.webp",[76,5528,5530],{"className":775,"code":5529,"language":777,"meta":19,"style":19},"  \u003Clink name=\"base_footprint\">\n    \u003Cvisual>\n      \u003Cgeometry>\n          \u003Csphere radius=\"0.001\"\u002F>\n      \u003C\u002Fgeometry>\n    \u003C\u002Fvisual>\n  \u003C\u002Flink>\n",[71,5531,5532,5547,5555,5563,5579,5587,5595],{"__ignoreMap":19},[84,5533,5534,5536,5538,5540,5542,5545],{"class":86,"line":87},[84,5535,3821],{"class":633},[84,5537,806],{"class":793},[84,5539,1659],{"class":90},[84,5541,847],{"class":633},[84,5543,5544],{"class":94},"\"base_footprint\"",[84,5546,821],{"class":633},[84,5548,5549,5551,5553],{"class":86,"line":644},[84,5550,1676],{"class":633},[84,5552,818],{"class":793},[84,5554,821],{"class":633},[84,5556,5557,5559,5561],{"class":86,"line":800},[84,5558,1696],{"class":633},[84,5560,830],{"class":793},[84,5562,821],{"class":633},[84,5564,5565,5567,5569,5572,5574,5577],{"class":86,"line":812},[84,5566,1722],{"class":633},[84,5568,3615],{"class":793},[84,5570,5571],{"class":90}," radius",[84,5573,847],{"class":633},[84,5575,5576],{"class":94},"\"0.001\"",[84,5578,853],{"class":633},[84,5580,5581,5583,5585],{"class":86,"line":824},[84,5582,1747],{"class":633},[84,5584,830],{"class":793},[84,5586,821],{"class":633},[84,5588,5589,5591,5593],{"class":86,"line":835},[84,5590,1756],{"class":633},[84,5592,818],{"class":793},[84,5594,821],{"class":633},[84,5596,5597,5599,5601],{"class":86,"line":856},[84,5598,1765],{"class":633},[84,5600,806],{"class":793},[84,5602,821],{"class":633},[76,5604,5606],{"className":775,"code":5605,"language":777,"meta":19,"style":19},"    \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",[71,5607,5608,5630,5644,5658,5673],{"__ignoreMap":19},[84,5609,5610,5612,5614,5616,5618,5621,5623,5625,5628],{"class":86,"line":87},[84,5611,1676],{"class":633},[84,5613,4650],{"class":793},[84,5615,1659],{"class":90},[84,5617,847],{"class":633},[84,5619,5620],{"class":94},"\"baselink2basefootprint\"",[84,5622,5356],{"class":90},[84,5624,847],{"class":633},[84,5626,5627],{"class":94},"\"fixed\"",[84,5629,821],{"class":633},[84,5631,5632,5634,5636,5638,5640,5642],{"class":86,"line":644},[84,5633,1696],{"class":633},[84,5635,4497],{"class":793},[84,5637,5372],{"class":90},[84,5639,847],{"class":633},[84,5641,5544],{"class":94},[84,5643,853],{"class":633},[84,5645,5646,5648,5650,5652,5654,5656],{"class":86,"line":800},[84,5647,1696],{"class":633},[84,5649,4512],{"class":793},[84,5651,5372],{"class":90},[84,5653,847],{"class":633},[84,5655,1685],{"class":94},[84,5657,853],{"class":633},[84,5659,5660,5662,5664,5666,5668,5671],{"class":86,"line":812},[84,5661,1696],{"class":633},[84,5663,3639],{"class":793},[84,5665,3936],{"class":90},[84,5667,847],{"class":633},[84,5669,5670],{"class":94},"\"0.0 0.0 0.05\"",[84,5672,853],{"class":633},[84,5674,5675,5677,5679],{"class":86,"line":824},[84,5676,1756],{"class":633},[84,5678,4650],{"class":793},[84,5680,821],{"class":633},[14,5682,5683],{},"Z的偏移量要填下沉底盘的距离，也就是整车底盘的一半。",[14,5685,5686,5689],{},[17,5687],{"alt":19,"src":5688},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1540.webp",[17,5690],{"alt":19,"src":5691},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1541.webp",[14,5693,5694],{},"修改参考坐标系",[14,5696,5697],{},"其实这个优化，可以不做，影响不大。但是建议用有basefootprint版本的。",[76,5699,5701],{"className":775,"code":5700,"language":777,"meta":19,"style":19},"\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",[71,5702,5703,5707,5722,5726,5740,5754,5762,5776,5790,5798,5802,5816,5824,5832,5846,5854,5862,5870,5874,5888,5896,5900,5908,5922,5930,5950,5964,5972,5980,5984,6004,6018,6032,6046,6054,6058,6072,6080,6088,6102,6110,6130,6144,6152,6160,6164,6184,6198,6212,6216,6236,6250,6258,6262],{"__ignoreMap":19},[84,5704,5705],{"class":86,"line":87},[84,5706,785],{"emptyLinePlaceholder":784},[84,5708,5709,5711,5713,5715,5717,5720],{"class":86,"line":644},[84,5710,790],{"class":633},[84,5712,794],{"class":793},[84,5714,1659],{"class":90},[84,5716,847],{"class":633},[84,5718,5719],{"class":94},"\"base_footprint_demo\"",[84,5721,821],{"class":633},[84,5723,5724],{"class":86,"line":800},[84,5725,785],{"emptyLinePlaceholder":784},[84,5727,5728,5730,5732,5734,5736,5738],{"class":86,"line":812},[84,5729,3821],{"class":633},[84,5731,3661],{"class":793},[84,5733,1659],{"class":90},[84,5735,847],{"class":633},[84,5737,3830],{"class":94},[84,5739,821],{"class":633},[84,5741,5742,5744,5746,5748,5750,5752],{"class":86,"line":824},[84,5743,1676],{"class":633},[84,5745,3676],{"class":793},[84,5747,3841],{"class":90},[84,5749,847],{"class":633},[84,5751,3846],{"class":94},[84,5753,3849],{"class":633},[84,5755,5756,5758,5760],{"class":86,"line":835},[84,5757,1765],{"class":633},[84,5759,3661],{"class":793},[84,5761,821],{"class":633},[84,5763,5764,5766,5768,5770,5772,5774],{"class":86,"line":856},[84,5765,3821],{"class":633},[84,5767,3661],{"class":793},[84,5769,1659],{"class":90},[84,5771,847],{"class":633},[84,5773,5097],{"class":94},[84,5775,821],{"class":633},[84,5777,5778,5780,5782,5784,5786,5788],{"class":86,"line":866},[84,5779,1676],{"class":633},[84,5781,3676],{"class":793},[84,5783,3841],{"class":90},[84,5785,847],{"class":633},[84,5787,5112],{"class":94},[84,5789,3849],{"class":633},[84,5791,5792,5794,5796],{"class":86,"line":876},[84,5793,1765],{"class":633},[84,5795,3661],{"class":793},[84,5797,821],{"class":633},[84,5799,5800],{"class":86,"line":886},[84,5801,785],{"emptyLinePlaceholder":784},[84,5803,5804,5806,5808,5810,5812,5814],{"class":86,"line":1018},[84,5805,3821],{"class":633},[84,5807,806],{"class":793},[84,5809,1659],{"class":90},[84,5811,847],{"class":633},[84,5813,5544],{"class":94},[84,5815,821],{"class":633},[84,5817,5818,5820,5822],{"class":86,"line":1023},[84,5819,1676],{"class":633},[84,5821,818],{"class":793},[84,5823,821],{"class":633},[84,5825,5826,5828,5830],{"class":86,"line":1040},[84,5827,1696],{"class":633},[84,5829,830],{"class":793},[84,5831,821],{"class":633},[84,5833,5834,5836,5838,5840,5842,5844],{"class":86,"line":1062},[84,5835,1722],{"class":633},[84,5837,3615],{"class":793},[84,5839,5571],{"class":90},[84,5841,847],{"class":633},[84,5843,5576],{"class":94},[84,5845,853],{"class":633},[84,5847,5848,5850,5852],{"class":86,"line":1082},[84,5849,1747],{"class":633},[84,5851,830],{"class":793},[84,5853,821],{"class":633},[84,5855,5856,5858,5860],{"class":86,"line":1113},[84,5857,1756],{"class":633},[84,5859,818],{"class":793},[84,5861,821],{"class":633},[84,5863,5864,5866,5868],{"class":86,"line":1118},[84,5865,1765],{"class":633},[84,5867,806],{"class":793},[84,5869,821],{"class":633},[84,5871,5872],{"class":86,"line":1124},[84,5873,785],{"emptyLinePlaceholder":784},[84,5875,5876,5878,5880,5882,5884,5886],{"class":86,"line":1129},[84,5877,3821],{"class":633},[84,5879,806],{"class":793},[84,5881,1659],{"class":90},[84,5883,847],{"class":633},[84,5885,1685],{"class":94},[84,5887,821],{"class":633},[84,5889,5890,5892,5894],{"class":86,"line":1135},[84,5891,1676],{"class":633},[84,5893,818],{"class":793},[84,5895,821],{"class":633},[84,5897,5898],{"class":86,"line":1157},[84,5899,785],{"emptyLinePlaceholder":784},[84,5901,5902,5904,5906],{"class":86,"line":1168},[84,5903,1709],{"class":633},[84,5905,830],{"class":793},[84,5907,821],{"class":633},[84,5909,5910,5912,5914,5916,5918,5920],{"class":86,"line":1182},[84,5911,3900],{"class":633},[84,5913,841],{"class":793},[84,5915,844],{"class":90},[84,5917,847],{"class":633},[84,5919,3909],{"class":94},[84,5921,3849],{"class":633},[84,5923,5924,5926,5928],{"class":86,"line":1194},[84,5925,1738],{"class":633},[84,5927,830],{"class":793},[84,5929,821],{"class":633},[84,5931,5932,5934,5936,5938,5940,5942,5944,5946,5948],{"class":86,"line":1211},[84,5933,1709],{"class":633},[84,5935,3639],{"class":793},[84,5937,3936],{"class":90},[84,5939,847],{"class":633},[84,5941,3941],{"class":94},[84,5943,3944],{"class":90},[84,5945,847],{"class":633},[84,5947,3941],{"class":94},[84,5949,3849],{"class":633},[84,5951,5952,5954,5956,5958,5960,5962],{"class":86,"line":1217},[84,5953,1709],{"class":633},[84,5955,3661],{"class":793},[84,5957,1659],{"class":90},[84,5959,847],{"class":633},[84,5961,3830],{"class":94},[84,5963,853],{"class":633},[84,5965,5966,5968,5970],{"class":86,"line":1222},[84,5967,1756],{"class":633},[84,5969,818],{"class":793},[84,5971,821],{"class":633},[84,5973,5974,5976,5978],{"class":86,"line":1228},[84,5975,1765],{"class":633},[84,5977,806],{"class":793},[84,5979,821],{"class":633},[84,5981,5982],{"class":86,"line":1238},[84,5983,785],{"emptyLinePlaceholder":784},[84,5985,5986,5988,5990,5992,5994,5996,5998,6000,6002],{"class":86,"line":1250},[84,5987,3821],{"class":633},[84,5989,4650],{"class":793},[84,5991,1659],{"class":90},[84,5993,847],{"class":633},[84,5995,5620],{"class":94},[84,5997,5356],{"class":90},[84,5999,847],{"class":633},[84,6001,5627],{"class":94},[84,6003,821],{"class":633},[84,6005,6006,6008,6010,6012,6014,6016],{"class":86,"line":1260},[84,6007,1676],{"class":633},[84,6009,4497],{"class":793},[84,6011,5372],{"class":90},[84,6013,847],{"class":633},[84,6015,5544],{"class":94},[84,6017,853],{"class":633},[84,6019,6020,6022,6024,6026,6028,6030],{"class":86,"line":1265},[84,6021,1676],{"class":633},[84,6023,4512],{"class":793},[84,6025,5372],{"class":90},[84,6027,847],{"class":633},[84,6029,1685],{"class":94},[84,6031,853],{"class":633},[84,6033,6034,6036,6038,6040,6042,6044],{"class":86,"line":1270},[84,6035,1676],{"class":633},[84,6037,3639],{"class":793},[84,6039,3936],{"class":90},[84,6041,847],{"class":633},[84,6043,5670],{"class":94},[84,6045,853],{"class":633},[84,6047,6048,6050,6052],{"class":86,"line":1276},[84,6049,1765],{"class":633},[84,6051,4650],{"class":793},[84,6053,821],{"class":633},[84,6055,6056],{"class":86,"line":1286},[84,6057,785],{"emptyLinePlaceholder":784},[84,6059,6060,6062,6064,6066,6068,6070],{"class":86,"line":1298},[84,6061,3821],{"class":633},[84,6063,806],{"class":793},[84,6065,1659],{"class":90},[84,6067,847],{"class":633},[84,6069,5245],{"class":94},[84,6071,821],{"class":633},[84,6073,6074,6076,6078],{"class":86,"line":1308},[84,6075,1696],{"class":633},[84,6077,818],{"class":793},[84,6079,821],{"class":633},[84,6081,6082,6084,6086],{"class":86,"line":1313},[84,6083,1722],{"class":633},[84,6085,830],{"class":793},[84,6087,821],{"class":633},[84,6089,6090,6092,6094,6096,6098,6100],{"class":86,"line":1319},[84,6091,4254],{"class":633},[84,6093,841],{"class":793},[84,6095,844],{"class":90},[84,6097,847],{"class":633},[84,6099,5276],{"class":94},[84,6101,3849],{"class":633},[84,6103,6104,6106,6108],{"class":86,"line":1324},[84,6105,4273],{"class":633},[84,6107,830],{"class":793},[84,6109,821],{"class":633},[84,6111,6112,6114,6116,6118,6120,6122,6124,6126,6128],{"class":86,"line":1333},[84,6113,1722],{"class":633},[84,6115,3639],{"class":793},[84,6117,3936],{"class":90},[84,6119,847],{"class":633},[84,6121,3941],{"class":94},[84,6123,3944],{"class":90},[84,6125,847],{"class":633},[84,6127,3941],{"class":94},[84,6129,3849],{"class":633},[84,6131,6132,6134,6136,6138,6140,6142],{"class":86,"line":1339},[84,6133,1722],{"class":633},[84,6135,3661],{"class":793},[84,6137,1659],{"class":90},[84,6139,847],{"class":633},[84,6141,5097],{"class":94},[84,6143,3849],{"class":633},[84,6145,6146,6148,6150],{"class":86,"line":1345},[84,6147,1747],{"class":633},[84,6149,818],{"class":793},[84,6151,821],{"class":633},[84,6153,6154,6156,6158],{"class":86,"line":1351},[84,6155,1765],{"class":633},[84,6157,806],{"class":793},[84,6159,821],{"class":633},[84,6161,6162],{"class":86,"line":1357},[84,6163,785],{"emptyLinePlaceholder":784},[84,6165,6166,6168,6170,6172,6174,6176,6178,6180,6182],{"class":86,"line":2242},[84,6167,3821],{"class":633},[84,6169,4650],{"class":793},[84,6171,1659],{"class":90},[84,6173,847],{"class":633},[84,6175,5353],{"class":94},[84,6177,5356],{"class":90},[84,6179,847],{"class":633},[84,6181,5627],{"class":94},[84,6183,821],{"class":633},[84,6185,6186,6188,6190,6192,6194,6196],{"class":86,"line":2247},[84,6187,1696],{"class":633},[84,6189,4497],{"class":793},[84,6191,5372],{"class":90},[84,6193,847],{"class":633},[84,6195,1685],{"class":94},[84,6197,853],{"class":633},[84,6199,6200,6202,6204,6206,6208,6210],{"class":86,"line":2257},[84,6201,1696],{"class":633},[84,6203,4512],{"class":793},[84,6205,5372],{"class":90},[84,6207,847],{"class":633},[84,6209,5245],{"class":94},[84,6211,3849],{"class":633},[84,6213,6214],{"class":86,"line":2268},[84,6215,785],{"emptyLinePlaceholder":784},[84,6217,6218,6220,6222,6224,6226,6228,6230,6232,6234],{"class":86,"line":2277},[84,6219,1696],{"class":633},[84,6221,3639],{"class":793},[84,6223,3936],{"class":90},[84,6225,847],{"class":633},[84,6227,5409],{"class":94},[84,6229,3944],{"class":90},[84,6231,847],{"class":633},[84,6233,3941],{"class":94},[84,6235,3849],{"class":633},[84,6237,6238,6240,6242,6244,6246,6248],{"class":86,"line":2282},[84,6239,1696],{"class":633},[84,6241,5424],{"class":793},[84,6243,3936],{"class":90},[84,6245,847],{"class":633},[84,6247,5431],{"class":94},[84,6249,3849],{"class":633},[84,6251,6252,6254,6256],{"class":86,"line":2287},[84,6253,1765],{"class":633},[84,6255,4650],{"class":793},[84,6257,821],{"class":633},[84,6259,6260],{"class":86,"line":2296},[84,6261,785],{"emptyLinePlaceholder":784},[84,6263,6264,6266,6268],{"class":86,"line":2904},[84,6265,3989],{"class":633},[84,6267,794],{"class":793},[84,6269,821],{"class":633},[653,6271,4765],{"id":6272},"练习-1",[14,6274,6275],{},[17,6276],{"alt":19,"src":6277},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1542.webp",[14,6279,6280],{},"没必要太深入练习，咱们可以直接用SolidWorks建模，更为友好。",[14,6282,6283],{},[17,6284],{"alt":19,"src":6285},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1543.webp",[76,6287,6289],{"className":775,"code":6288,"language":777,"meta":19,"style":19},"\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",[71,6290,6291,6295,6310,6314,6328,6342,6350,6364,6378,6386,6401,6416,6424,6428,6442,6450,6458,6472,6480,6488,6496,6500,6514,6522,6526,6534,6549,6557,6577,6591,6599,6607,6611,6631,6645,6659,6673,6681,6685,6700,6708,6716,6739,6747,6768,6782,6790,6798,6802,6823,6837,6851,6855,6876,6891,6899,6903,6918,6926,6934,6954,6962,6982,6996,7004,7012,7016,7037,7051,7065,7069,7090,7104,7112,7116,7131,7139,7147,7167,7175,7195,7210,7219,7228,7233,7255,7270,7285,7290,7312,7327,7336,7341,7357,7366,7375,7396,7405,7426,7441,7450,7459,7464,7486,7501,7516,7521,7543,7558,7567,7572],{"__ignoreMap":19},[84,6292,6293],{"class":86,"line":87},[84,6294,785],{"emptyLinePlaceholder":784},[84,6296,6297,6299,6301,6303,6305,6308],{"class":86,"line":644},[84,6298,790],{"class":633},[84,6300,794],{"class":793},[84,6302,1659],{"class":90},[84,6304,847],{"class":633},[84,6306,6307],{"class":94},"\"exercise_demo\"",[84,6309,821],{"class":633},[84,6311,6312],{"class":86,"line":800},[84,6313,785],{"emptyLinePlaceholder":784},[84,6315,6316,6318,6320,6322,6324,6326],{"class":86,"line":812},[84,6317,3821],{"class":633},[84,6319,3661],{"class":793},[84,6321,1659],{"class":90},[84,6323,847],{"class":633},[84,6325,3830],{"class":94},[84,6327,821],{"class":633},[84,6329,6330,6332,6334,6336,6338,6340],{"class":86,"line":824},[84,6331,1676],{"class":633},[84,6333,3676],{"class":793},[84,6335,3841],{"class":90},[84,6337,847],{"class":633},[84,6339,3846],{"class":94},[84,6341,3849],{"class":633},[84,6343,6344,6346,6348],{"class":86,"line":835},[84,6345,1765],{"class":633},[84,6347,3661],{"class":793},[84,6349,821],{"class":633},[84,6351,6352,6354,6356,6358,6360,6362],{"class":86,"line":856},[84,6353,3821],{"class":633},[84,6355,3661],{"class":793},[84,6357,1659],{"class":90},[84,6359,847],{"class":633},[84,6361,5097],{"class":94},[84,6363,821],{"class":633},[84,6365,6366,6368,6370,6372,6374,6376],{"class":86,"line":866},[84,6367,1676],{"class":633},[84,6369,3676],{"class":793},[84,6371,3841],{"class":90},[84,6373,847],{"class":633},[84,6375,5112],{"class":94},[84,6377,3849],{"class":633},[84,6379,6380,6382,6384],{"class":86,"line":876},[84,6381,1765],{"class":633},[84,6383,3661],{"class":793},[84,6385,821],{"class":633},[84,6387,6388,6390,6392,6394,6396,6399],{"class":86,"line":886},[84,6389,3821],{"class":633},[84,6391,3661],{"class":793},[84,6393,1659],{"class":90},[84,6395,847],{"class":633},[84,6397,6398],{"class":94},"\"gray\"",[84,6400,821],{"class":633},[84,6402,6403,6405,6407,6409,6411,6414],{"class":86,"line":1018},[84,6404,1676],{"class":633},[84,6406,3676],{"class":793},[84,6408,3841],{"class":90},[84,6410,847],{"class":633},[84,6412,6413],{"class":94},"\"0.2 0.2 0.2 0.8\"",[84,6415,3849],{"class":633},[84,6417,6418,6420,6422],{"class":86,"line":1023},[84,6419,1765],{"class":633},[84,6421,3661],{"class":793},[84,6423,821],{"class":633},[84,6425,6426],{"class":86,"line":1040},[84,6427,785],{"emptyLinePlaceholder":784},[84,6429,6430,6432,6434,6436,6438,6440],{"class":86,"line":1062},[84,6431,3821],{"class":633},[84,6433,806],{"class":793},[84,6435,1659],{"class":90},[84,6437,847],{"class":633},[84,6439,5544],{"class":94},[84,6441,821],{"class":633},[84,6443,6444,6446,6448],{"class":86,"line":1082},[84,6445,1676],{"class":633},[84,6447,818],{"class":793},[84,6449,821],{"class":633},[84,6451,6452,6454,6456],{"class":86,"line":1113},[84,6453,1696],{"class":633},[84,6455,830],{"class":793},[84,6457,821],{"class":633},[84,6459,6460,6462,6464,6466,6468,6470],{"class":86,"line":1118},[84,6461,1722],{"class":633},[84,6463,3615],{"class":793},[84,6465,5571],{"class":90},[84,6467,847],{"class":633},[84,6469,5576],{"class":94},[84,6471,853],{"class":633},[84,6473,6474,6476,6478],{"class":86,"line":1124},[84,6475,1747],{"class":633},[84,6477,830],{"class":793},[84,6479,821],{"class":633},[84,6481,6482,6484,6486],{"class":86,"line":1129},[84,6483,1756],{"class":633},[84,6485,818],{"class":793},[84,6487,821],{"class":633},[84,6489,6490,6492,6494],{"class":86,"line":1135},[84,6491,1765],{"class":633},[84,6493,806],{"class":793},[84,6495,821],{"class":633},[84,6497,6498],{"class":86,"line":1157},[84,6499,785],{"emptyLinePlaceholder":784},[84,6501,6502,6504,6506,6508,6510,6512],{"class":86,"line":1168},[84,6503,3821],{"class":633},[84,6505,806],{"class":793},[84,6507,1659],{"class":90},[84,6509,847],{"class":633},[84,6511,1685],{"class":94},[84,6513,821],{"class":633},[84,6515,6516,6518,6520],{"class":86,"line":1182},[84,6517,1676],{"class":633},[84,6519,818],{"class":793},[84,6521,821],{"class":633},[84,6523,6524],{"class":86,"line":1194},[84,6525,785],{"emptyLinePlaceholder":784},[84,6527,6528,6530,6532],{"class":86,"line":1211},[84,6529,1709],{"class":633},[84,6531,830],{"class":793},[84,6533,821],{"class":633},[84,6535,6536,6538,6540,6542,6544,6547],{"class":86,"line":1217},[84,6537,3900],{"class":633},[84,6539,841],{"class":793},[84,6541,844],{"class":90},[84,6543,847],{"class":633},[84,6545,6546],{"class":94},"\"0.2 0.12 0.07\"",[84,6548,3849],{"class":633},[84,6550,6551,6553,6555],{"class":86,"line":1222},[84,6552,1738],{"class":633},[84,6554,830],{"class":793},[84,6556,821],{"class":633},[84,6558,6559,6561,6563,6565,6567,6569,6571,6573,6575],{"class":86,"line":1228},[84,6560,1709],{"class":633},[84,6562,3639],{"class":793},[84,6564,3936],{"class":90},[84,6566,847],{"class":633},[84,6568,3941],{"class":94},[84,6570,3944],{"class":90},[84,6572,847],{"class":633},[84,6574,3941],{"class":94},[84,6576,3849],{"class":633},[84,6578,6579,6581,6583,6585,6587,6589],{"class":86,"line":1238},[84,6580,1709],{"class":633},[84,6582,3661],{"class":793},[84,6584,1659],{"class":90},[84,6586,847],{"class":633},[84,6588,3830],{"class":94},[84,6590,853],{"class":633},[84,6592,6593,6595,6597],{"class":86,"line":1250},[84,6594,1756],{"class":633},[84,6596,818],{"class":793},[84,6598,821],{"class":633},[84,6600,6601,6603,6605],{"class":86,"line":1260},[84,6602,1765],{"class":633},[84,6604,806],{"class":793},[84,6606,821],{"class":633},[84,6608,6609],{"class":86,"line":1265},[84,6610,785],{"emptyLinePlaceholder":784},[84,6612,6613,6615,6617,6619,6621,6623,6625,6627,6629],{"class":86,"line":1270},[84,6614,3821],{"class":633},[84,6616,4650],{"class":793},[84,6618,1659],{"class":90},[84,6620,847],{"class":633},[84,6622,5620],{"class":94},[84,6624,5356],{"class":90},[84,6626,847],{"class":633},[84,6628,5627],{"class":94},[84,6630,821],{"class":633},[84,6632,6633,6635,6637,6639,6641,6643],{"class":86,"line":1276},[84,6634,1676],{"class":633},[84,6636,4497],{"class":793},[84,6638,5372],{"class":90},[84,6640,847],{"class":633},[84,6642,5544],{"class":94},[84,6644,853],{"class":633},[84,6646,6647,6649,6651,6653,6655,6657],{"class":86,"line":1286},[84,6648,1676],{"class":633},[84,6650,4512],{"class":793},[84,6652,5372],{"class":90},[84,6654,847],{"class":633},[84,6656,1685],{"class":94},[84,6658,853],{"class":633},[84,6660,6661,6663,6665,6667,6669,6671],{"class":86,"line":1298},[84,6662,1676],{"class":633},[84,6664,3639],{"class":793},[84,6666,3936],{"class":90},[84,6668,847],{"class":633},[84,6670,5670],{"class":94},[84,6672,853],{"class":633},[84,6674,6675,6677,6679],{"class":86,"line":1308},[84,6676,1765],{"class":633},[84,6678,4650],{"class":793},[84,6680,821],{"class":633},[84,6682,6683],{"class":86,"line":1313},[84,6684,785],{"emptyLinePlaceholder":784},[84,6686,6687,6689,6691,6693,6695,6698],{"class":86,"line":1319},[84,6688,3821],{"class":633},[84,6690,806],{"class":793},[84,6692,1659],{"class":90},[84,6694,847],{"class":633},[84,6696,6697],{"class":94},"\"front_left_wheel\"",[84,6699,821],{"class":633},[84,6701,6702,6704,6706],{"class":86,"line":1324},[84,6703,1696],{"class":633},[84,6705,818],{"class":793},[84,6707,821],{"class":633},[84,6709,6710,6712,6714],{"class":86,"line":1333},[84,6711,1722],{"class":633},[84,6713,830],{"class":793},[84,6715,821],{"class":633},[84,6717,6718,6720,6722,6724,6726,6729,6732,6734,6737],{"class":86,"line":1339},[84,6719,4254],{"class":633},[84,6721,3607],{"class":793},[84,6723,5571],{"class":90},[84,6725,847],{"class":633},[84,6727,6728],{"class":94},"\"0.025\"",[84,6730,6731],{"class":90}," length",[84,6733,847],{"class":633},[84,6735,6736],{"class":94},"\"0.02\"",[84,6738,853],{"class":633},[84,6740,6741,6743,6745],{"class":86,"line":1345},[84,6742,4273],{"class":633},[84,6744,830],{"class":793},[84,6746,821],{"class":633},[84,6748,6749,6751,6753,6755,6757,6759,6761,6763,6766],{"class":86,"line":1351},[84,6750,1722],{"class":633},[84,6752,3639],{"class":793},[84,6754,3936],{"class":90},[84,6756,847],{"class":633},[84,6758,3941],{"class":94},[84,6760,3944],{"class":90},[84,6762,847],{"class":633},[84,6764,6765],{"class":94},"\"1.57 0 0\"",[84,6767,3849],{"class":633},[84,6769,6770,6772,6774,6776,6778,6780],{"class":86,"line":1357},[84,6771,1722],{"class":633},[84,6773,3661],{"class":793},[84,6775,1659],{"class":90},[84,6777,847],{"class":633},[84,6779,6398],{"class":94},[84,6781,3849],{"class":633},[84,6783,6784,6786,6788],{"class":86,"line":2242},[84,6785,1747],{"class":633},[84,6787,818],{"class":793},[84,6789,821],{"class":633},[84,6791,6792,6794,6796],{"class":86,"line":2247},[84,6793,1765],{"class":633},[84,6795,806],{"class":793},[84,6797,821],{"class":633},[84,6799,6800],{"class":86,"line":2257},[84,6801,785],{"emptyLinePlaceholder":784},[84,6803,6804,6806,6808,6810,6812,6815,6817,6819,6821],{"class":86,"line":2268},[84,6805,3821],{"class":633},[84,6807,4650],{"class":793},[84,6809,1659],{"class":90},[84,6811,847],{"class":633},[84,6813,6814],{"class":94},"\"frontleftwheel2baselink\"",[84,6816,5356],{"class":90},[84,6818,847],{"class":633},[84,6820,5361],{"class":94},[84,6822,821],{"class":633},[84,6824,6825,6827,6829,6831,6833,6835],{"class":86,"line":2277},[84,6826,1696],{"class":633},[84,6828,4497],{"class":793},[84,6830,5372],{"class":90},[84,6832,847],{"class":633},[84,6834,1685],{"class":94},[84,6836,853],{"class":633},[84,6838,6839,6841,6843,6845,6847,6849],{"class":86,"line":2282},[84,6840,1696],{"class":633},[84,6842,4512],{"class":793},[84,6844,5372],{"class":90},[84,6846,847],{"class":633},[84,6848,6697],{"class":94},[84,6850,3849],{"class":633},[84,6852,6853],{"class":86,"line":2287},[84,6854,785],{"emptyLinePlaceholder":784},[84,6856,6857,6859,6861,6863,6865,6868,6870,6872,6874],{"class":86,"line":2296},[84,6858,1696],{"class":633},[84,6860,3639],{"class":793},[84,6862,3936],{"class":90},[84,6864,847],{"class":633},[84,6866,6867],{"class":94},"\"0.075 0.06 -0.025\"",[84,6869,3944],{"class":90},[84,6871,847],{"class":633},[84,6873,3941],{"class":94},[84,6875,3849],{"class":633},[84,6877,6878,6880,6882,6884,6886,6889],{"class":86,"line":2904},[84,6879,1696],{"class":633},[84,6881,5424],{"class":793},[84,6883,3936],{"class":90},[84,6885,847],{"class":633},[84,6887,6888],{"class":94},"\"0 1 0\"",[84,6890,3849],{"class":633},[84,6892,6893,6895,6897],{"class":86,"line":2915},[84,6894,1765],{"class":633},[84,6896,4650],{"class":793},[84,6898,821],{"class":633},[84,6900,6901],{"class":86,"line":2943},[84,6902,785],{"emptyLinePlaceholder":784},[84,6904,6905,6907,6909,6911,6913,6916],{"class":86,"line":2948},[84,6906,3821],{"class":633},[84,6908,806],{"class":793},[84,6910,1659],{"class":90},[84,6912,847],{"class":633},[84,6914,6915],{"class":94},"\"front_right_wheel\"",[84,6917,821],{"class":633},[84,6919,6920,6922,6924],{"class":86,"line":2953},[84,6921,1676],{"class":633},[84,6923,818],{"class":793},[84,6925,821],{"class":633},[84,6927,6928,6930,6932],{"class":86,"line":2962},[84,6929,1709],{"class":633},[84,6931,830],{"class":793},[84,6933,821],{"class":633},[84,6935,6936,6938,6940,6942,6944,6946,6948,6950,6952],{"class":86,"line":3352},[84,6937,3900],{"class":633},[84,6939,3607],{"class":793},[84,6941,5571],{"class":90},[84,6943,847],{"class":633},[84,6945,6728],{"class":94},[84,6947,6731],{"class":90},[84,6949,847],{"class":633},[84,6951,6736],{"class":94},[84,6953,853],{"class":633},[84,6955,6956,6958,6960],{"class":86,"line":3358},[84,6957,1738],{"class":633},[84,6959,830],{"class":793},[84,6961,821],{"class":633},[84,6963,6964,6966,6968,6970,6972,6974,6976,6978,6980],{"class":86,"line":3363},[84,6965,1709],{"class":633},[84,6967,3639],{"class":793},[84,6969,3936],{"class":90},[84,6971,847],{"class":633},[84,6973,3941],{"class":94},[84,6975,3944],{"class":90},[84,6977,847],{"class":633},[84,6979,6765],{"class":94},[84,6981,3849],{"class":633},[84,6983,6984,6986,6988,6990,6992,6994],{"class":86,"line":3369},[84,6985,1709],{"class":633},[84,6987,3661],{"class":793},[84,6989,1659],{"class":90},[84,6991,847],{"class":633},[84,6993,6398],{"class":94},[84,6995,3849],{"class":633},[84,6997,6998,7000,7002],{"class":86,"line":3374},[84,6999,1756],{"class":633},[84,7001,818],{"class":793},[84,7003,821],{"class":633},[84,7005,7006,7008,7010],{"class":86,"line":3380},[84,7007,1765],{"class":633},[84,7009,806],{"class":793},[84,7011,821],{"class":633},[84,7013,7014],{"class":86,"line":3389},[84,7015,785],{"emptyLinePlaceholder":784},[84,7017,7018,7020,7022,7024,7026,7029,7031,7033,7035],{"class":86,"line":3401},[84,7019,3821],{"class":633},[84,7021,4650],{"class":793},[84,7023,1659],{"class":90},[84,7025,847],{"class":633},[84,7027,7028],{"class":94},"\"frontrightwheel2baselink\"",[84,7030,5356],{"class":90},[84,7032,847],{"class":633},[84,7034,5361],{"class":94},[84,7036,821],{"class":633},[84,7038,7039,7041,7043,7045,7047,7049],{"class":86,"line":3411},[84,7040,1696],{"class":633},[84,7042,4497],{"class":793},[84,7044,5372],{"class":90},[84,7046,847],{"class":633},[84,7048,1685],{"class":94},[84,7050,853],{"class":633},[84,7052,7053,7055,7057,7059,7061,7063],{"class":86,"line":3416},[84,7054,1696],{"class":633},[84,7056,4512],{"class":793},[84,7058,5372],{"class":90},[84,7060,847],{"class":633},[84,7062,6915],{"class":94},[84,7064,3849],{"class":633},[84,7066,7067],{"class":86,"line":3421},[84,7068,785],{"emptyLinePlaceholder":784},[84,7070,7071,7073,7075,7077,7079,7082,7084,7086,7088],{"class":86,"line":3430},[84,7072,1696],{"class":633},[84,7074,3639],{"class":793},[84,7076,3936],{"class":90},[84,7078,847],{"class":633},[84,7080,7081],{"class":94},"\"0.075 -0.06 -0.025\"",[84,7083,3944],{"class":90},[84,7085,847],{"class":633},[84,7087,3941],{"class":94},[84,7089,3849],{"class":633},[84,7091,7092,7094,7096,7098,7100,7102],{"class":86,"line":3441},[84,7093,1696],{"class":633},[84,7095,5424],{"class":793},[84,7097,3936],{"class":90},[84,7099,847],{"class":633},[84,7101,6888],{"class":94},[84,7103,3849],{"class":633},[84,7105,7106,7108,7110],{"class":86,"line":3452},[84,7107,1765],{"class":633},[84,7109,4650],{"class":793},[84,7111,821],{"class":633},[84,7113,7114],{"class":86,"line":3457},[84,7115,785],{"emptyLinePlaceholder":784},[84,7117,7118,7120,7122,7124,7126,7129],{"class":86,"line":3463},[84,7119,3821],{"class":633},[84,7121,806],{"class":793},[84,7123,1659],{"class":90},[84,7125,847],{"class":633},[84,7127,7128],{"class":94},"\"back_left_wheel\"",[84,7130,821],{"class":633},[84,7132,7133,7135,7137],{"class":86,"line":3477},[84,7134,1676],{"class":633},[84,7136,818],{"class":793},[84,7138,821],{"class":633},[84,7140,7141,7143,7145],{"class":86,"line":3482},[84,7142,1709],{"class":633},[84,7144,830],{"class":793},[84,7146,821],{"class":633},[84,7148,7149,7151,7153,7155,7157,7159,7161,7163,7165],{"class":86,"line":3487},[84,7150,3900],{"class":633},[84,7152,3607],{"class":793},[84,7154,5571],{"class":90},[84,7156,847],{"class":633},[84,7158,6728],{"class":94},[84,7160,6731],{"class":90},[84,7162,847],{"class":633},[84,7164,6736],{"class":94},[84,7166,853],{"class":633},[84,7168,7169,7171,7173],{"class":86,"line":3492},[84,7170,1738],{"class":633},[84,7172,830],{"class":793},[84,7174,821],{"class":633},[84,7176,7177,7179,7181,7183,7185,7187,7189,7191,7193],{"class":86,"line":3501},[84,7178,1709],{"class":633},[84,7180,3639],{"class":793},[84,7182,3936],{"class":90},[84,7184,847],{"class":633},[84,7186,3941],{"class":94},[84,7188,3944],{"class":90},[84,7190,847],{"class":633},[84,7192,6765],{"class":94},[84,7194,3849],{"class":633},[84,7196,7198,7200,7202,7204,7206,7208],{"class":86,"line":7197},81,[84,7199,1709],{"class":633},[84,7201,3661],{"class":793},[84,7203,1659],{"class":90},[84,7205,847],{"class":633},[84,7207,6398],{"class":94},[84,7209,3849],{"class":633},[84,7211,7213,7215,7217],{"class":86,"line":7212},82,[84,7214,1756],{"class":633},[84,7216,818],{"class":793},[84,7218,821],{"class":633},[84,7220,7222,7224,7226],{"class":86,"line":7221},83,[84,7223,1765],{"class":633},[84,7225,806],{"class":793},[84,7227,821],{"class":633},[84,7229,7231],{"class":86,"line":7230},84,[84,7232,785],{"emptyLinePlaceholder":784},[84,7234,7236,7238,7240,7242,7244,7247,7249,7251,7253],{"class":86,"line":7235},85,[84,7237,3821],{"class":633},[84,7239,4650],{"class":793},[84,7241,1659],{"class":90},[84,7243,847],{"class":633},[84,7245,7246],{"class":94},"\"backleftwheel2baselink\"",[84,7248,5356],{"class":90},[84,7250,847],{"class":633},[84,7252,5361],{"class":94},[84,7254,821],{"class":633},[84,7256,7258,7260,7262,7264,7266,7268],{"class":86,"line":7257},86,[84,7259,1676],{"class":633},[84,7261,4497],{"class":793},[84,7263,5372],{"class":90},[84,7265,847],{"class":633},[84,7267,1685],{"class":94},[84,7269,853],{"class":633},[84,7271,7273,7275,7277,7279,7281,7283],{"class":86,"line":7272},87,[84,7274,1676],{"class":633},[84,7276,4512],{"class":793},[84,7278,5372],{"class":90},[84,7280,847],{"class":633},[84,7282,7128],{"class":94},[84,7284,3849],{"class":633},[84,7286,7288],{"class":86,"line":7287},88,[84,7289,785],{"emptyLinePlaceholder":784},[84,7291,7293,7295,7297,7299,7301,7304,7306,7308,7310],{"class":86,"line":7292},89,[84,7294,1676],{"class":633},[84,7296,3639],{"class":793},[84,7298,3936],{"class":90},[84,7300,847],{"class":633},[84,7302,7303],{"class":94},"\"-0.075 0.06 -0.025\"",[84,7305,3944],{"class":90},[84,7307,847],{"class":633},[84,7309,3941],{"class":94},[84,7311,3849],{"class":633},[84,7313,7315,7317,7319,7321,7323,7325],{"class":86,"line":7314},90,[84,7316,1676],{"class":633},[84,7318,5424],{"class":793},[84,7320,3936],{"class":90},[84,7322,847],{"class":633},[84,7324,6888],{"class":94},[84,7326,3849],{"class":633},[84,7328,7330,7332,7334],{"class":86,"line":7329},91,[84,7331,1765],{"class":633},[84,7333,4650],{"class":793},[84,7335,821],{"class":633},[84,7337,7339],{"class":86,"line":7338},92,[84,7340,785],{"emptyLinePlaceholder":784},[84,7342,7344,7346,7348,7350,7352,7355],{"class":86,"line":7343},93,[84,7345,3821],{"class":633},[84,7347,806],{"class":793},[84,7349,1659],{"class":90},[84,7351,847],{"class":633},[84,7353,7354],{"class":94},"\"back_right_wheel\"",[84,7356,821],{"class":633},[84,7358,7360,7362,7364],{"class":86,"line":7359},94,[84,7361,1676],{"class":633},[84,7363,818],{"class":793},[84,7365,821],{"class":633},[84,7367,7369,7371,7373],{"class":86,"line":7368},95,[84,7370,1709],{"class":633},[84,7372,830],{"class":793},[84,7374,821],{"class":633},[84,7376,7378,7380,7382,7384,7386,7388,7390,7392,7394],{"class":86,"line":7377},96,[84,7379,3900],{"class":633},[84,7381,3607],{"class":793},[84,7383,5571],{"class":90},[84,7385,847],{"class":633},[84,7387,6728],{"class":94},[84,7389,6731],{"class":90},[84,7391,847],{"class":633},[84,7393,6736],{"class":94},[84,7395,853],{"class":633},[84,7397,7399,7401,7403],{"class":86,"line":7398},97,[84,7400,1738],{"class":633},[84,7402,830],{"class":793},[84,7404,821],{"class":633},[84,7406,7408,7410,7412,7414,7416,7418,7420,7422,7424],{"class":86,"line":7407},98,[84,7409,1709],{"class":633},[84,7411,3639],{"class":793},[84,7413,3936],{"class":90},[84,7415,847],{"class":633},[84,7417,3941],{"class":94},[84,7419,3944],{"class":90},[84,7421,847],{"class":633},[84,7423,6765],{"class":94},[84,7425,3849],{"class":633},[84,7427,7429,7431,7433,7435,7437,7439],{"class":86,"line":7428},99,[84,7430,1709],{"class":633},[84,7432,3661],{"class":793},[84,7434,1659],{"class":90},[84,7436,847],{"class":633},[84,7438,6398],{"class":94},[84,7440,3849],{"class":633},[84,7442,7444,7446,7448],{"class":86,"line":7443},100,[84,7445,1756],{"class":633},[84,7447,818],{"class":793},[84,7449,821],{"class":633},[84,7451,7453,7455,7457],{"class":86,"line":7452},101,[84,7454,1765],{"class":633},[84,7456,806],{"class":793},[84,7458,821],{"class":633},[84,7460,7462],{"class":86,"line":7461},102,[84,7463,785],{"emptyLinePlaceholder":784},[84,7465,7467,7469,7471,7473,7475,7478,7480,7482,7484],{"class":86,"line":7466},103,[84,7468,3821],{"class":633},[84,7470,4650],{"class":793},[84,7472,1659],{"class":90},[84,7474,847],{"class":633},[84,7476,7477],{"class":94},"\"backrightwheel2baselink\"",[84,7479,5356],{"class":90},[84,7481,847],{"class":633},[84,7483,5361],{"class":94},[84,7485,821],{"class":633},[84,7487,7489,7491,7493,7495,7497,7499],{"class":86,"line":7488},104,[84,7490,1676],{"class":633},[84,7492,4497],{"class":793},[84,7494,5372],{"class":90},[84,7496,847],{"class":633},[84,7498,1685],{"class":94},[84,7500,853],{"class":633},[84,7502,7504,7506,7508,7510,7512,7514],{"class":86,"line":7503},105,[84,7505,1676],{"class":633},[84,7507,4512],{"class":793},[84,7509,5372],{"class":90},[84,7511,847],{"class":633},[84,7513,7354],{"class":94},[84,7515,3849],{"class":633},[84,7517,7519],{"class":86,"line":7518},106,[84,7520,785],{"emptyLinePlaceholder":784},[84,7522,7524,7526,7528,7530,7532,7535,7537,7539,7541],{"class":86,"line":7523},107,[84,7525,1676],{"class":633},[84,7527,3639],{"class":793},[84,7529,3936],{"class":90},[84,7531,847],{"class":633},[84,7533,7534],{"class":94},"\"-0.075 -0.06 -0.025\"",[84,7536,3944],{"class":90},[84,7538,847],{"class":633},[84,7540,3941],{"class":94},[84,7542,3849],{"class":633},[84,7544,7546,7548,7550,7552,7554,7556],{"class":86,"line":7545},108,[84,7547,1676],{"class":633},[84,7549,5424],{"class":793},[84,7551,3936],{"class":90},[84,7553,847],{"class":633},[84,7555,6888],{"class":94},[84,7557,3849],{"class":633},[84,7559,7561,7563,7565],{"class":86,"line":7560},109,[84,7562,1765],{"class":633},[84,7564,4650],{"class":793},[84,7566,821],{"class":633},[84,7568,7570],{"class":86,"line":7569},110,[84,7571,785],{"emptyLinePlaceholder":784},[84,7573,7575,7577,7579],{"class":86,"line":7574},111,[84,7576,3989],{"class":633},[84,7578,794],{"class":793},[84,7580,821],{"class":633},[14,7582,7583],{},"终端运行",[76,7585,7587],{"className":78,"code":7586,"language":80,"meta":19,"style":19},"ros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`\u002Furdf\u002Furdf\u002Fdemo05_exercise.urdf\n",[71,7588,7589],{"__ignoreMap":19},[84,7590,7591,7593,7595,7597,7599,7601,7603,7605,7607,7609],{"class":86,"line":87},[84,7592,724],{"class":90},[84,7594,1526],{"class":94},[84,7596,733],{"class":94},[84,7598,2518],{"class":94},[84,7600,2521],{"class":94},[84,7602,724],{"class":90},[84,7604,2526],{"class":94},[84,7606,2529],{"class":736},[84,7608,2532],{"class":94},[84,7610,7611],{"class":90},"\u002Furdf\u002Furdf\u002Fdemo05_exercise.urdf\n",[14,7613,7614],{},[17,7615],{"alt":19,"src":7616},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1544.webp",[10,7618,7620],{"id":7619},"urdf工具","URDF工具",[14,7622,7623],{},"在 ROS2 中，提供了一些URDF文件相关的工具，比如:",[163,7625,7626,7632],{},[142,7627,7628,7631],{},[71,7629,7630],{},"check_urdf","命令可以检查复杂的 urdf 文件是否存在语法问题；",[142,7633,7634,7637],{},[71,7635,7636],{},"urdf_to_graphviz","命令可以查看 urdf 模型结构，显示不同 link 的层级关系。",[14,7639,7640,7641,127],{},"当然，要使用工具之前，请先安装，安装命令：",[71,7642,7643],{},"sudo apt install liburdfdom-tools",[653,7645,7647],{"id":7646},"check_urdf-语法检查",[105,7648,7649],{},"check_urdf 语法检查",[14,7651,7652,7653,7656],{},"进入urdf文件所属目录，调用：",[71,7654,7655],{},"check_urdf urdf文件","，如果不抛出异常，说明文件合法，否则非法。",[14,7658,7659],{},"示例，终端下进入功能包 cpp06_urdf 的 urdf\u002Furdf 目录，执行如下命令：",[76,7661,7663],{"className":78,"code":7662,"language":80,"meta":19,"style":19},"check_urdf demo05_exercise.urdf\n",[71,7664,7665],{"__ignoreMap":19},[84,7666,7667,7669],{"class":86,"line":87},[84,7668,7630],{"class":90},[84,7670,7671],{"class":94}," demo05_exercise.urdf\n",[14,7673,7674],{},"urdf 文件如无异常，将显示urdf中link的层级关系，如下图所示：",[14,7676,7677],{},[17,7678],{"alt":19,"src":7679},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1545.webp",[14,7681,7682],{},"否则将会给出错误提示。",[14,7684,7685],{},[17,7686],{"alt":19,"src":7687},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1546.webp",[14,7689,7690],{},"演示错误，",[14,7692,7693],{},[17,7694],{"alt":19,"src":7695},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1547.webp",[653,7697,7699],{"id":7698},"urdf_to_graphviz-结构查看",[105,7700,7701],{},"urdf_to_graphviz 结构查看",[14,7703,7704,7705,7708],{},"进入urdf文件所属目录，调用:",[71,7706,7707],{},"urdf_to_graphviz urdf文件","，当前目录下会生成 pdf 文件。",[14,7710,7659],{},[76,7712,7714],{"className":78,"code":7713,"language":80,"meta":19,"style":19},"urdf_to_graphviz demo05_exercise.urdf\n",[71,7715,7716],{"__ignoreMap":19},[84,7717,7718,7720],{"class":86,"line":87},[84,7719,7636],{"class":90},[84,7721,7671],{"class":94},[14,7723,7724],{},"当前目录下，将生成以urdf中robot名称命名的.pdf和.gv文件，打开pdf文件会显示如下图内容：",[14,7726,7727],{},[17,7728],{"alt":19,"src":7729},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1548.webp",[14,7731,7732],{},"在上图中会以树形结构显示link与joint的关系。",[14,7734,7735,7737,7738,7741,7742,7744],{},[105,7736,3777],{}," 该工具以前名为",[71,7739,7740],{},"urdf_to_graphiz","现建议使用",[71,7743,7636],{},"替代。",[14,7746,7747],{},[17,7748],{"alt":19,"src":7749},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1549.webp",[14,7751,7752,7754,7755,127],{},[71,7753,7740],{},"是历史版本，已经被废弃，建议用",[71,7756,7636],{},[14,7758,7759],{},[17,7760],{"alt":19,"src":7761},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1550.webp",[14,7763,7764],{},[17,7765],{"alt":19,"src":7766},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1551.webp",[14,7768,7769],{},[17,7770],{"alt":19,"src":7771},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1552.webp",[14,7773,7774],{},[17,7775],{"alt":19,"src":7776},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1553.webp",[14,7778,7779],{},"黑色方框代表Link，蓝色代表Joint，也会展示平移量和旋转度等信息。",[10,7781,7783],{"id":7782},"sw2urdf","SW2URDF",[653,7785,7786],{"id":7786},"solidworks简介",[14,7788,7789],{},"SolidWorks是一种计算机辅助设计（CAD）和计算机辅助制造（CAM）软件，由Dassault Systèmes SolidWorks Corp.开发。它主要用于工程设计和制造，可用于创建3D三维模型、进行装配设计、进行工程分析和绘图等。SolidWorks具有直观的用户界面和强大的功能，使工程师和设计师能够快速而精确地设计复杂的零部件和装配体。该软件广泛应用于机械、航空航天、汽车、医疗设备等行业，是工程设计领域的重要工具之一。",[14,7791,7792],{},[17,7793],{"alt":19,"src":7794},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1554.webp",[653,7796,7797],{"id":7797},"solidworks插件sw2urdf介绍",[14,7799,7800],{},"sw2urdf插件维基百科：",[14,7802,7803],{},[4361,7804,7805],{"href":7805,"rel":7806},"https:\u002F\u002Fwiki.ros.org\u002Fsw_urdf_exporter",[4365],[14,7808,7809],{},"github下载链接：",[14,7811,7812],{},[4361,7813,7814],{"href":7814,"rel":7815},"https:\u002F\u002Fgithub.com\u002Fros\u002Fsolidworks_urdf_exporter\u002Freleases",[4365],[14,7817,7818],{},"虽然github链接上写着只支持到SW2021，但是目前发现最新版SW(2022、2024经测试)也是可以正常用的。",[14,7820,7821],{},[17,7822],{"alt":19,"src":7823},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1555.webp",[653,7825,7826],{"id":7826},"安装sw2urdf",[139,7828,7829],{},[142,7830,7831],{},"去github上下载sw2urdf插件（这个SW版本不用管，实测在后续的SW版本依然可用）",[14,7833,7834],{},[17,7835],{"alt":19,"src":7836},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1556.webp",[139,7838,7839],{"start":644},[142,7840,7841],{},"查看SW的安装路径",[14,7843,7844],{},"比如我的路径\"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\\"",[14,7846,7847],{},[17,7848],{"alt":19,"src":7849},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1557.webp",[139,7851,7852],{"start":800},[142,7853,7854],{},"打开插件安装器，默认情况下会自动找到你的SW路径进行安装，如果没有自动找到路径安装，那么需要手动选取SW安装路径。",[14,7856,7857],{},[17,7858],{"alt":19,"src":7859},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1558.webp",[139,7861,7862],{"start":812},[142,7863,7864],{},"查看插件是否安装成功",[14,7866,7867],{},[17,7868],{"alt":19,"src":7869},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1559.webp",[14,7871,7872],{},[17,7873],{"alt":19,"src":7874},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1560.webp",[14,7876,7877],{},"如图这样就是安装成功了。",[653,7879,7881],{"id":7880},"导出urdf与meshes","导出URDF与Meshes",[139,7883,7884],{},[142,7885,7886],{},"如图是一个标准的SW装配体图(大家也可以尝试自己手撸一个，里面没有传动装置也可以)",[14,7888,7889,7890],{},"这个过程看不太懂的话，可以参考一下古月居老师的视频，结合本教程一起学习。 【SolidWorks模型导出urdf（古月居老师）-哔哩哔哩】",[4361,7891,7892],{"href":7892,"rel":7893},"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Tx411o7rH",[4365],[14,7895,7896],{},[17,7897],{"alt":19,"src":7898},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1561.webp",[139,7900,7901],{"start":644},[142,7902,7903],{},"对joint关节建立基准轴",[14,7905,7906],{},[17,7907],{"alt":19,"src":7908},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1562.webp",[14,7910,7911],{},"选择关节的圆柱面或者其他面，对转轴进行标定",[14,7913,7914],{},[17,7915],{"alt":19,"src":7916},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1563.webp",[14,7918,7919],{},"如果建完基准轴，发现不能够正常展示，那么就打开该选项。",[14,7921,7922],{},[17,7923],{"alt":19,"src":7924},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1564.webp",[14,7926,7927],{},[17,7928],{"alt":19,"src":7929},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1565.webp",[14,7931,7932],{},"建完所有系后",[139,7934,7935],{"start":800},[142,7936,7937],{},"打开export as URDF选项",[14,7939,7940],{},[17,7941],{"alt":19,"src":7942},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1566.webp",[139,7944,7945],{"start":812},[142,7946,7947],{},"需要先选择base_link基底刚体",[14,7949,7950],{},[17,7951],{"alt":19,"src":7952},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1567.webp",[14,7954,7955],{},"这里的Global Origin可能需要自己选择，就选择Origin_Global即可，但是一般选择automatically Generate即可。",[139,7957,7958],{"start":824},[142,7959,7960],{},"因为他的base_link通过一个joint连接了一个child_link，所以，这个选项要填1。",[14,7962,7963,7966],{},[17,7964],{"alt":19,"src":7965},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1568.webp",[17,7967],{"alt":19,"src":7968},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1569.webp",[14,7970,7971],{},"咱们把base_link连接的关节叫joint1，把joint1连接的更上面的刚体叫做link1,",[14,7973,7974],{},"然后参考基准轴选择刚才咱们在这个关节处建立的基准轴1，然后joint type关节类型选择revolute（有限位的关节，只有这样，机器人关节才可以正常运动）",[14,7976,7977],{},[17,7978],{"alt":19,"src":7979},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1570.webp",[14,7981,7982],{},"这里的参考坐标系系统可以选择automatically Generate，也可以选择Origin_Joint1。",[14,7984,7985],{},"然后再在link1上加一，创建link2。",[14,7987,7988],{},"后面的link3，link4添加步骤是一样的，不再详细展示。",[14,7990,7991],{},[17,7992],{"alt":19,"src":7993},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1571.webp",[14,7995,7996],{},[17,7997],{"alt":19,"src":7998},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1572.webp",[14,8000,8001],{},[17,8002],{"alt":19,"src":8003},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1573.webp",[139,8005,8006],{"start":835},[142,8007,8008],{},"点击preview and export",[14,8010,8011],{},[17,8012],{"alt":19,"src":8013},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1574.webp",[139,8015,8016],{"start":856},[142,8017,8018],{},"对关节进行限位设置",[14,8020,8021],{},"coordinates是坐标系，axis是轴，如果这里Axis坐标显示错误，那么说明Coordinates或者Axis选择错了，请手动选择正确的坐标系或者基准轴。",[14,8023,8024],{},[17,8025],{"alt":19,"src":8026},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1575.webp",[14,8028,8029],{},"如果转轴生成错误，比如都是000，可以自己填一下。",[14,8031,8032],{},[17,8033],{"alt":19,"src":8034},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1576.webp",[14,8036,8037],{},"比如这里是X轴，可以把左轮全填-100,右轮100（这里，仅供参考，chatgpt提供的解决方案）",[14,8039,8040],{},[17,8041],{"alt":19,"src":8042},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1577.webp",[139,8044,8045],{"start":866},[142,8046,8047],{},"查看矩阵，并点导出urdf与meshes",[14,8049,8050],{},[17,8051],{"alt":19,"src":8052},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1578.webp",[14,8054,8055],{},[17,8056],{"alt":19,"src":8057},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1579.webp",[14,8059,8060],{},[17,8061],{"alt":19,"src":8062},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1580.webp",[14,8064,8065],{},[17,8066],{"alt":19,"src":8067},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1581.webp",[14,8069,8070],{},"这样就成功生成ROS1的WS了，将WS移动至Linux系统。",[653,8072,8074],{"id":8073},"将ros1的ws转化为ros2的ws","将ROS1的WS转化为ROS2的WS",[139,8076,8077],{},[142,8078,8079],{},"先将ROS1的WS移动到Linux系统上",[14,8081,8082],{},[17,8083],{"alt":19,"src":8084},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1582.webp",[139,8086,8087],{"start":644},[142,8088,8089],{},"新建一个ROS2的WS",[14,8091,8092],{},[17,8093],{"alt":19,"src":8094},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1583.webp",[76,8096,8098],{"className":78,"code":8097,"language":80,"meta":19,"style":19},"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",[71,8099,8100,8111,8119,8126,8133,8148,8155],{"__ignoreMap":19},[84,8101,8102,8105,8108],{"class":86,"line":87},[84,8103,8104],{"class":90},"mkdir",[84,8106,8107],{"class":736}," -p",[84,8109,8110],{"class":94}," ros2_4axisrobot_ws\u002Fsrc\n",[84,8112,8113,8116],{"class":86,"line":644},[84,8114,8115],{"class":736},"cd",[84,8117,8118],{"class":94}," ros2_4axisrobot_ws\u002F\n",[84,8120,8121,8123],{"class":86,"line":800},[84,8122,1492],{"class":90},[84,8124,8125],{"class":94}," build\n",[84,8127,8128,8130],{"class":86,"line":812},[84,8129,8115],{"class":736},[84,8131,8132],{"class":94}," src\n",[84,8134,8135,8137,8139,8141,8144,8146],{"class":86,"line":824},[84,8136,724],{"class":90},[84,8138,727],{"class":94},[84,8140,730],{"class":94},[84,8142,8143],{"class":94}," cpp01_urdf",[84,8145,737],{"class":736},[84,8147,740],{"class":94},[84,8149,8150,8152],{"class":86,"line":835},[84,8151,8115],{"class":736},[84,8153,8154],{"class":94}," ..\n",[84,8156,8157,8159],{"class":86,"line":856},[84,8158,71],{"class":90},[84,8160,8161],{"class":94}," .\n",[139,8163,8164],{"start":800},[142,8165,8166],{},"完善WS的目录",[14,8168,8169,8172],{},[17,8170],{"alt":19,"src":8171},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1584.webp",[17,8173],{"alt":19,"src":8174},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1585.webp",[14,8176,8177],{},"在.\u002Fsrc\u002Fcpp01_urdf路径下创建launch、meshes、rviz、urdf等等文件夹，在urdf文件夹下再新建urdf和xacro文件夹",[139,8179,8180],{"start":812},[142,8181,8182],{},"复制ROS1的WS里的URDF和Meshes到ROS2的WS中",[14,8184,8185,8188],{},[17,8186],{"alt":19,"src":8187},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1586.webp",[17,8189],{"alt":19,"src":8190},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1587.webp",[14,8192,8193],{},[17,8194],{"alt":19,"src":8195},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1588.webp",[139,8197,8198],{"start":824},[142,8199,8200],{},"对CMake和package进行配置",[14,8202,8203],{},"在CMake中请添加",[76,8205,8206],{"className":1445,"code":1446,"language":1447,"meta":19,"style":19},[71,8207,8208,8214,8218,8226],{"__ignoreMap":19},[84,8209,8210,8212],{"class":86,"line":87},[84,8211,1454],{"class":637},[84,8213,1457],{"class":633},[84,8215,8216],{"class":86,"line":644},[84,8217,1462],{"class":633},[84,8219,8220,8222,8224],{"class":86,"line":800},[84,8221,1467],{"class":633},[84,8223,1470],{"class":637},[84,8225,1473],{"class":633},[84,8227,8228],{"class":86,"line":812},[84,8229,1037],{"class":633},[14,8231,8232],{},"在Package.xml中请添加",[76,8234,8236],{"className":775,"code":8235,"language":777,"meta":19,"style":19},"  \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",[71,8237,8238,8250,8262,8274,8286],{"__ignoreMap":19},[84,8239,8240,8242,8244,8246,8248],{"class":86,"line":87},[84,8241,3821],{"class":633},[84,8243,1378],{"class":793},[84,8245,1381],{"class":633},[84,8247,1378],{"class":793},[84,8249,821],{"class":633},[84,8251,8252,8254,8256,8258,8260],{"class":86,"line":644},[84,8253,3821],{"class":633},[84,8255,1378],{"class":793},[84,8257,1394],{"class":633},[84,8259,1378],{"class":793},[84,8261,821],{"class":633},[84,8263,8264,8266,8268,8270,8272],{"class":86,"line":800},[84,8265,3821],{"class":633},[84,8267,1378],{"class":793},[84,8269,1407],{"class":633},[84,8271,1378],{"class":793},[84,8273,821],{"class":633},[84,8275,8276,8278,8280,8282,8284],{"class":86,"line":812},[84,8277,3821],{"class":633},[84,8279,1378],{"class":793},[84,8281,1420],{"class":633},[84,8283,1378],{"class":793},[84,8285,821],{"class":633},[84,8287,8288,8290,8292,8294,8296],{"class":86,"line":824},[84,8289,3821],{"class":633},[84,8291,1378],{"class":793},[84,8293,1433],{"class":633},[84,8295,1378],{"class":793},[84,8297,821],{"class":633},[14,8299,8300],{},"CMakeLists.txt",[76,8302,8304],{"className":1445,"code":8303,"language":1447,"meta":19,"style":19},"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",[71,8305,8306,8320,8328,8332,8354,8362,8370,8374,8379,8387,8391,8396,8400,8405,8409,8414,8418,8424,8428,8436,8440,8444,8451,8459,8463,8468,8472,8477,8490,8494,8499,8503,8508,8512,8517,8528,8533,8539,8543],{"__ignoreMap":19},[84,8307,8308,8311,8314,8317],{"class":86,"line":87},[84,8309,8310],{"class":637},"cmake_minimum_required",[84,8312,8313],{"class":633},"(",[84,8315,8316],{"class":90},"VERSION",[84,8318,8319],{"class":633}," 3.8)\n",[84,8321,8322,8325],{"class":86,"line":644},[84,8323,8324],{"class":637},"project",[84,8326,8327],{"class":633},"(cpp01_urdf)\n",[84,8329,8330],{"class":86,"line":800},[84,8331,785],{"emptyLinePlaceholder":784},[84,8333,8334,8337,8340,8343,8346,8349,8352],{"class":86,"line":812},[84,8335,8336],{"class":637},"if",[84,8338,8339],{"class":633},"(CMAKE_COMPILER_IS_GNUCXX ",[84,8341,8342],{"class":637},"OR",[84,8344,8345],{"class":633}," CMAKE_CXX_COMPILER_ID ",[84,8347,8348],{"class":637},"MATCHES",[84,8350,8351],{"class":94}," \"Clang\"",[84,8353,1037],{"class":633},[84,8355,8356,8359],{"class":86,"line":824},[84,8357,8358],{"class":637},"  add_compile_options",[84,8360,8361],{"class":633},"(-Wall -Wextra -Wpedantic)\n",[84,8363,8364,8367],{"class":86,"line":835},[84,8365,8366],{"class":637},"endif",[84,8368,8369],{"class":633},"()\n",[84,8371,8372],{"class":86,"line":856},[84,8373,785],{"emptyLinePlaceholder":784},[84,8375,8376],{"class":86,"line":866},[84,8377,8378],{"class":1003},"# find dependencies\n",[84,8380,8381,8384],{"class":86,"line":876},[84,8382,8383],{"class":637},"find_package",[84,8385,8386],{"class":633},"(ament_cmake REQUIRED)\n",[84,8388,8389],{"class":86,"line":886},[84,8390,785],{"emptyLinePlaceholder":784},[84,8392,8393],{"class":86,"line":1018},[84,8394,8395],{"class":1003},"# uncomment the following section in order to fill in\n",[84,8397,8398],{"class":86,"line":1023},[84,8399,785],{"emptyLinePlaceholder":784},[84,8401,8402],{"class":86,"line":1040},[84,8403,8404],{"class":1003},"# further dependencies manually.\n",[84,8406,8407],{"class":86,"line":1062},[84,8408,785],{"emptyLinePlaceholder":784},[84,8410,8411],{"class":86,"line":1082},[84,8412,8413],{"class":1003},"# find_package(\u003Cdependency> REQUIRED)\n",[84,8415,8416],{"class":86,"line":1113},[84,8417,785],{"emptyLinePlaceholder":784},[84,8419,8420,8422],{"class":86,"line":1118},[84,8421,1454],{"class":637},[84,8423,1457],{"class":633},[84,8425,8426],{"class":86,"line":1124},[84,8427,1462],{"class":633},[84,8429,8430,8432,8434],{"class":86,"line":1129},[84,8431,1467],{"class":633},[84,8433,1470],{"class":637},[84,8435,1473],{"class":633},[84,8437,8438],{"class":86,"line":1135},[84,8439,1037],{"class":633},[84,8441,8442],{"class":86,"line":1157},[84,8443,785],{"emptyLinePlaceholder":784},[84,8445,8446,8448],{"class":86,"line":1168},[84,8447,8336],{"class":637},[84,8449,8450],{"class":633},"(BUILD_TESTING)\n",[84,8452,8453,8456],{"class":86,"line":1182},[84,8454,8455],{"class":637},"  find_package",[84,8457,8458],{"class":633},"(ament_lint_auto REQUIRED)\n",[84,8460,8461],{"class":86,"line":1194},[84,8462,785],{"emptyLinePlaceholder":784},[84,8464,8465],{"class":86,"line":1211},[84,8466,8467],{"class":1003},"  # the following line skips the linter which checks for copyrights\n",[84,8469,8470],{"class":86,"line":1217},[84,8471,785],{"emptyLinePlaceholder":784},[84,8473,8474],{"class":86,"line":1222},[84,8475,8476],{"class":1003},"  # comment the line when a copyright and license is added to all source files\n",[84,8478,8479,8482,8485,8488],{"class":86,"line":1228},[84,8480,8481],{"class":637},"  set",[84,8483,8484],{"class":633},"(ament_cmake_copyright_FOUND ",[84,8486,8487],{"class":637},"TRUE",[84,8489,1037],{"class":633},[84,8491,8492],{"class":86,"line":1238},[84,8493,785],{"emptyLinePlaceholder":784},[84,8495,8496],{"class":86,"line":1250},[84,8497,8498],{"class":1003},"  # the following line skips cpplint (only works in a git repo)\n",[84,8500,8501],{"class":86,"line":1260},[84,8502,785],{"emptyLinePlaceholder":784},[84,8504,8505],{"class":86,"line":1265},[84,8506,8507],{"class":1003},"  # comment the line when this package is in a git repo and when\n",[84,8509,8510],{"class":86,"line":1270},[84,8511,785],{"emptyLinePlaceholder":784},[84,8513,8514],{"class":86,"line":1276},[84,8515,8516],{"class":1003},"  # a copyright and license is added to all source files\n",[84,8518,8519,8521,8524,8526],{"class":86,"line":1286},[84,8520,8481],{"class":637},[84,8522,8523],{"class":633},"(ament_cmake_cpplint_FOUND ",[84,8525,8487],{"class":637},[84,8527,1037],{"class":633},[84,8529,8530],{"class":86,"line":1298},[84,8531,8532],{"class":633},"  ament_lint_auto_find_test_dependencies()\n",[84,8534,8535,8537],{"class":86,"line":1308},[84,8536,8366],{"class":637},[84,8538,8369],{"class":633},[84,8540,8541],{"class":86,"line":1313},[84,8542,785],{"emptyLinePlaceholder":784},[84,8544,8545],{"class":86,"line":1319},[84,8546,8547],{"class":633},"ament_package()\n",[14,8549,8550],{},"package.xml",[76,8552,8554],{"className":775,"code":8553,"language":777,"meta":19,"style":19},"\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",[71,8555,8556,8574,8599,8616,8629,8643,8657,8679,8693,8697,8711,8715,8727,8739,8751,8763,8775,8779,8793,8806,8810,8819,8832,8840],{"__ignoreMap":19},[84,8557,8558,8561,8563,8566,8568,8571],{"class":86,"line":87},[84,8559,8560],{"class":633},"\u003C?",[84,8562,777],{"class":793},[84,8564,8565],{"class":90}," version",[84,8567,847],{"class":633},[84,8569,8570],{"class":94},"\"1.0\"",[84,8572,8573],{"class":633},"?>\n",[84,8575,8576,8578,8581,8584,8586,8589,8592,8594,8597],{"class":86,"line":644},[84,8577,8560],{"class":633},[84,8579,8580],{"class":793},"xml-model",[84,8582,8583],{"class":90}," href",[84,8585,847],{"class":633},[84,8587,8588],{"class":94},"\"http:\u002F\u002Fdownload.ros.org\u002Fschema\u002Fpackage_format3.xsd\"",[84,8590,8591],{"class":90}," schematypens",[84,8593,847],{"class":633},[84,8595,8596],{"class":94},"\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema\"",[84,8598,8573],{"class":633},[84,8600,8601,8603,8606,8609,8611,8614],{"class":86,"line":800},[84,8602,1375],{"class":633},[84,8604,8605],{"class":793},"package",[84,8607,8608],{"class":90}," format",[84,8610,847],{"class":633},[84,8612,8613],{"class":94},"\"3\"",[84,8615,821],{"class":633},[84,8617,8618,8620,8622,8625,8627],{"class":86,"line":812},[84,8619,3821],{"class":633},[84,8621,1094],{"class":793},[84,8623,8624],{"class":633},">cpp01_urdf\u003C\u002F",[84,8626,1094],{"class":793},[84,8628,821],{"class":633},[84,8630,8631,8633,8636,8639,8641],{"class":86,"line":824},[84,8632,3821],{"class":633},[84,8634,8635],{"class":793},"version",[84,8637,8638],{"class":633},">0.0.0\u003C\u002F",[84,8640,8635],{"class":793},[84,8642,821],{"class":633},[84,8644,8645,8647,8650,8653,8655],{"class":86,"line":835},[84,8646,3821],{"class":633},[84,8648,8649],{"class":793},"description",[84,8651,8652],{"class":633},">TODO: Package description\u003C\u002F",[84,8654,8649],{"class":793},[84,8656,821],{"class":633},[84,8658,8659,8661,8664,8667,8669,8672,8675,8677],{"class":86,"line":856},[84,8660,3821],{"class":633},[84,8662,8663],{"class":793},"maintainer",[84,8665,8666],{"class":90}," email",[84,8668,847],{"class":633},[84,8670,8671],{"class":94},"\"tungchiahui@gmail.com\"",[84,8673,8674],{"class":633},">tungchiahui\u003C\u002F",[84,8676,8663],{"class":793},[84,8678,821],{"class":633},[84,8680,8681,8683,8686,8689,8691],{"class":86,"line":866},[84,8682,3821],{"class":633},[84,8684,8685],{"class":793},"license",[84,8687,8688],{"class":633},">TODO: License declaration\u003C\u002F",[84,8690,8685],{"class":793},[84,8692,821],{"class":633},[84,8694,8695],{"class":86,"line":876},[84,8696,785],{"emptyLinePlaceholder":784},[84,8698,8699,8701,8704,8707,8709],{"class":86,"line":886},[84,8700,3821],{"class":633},[84,8702,8703],{"class":793},"buildtool_depend",[84,8705,8706],{"class":633},">ament_cmake\u003C\u002F",[84,8708,8703],{"class":793},[84,8710,821],{"class":633},[84,8712,8713],{"class":86,"line":1018},[84,8714,785],{"emptyLinePlaceholder":784},[84,8716,8717,8719,8721,8723,8725],{"class":86,"line":1023},[84,8718,3821],{"class":633},[84,8720,1378],{"class":793},[84,8722,1381],{"class":633},[84,8724,1378],{"class":793},[84,8726,821],{"class":633},[84,8728,8729,8731,8733,8735,8737],{"class":86,"line":1040},[84,8730,3821],{"class":633},[84,8732,1378],{"class":793},[84,8734,1394],{"class":633},[84,8736,1378],{"class":793},[84,8738,821],{"class":633},[84,8740,8741,8743,8745,8747,8749],{"class":86,"line":1062},[84,8742,3821],{"class":633},[84,8744,1378],{"class":793},[84,8746,1407],{"class":633},[84,8748,1378],{"class":793},[84,8750,821],{"class":633},[84,8752,8753,8755,8757,8759,8761],{"class":86,"line":1082},[84,8754,3821],{"class":633},[84,8756,1378],{"class":793},[84,8758,1420],{"class":633},[84,8760,1378],{"class":793},[84,8762,821],{"class":633},[84,8764,8765,8767,8769,8771,8773],{"class":86,"line":1113},[84,8766,3821],{"class":633},[84,8768,1378],{"class":793},[84,8770,1433],{"class":633},[84,8772,1378],{"class":793},[84,8774,821],{"class":633},[84,8776,8777],{"class":86,"line":1118},[84,8778,785],{"emptyLinePlaceholder":784},[84,8780,8781,8783,8786,8789,8791],{"class":86,"line":1124},[84,8782,3821],{"class":633},[84,8784,8785],{"class":793},"test_depend",[84,8787,8788],{"class":633},">ament_lint_auto\u003C\u002F",[84,8790,8785],{"class":793},[84,8792,821],{"class":633},[84,8794,8795,8797,8799,8802,8804],{"class":86,"line":1129},[84,8796,3821],{"class":633},[84,8798,8785],{"class":793},[84,8800,8801],{"class":633},">ament_lint_common\u003C\u002F",[84,8803,8785],{"class":793},[84,8805,821],{"class":633},[84,8807,8808],{"class":86,"line":1135},[84,8809,785],{"emptyLinePlaceholder":784},[84,8811,8812,8814,8817],{"class":86,"line":1157},[84,8813,3821],{"class":633},[84,8815,8816],{"class":793},"export",[84,8818,821],{"class":633},[84,8820,8821,8823,8826,8828,8830],{"class":86,"line":1168},[84,8822,1676],{"class":633},[84,8824,8825],{"class":793},"build_type",[84,8827,8706],{"class":633},[84,8829,8825],{"class":793},[84,8831,821],{"class":633},[84,8833,8834,8836,8838],{"class":86,"line":1182},[84,8835,1765],{"class":633},[84,8837,8816],{"class":793},[84,8839,821],{"class":633},[84,8841,8842,8844,8846],{"class":86,"line":1194},[84,8843,3989],{"class":633},[84,8845,8605],{"class":793},[84,8847,821],{"class":633},[139,8849,8850],{"start":835},[142,8851,8852],{},"对launch文件进行编写",[14,8854,8855],{},"详细过程请看URDF有关Launch的核心优化那一节",[14,8857,8858],{},[17,8859],{"alt":19,"src":8860},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1589.webp",[76,8862,8864],{"className":909,"code":8863,"language":911,"meta":19,"style":19},"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",[71,8865,8866,8876,8886,8890,8894,8898,8902,8906,8910,8914,8918,8928,8938,8942,8946,8950,8954,8958,8962,8966,8970,8974,8978,8982,8986,8990,8994,8998,9002,9006,9010,9014,9018,9028,9032,9042,9052,9056,9062,9066,9080,9084,9102,9118,9122,9144,9148,9164,9172,9182,9192,9204,9208,9212,9217,9221,9225,9229,9233,9237,9241,9245,9249,9253,9258,9266,9276,9284,9288,9292,9300,9310,9320,9324,9328,9340,9344,9348,9352,9360],{"__ignoreMap":19},[84,8867,8868,8870,8872,8874],{"class":86,"line":87},[84,8869,918],{"class":637},[84,8871,921],{"class":633},[84,8873,924],{"class":637},[84,8875,927],{"class":633},[84,8877,8878,8880,8882,8884],{"class":86,"line":644},[84,8879,918],{"class":637},[84,8881,934],{"class":633},[84,8883,924],{"class":637},[84,8885,939],{"class":633},[84,8887,8888],{"class":86,"line":800},[84,8889,785],{"emptyLinePlaceholder":784},[84,8891,8892],{"class":86,"line":812},[84,8893,1988],{"class":1003},[84,8895,8896],{"class":86,"line":824},[84,8897,785],{"emptyLinePlaceholder":784},[84,8899,8900],{"class":86,"line":835},[84,8901,1997],{"class":1003},[84,8903,8904],{"class":86,"line":856},[84,8905,785],{"emptyLinePlaceholder":784},[84,8907,8908],{"class":86,"line":866},[84,8909,2006],{"class":1003},[84,8911,8912],{"class":86,"line":876},[84,8913,785],{"emptyLinePlaceholder":784},[84,8915,8916],{"class":86,"line":886},[84,8917,2015],{"class":1003},[84,8919,8920,8922,8924,8926],{"class":86,"line":1018},[84,8921,918],{"class":637},[84,8923,989],{"class":633},[84,8925,924],{"class":637},[84,8927,994],{"class":633},[84,8929,8930,8932,8934,8936],{"class":86,"line":1023},[84,8931,918],{"class":637},[84,8933,977],{"class":633},[84,8935,924],{"class":637},[84,8937,2628],{"class":633},[84,8939,8940],{"class":86,"line":1040},[84,8941,785],{"emptyLinePlaceholder":784},[84,8943,8944],{"class":86,"line":1062},[84,8945,2042],{"class":1003},[84,8947,8948],{"class":86,"line":1082},[84,8949,785],{"emptyLinePlaceholder":784},[84,8951,8952],{"class":86,"line":1113},[84,8953,2051],{"class":1003},[84,8955,8956],{"class":86,"line":1118},[84,8957,785],{"emptyLinePlaceholder":784},[84,8959,8960],{"class":86,"line":1124},[84,8961,2060],{"class":1003},[84,8963,8964],{"class":86,"line":1129},[84,8965,785],{"emptyLinePlaceholder":784},[84,8967,8968],{"class":86,"line":1135},[84,8969,2069],{"class":1003},[84,8971,8972],{"class":86,"line":1157},[84,8973,785],{"emptyLinePlaceholder":784},[84,8975,8976],{"class":86,"line":1168},[84,8977,2078],{"class":1003},[84,8979,8980],{"class":86,"line":1182},[84,8981,785],{"emptyLinePlaceholder":784},[84,8983,8984],{"class":86,"line":1194},[84,8985,2087],{"class":1003},[84,8987,8988],{"class":86,"line":1211},[84,8989,785],{"emptyLinePlaceholder":784},[84,8991,8992],{"class":86,"line":1217},[84,8993,2096],{"class":1003},[84,8995,8996],{"class":86,"line":1222},[84,8997,785],{"emptyLinePlaceholder":784},[84,8999,9000],{"class":86,"line":1228},[84,9001,2105],{"class":1003},[84,9003,9004],{"class":86,"line":1238},[84,9005,785],{"emptyLinePlaceholder":784},[84,9007,9008],{"class":86,"line":1250},[84,9009,2114],{"class":1003},[84,9011,9012],{"class":86,"line":1260},[84,9013,785],{"emptyLinePlaceholder":784},[84,9015,9016],{"class":86,"line":1265},[84,9017,2123],{"class":1003},[84,9019,9020,9022,9024,9026],{"class":86,"line":1270},[84,9021,918],{"class":637},[84,9023,953],{"class":633},[84,9025,924],{"class":637},[84,9027,958],{"class":633},[84,9029,9030],{"class":86,"line":1276},[84,9031,785],{"emptyLinePlaceholder":784},[84,9033,9034,9036,9038,9040],{"class":86,"line":1286},[84,9035,918],{"class":637},[84,9037,965],{"class":633},[84,9039,924],{"class":637},[84,9041,970],{"class":633},[84,9043,9044,9046,9048,9050],{"class":86,"line":1298},[84,9045,918],{"class":637},[84,9047,977],{"class":633},[84,9049,924],{"class":637},[84,9051,2158],{"class":633},[84,9053,9054],{"class":86,"line":1308},[84,9055,785],{"emptyLinePlaceholder":784},[84,9057,9058,9060],{"class":86,"line":1313},[84,9059,924],{"class":637},[84,9061,946],{"class":633},[84,9063,9064],{"class":86,"line":1319},[84,9065,785],{"emptyLinePlaceholder":784},[84,9067,9068,9071,9073,9075,9078],{"class":86,"line":1324},[84,9069,9070],{"class":633},"cpp01_urdf_dir ",[84,9072,847],{"class":637},[84,9074,1031],{"class":633},[84,9076,9077],{"class":94},"\"cpp01_urdf\"",[84,9079,1037],{"class":633},[84,9081,9082],{"class":86,"line":1333},[84,9083,785],{"emptyLinePlaceholder":784},[84,9085,9086,9088,9090,9093,9095,9097,9100],{"class":86,"line":1339},[84,9087,3197],{"class":633},[84,9089,847],{"class":637},[84,9091,9092],{"class":633}," os.path.join(cpp01_urdf_dir,",[84,9094,1051],{"class":94},[84,9096,1054],{"class":633},[84,9098,9099],{"class":94},"\"4axisrobot.urdf\"",[84,9101,1037],{"class":633},[84,9103,9104,9106,9108,9110,9112,9114,9116],{"class":86,"line":1345},[84,9105,3215],{"class":633},[84,9107,847],{"class":637},[84,9109,9092],{"class":633},[84,9111,1072],{"class":94},[84,9113,1054],{"class":633},[84,9115,3226],{"class":94},[84,9117,1037],{"class":633},[84,9119,9120],{"class":86,"line":1351},[84,9121,785],{"emptyLinePlaceholder":784},[84,9123,9124,9126,9128,9130,9132,9134,9136,9138,9140,9142],{"class":86,"line":1357},[84,9125,2751],{"class":633},[84,9127,847],{"class":637},[84,9129,1090],{"class":633},[84,9131,1094],{"class":1093},[84,9133,847],{"class":637},[84,9135,1099],{"class":94},[84,9137,1054],{"class":633},[84,9139,1105],{"class":1093},[84,9141,847],{"class":637},[84,9143,1110],{"class":633},[84,9145,9146],{"class":86,"line":2242},[84,9147,785],{"emptyLinePlaceholder":784},[84,9149,9150,9152,9154,9156,9158,9160,9162],{"class":86,"line":2247},[84,9151,2167],{"class":633},[84,9153,847],{"class":637},[84,9155,1143],{"class":633},[84,9157,1146],{"class":94},[84,9159,1149],{"class":633},[84,9161,1099],{"class":94},[84,9163,1154],{"class":633},[84,9165,9166,9168,9170],{"class":86,"line":2257},[84,9167,2195],{"class":633},[84,9169,847],{"class":637},[84,9171,1165],{"class":633},[84,9173,9174,9176,9178,9180],{"class":86,"line":2268},[84,9175,2204],{"class":1093},[84,9177,847],{"class":637},[84,9179,1176],{"class":94},[84,9181,1179],{"class":633},[84,9183,9184,9186,9188,9190],{"class":86,"line":2277},[84,9185,2215],{"class":1093},[84,9187,847],{"class":637},[84,9189,1176],{"class":94},[84,9191,1179],{"class":633},[84,9193,9194,9196,9198,9200,9202],{"class":86,"line":2282},[84,9195,2226],{"class":1093},[84,9197,847],{"class":637},[84,9199,1202],{"class":633},[84,9201,1205],{"class":94},[84,9203,2235],{"class":633},[84,9205,9206],{"class":86,"line":2287},[84,9207,1037],{"class":633},[84,9209,9210],{"class":86,"line":2296},[84,9211,785],{"emptyLinePlaceholder":784},[84,9213,9214],{"class":86,"line":2904},[84,9215,9216],{"class":1003},"# 关节信息节点(建议)\n",[84,9218,9219],{"class":86,"line":2915},[84,9220,785],{"emptyLinePlaceholder":784},[84,9222,9223],{"class":86,"line":2943},[84,9224,3336],{"class":1003},[84,9226,9227],{"class":86,"line":2948},[84,9228,785],{"emptyLinePlaceholder":784},[84,9230,9231],{"class":86,"line":2953},[84,9232,3345],{"class":1003},[84,9234,9235],{"class":86,"line":2962},[84,9236,785],{"emptyLinePlaceholder":784},[84,9238,9239],{"class":86,"line":3352},[84,9240,3355],{"class":1003},[84,9242,9243],{"class":86,"line":3358},[84,9244,785],{"emptyLinePlaceholder":784},[84,9246,9247],{"class":86,"line":3363},[84,9248,3366],{"class":1003},[84,9250,9251],{"class":86,"line":3369},[84,9252,785],{"emptyLinePlaceholder":784},[84,9254,9255],{"class":86,"line":3374},[84,9256,9257],{"class":1003},"# 关节信息节点图形界面\n",[84,9259,9260,9262,9264],{"class":86,"line":3380},[84,9261,2853],{"class":633},[84,9263,847],{"class":637},[84,9265,1165],{"class":633},[84,9267,9268,9270,9272,9274],{"class":86,"line":3389},[84,9269,2204],{"class":1093},[84,9271,847],{"class":637},[84,9273,3396],{"class":94},[84,9275,1179],{"class":633},[84,9277,9278,9280,9282],{"class":86,"line":3401},[84,9279,2215],{"class":1093},[84,9281,847],{"class":637},[84,9283,3408],{"class":94},[84,9285,9286],{"class":86,"line":3411},[84,9287,1037],{"class":633},[84,9289,9290],{"class":86,"line":3416},[84,9291,785],{"emptyLinePlaceholder":784},[84,9293,9294,9296,9298],{"class":86,"line":3421},[84,9295,2250],{"class":633},[84,9297,847],{"class":637},[84,9299,1165],{"class":633},[84,9301,9302,9304,9306,9308],{"class":86,"line":3430},[84,9303,2204],{"class":1093},[84,9305,847],{"class":637},[84,9307,1293],{"class":94},[84,9309,1179],{"class":633},[84,9311,9312,9314,9316,9318],{"class":86,"line":3441},[84,9313,2215],{"class":1093},[84,9315,847],{"class":637},[84,9317,1293],{"class":94},[84,9319,1179],{"class":633},[84,9321,9322],{"class":86,"line":3452},[84,9323,785],{"emptyLinePlaceholder":784},[84,9325,9326],{"class":86,"line":3457},[84,9327,3460],{"class":1003},[84,9329,9330,9332,9334,9336,9338],{"class":86,"line":3463},[84,9331,2918],{"class":1093},[84,9333,847],{"class":637},[84,9335,2923],{"class":633},[84,9337,2926],{"class":94},[84,9339,3474],{"class":633},[84,9341,9342],{"class":86,"line":3477},[84,9343,785],{"emptyLinePlaceholder":784},[84,9345,9346],{"class":86,"line":3482},[84,9347,1214],{"class":633},[84,9349,9350],{"class":86,"line":3487},[84,9351,785],{"emptyLinePlaceholder":784},[84,9353,9354,9356,9358],{"class":86,"line":3492},[84,9355,1009],{"class":637},[84,9357,1012],{"class":90},[84,9359,1015],{"class":633},[84,9361,9362,9364],{"class":86,"line":3501},[84,9363,1327],{"class":637},[84,9365,2967],{"class":633},[139,9367,9368],{"start":856},[142,9369,9370],{},"对URDF文件进行修改",[14,9372,9373],{},"修改的内容主要有两项，一个是meshes的路径，一个是删掉易引起报错的注释。",[14,9375,9376],{},"主要由于ROS1的WS和ROS2的WS路径不同，所以，我们只需要修改有关路径的内容，比如说Meshes的路径",[14,9378,9379,9382],{},[17,9380],{"alt":19,"src":9381},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1590.webp",[17,9383],{"alt":19,"src":9384},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1591.webp",[14,9386,9387],{},"package:\u002F\u002F一般是share目录，所以我们需要从cpp01_urdf这一级开始写（share目录需要编译后才会显示）",[14,9389,9390],{},[17,9391],{"alt":19,"src":9392},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1592.webp",[14,9394,9395],{},"然后按Ctrl+H",[14,9397,9398],{},[17,9399],{"alt":19,"src":9400},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1593.webp",[14,9402,9403],{},[17,9404],{"alt":19,"src":9405},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1594.webp",[14,9407,9408],{},"然后还需要删除掉urdf文件刚开始的注释，否则也会报错",[14,9410,9411],{},[17,9412],{"alt":19,"src":9413},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1595.webp",[14,9415,9416],{},"如下是替换完毕的URDF文件：",[76,9418,9420],{"className":775,"code":9419,"language":777,"meta":19,"style":19},"\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",[71,9421,9422,9444,9451,9463,9470,9481,9489,9496,9506,9517,9524,9536,9543,9553,9563,9573,9583,9593,9605,9613,9621,9627,9636,9646,9654,9661,9673,9681,9688,9700,9707,9719,9727,9735,9743,9749,9757,9767,9775,9781,9791,9799,9807,9815,9821,9832,9840,9846,9855,9865,9871,9882,9888,9897,9906,9915,9924,9933,9944,9952,9960,9966,9974,9984,9992,9998,10009,10017,10023,10033,10039,10050,10058,10066,10074,10080,10088,10098,10106,10112,10122,10130,10138,10146,10153,10162,10174,10180,10190,10202,10209,10220,10227,10237,10244,10255,10262,10272,10282,10292,10304,10312,10318,10329,10337,10343,10352,10362,10368,10379,10385,10394,10404,10414,10424,10434,10446,10455,10464,10471,10480,10491,10500,10507,10519,10528,10535,10546,10553,10564,10573,10582,10591,10598,10607,10618,10627,10634,10645,10654,10663,10672,10679,10689,10700,10707,10717,10729,10736,10747,10754,10765,10772,10784,10791,10800,10809,10818,10829,10838,10845,10857,10866,10873,10883,10894,10901,10913,10920,10930,10940,10950,10960,10970,10982,10991,11000,11007,11016,11027,11036,11043,11055,11064,11071,11082,11089,11100,11109,11118,11127,11134,11143,11154,11163,11170,11181,11190,11199,11208,11215,11225,11236,11243,11253,11265,11272,11283,11290,11301,11308,11319,11326,11335,11344,11353,11364,11373,11380,11392,11401,11408,11418,11429,11436,11448,11455,11465,11475,11485,11495,11505,11517,11526,11535,11542,11551,11562,11571,11578,11590,11599,11606,11617,11624,11635,11644,11653,11662,11669,11678,11689,11698,11705,11716,11725,11734,11743,11750,11760,11771,11778,11788,11800,11807,11818,11825,11836,11843,11854,11861,11870,11879,11888,11899,11908],{"__ignoreMap":19},[84,9423,9424,9426,9428,9430,9432,9434,9437,9439,9442],{"class":86,"line":87},[84,9425,8560],{"class":633},[84,9427,777],{"class":793},[84,9429,8565],{"class":90},[84,9431,847],{"class":633},[84,9433,8570],{"class":94},[84,9435,9436],{"class":90}," encoding",[84,9438,847],{"class":633},[84,9440,9441],{"class":94},"\"utf-8\"",[84,9443,8573],{"class":633},[84,9445,9446,9448],{"class":86,"line":644},[84,9447,1375],{"class":633},[84,9449,9450],{"class":793},"robot\n",[84,9452,9453,9456,9458,9461],{"class":86,"line":800},[84,9454,9455],{"class":90},"  name",[84,9457,847],{"class":633},[84,9459,9460],{"class":94},"\"4axisrobot\"",[84,9462,821],{"class":633},[84,9464,9465,9467],{"class":86,"line":812},[84,9466,3821],{"class":633},[84,9468,9469],{"class":793},"link\n",[84,9471,9472,9475,9477,9479],{"class":86,"line":824},[84,9473,9474],{"class":90},"    name",[84,9476,847],{"class":633},[84,9478,1685],{"class":94},[84,9480,821],{"class":633},[84,9482,9483,9485,9487],{"class":86,"line":835},[84,9484,1676],{"class":633},[84,9486,3733],{"class":793},[84,9488,821],{"class":633},[84,9490,9491,9493],{"class":86,"line":856},[84,9492,1696],{"class":633},[84,9494,9495],{"class":793},"origin\n",[84,9497,9498,9501,9503],{"class":86,"line":866},[84,9499,9500],{"class":90},"        xyz",[84,9502,847],{"class":633},[84,9504,9505],{"class":94},"\"-0.0819771145953119 -0.0394328123681598 -0.0605612328464761\"\n",[84,9507,9508,9511,9513,9515],{"class":86,"line":876},[84,9509,9510],{"class":90},"        rpy",[84,9512,847],{"class":633},[84,9514,3941],{"class":94},[84,9516,3849],{"class":633},[84,9518,9519,9521],{"class":86,"line":886},[84,9520,1696],{"class":633},[84,9522,9523],{"class":793},"mass\n",[84,9525,9526,9529,9531,9534],{"class":86,"line":1018},[84,9527,9528],{"class":90},"        value",[84,9530,847],{"class":633},[84,9532,9533],{"class":94},"\"7.43807257011133\"",[84,9535,3849],{"class":633},[84,9537,9538,9540],{"class":86,"line":1023},[84,9539,1696],{"class":633},[84,9541,9542],{"class":793},"inertia\n",[84,9544,9545,9548,9550],{"class":86,"line":1040},[84,9546,9547],{"class":90},"        ixx",[84,9549,847],{"class":633},[84,9551,9552],{"class":94},"\"0.33173827700719\"\n",[84,9554,9555,9558,9560],{"class":86,"line":1062},[84,9556,9557],{"class":90},"        ixy",[84,9559,847],{"class":633},[84,9561,9562],{"class":94},"\"-1.91350798633049E-05\"\n",[84,9564,9565,9568,9570],{"class":86,"line":1082},[84,9566,9567],{"class":90},"        ixz",[84,9569,847],{"class":633},[84,9571,9572],{"class":94},"\"-2.38586363043925E-05\"\n",[84,9574,9575,9578,9580],{"class":86,"line":1113},[84,9576,9577],{"class":90},"        iyy",[84,9579,847],{"class":633},[84,9581,9582],{"class":94},"\"0.510937907009661\"\n",[84,9584,9585,9588,9590],{"class":86,"line":1118},[84,9586,9587],{"class":90},"        iyz",[84,9589,847],{"class":633},[84,9591,9592],{"class":94},"\"1.14706407748075E-05\"\n",[84,9594,9595,9598,9600,9603],{"class":86,"line":1124},[84,9596,9597],{"class":90},"        izz",[84,9599,847],{"class":633},[84,9601,9602],{"class":94},"\"0.66107272632796\"",[84,9604,3849],{"class":633},[84,9606,9607,9609,9611],{"class":86,"line":1129},[84,9608,1756],{"class":633},[84,9610,3733],{"class":793},[84,9612,821],{"class":633},[84,9614,9615,9617,9619],{"class":86,"line":1135},[84,9616,1676],{"class":633},[84,9618,818],{"class":793},[84,9620,821],{"class":633},[84,9622,9623,9625],{"class":86,"line":1157},[84,9624,1696],{"class":633},[84,9626,9495],{"class":793},[84,9628,9629,9631,9633],{"class":86,"line":1168},[84,9630,9500],{"class":90},[84,9632,847],{"class":633},[84,9634,9635],{"class":94},"\"0 0 0\"\n",[84,9637,9638,9640,9642,9644],{"class":86,"line":1182},[84,9639,9510],{"class":90},[84,9641,847],{"class":633},[84,9643,3941],{"class":94},[84,9645,3849],{"class":633},[84,9647,9648,9650,9652],{"class":86,"line":1194},[84,9649,1696],{"class":633},[84,9651,830],{"class":793},[84,9653,821],{"class":633},[84,9655,9656,9658],{"class":86,"line":1211},[84,9657,1709],{"class":633},[84,9659,9660],{"class":793},"mesh\n",[84,9662,9663,9666,9668,9671],{"class":86,"line":1217},[84,9664,9665],{"class":90},"          filename",[84,9667,847],{"class":633},[84,9669,9670],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Fbase_link.STL\"",[84,9672,3849],{"class":633},[84,9674,9675,9677,9679],{"class":86,"line":1222},[84,9676,1747],{"class":633},[84,9678,830],{"class":793},[84,9680,821],{"class":633},[84,9682,9683,9685],{"class":86,"line":1228},[84,9684,1696],{"class":633},[84,9686,9687],{"class":793},"material\n",[84,9689,9690,9693,9695,9698],{"class":86,"line":1238},[84,9691,9692],{"class":90},"        name",[84,9694,847],{"class":633},[84,9696,9697],{"class":94},"\"\"",[84,9699,821],{"class":633},[84,9701,9702,9704],{"class":86,"line":1250},[84,9703,1709],{"class":633},[84,9705,9706],{"class":793},"color\n",[84,9708,9709,9712,9714,9717],{"class":86,"line":1260},[84,9710,9711],{"class":90},"          rgba",[84,9713,847],{"class":633},[84,9715,9716],{"class":94},"\"0.792156862745098 0.819607843137255 0.933333333333333 1\"",[84,9718,3849],{"class":633},[84,9720,9721,9723,9725],{"class":86,"line":1265},[84,9722,1747],{"class":633},[84,9724,3661],{"class":793},[84,9726,821],{"class":633},[84,9728,9729,9731,9733],{"class":86,"line":1270},[84,9730,1756],{"class":633},[84,9732,818],{"class":793},[84,9734,821],{"class":633},[84,9736,9737,9739,9741],{"class":86,"line":1276},[84,9738,1676],{"class":633},[84,9740,3698],{"class":793},[84,9742,821],{"class":633},[84,9744,9745,9747],{"class":86,"line":1286},[84,9746,1696],{"class":633},[84,9748,9495],{"class":793},[84,9750,9751,9753,9755],{"class":86,"line":1298},[84,9752,9500],{"class":90},[84,9754,847],{"class":633},[84,9756,9635],{"class":94},[84,9758,9759,9761,9763,9765],{"class":86,"line":1308},[84,9760,9510],{"class":90},[84,9762,847],{"class":633},[84,9764,3941],{"class":94},[84,9766,3849],{"class":633},[84,9768,9769,9771,9773],{"class":86,"line":1313},[84,9770,1696],{"class":633},[84,9772,830],{"class":793},[84,9774,821],{"class":633},[84,9776,9777,9779],{"class":86,"line":1319},[84,9778,1709],{"class":633},[84,9780,9660],{"class":793},[84,9782,9783,9785,9787,9789],{"class":86,"line":1324},[84,9784,9665],{"class":90},[84,9786,847],{"class":633},[84,9788,9670],{"class":94},[84,9790,3849],{"class":633},[84,9792,9793,9795,9797],{"class":86,"line":1333},[84,9794,1747],{"class":633},[84,9796,830],{"class":793},[84,9798,821],{"class":633},[84,9800,9801,9803,9805],{"class":86,"line":1339},[84,9802,1756],{"class":633},[84,9804,3698],{"class":793},[84,9806,821],{"class":633},[84,9808,9809,9811,9813],{"class":86,"line":1345},[84,9810,1765],{"class":633},[84,9812,806],{"class":793},[84,9814,821],{"class":633},[84,9816,9817,9819],{"class":86,"line":1351},[84,9818,3821],{"class":633},[84,9820,9469],{"class":793},[84,9822,9823,9825,9827,9830],{"class":86,"line":1357},[84,9824,9474],{"class":90},[84,9826,847],{"class":633},[84,9828,9829],{"class":94},"\"link1\"",[84,9831,821],{"class":633},[84,9833,9834,9836,9838],{"class":86,"line":2242},[84,9835,1676],{"class":633},[84,9837,3733],{"class":793},[84,9839,821],{"class":633},[84,9841,9842,9844],{"class":86,"line":2247},[84,9843,1696],{"class":633},[84,9845,9495],{"class":793},[84,9847,9848,9850,9852],{"class":86,"line":2257},[84,9849,9500],{"class":90},[84,9851,847],{"class":633},[84,9853,9854],{"class":94},"\"0.19141 -0.050676 -0.030057\"\n",[84,9856,9857,9859,9861,9863],{"class":86,"line":2268},[84,9858,9510],{"class":90},[84,9860,847],{"class":633},[84,9862,3941],{"class":94},[84,9864,3849],{"class":633},[84,9866,9867,9869],{"class":86,"line":2277},[84,9868,1696],{"class":633},[84,9870,9523],{"class":793},[84,9872,9873,9875,9877,9880],{"class":86,"line":2282},[84,9874,9528],{"class":90},[84,9876,847],{"class":633},[84,9878,9879],{"class":94},"\"21.822\"",[84,9881,3849],{"class":633},[84,9883,9884,9886],{"class":86,"line":2287},[84,9885,1696],{"class":633},[84,9887,9542],{"class":793},[84,9889,9890,9892,9894],{"class":86,"line":2296},[84,9891,9547],{"class":90},[84,9893,847],{"class":633},[84,9895,9896],{"class":94},"\"0.50464\"\n",[84,9898,9899,9901,9903],{"class":86,"line":2904},[84,9900,9557],{"class":90},[84,9902,847],{"class":633},[84,9904,9905],{"class":94},"\"0.13295\"\n",[84,9907,9908,9910,9912],{"class":86,"line":2915},[84,9909,9567],{"class":90},[84,9911,847],{"class":633},[84,9913,9914],{"class":94},"\"0.087353\"\n",[84,9916,9917,9919,9921],{"class":86,"line":2943},[84,9918,9577],{"class":90},[84,9920,847],{"class":633},[84,9922,9923],{"class":94},"\"0.59136\"\n",[84,9925,9926,9928,9930],{"class":86,"line":2948},[84,9927,9587],{"class":90},[84,9929,847],{"class":633},[84,9931,9932],{"class":94},"\"-0.066053\"\n",[84,9934,9935,9937,9939,9942],{"class":86,"line":2953},[84,9936,9597],{"class":90},[84,9938,847],{"class":633},[84,9940,9941],{"class":94},"\"0.64081\"",[84,9943,3849],{"class":633},[84,9945,9946,9948,9950],{"class":86,"line":2962},[84,9947,1756],{"class":633},[84,9949,3733],{"class":793},[84,9951,821],{"class":633},[84,9953,9954,9956,9958],{"class":86,"line":3352},[84,9955,1676],{"class":633},[84,9957,818],{"class":793},[84,9959,821],{"class":633},[84,9961,9962,9964],{"class":86,"line":3358},[84,9963,1696],{"class":633},[84,9965,9495],{"class":793},[84,9967,9968,9970,9972],{"class":86,"line":3363},[84,9969,9500],{"class":90},[84,9971,847],{"class":633},[84,9973,9635],{"class":94},[84,9975,9976,9978,9980,9982],{"class":86,"line":3369},[84,9977,9510],{"class":90},[84,9979,847],{"class":633},[84,9981,3941],{"class":94},[84,9983,3849],{"class":633},[84,9985,9986,9988,9990],{"class":86,"line":3374},[84,9987,1696],{"class":633},[84,9989,830],{"class":793},[84,9991,821],{"class":633},[84,9993,9994,9996],{"class":86,"line":3380},[84,9995,1709],{"class":633},[84,9997,9660],{"class":793},[84,9999,10000,10002,10004,10007],{"class":86,"line":3389},[84,10001,9665],{"class":90},[84,10003,847],{"class":633},[84,10005,10006],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink1.STL\"",[84,10008,3849],{"class":633},[84,10010,10011,10013,10015],{"class":86,"line":3401},[84,10012,1747],{"class":633},[84,10014,830],{"class":793},[84,10016,821],{"class":633},[84,10018,10019,10021],{"class":86,"line":3411},[84,10020,1696],{"class":633},[84,10022,9687],{"class":793},[84,10024,10025,10027,10029,10031],{"class":86,"line":3416},[84,10026,9692],{"class":90},[84,10028,847],{"class":633},[84,10030,9697],{"class":94},[84,10032,821],{"class":633},[84,10034,10035,10037],{"class":86,"line":3421},[84,10036,1709],{"class":633},[84,10038,9706],{"class":793},[84,10040,10041,10043,10045,10048],{"class":86,"line":3430},[84,10042,9711],{"class":90},[84,10044,847],{"class":633},[84,10046,10047],{"class":94},"\"0.79216 0.81961 0.93333 1\"",[84,10049,3849],{"class":633},[84,10051,10052,10054,10056],{"class":86,"line":3441},[84,10053,1747],{"class":633},[84,10055,3661],{"class":793},[84,10057,821],{"class":633},[84,10059,10060,10062,10064],{"class":86,"line":3452},[84,10061,1756],{"class":633},[84,10063,818],{"class":793},[84,10065,821],{"class":633},[84,10067,10068,10070,10072],{"class":86,"line":3457},[84,10069,1676],{"class":633},[84,10071,3698],{"class":793},[84,10073,821],{"class":633},[84,10075,10076,10078],{"class":86,"line":3463},[84,10077,1696],{"class":633},[84,10079,9495],{"class":793},[84,10081,10082,10084,10086],{"class":86,"line":3477},[84,10083,9500],{"class":90},[84,10085,847],{"class":633},[84,10087,9635],{"class":94},[84,10089,10090,10092,10094,10096],{"class":86,"line":3482},[84,10091,9510],{"class":90},[84,10093,847],{"class":633},[84,10095,3941],{"class":94},[84,10097,3849],{"class":633},[84,10099,10100,10102,10104],{"class":86,"line":3487},[84,10101,1696],{"class":633},[84,10103,830],{"class":793},[84,10105,821],{"class":633},[84,10107,10108,10110],{"class":86,"line":3492},[84,10109,1709],{"class":633},[84,10111,9660],{"class":793},[84,10113,10114,10116,10118,10120],{"class":86,"line":3501},[84,10115,9665],{"class":90},[84,10117,847],{"class":633},[84,10119,10006],{"class":94},[84,10121,3849],{"class":633},[84,10123,10124,10126,10128],{"class":86,"line":7197},[84,10125,1747],{"class":633},[84,10127,830],{"class":793},[84,10129,821],{"class":633},[84,10131,10132,10134,10136],{"class":86,"line":7212},[84,10133,1756],{"class":633},[84,10135,3698],{"class":793},[84,10137,821],{"class":633},[84,10139,10140,10142,10144],{"class":86,"line":7221},[84,10141,1765],{"class":633},[84,10143,806],{"class":793},[84,10145,821],{"class":633},[84,10147,10148,10150],{"class":86,"line":7230},[84,10149,3821],{"class":633},[84,10151,10152],{"class":793},"joint\n",[84,10154,10155,10157,10159],{"class":86,"line":7235},[84,10156,9474],{"class":90},[84,10158,847],{"class":633},[84,10160,10161],{"class":94},"\"joint1\"\n",[84,10163,10164,10167,10169,10172],{"class":86,"line":7257},[84,10165,10166],{"class":90},"    type",[84,10168,847],{"class":633},[84,10170,10171],{"class":94},"\"revolute\"",[84,10173,821],{"class":633},[84,10175,10176,10178],{"class":86,"line":7272},[84,10177,1676],{"class":633},[84,10179,9495],{"class":793},[84,10181,10182,10185,10187],{"class":86,"line":7287},[84,10183,10184],{"class":90},"      xyz",[84,10186,847],{"class":633},[84,10188,10189],{"class":94},"\"-0.081947 -0.039447 0.11191\"\n",[84,10191,10192,10195,10197,10200],{"class":86,"line":7292},[84,10193,10194],{"class":90},"      rpy",[84,10196,847],{"class":633},[84,10198,10199],{"class":94},"\"0.40394 -1.5708 0\"",[84,10201,3849],{"class":633},[84,10203,10204,10206],{"class":86,"line":7314},[84,10205,1676],{"class":633},[84,10207,10208],{"class":793},"parent\n",[84,10210,10211,10214,10216,10218],{"class":86,"line":7329},[84,10212,10213],{"class":90},"      link",[84,10215,847],{"class":633},[84,10217,1685],{"class":94},[84,10219,3849],{"class":633},[84,10221,10222,10224],{"class":86,"line":7338},[84,10223,1676],{"class":633},[84,10225,10226],{"class":793},"child\n",[84,10228,10229,10231,10233,10235],{"class":86,"line":7343},[84,10230,10213],{"class":90},[84,10232,847],{"class":633},[84,10234,9829],{"class":94},[84,10236,3849],{"class":633},[84,10238,10239,10241],{"class":86,"line":7359},[84,10240,1676],{"class":633},[84,10242,10243],{"class":793},"axis\n",[84,10245,10246,10248,10250,10253],{"class":86,"line":7368},[84,10247,10184],{"class":90},[84,10249,847],{"class":633},[84,10251,10252],{"class":94},"\"1 0 0\"",[84,10254,3849],{"class":633},[84,10256,10257,10259],{"class":86,"line":7377},[84,10258,1676],{"class":633},[84,10260,10261],{"class":793},"limit\n",[84,10263,10264,10267,10269],{"class":86,"line":7398},[84,10265,10266],{"class":90},"      lower",[84,10268,847],{"class":633},[84,10270,10271],{"class":94},"\"-3.14\"\n",[84,10273,10274,10277,10279],{"class":86,"line":7407},[84,10275,10276],{"class":90},"      upper",[84,10278,847],{"class":633},[84,10280,10281],{"class":94},"\"3.14\"\n",[84,10283,10284,10287,10289],{"class":86,"line":7428},[84,10285,10286],{"class":90},"      effort",[84,10288,847],{"class":633},[84,10290,10291],{"class":94},"\"100\"\n",[84,10293,10294,10297,10299,10302],{"class":86,"line":7443},[84,10295,10296],{"class":90},"      velocity",[84,10298,847],{"class":633},[84,10300,10301],{"class":94},"\"1\"",[84,10303,3849],{"class":633},[84,10305,10306,10308,10310],{"class":86,"line":7452},[84,10307,1765],{"class":633},[84,10309,4650],{"class":793},[84,10311,821],{"class":633},[84,10313,10314,10316],{"class":86,"line":7461},[84,10315,3821],{"class":633},[84,10317,9469],{"class":793},[84,10319,10320,10322,10324,10327],{"class":86,"line":7466},[84,10321,9474],{"class":90},[84,10323,847],{"class":633},[84,10325,10326],{"class":94},"\"link2\"",[84,10328,821],{"class":633},[84,10330,10331,10333,10335],{"class":86,"line":7488},[84,10332,1676],{"class":633},[84,10334,3733],{"class":793},[84,10336,821],{"class":633},[84,10338,10339,10341],{"class":86,"line":7503},[84,10340,1696],{"class":633},[84,10342,9495],{"class":793},[84,10344,10345,10347,10349],{"class":86,"line":7518},[84,10346,9500],{"class":90},[84,10348,847],{"class":633},[84,10350,10351],{"class":94},"\"0.00711598521454873 0.430460941882332 -0.181074256126024\"\n",[84,10353,10354,10356,10358,10360],{"class":86,"line":7523},[84,10355,9510],{"class":90},[84,10357,847],{"class":633},[84,10359,3941],{"class":94},[84,10361,3849],{"class":633},[84,10363,10364,10366],{"class":86,"line":7545},[84,10365,1696],{"class":633},[84,10367,9523],{"class":793},[84,10369,10370,10372,10374,10377],{"class":86,"line":7560},[84,10371,9528],{"class":90},[84,10373,847],{"class":633},[84,10375,10376],{"class":94},"\"30.6115349647897\"",[84,10378,3849],{"class":633},[84,10380,10381,10383],{"class":86,"line":7569},[84,10382,1696],{"class":633},[84,10384,9542],{"class":793},[84,10386,10387,10389,10391],{"class":86,"line":7574},[84,10388,9547],{"class":90},[84,10390,847],{"class":633},[84,10392,10393],{"class":94},"\"2.84056101478768\"\n",[84,10395,10397,10399,10401],{"class":86,"line":10396},112,[84,10398,9557],{"class":90},[84,10400,847],{"class":633},[84,10402,10403],{"class":94},"\"0.00176700425270318\"\n",[84,10405,10407,10409,10411],{"class":86,"line":10406},113,[84,10408,9567],{"class":90},[84,10410,847],{"class":633},[84,10412,10413],{"class":94},"\"-0.000605507690039326\"\n",[84,10415,10417,10419,10421],{"class":86,"line":10416},114,[84,10418,9577],{"class":90},[84,10420,847],{"class":633},[84,10422,10423],{"class":94},"\"0.803420593303961\"\n",[84,10425,10427,10429,10431],{"class":86,"line":10426},115,[84,10428,9587],{"class":90},[84,10430,847],{"class":633},[84,10432,10433],{"class":94},"\"0.881921487314161\"\n",[84,10435,10437,10439,10441,10444],{"class":86,"line":10436},116,[84,10438,9597],{"class":90},[84,10440,847],{"class":633},[84,10442,10443],{"class":94},"\"2.25142021571439\"",[84,10445,3849],{"class":633},[84,10447,10449,10451,10453],{"class":86,"line":10448},117,[84,10450,1756],{"class":633},[84,10452,3733],{"class":793},[84,10454,821],{"class":633},[84,10456,10458,10460,10462],{"class":86,"line":10457},118,[84,10459,1676],{"class":633},[84,10461,818],{"class":793},[84,10463,821],{"class":633},[84,10465,10467,10469],{"class":86,"line":10466},119,[84,10468,1696],{"class":633},[84,10470,9495],{"class":793},[84,10472,10474,10476,10478],{"class":86,"line":10473},120,[84,10475,9500],{"class":90},[84,10477,847],{"class":633},[84,10479,9635],{"class":94},[84,10481,10483,10485,10487,10489],{"class":86,"line":10482},121,[84,10484,9510],{"class":90},[84,10486,847],{"class":633},[84,10488,3941],{"class":94},[84,10490,3849],{"class":633},[84,10492,10494,10496,10498],{"class":86,"line":10493},122,[84,10495,1696],{"class":633},[84,10497,830],{"class":793},[84,10499,821],{"class":633},[84,10501,10503,10505],{"class":86,"line":10502},123,[84,10504,1709],{"class":633},[84,10506,9660],{"class":793},[84,10508,10510,10512,10514,10517],{"class":86,"line":10509},124,[84,10511,9665],{"class":90},[84,10513,847],{"class":633},[84,10515,10516],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink2.STL\"",[84,10518,3849],{"class":633},[84,10520,10522,10524,10526],{"class":86,"line":10521},125,[84,10523,1747],{"class":633},[84,10525,830],{"class":793},[84,10527,821],{"class":633},[84,10529,10531,10533],{"class":86,"line":10530},126,[84,10532,1696],{"class":633},[84,10534,9687],{"class":793},[84,10536,10538,10540,10542,10544],{"class":86,"line":10537},127,[84,10539,9692],{"class":90},[84,10541,847],{"class":633},[84,10543,9697],{"class":94},[84,10545,821],{"class":633},[84,10547,10549,10551],{"class":86,"line":10548},128,[84,10550,1709],{"class":633},[84,10552,9706],{"class":793},[84,10554,10556,10558,10560,10562],{"class":86,"line":10555},129,[84,10557,9711],{"class":90},[84,10559,847],{"class":633},[84,10561,9716],{"class":94},[84,10563,3849],{"class":633},[84,10565,10567,10569,10571],{"class":86,"line":10566},130,[84,10568,1747],{"class":633},[84,10570,3661],{"class":793},[84,10572,821],{"class":633},[84,10574,10576,10578,10580],{"class":86,"line":10575},131,[84,10577,1756],{"class":633},[84,10579,818],{"class":793},[84,10581,821],{"class":633},[84,10583,10585,10587,10589],{"class":86,"line":10584},132,[84,10586,1676],{"class":633},[84,10588,3698],{"class":793},[84,10590,821],{"class":633},[84,10592,10594,10596],{"class":86,"line":10593},133,[84,10595,1696],{"class":633},[84,10597,9495],{"class":793},[84,10599,10601,10603,10605],{"class":86,"line":10600},134,[84,10602,9500],{"class":90},[84,10604,847],{"class":633},[84,10606,9635],{"class":94},[84,10608,10610,10612,10614,10616],{"class":86,"line":10609},135,[84,10611,9510],{"class":90},[84,10613,847],{"class":633},[84,10615,3941],{"class":94},[84,10617,3849],{"class":633},[84,10619,10621,10623,10625],{"class":86,"line":10620},136,[84,10622,1696],{"class":633},[84,10624,830],{"class":793},[84,10626,821],{"class":633},[84,10628,10630,10632],{"class":86,"line":10629},137,[84,10631,1709],{"class":633},[84,10633,9660],{"class":793},[84,10635,10637,10639,10641,10643],{"class":86,"line":10636},138,[84,10638,9665],{"class":90},[84,10640,847],{"class":633},[84,10642,10516],{"class":94},[84,10644,3849],{"class":633},[84,10646,10648,10650,10652],{"class":86,"line":10647},139,[84,10649,1747],{"class":633},[84,10651,830],{"class":793},[84,10653,821],{"class":633},[84,10655,10657,10659,10661],{"class":86,"line":10656},140,[84,10658,1756],{"class":633},[84,10660,3698],{"class":793},[84,10662,821],{"class":633},[84,10664,10666,10668,10670],{"class":86,"line":10665},141,[84,10667,1765],{"class":633},[84,10669,806],{"class":793},[84,10671,821],{"class":633},[84,10673,10675,10677],{"class":86,"line":10674},142,[84,10676,3821],{"class":633},[84,10678,10152],{"class":793},[84,10680,10682,10684,10686],{"class":86,"line":10681},143,[84,10683,9474],{"class":90},[84,10685,847],{"class":633},[84,10687,10688],{"class":94},"\"joint2\"\n",[84,10690,10692,10694,10696,10698],{"class":86,"line":10691},144,[84,10693,10166],{"class":90},[84,10695,847],{"class":633},[84,10697,10171],{"class":94},[84,10699,821],{"class":633},[84,10701,10703,10705],{"class":86,"line":10702},145,[84,10704,1676],{"class":633},[84,10706,9495],{"class":793},[84,10708,10710,10712,10714],{"class":86,"line":10709},146,[84,10711,10184],{"class":90},[84,10713,847],{"class":633},[84,10715,10716],{"class":94},"\"0.35141 -0.28119 0.13918\"\n",[84,10718,10720,10722,10724,10727],{"class":86,"line":10719},147,[84,10721,10194],{"class":90},[84,10723,847],{"class":633},[84,10725,10726],{"class":94},"\"-2.0566 1.1982 1.5708\"",[84,10728,3849],{"class":633},[84,10730,10732,10734],{"class":86,"line":10731},148,[84,10733,1676],{"class":633},[84,10735,10208],{"class":793},[84,10737,10739,10741,10743,10745],{"class":86,"line":10738},149,[84,10740,10213],{"class":90},[84,10742,847],{"class":633},[84,10744,9829],{"class":94},[84,10746,3849],{"class":633},[84,10748,10750,10752],{"class":86,"line":10749},150,[84,10751,1676],{"class":633},[84,10753,10226],{"class":793},[84,10755,10757,10759,10761,10763],{"class":86,"line":10756},151,[84,10758,10213],{"class":90},[84,10760,847],{"class":633},[84,10762,10326],{"class":94},[84,10764,3849],{"class":633},[84,10766,10768,10770],{"class":86,"line":10767},152,[84,10769,1676],{"class":633},[84,10771,10243],{"class":793},[84,10773,10775,10777,10779,10782],{"class":86,"line":10774},153,[84,10776,10184],{"class":90},[84,10778,847],{"class":633},[84,10780,10781],{"class":94},"\"-1 0 0\"",[84,10783,3849],{"class":633},[84,10785,10787,10789],{"class":86,"line":10786},154,[84,10788,1676],{"class":633},[84,10790,10261],{"class":793},[84,10792,10794,10796,10798],{"class":86,"line":10793},155,[84,10795,10266],{"class":90},[84,10797,847],{"class":633},[84,10799,10271],{"class":94},[84,10801,10803,10805,10807],{"class":86,"line":10802},156,[84,10804,10276],{"class":90},[84,10806,847],{"class":633},[84,10808,10281],{"class":94},[84,10810,10812,10814,10816],{"class":86,"line":10811},157,[84,10813,10286],{"class":90},[84,10815,847],{"class":633},[84,10817,10291],{"class":94},[84,10819,10821,10823,10825,10827],{"class":86,"line":10820},158,[84,10822,10296],{"class":90},[84,10824,847],{"class":633},[84,10826,10301],{"class":94},[84,10828,3849],{"class":633},[84,10830,10832,10834,10836],{"class":86,"line":10831},159,[84,10833,1765],{"class":633},[84,10835,4650],{"class":793},[84,10837,821],{"class":633},[84,10839,10841,10843],{"class":86,"line":10840},160,[84,10842,3821],{"class":633},[84,10844,9469],{"class":793},[84,10846,10848,10850,10852,10855],{"class":86,"line":10847},161,[84,10849,9474],{"class":90},[84,10851,847],{"class":633},[84,10853,10854],{"class":94},"\"link3\"",[84,10856,821],{"class":633},[84,10858,10860,10862,10864],{"class":86,"line":10859},162,[84,10861,1676],{"class":633},[84,10863,3733],{"class":793},[84,10865,821],{"class":633},[84,10867,10869,10871],{"class":86,"line":10868},163,[84,10870,1696],{"class":633},[84,10872,9495],{"class":793},[84,10874,10876,10878,10880],{"class":86,"line":10875},164,[84,10877,9500],{"class":90},[84,10879,847],{"class":633},[84,10881,10882],{"class":94},"\"0.00112887115421612 0.0366346915274407 0.31720330934553\"\n",[84,10884,10886,10888,10890,10892],{"class":86,"line":10885},165,[84,10887,9510],{"class":90},[84,10889,847],{"class":633},[84,10891,3941],{"class":94},[84,10893,3849],{"class":633},[84,10895,10897,10899],{"class":86,"line":10896},166,[84,10898,1696],{"class":633},[84,10900,9523],{"class":793},[84,10902,10904,10906,10908,10911],{"class":86,"line":10903},167,[84,10905,9528],{"class":90},[84,10907,847],{"class":633},[84,10909,10910],{"class":94},"\"32.192726667578\"",[84,10912,3849],{"class":633},[84,10914,10916,10918],{"class":86,"line":10915},168,[84,10917,1696],{"class":633},[84,10919,9542],{"class":793},[84,10921,10923,10925,10927],{"class":86,"line":10922},169,[84,10924,9547],{"class":90},[84,10926,847],{"class":633},[84,10928,10929],{"class":94},"\"4.01515983126431\"\n",[84,10931,10933,10935,10937],{"class":86,"line":10932},170,[84,10934,9557],{"class":90},[84,10936,847],{"class":633},[84,10938,10939],{"class":94},"\"0.0013193752174692\"\n",[84,10941,10943,10945,10947],{"class":86,"line":10942},171,[84,10944,9567],{"class":90},[84,10946,847],{"class":633},[84,10948,10949],{"class":94},"\"0.0113529938102155\"\n",[84,10951,10953,10955,10957],{"class":86,"line":10952},172,[84,10954,9577],{"class":90},[84,10956,847],{"class":633},[84,10958,10959],{"class":94},"\"3.86196311673823\"\n",[84,10961,10963,10965,10967],{"class":86,"line":10962},173,[84,10964,9587],{"class":90},[84,10966,847],{"class":633},[84,10968,10969],{"class":94},"\"-0.336440022491883\"\n",[84,10971,10973,10975,10977,10980],{"class":86,"line":10972},174,[84,10974,9597],{"class":90},[84,10976,847],{"class":633},[84,10978,10979],{"class":94},"\"0.399977905540088\"",[84,10981,3849],{"class":633},[84,10983,10985,10987,10989],{"class":86,"line":10984},175,[84,10986,1756],{"class":633},[84,10988,3733],{"class":793},[84,10990,821],{"class":633},[84,10992,10994,10996,10998],{"class":86,"line":10993},176,[84,10995,1676],{"class":633},[84,10997,818],{"class":793},[84,10999,821],{"class":633},[84,11001,11003,11005],{"class":86,"line":11002},177,[84,11004,1696],{"class":633},[84,11006,9495],{"class":793},[84,11008,11010,11012,11014],{"class":86,"line":11009},178,[84,11011,9500],{"class":90},[84,11013,847],{"class":633},[84,11015,9635],{"class":94},[84,11017,11019,11021,11023,11025],{"class":86,"line":11018},179,[84,11020,9510],{"class":90},[84,11022,847],{"class":633},[84,11024,3941],{"class":94},[84,11026,3849],{"class":633},[84,11028,11030,11032,11034],{"class":86,"line":11029},180,[84,11031,1696],{"class":633},[84,11033,830],{"class":793},[84,11035,821],{"class":633},[84,11037,11039,11041],{"class":86,"line":11038},181,[84,11040,1709],{"class":633},[84,11042,9660],{"class":793},[84,11044,11046,11048,11050,11053],{"class":86,"line":11045},182,[84,11047,9665],{"class":90},[84,11049,847],{"class":633},[84,11051,11052],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink3.STL\"",[84,11054,3849],{"class":633},[84,11056,11058,11060,11062],{"class":86,"line":11057},183,[84,11059,1747],{"class":633},[84,11061,830],{"class":793},[84,11063,821],{"class":633},[84,11065,11067,11069],{"class":86,"line":11066},184,[84,11068,1696],{"class":633},[84,11070,9687],{"class":793},[84,11072,11074,11076,11078,11080],{"class":86,"line":11073},185,[84,11075,9692],{"class":90},[84,11077,847],{"class":633},[84,11079,9697],{"class":94},[84,11081,821],{"class":633},[84,11083,11085,11087],{"class":86,"line":11084},186,[84,11086,1709],{"class":633},[84,11088,9706],{"class":793},[84,11090,11092,11094,11096,11098],{"class":86,"line":11091},187,[84,11093,9711],{"class":90},[84,11095,847],{"class":633},[84,11097,9716],{"class":94},[84,11099,3849],{"class":633},[84,11101,11103,11105,11107],{"class":86,"line":11102},188,[84,11104,1747],{"class":633},[84,11106,3661],{"class":793},[84,11108,821],{"class":633},[84,11110,11112,11114,11116],{"class":86,"line":11111},189,[84,11113,1756],{"class":633},[84,11115,818],{"class":793},[84,11117,821],{"class":633},[84,11119,11121,11123,11125],{"class":86,"line":11120},190,[84,11122,1676],{"class":633},[84,11124,3698],{"class":793},[84,11126,821],{"class":633},[84,11128,11130,11132],{"class":86,"line":11129},191,[84,11131,1696],{"class":633},[84,11133,9495],{"class":793},[84,11135,11137,11139,11141],{"class":86,"line":11136},192,[84,11138,9500],{"class":90},[84,11140,847],{"class":633},[84,11142,9635],{"class":94},[84,11144,11146,11148,11150,11152],{"class":86,"line":11145},193,[84,11147,9510],{"class":90},[84,11149,847],{"class":633},[84,11151,3941],{"class":94},[84,11153,3849],{"class":633},[84,11155,11157,11159,11161],{"class":86,"line":11156},194,[84,11158,1696],{"class":633},[84,11160,830],{"class":793},[84,11162,821],{"class":633},[84,11164,11166,11168],{"class":86,"line":11165},195,[84,11167,1709],{"class":633},[84,11169,9660],{"class":793},[84,11171,11173,11175,11177,11179],{"class":86,"line":11172},196,[84,11174,9665],{"class":90},[84,11176,847],{"class":633},[84,11178,11052],{"class":94},[84,11180,3849],{"class":633},[84,11182,11184,11186,11188],{"class":86,"line":11183},197,[84,11185,1747],{"class":633},[84,11187,830],{"class":793},[84,11189,821],{"class":633},[84,11191,11193,11195,11197],{"class":86,"line":11192},198,[84,11194,1756],{"class":633},[84,11196,3698],{"class":793},[84,11198,821],{"class":633},[84,11200,11202,11204,11206],{"class":86,"line":11201},199,[84,11203,1765],{"class":633},[84,11205,806],{"class":793},[84,11207,821],{"class":633},[84,11209,11211,11213],{"class":86,"line":11210},200,[84,11212,3821],{"class":633},[84,11214,10152],{"class":793},[84,11216,11218,11220,11222],{"class":86,"line":11217},201,[84,11219,9474],{"class":90},[84,11221,847],{"class":633},[84,11223,11224],{"class":94},"\"joint3\"\n",[84,11226,11228,11230,11232,11234],{"class":86,"line":11227},202,[84,11229,10166],{"class":90},[84,11231,847],{"class":633},[84,11233,10171],{"class":94},[84,11235,821],{"class":633},[84,11237,11239,11241],{"class":86,"line":11238},203,[84,11240,1676],{"class":633},[84,11242,9495],{"class":793},[84,11244,11246,11248,11250],{"class":86,"line":11245},204,[84,11247,10184],{"class":90},[84,11249,847],{"class":633},[84,11251,11252],{"class":94},"\"0.3765 0.82481 -0.49591\"\n",[84,11254,11256,11258,11260,11263],{"class":86,"line":11255},205,[84,11257,10194],{"class":90},[84,11259,847],{"class":633},[84,11261,11262],{"class":94},"\"2.5802 0 0\"",[84,11264,3849],{"class":633},[84,11266,11268,11270],{"class":86,"line":11267},206,[84,11269,1676],{"class":633},[84,11271,10208],{"class":793},[84,11273,11275,11277,11279,11281],{"class":86,"line":11274},207,[84,11276,10213],{"class":90},[84,11278,847],{"class":633},[84,11280,10326],{"class":94},[84,11282,3849],{"class":633},[84,11284,11286,11288],{"class":86,"line":11285},208,[84,11287,1676],{"class":633},[84,11289,10226],{"class":793},[84,11291,11293,11295,11297,11299],{"class":86,"line":11292},209,[84,11294,10213],{"class":90},[84,11296,847],{"class":633},[84,11298,10854],{"class":94},[84,11300,3849],{"class":633},[84,11302,11304,11306],{"class":86,"line":11303},210,[84,11305,1676],{"class":633},[84,11307,10243],{"class":793},[84,11309,11311,11313,11315,11317],{"class":86,"line":11310},211,[84,11312,10184],{"class":90},[84,11314,847],{"class":633},[84,11316,10252],{"class":94},[84,11318,3849],{"class":633},[84,11320,11322,11324],{"class":86,"line":11321},212,[84,11323,1676],{"class":633},[84,11325,10261],{"class":793},[84,11327,11329,11331,11333],{"class":86,"line":11328},213,[84,11330,10266],{"class":90},[84,11332,847],{"class":633},[84,11334,10271],{"class":94},[84,11336,11338,11340,11342],{"class":86,"line":11337},214,[84,11339,10276],{"class":90},[84,11341,847],{"class":633},[84,11343,10281],{"class":94},[84,11345,11347,11349,11351],{"class":86,"line":11346},215,[84,11348,10286],{"class":90},[84,11350,847],{"class":633},[84,11352,10291],{"class":94},[84,11354,11356,11358,11360,11362],{"class":86,"line":11355},216,[84,11357,10296],{"class":90},[84,11359,847],{"class":633},[84,11361,10301],{"class":94},[84,11363,3849],{"class":633},[84,11365,11367,11369,11371],{"class":86,"line":11366},217,[84,11368,1765],{"class":633},[84,11370,4650],{"class":793},[84,11372,821],{"class":633},[84,11374,11376,11378],{"class":86,"line":11375},218,[84,11377,3821],{"class":633},[84,11379,9469],{"class":793},[84,11381,11383,11385,11387,11390],{"class":86,"line":11382},219,[84,11384,9474],{"class":90},[84,11386,847],{"class":633},[84,11388,11389],{"class":94},"\"link4\"",[84,11391,821],{"class":633},[84,11393,11395,11397,11399],{"class":86,"line":11394},220,[84,11396,1676],{"class":633},[84,11398,3733],{"class":793},[84,11400,821],{"class":633},[84,11402,11404,11406],{"class":86,"line":11403},221,[84,11405,1696],{"class":633},[84,11407,9495],{"class":793},[84,11409,11411,11413,11415],{"class":86,"line":11410},222,[84,11412,9500],{"class":90},[84,11414,847],{"class":633},[84,11416,11417],{"class":94},"\"0.162516620557178 -0.213844847423599 3.38133504529381E-07\"\n",[84,11419,11421,11423,11425,11427],{"class":86,"line":11420},223,[84,11422,9510],{"class":90},[84,11424,847],{"class":633},[84,11426,3941],{"class":94},[84,11428,3849],{"class":633},[84,11430,11432,11434],{"class":86,"line":11431},224,[84,11433,1696],{"class":633},[84,11435,9523],{"class":793},[84,11437,11439,11441,11443,11446],{"class":86,"line":11438},225,[84,11440,9528],{"class":90},[84,11442,847],{"class":633},[84,11444,11445],{"class":94},"\"12.1646007734167\"",[84,11447,3849],{"class":633},[84,11449,11451,11453],{"class":86,"line":11450},226,[84,11452,1696],{"class":633},[84,11454,9542],{"class":793},[84,11456,11458,11460,11462],{"class":86,"line":11457},227,[84,11459,9547],{"class":90},[84,11461,847],{"class":633},[84,11463,11464],{"class":94},"\"0.288208127188405\"\n",[84,11466,11468,11470,11472],{"class":86,"line":11467},228,[84,11469,9557],{"class":90},[84,11471,847],{"class":633},[84,11473,11474],{"class":94},"\"0.00080326659836716\"\n",[84,11476,11478,11480,11482],{"class":86,"line":11477},229,[84,11479,9567],{"class":90},[84,11481,847],{"class":633},[84,11483,11484],{"class":94},"\"8.72489392803044E-07\"\n",[84,11486,11488,11490,11492],{"class":86,"line":11487},230,[84,11489,9577],{"class":90},[84,11491,847],{"class":633},[84,11493,11494],{"class":94},"\"0.107000706575729\"\n",[84,11496,11498,11500,11502],{"class":86,"line":11497},231,[84,11499,9587],{"class":90},[84,11501,847],{"class":633},[84,11503,11504],{"class":94},"\"-1.48935044230573E-07\"\n",[84,11506,11508,11510,11512,11515],{"class":86,"line":11507},232,[84,11509,9597],{"class":90},[84,11511,847],{"class":633},[84,11513,11514],{"class":94},"\"0.295147863994059\"",[84,11516,3849],{"class":633},[84,11518,11520,11522,11524],{"class":86,"line":11519},233,[84,11521,1756],{"class":633},[84,11523,3733],{"class":793},[84,11525,821],{"class":633},[84,11527,11529,11531,11533],{"class":86,"line":11528},234,[84,11530,1676],{"class":633},[84,11532,818],{"class":793},[84,11534,821],{"class":633},[84,11536,11538,11540],{"class":86,"line":11537},235,[84,11539,1696],{"class":633},[84,11541,9495],{"class":793},[84,11543,11545,11547,11549],{"class":86,"line":11544},236,[84,11546,9500],{"class":90},[84,11548,847],{"class":633},[84,11550,9635],{"class":94},[84,11552,11554,11556,11558,11560],{"class":86,"line":11553},237,[84,11555,9510],{"class":90},[84,11557,847],{"class":633},[84,11559,3941],{"class":94},[84,11561,3849],{"class":633},[84,11563,11565,11567,11569],{"class":86,"line":11564},238,[84,11566,1696],{"class":633},[84,11568,830],{"class":793},[84,11570,821],{"class":633},[84,11572,11574,11576],{"class":86,"line":11573},239,[84,11575,1709],{"class":633},[84,11577,9660],{"class":793},[84,11579,11581,11583,11585,11588],{"class":86,"line":11580},240,[84,11582,9665],{"class":90},[84,11584,847],{"class":633},[84,11586,11587],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink4.STL\"",[84,11589,3849],{"class":633},[84,11591,11593,11595,11597],{"class":86,"line":11592},241,[84,11594,1747],{"class":633},[84,11596,830],{"class":793},[84,11598,821],{"class":633},[84,11600,11602,11604],{"class":86,"line":11601},242,[84,11603,1696],{"class":633},[84,11605,9687],{"class":793},[84,11607,11609,11611,11613,11615],{"class":86,"line":11608},243,[84,11610,9692],{"class":90},[84,11612,847],{"class":633},[84,11614,9697],{"class":94},[84,11616,821],{"class":633},[84,11618,11620,11622],{"class":86,"line":11619},244,[84,11621,1709],{"class":633},[84,11623,9706],{"class":793},[84,11625,11627,11629,11631,11633],{"class":86,"line":11626},245,[84,11628,9711],{"class":90},[84,11630,847],{"class":633},[84,11632,9716],{"class":94},[84,11634,3849],{"class":633},[84,11636,11638,11640,11642],{"class":86,"line":11637},246,[84,11639,1747],{"class":633},[84,11641,3661],{"class":793},[84,11643,821],{"class":633},[84,11645,11647,11649,11651],{"class":86,"line":11646},247,[84,11648,1756],{"class":633},[84,11650,818],{"class":793},[84,11652,821],{"class":633},[84,11654,11656,11658,11660],{"class":86,"line":11655},248,[84,11657,1676],{"class":633},[84,11659,3698],{"class":793},[84,11661,821],{"class":633},[84,11663,11665,11667],{"class":86,"line":11664},249,[84,11666,1696],{"class":633},[84,11668,9495],{"class":793},[84,11670,11672,11674,11676],{"class":86,"line":11671},250,[84,11673,9500],{"class":90},[84,11675,847],{"class":633},[84,11677,9635],{"class":94},[84,11679,11681,11683,11685,11687],{"class":86,"line":11680},251,[84,11682,9510],{"class":90},[84,11684,847],{"class":633},[84,11686,3941],{"class":94},[84,11688,3849],{"class":633},[84,11690,11692,11694,11696],{"class":86,"line":11691},252,[84,11693,1696],{"class":633},[84,11695,830],{"class":793},[84,11697,821],{"class":633},[84,11699,11701,11703],{"class":86,"line":11700},253,[84,11702,1709],{"class":633},[84,11704,9660],{"class":793},[84,11706,11708,11710,11712,11714],{"class":86,"line":11707},254,[84,11709,9665],{"class":90},[84,11711,847],{"class":633},[84,11713,11587],{"class":94},[84,11715,3849],{"class":633},[84,11717,11719,11721,11723],{"class":86,"line":11718},255,[84,11720,1747],{"class":633},[84,11722,830],{"class":793},[84,11724,821],{"class":633},[84,11726,11728,11730,11732],{"class":86,"line":11727},256,[84,11729,1756],{"class":633},[84,11731,3698],{"class":793},[84,11733,821],{"class":633},[84,11735,11737,11739,11741],{"class":86,"line":11736},257,[84,11738,1765],{"class":633},[84,11740,806],{"class":793},[84,11742,821],{"class":633},[84,11744,11746,11748],{"class":86,"line":11745},258,[84,11747,3821],{"class":633},[84,11749,10152],{"class":793},[84,11751,11753,11755,11757],{"class":86,"line":11752},259,[84,11754,9474],{"class":90},[84,11756,847],{"class":633},[84,11758,11759],{"class":94},"\"joint4\"\n",[84,11761,11763,11765,11767,11769],{"class":86,"line":11762},260,[84,11764,10166],{"class":90},[84,11766,847],{"class":633},[84,11768,10171],{"class":94},[84,11770,821],{"class":633},[84,11772,11774,11776],{"class":86,"line":11773},261,[84,11775,1676],{"class":633},[84,11777,9495],{"class":793},[84,11779,11781,11783,11785],{"class":86,"line":11780},262,[84,11782,10184],{"class":90},[84,11784,847],{"class":633},[84,11786,11787],{"class":94},"\"0 0.070837 0.99728\"\n",[84,11789,11791,11793,11795,11798],{"class":86,"line":11790},263,[84,11792,10194],{"class":90},[84,11794,847],{"class":633},[84,11796,11797],{"class":94},"\"0.82315 -1.5708 0\"",[84,11799,3849],{"class":633},[84,11801,11803,11805],{"class":86,"line":11802},264,[84,11804,1676],{"class":633},[84,11806,10208],{"class":793},[84,11808,11810,11812,11814,11816],{"class":86,"line":11809},265,[84,11811,10213],{"class":90},[84,11813,847],{"class":633},[84,11815,10854],{"class":94},[84,11817,3849],{"class":633},[84,11819,11821,11823],{"class":86,"line":11820},266,[84,11822,1676],{"class":633},[84,11824,10226],{"class":793},[84,11826,11828,11830,11832,11834],{"class":86,"line":11827},267,[84,11829,10213],{"class":90},[84,11831,847],{"class":633},[84,11833,11389],{"class":94},[84,11835,3849],{"class":633},[84,11837,11839,11841],{"class":86,"line":11838},268,[84,11840,1676],{"class":633},[84,11842,10243],{"class":793},[84,11844,11846,11848,11850,11852],{"class":86,"line":11845},269,[84,11847,10184],{"class":90},[84,11849,847],{"class":633},[84,11851,10252],{"class":94},[84,11853,3849],{"class":633},[84,11855,11857,11859],{"class":86,"line":11856},270,[84,11858,1676],{"class":633},[84,11860,10261],{"class":793},[84,11862,11864,11866,11868],{"class":86,"line":11863},271,[84,11865,10266],{"class":90},[84,11867,847],{"class":633},[84,11869,10271],{"class":94},[84,11871,11873,11875,11877],{"class":86,"line":11872},272,[84,11874,10276],{"class":90},[84,11876,847],{"class":633},[84,11878,10281],{"class":94},[84,11880,11882,11884,11886],{"class":86,"line":11881},273,[84,11883,10286],{"class":90},[84,11885,847],{"class":633},[84,11887,10291],{"class":94},[84,11889,11891,11893,11895,11897],{"class":86,"line":11890},274,[84,11892,10296],{"class":90},[84,11894,847],{"class":633},[84,11896,10301],{"class":94},[84,11898,3849],{"class":633},[84,11900,11902,11904,11906],{"class":86,"line":11901},275,[84,11903,1765],{"class":633},[84,11905,4650],{"class":793},[84,11907,821],{"class":633},[84,11909,11911,11913,11915],{"class":86,"line":11910},276,[84,11912,3989],{"class":633},[84,11914,794],{"class":793},[84,11916,821],{"class":633},[139,11918,11919],{"start":866},[142,11920,11921],{},"编译",[76,11923,11925],{"className":78,"code":11924,"language":80,"meta":19,"style":19},"colcon build --packages-select cpp01_urdf\n",[71,11926,11927],{"__ignoreMap":19},[84,11928,11929,11931,11933,11935],{"class":86,"line":87},[84,11930,1492],{"class":90},[84,11932,1495],{"class":94},[84,11934,1498],{"class":736},[84,11936,11937],{"class":94}," cpp01_urdf\n",[14,11939,11940],{},[17,11941],{"alt":19,"src":11942},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1596.webp",[14,11944,11945],{},[17,11946],{"alt":19,"src":11947},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1597.webp",[139,11949,11950],{"start":876},[142,11951,11952],{},"更新终端环境",[76,11954,11956],{"className":78,"code":11955,"language":80,"meta":19,"style":19},"source install\u002Fsetup.bash\n",[71,11957,11958],{"__ignoreMap":19},[84,11959,11960,11962],{"class":86,"line":87},[84,11961,1516],{"class":736},[84,11963,1519],{"class":94},[14,11965,11966],{},[17,11967],{"alt":19,"src":11968},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1598.webp",[139,11970,11971],{"start":886},[142,11972,11973],{},"运行Launch",[76,11975,11977],{"className":78,"code":11976,"language":80,"meta":19,"style":19},"ros2 launch cpp01_urdf display.launch.py\n",[71,11978,11979],{"__ignoreMap":19},[84,11980,11981,11983,11985,11987],{"class":86,"line":87},[84,11982,724],{"class":90},[84,11984,1526],{"class":94},[84,11986,8143],{"class":94},[84,11988,1531],{"class":94},[14,11990,11991],{},[17,11992],{"alt":19,"src":11993},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1599.webp",[14,11995,11996],{},[17,11997],{"alt":19,"src":11998},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1600.webp",[139,12000,12001],{"start":1018},[142,12002,12003],{},"在Rviz2中添加插件以及基本配置",[14,12005,12006],{},[17,12007],{"alt":19,"src":12008},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1601.webp",[139,12010,12011],{"start":1023},[142,12012,12013],{},"使用joint_state_publisher_gui可以调关节的角度",[14,12015,12016,12019],{},[17,12017],{"alt":19,"src":12018},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1602.webp",[17,12020],{"alt":19,"src":12021},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1603.webp",[139,12023,12024],{"start":1040},[142,12025,12026],{},"保存rviz2的配置到rviz文件夹中",[14,12028,12029],{},"首先点击rviz2的菜单栏上的File，然后选择Save Config as",[14,12031,12032],{},[17,12033],{"alt":19,"src":12034},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1604.webp",[14,12036,12037],{},"可以去本节简介看效果视频",[653,12039,12041],{"id":12040},"注意事项仅供参考chatgpt的解决方案","注意事项（仅供参考，ChatGPT的解决方案）",[3547,12043,12044],{"id":12044},"坐标系1",[14,12046,12047],{},"轮子要用continuous的关节，并且尽量自己选坐标系，要求从后面看车的话，左是Y，前是X，上是Z。所有的坐标系都要求。",[14,12049,12050],{},"可以先让他帮你自动生成一个，你再去修改坐标系，要简单一些。",[14,12052,12053],{},[17,12054],{"alt":19,"src":12055},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1605.webp",[14,12057,12058],{},[17,12059],{"alt":19,"src":12060},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1606.webp",[14,12062,12063],{},[17,12064],{"alt":19,"src":12065},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1607.webp",[3547,12067,12068],{"id":12068},"坐标系让车躺着",[14,12070,12071],{},"如果你的车在rviz2里是侧着睡觉的，那么：",[14,12073,12074,12075,12078],{},"哈哈，没错，这种“整车侧着躺尸”的情况 ",[105,12076,12077],{},"90%就是 STL 的坐标轴方向搞错了"," 。很多 CAD 工具导出的 STL 模型默认是：",[163,12080,12081,12084],{},[142,12082,12083],{},"Z 轴朝前（例如 SolidWorks：Z朝前，Y朝上，用右手坐标系推X坐标系位置，从车屁股后面看是朝左。）",[142,12085,12086],{},"或者 Y 轴朝上（例如 Blender）",[14,12088,12089],{},"而 ROS\u002FURDF 的坐标系统是：",[163,12091,12092,12095,12098],{},[142,12093,12094],{},"X 向前（前进方向）",[142,12096,12097],{},"Y 向左（平移方向）",[142,12099,12100],{},"Z 向上（重力方向）",[3547,12102,12104],{"id":12103},"车直走变旋转旋转变直走","车直走变旋转，旋转变直走",[14,12106,12107],{},"那说明你的转轴有问题。",[14,12109,12110],{},"如果向前走成了左转，那么说明左轮的转轴错了，少了个符号，加上就行了。",[14,12112,12113],{},"比如这个010,你应该改成0-10",[14,12115,12116],{},[17,12117],{"alt":19,"src":12118},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1608.webp",[10,12120,12121],{"id":12121},"xacro",[653,12123,12125],{"id":12124},"场景作用与概念","场景、作用与概念",[14,12127,12128],{},[105,12129,12130],{},"场景",[14,12132,12133],{},"前面 URDF 文件构建机器人模型的过程中，存在若干问题。",[12135,12136,12137,12140,12143],"blockquote",{},[14,12138,12139],{},"问题1：在设计关节的位置时，需要按照一定的规则计算，规则是固定的，但是在 URDF 中依赖于人工计算，存在不便，容易计算失误，且当某些参数发生改变时，还需要重新计算。",[14,12141,12142],{},"问题2：URDF中的部分内容是高度重复的，比如车轮的设计实现，不同轮子只是部分参数不同，形状、颜色、翻转量都是一致的，在实际应用中，构建复杂的机器人模型时，更是易于出现高度重复的设计，按照一般的编程思想涉及到重复代码应该考虑封装、复用，但是在之前的URDF文件中并没有相关操作。",[14,12144,12145],{},"......",[14,12147,12148,12149,12152],{},"如果在一般编程语言中遇到类似问题，我们可以通过变量结合函数解决。对应的，在 ROS 中也给出了类似编程的优化方案，该方案称之为： ",[105,12150,12151],{},"Xacro（可以理解为urdf2.0）"," 。",[14,12154,12155],{},[105,12156,12157],{},"概念",[14,12159,12160],{},"Xacro 是 XML Macros 的缩写，Xacro 是一种 XML 宏语言，是可编程的 XML。",[14,12162,12163],{},"Xacro 可以声明变量，可以通过数学运算求解；可以使用流程控制控制执行顺序；还可以通过宏封装(可以想成函数)、复用功能，从而提高代码复用率以及程序的安全性。",[14,12165,12166],{},[105,12167,12168],{},"作用",[14,12170,12171],{},"较之于纯粹的 URDF 实现，可以编写更安全、精简、易读性更强的机器人模型文件，且可以提高编写效率。",[653,12173,12174],{"id":12174},"快速体验",[14,12176,12177],{},"先安装xacro",[76,12179,12181],{"className":78,"code":12180,"language":80,"meta":19,"style":19},"#humble版本\nsudo apt install ros-humble-xacro\n#jazzy版本\nsudo apt install ros-jazzy-xacro\n",[71,12182,12183,12188,12198,12203],{"__ignoreMap":19},[84,12184,12185],{"class":86,"line":87},[84,12186,12187],{"class":1003},"#humble版本\n",[84,12189,12190,12192,12194,12196],{"class":86,"line":644},[84,12191,91],{"class":90},[84,12193,95],{"class":94},[84,12195,98],{"class":94},[84,12197,1836],{"class":94},[84,12199,12200],{"class":86,"line":800},[84,12201,12202],{"class":1003},"#jazzy版本\n",[84,12204,12205,12207,12209,12211],{"class":86,"line":812},[84,12206,91],{"class":90},[84,12208,95],{"class":94},[84,12210,98],{"class":94},[84,12212,12213],{"class":94}," ros-jazzy-xacro\n",[14,12215,12216],{},"1.需求",[14,12218,12219,12220,12223],{},"使用xacro优化 ",[105,12221,12222],{},"6.4.4 URDF练习"," 中的小车底盘实现，需要使用变量封装车辆参数，并使用 xacro 宏封装轮子重复的代码并调用宏创建四个轮子(注意: 在此，演示 xacro 的基本使用，不必要生成合法的 URDF )。",[14,12225,12226],{},"2.实现",[14,12228,12229],{},"功能包cpp06_urdf的urdf\u002Fxacro目录下，新建xacro文件demo01_helloworld.urdf.xacro，并编辑文件，输入如下内容：",[76,12231,12233],{"className":775,"code":12232,"language":777,"meta":19,"style":19},"\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",[71,12234,12235,12258,12262,12285,12306,12328,12332,12357,12372,12380,12389,12412,12421,12425,12446,12450,12465,12480,12488,12497,12505,12513,12530,12545,12560,12575],{"__ignoreMap":19},[84,12236,12237,12239,12241,12243,12245,12248,12251,12253,12256],{"class":86,"line":87},[84,12238,1375],{"class":633},[84,12240,794],{"class":793},[84,12242,1659],{"class":90},[84,12244,847],{"class":633},[84,12246,12247],{"class":94},"\"mycar\"",[84,12249,12250],{"class":90}," xmlns:xacro",[84,12252,847],{"class":633},[84,12254,12255],{"class":94},"\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\"",[84,12257,821],{"class":633},[84,12259,12260],{"class":86,"line":644},[84,12261,785],{"emptyLinePlaceholder":784},[84,12263,12264,12266,12269,12271,12273,12276,12279,12281,12283],{"class":86,"line":800},[84,12265,1676],{"class":633},[84,12267,12268],{"class":793},"xacro:property",[84,12270,1659],{"class":90},[84,12272,847],{"class":633},[84,12274,12275],{"class":94},"\"wheel_radius\"",[84,12277,12278],{"class":90}," value",[84,12280,847],{"class":633},[84,12282,6728],{"class":94},[84,12284,3849],{"class":633},[84,12286,12287,12289,12291,12293,12295,12298,12300,12302,12304],{"class":86,"line":812},[84,12288,1676],{"class":633},[84,12290,12268],{"class":793},[84,12292,1659],{"class":90},[84,12294,847],{"class":633},[84,12296,12297],{"class":94},"\"wheel_length\"",[84,12299,12278],{"class":90},[84,12301,847],{"class":633},[84,12303,6736],{"class":94},[84,12305,3849],{"class":633},[84,12307,12308,12310,12312,12314,12316,12319,12321,12323,12326],{"class":86,"line":824},[84,12309,1676],{"class":633},[84,12311,12268],{"class":793},[84,12313,1659],{"class":90},[84,12315,847],{"class":633},[84,12317,12318],{"class":94},"\"PI\"",[84,12320,12278],{"class":90},[84,12322,847],{"class":633},[84,12324,12325],{"class":94},"\"3.1415927\"",[84,12327,3849],{"class":633},[84,12329,12330],{"class":86,"line":835},[84,12331,785],{"emptyLinePlaceholder":784},[84,12333,12334,12336,12339,12341,12343,12346,12349,12351,12354],{"class":86,"line":856},[84,12335,1676],{"class":633},[84,12337,12338],{"class":793},"xacro:macro",[84,12340,1659],{"class":90},[84,12342,847],{"class":633},[84,12344,12345],{"class":94},"\"wheel_func\"",[84,12347,12348],{"class":90}," params",[84,12350,847],{"class":633},[84,12352,12353],{"class":94},"\"wheel_name\"",[84,12355,12356],{"class":633}," >\n",[84,12358,12359,12361,12363,12365,12367,12370],{"class":86,"line":866},[84,12360,1709],{"class":633},[84,12362,806],{"class":793},[84,12364,1659],{"class":90},[84,12366,847],{"class":633},[84,12368,12369],{"class":94},"\"${wheel_name}_wheel\"",[84,12371,821],{"class":633},[84,12373,12374,12376,12378],{"class":86,"line":876},[84,12375,3900],{"class":633},[84,12377,818],{"class":793},[84,12379,821],{"class":633},[84,12381,12382,12385,12387],{"class":86,"line":886},[84,12383,12384],{"class":633},"                \u003C",[84,12386,830],{"class":793},[84,12388,821],{"class":633},[84,12390,12391,12394,12396,12398,12400,12403,12405,12407,12410],{"class":86,"line":1018},[84,12392,12393],{"class":633},"                    \u003C",[84,12395,3607],{"class":793},[84,12397,5571],{"class":90},[84,12399,847],{"class":633},[84,12401,12402],{"class":94},"\"${wheel_radius}\"",[84,12404,6731],{"class":90},[84,12406,847],{"class":633},[84,12408,12409],{"class":94},"\"${wheel_length}\"",[84,12411,3849],{"class":633},[84,12413,12414,12417,12419],{"class":86,"line":1023},[84,12415,12416],{"class":633},"                \u003C\u002F",[84,12418,830],{"class":793},[84,12420,821],{"class":633},[84,12422,12423],{"class":86,"line":1040},[84,12424,785],{"emptyLinePlaceholder":784},[84,12426,12427,12429,12431,12433,12435,12437,12439,12441,12444],{"class":86,"line":1062},[84,12428,12384],{"class":633},[84,12430,3639],{"class":793},[84,12432,3936],{"class":90},[84,12434,847],{"class":633},[84,12436,3941],{"class":94},[84,12438,3944],{"class":90},[84,12440,847],{"class":633},[84,12442,12443],{"class":94},"\"${PI \u002F 2} 0 0\"",[84,12445,3849],{"class":633},[84,12447,12448],{"class":86,"line":1082},[84,12449,785],{"emptyLinePlaceholder":784},[84,12451,12452,12454,12456,12458,12460,12463],{"class":86,"line":1113},[84,12453,12384],{"class":633},[84,12455,3661],{"class":793},[84,12457,1659],{"class":90},[84,12459,847],{"class":633},[84,12461,12462],{"class":94},"\"wheel_color\"",[84,12464,821],{"class":633},[84,12466,12467,12469,12471,12473,12475,12478],{"class":86,"line":1118},[84,12468,12393],{"class":633},[84,12470,3676],{"class":793},[84,12472,3841],{"class":90},[84,12474,847],{"class":633},[84,12476,12477],{"class":94},"\"0 0 0 0.3\"",[84,12479,3849],{"class":633},[84,12481,12482,12484,12486],{"class":86,"line":1124},[84,12483,12416],{"class":633},[84,12485,3661],{"class":793},[84,12487,821],{"class":633},[84,12489,12490,12493,12495],{"class":86,"line":1129},[84,12491,12492],{"class":633},"            \u003C\u002F",[84,12494,818],{"class":793},[84,12496,821],{"class":633},[84,12498,12499,12501,12503],{"class":86,"line":1135},[84,12500,1738],{"class":633},[84,12502,806],{"class":793},[84,12504,821],{"class":633},[84,12506,12507,12509,12511],{"class":86,"line":1157},[84,12508,1756],{"class":633},[84,12510,12338],{"class":793},[84,12512,821],{"class":633},[84,12514,12515,12517,12520,12523,12525,12528],{"class":86,"line":1168},[84,12516,1676],{"class":633},[84,12518,12519],{"class":793},"xacro:wheel_func",[84,12521,12522],{"class":90}," wheel_name",[84,12524,847],{"class":633},[84,12526,12527],{"class":94},"\"left_front\"",[84,12529,853],{"class":633},[84,12531,12532,12534,12536,12538,12540,12543],{"class":86,"line":1182},[84,12533,1676],{"class":633},[84,12535,12519],{"class":793},[84,12537,12522],{"class":90},[84,12539,847],{"class":633},[84,12541,12542],{"class":94},"\"left_back\"",[84,12544,853],{"class":633},[84,12546,12547,12549,12551,12553,12555,12558],{"class":86,"line":1194},[84,12548,1676],{"class":633},[84,12550,12519],{"class":793},[84,12552,12522],{"class":90},[84,12554,847],{"class":633},[84,12556,12557],{"class":94},"\"right_front\"",[84,12559,853],{"class":633},[84,12561,12562,12564,12566,12568,12570,12573],{"class":86,"line":1211},[84,12563,1676],{"class":633},[84,12565,12519],{"class":793},[84,12567,12522],{"class":90},[84,12569,847],{"class":633},[84,12571,12572],{"class":94},"\"right_back\"",[84,12574,853],{"class":633},[84,12576,12577,12579,12581],{"class":86,"line":1217},[84,12578,3989],{"class":633},[84,12580,794],{"class":793},[84,12582,821],{"class":633},[14,12584,12585],{},[17,12586],{"alt":19,"src":12587},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1609.webp",[14,12589,12590],{},"宏类似函数",[14,12592,12593],{},"params类似入口参数",[14,12595,12596],{},"子标签类似函数体",[14,12598,12599],{},"终端下进入当前文件所述目录，输入如下指令：",[76,12601,12603],{"className":78,"code":12602,"language":80,"meta":19,"style":19},"cd src\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002F\nxacro demo01_helloworld.urdf.xacro\n#或者\nros2 run xacro xacro demo01_helloworld.urdf.xacro\n",[71,12604,12605,12612,12619,12624],{"__ignoreMap":19},[84,12606,12607,12609],{"class":86,"line":87},[84,12608,8115],{"class":736},[84,12610,12611],{"class":94}," src\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002F\n",[84,12613,12614,12616],{"class":86,"line":644},[84,12615,12121],{"class":90},[84,12617,12618],{"class":94}," demo01_helloworld.urdf.xacro\n",[84,12620,12621],{"class":86,"line":800},[84,12622,12623],{"class":1003},"#或者\n",[84,12625,12626,12628,12630,12633,12635],{"class":86,"line":812},[84,12627,724],{"class":90},[84,12629,2421],{"class":94},[84,12631,12632],{"class":94}," xacro",[84,12634,12632],{"class":94},[84,12636,12618],{"class":94},[14,12638,12639],{},"终端将会输出如下内容（以下内容是纯urdf）：",[76,12641,12643],{"className":775,"code":12642,"language":777,"meta":19,"style":19},"\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",[71,12644,12645,12660,12664,12678,12693,12701,12709,12729,12737,12758,12772,12786,12794,12802,12810,12825,12833,12841,12861,12869,12889,12903,12917,12925,12933,12941,12956,12964,12972,12992,13000,13020,13034,13048,13056,13064,13072,13087,13095,13103,13123,13131,13151,13165,13179,13187,13195,13203],{"__ignoreMap":19},[84,12646,12647,12649,12651,12653,12655,12657],{"class":86,"line":87},[84,12648,8560],{"class":633},[84,12650,777],{"class":793},[84,12652,8565],{"class":90},[84,12654,847],{"class":633},[84,12656,8570],{"class":94},[84,12658,12659],{"class":633}," ?>\n",[84,12661,12662],{"class":86,"line":644},[84,12663,785],{"emptyLinePlaceholder":784},[84,12665,12666,12668,12670,12672,12674,12676],{"class":86,"line":800},[84,12667,1375],{"class":633},[84,12669,794],{"class":793},[84,12671,1659],{"class":90},[84,12673,847],{"class":633},[84,12675,12247],{"class":94},[84,12677,821],{"class":633},[84,12679,12680,12682,12684,12686,12688,12691],{"class":86,"line":812},[84,12681,3821],{"class":633},[84,12683,806],{"class":793},[84,12685,1659],{"class":90},[84,12687,847],{"class":633},[84,12689,12690],{"class":94},"\"left_front_wheel\"",[84,12692,821],{"class":633},[84,12694,12695,12697,12699],{"class":86,"line":824},[84,12696,1676],{"class":633},[84,12698,818],{"class":793},[84,12700,821],{"class":633},[84,12702,12703,12705,12707],{"class":86,"line":835},[84,12704,1696],{"class":633},[84,12706,830],{"class":793},[84,12708,821],{"class":633},[84,12710,12711,12713,12715,12717,12719,12721,12723,12725,12727],{"class":86,"line":856},[84,12712,1709],{"class":633},[84,12714,3607],{"class":793},[84,12716,6731],{"class":90},[84,12718,847],{"class":633},[84,12720,6736],{"class":94},[84,12722,5571],{"class":90},[84,12724,847],{"class":633},[84,12726,6728],{"class":94},[84,12728,853],{"class":633},[84,12730,12731,12733,12735],{"class":86,"line":866},[84,12732,1747],{"class":633},[84,12734,830],{"class":793},[84,12736,821],{"class":633},[84,12738,12739,12741,12743,12745,12747,12750,12752,12754,12756],{"class":86,"line":876},[84,12740,1696],{"class":633},[84,12742,3639],{"class":793},[84,12744,3944],{"class":90},[84,12746,847],{"class":633},[84,12748,12749],{"class":94},"\"1.57079635 0 0\"",[84,12751,3936],{"class":90},[84,12753,847],{"class":633},[84,12755,3941],{"class":94},[84,12757,853],{"class":633},[84,12759,12760,12762,12764,12766,12768,12770],{"class":86,"line":886},[84,12761,1696],{"class":633},[84,12763,3661],{"class":793},[84,12765,1659],{"class":90},[84,12767,847],{"class":633},[84,12769,12462],{"class":94},[84,12771,821],{"class":633},[84,12773,12774,12776,12778,12780,12782,12784],{"class":86,"line":1018},[84,12775,1709],{"class":633},[84,12777,3676],{"class":793},[84,12779,3841],{"class":90},[84,12781,847],{"class":633},[84,12783,12477],{"class":94},[84,12785,853],{"class":633},[84,12787,12788,12790,12792],{"class":86,"line":1023},[84,12789,1747],{"class":633},[84,12791,3661],{"class":793},[84,12793,821],{"class":633},[84,12795,12796,12798,12800],{"class":86,"line":1040},[84,12797,1756],{"class":633},[84,12799,818],{"class":793},[84,12801,821],{"class":633},[84,12803,12804,12806,12808],{"class":86,"line":1062},[84,12805,1765],{"class":633},[84,12807,806],{"class":793},[84,12809,821],{"class":633},[84,12811,12812,12814,12816,12818,12820,12823],{"class":86,"line":1082},[84,12813,3821],{"class":633},[84,12815,806],{"class":793},[84,12817,1659],{"class":90},[84,12819,847],{"class":633},[84,12821,12822],{"class":94},"\"left_back_wheel\"",[84,12824,821],{"class":633},[84,12826,12827,12829,12831],{"class":86,"line":1113},[84,12828,1676],{"class":633},[84,12830,818],{"class":793},[84,12832,821],{"class":633},[84,12834,12835,12837,12839],{"class":86,"line":1118},[84,12836,1696],{"class":633},[84,12838,830],{"class":793},[84,12840,821],{"class":633},[84,12842,12843,12845,12847,12849,12851,12853,12855,12857,12859],{"class":86,"line":1124},[84,12844,1709],{"class":633},[84,12846,3607],{"class":793},[84,12848,6731],{"class":90},[84,12850,847],{"class":633},[84,12852,6736],{"class":94},[84,12854,5571],{"class":90},[84,12856,847],{"class":633},[84,12858,6728],{"class":94},[84,12860,853],{"class":633},[84,12862,12863,12865,12867],{"class":86,"line":1129},[84,12864,1747],{"class":633},[84,12866,830],{"class":793},[84,12868,821],{"class":633},[84,12870,12871,12873,12875,12877,12879,12881,12883,12885,12887],{"class":86,"line":1135},[84,12872,1696],{"class":633},[84,12874,3639],{"class":793},[84,12876,3944],{"class":90},[84,12878,847],{"class":633},[84,12880,12749],{"class":94},[84,12882,3936],{"class":90},[84,12884,847],{"class":633},[84,12886,3941],{"class":94},[84,12888,853],{"class":633},[84,12890,12891,12893,12895,12897,12899,12901],{"class":86,"line":1157},[84,12892,1696],{"class":633},[84,12894,3661],{"class":793},[84,12896,1659],{"class":90},[84,12898,847],{"class":633},[84,12900,12462],{"class":94},[84,12902,821],{"class":633},[84,12904,12905,12907,12909,12911,12913,12915],{"class":86,"line":1168},[84,12906,1709],{"class":633},[84,12908,3676],{"class":793},[84,12910,3841],{"class":90},[84,12912,847],{"class":633},[84,12914,12477],{"class":94},[84,12916,853],{"class":633},[84,12918,12919,12921,12923],{"class":86,"line":1182},[84,12920,1747],{"class":633},[84,12922,3661],{"class":793},[84,12924,821],{"class":633},[84,12926,12927,12929,12931],{"class":86,"line":1194},[84,12928,1756],{"class":633},[84,12930,818],{"class":793},[84,12932,821],{"class":633},[84,12934,12935,12937,12939],{"class":86,"line":1211},[84,12936,1765],{"class":633},[84,12938,806],{"class":793},[84,12940,821],{"class":633},[84,12942,12943,12945,12947,12949,12951,12954],{"class":86,"line":1217},[84,12944,3821],{"class":633},[84,12946,806],{"class":793},[84,12948,1659],{"class":90},[84,12950,847],{"class":633},[84,12952,12953],{"class":94},"\"right_front_wheel\"",[84,12955,821],{"class":633},[84,12957,12958,12960,12962],{"class":86,"line":1222},[84,12959,1676],{"class":633},[84,12961,818],{"class":793},[84,12963,821],{"class":633},[84,12965,12966,12968,12970],{"class":86,"line":1228},[84,12967,1696],{"class":633},[84,12969,830],{"class":793},[84,12971,821],{"class":633},[84,12973,12974,12976,12978,12980,12982,12984,12986,12988,12990],{"class":86,"line":1238},[84,12975,1709],{"class":633},[84,12977,3607],{"class":793},[84,12979,6731],{"class":90},[84,12981,847],{"class":633},[84,12983,6736],{"class":94},[84,12985,5571],{"class":90},[84,12987,847],{"class":633},[84,12989,6728],{"class":94},[84,12991,853],{"class":633},[84,12993,12994,12996,12998],{"class":86,"line":1250},[84,12995,1747],{"class":633},[84,12997,830],{"class":793},[84,12999,821],{"class":633},[84,13001,13002,13004,13006,13008,13010,13012,13014,13016,13018],{"class":86,"line":1260},[84,13003,1696],{"class":633},[84,13005,3639],{"class":793},[84,13007,3944],{"class":90},[84,13009,847],{"class":633},[84,13011,12749],{"class":94},[84,13013,3936],{"class":90},[84,13015,847],{"class":633},[84,13017,3941],{"class":94},[84,13019,853],{"class":633},[84,13021,13022,13024,13026,13028,13030,13032],{"class":86,"line":1265},[84,13023,1696],{"class":633},[84,13025,3661],{"class":793},[84,13027,1659],{"class":90},[84,13029,847],{"class":633},[84,13031,12462],{"class":94},[84,13033,821],{"class":633},[84,13035,13036,13038,13040,13042,13044,13046],{"class":86,"line":1270},[84,13037,1709],{"class":633},[84,13039,3676],{"class":793},[84,13041,3841],{"class":90},[84,13043,847],{"class":633},[84,13045,12477],{"class":94},[84,13047,853],{"class":633},[84,13049,13050,13052,13054],{"class":86,"line":1276},[84,13051,1747],{"class":633},[84,13053,3661],{"class":793},[84,13055,821],{"class":633},[84,13057,13058,13060,13062],{"class":86,"line":1286},[84,13059,1756],{"class":633},[84,13061,818],{"class":793},[84,13063,821],{"class":633},[84,13065,13066,13068,13070],{"class":86,"line":1298},[84,13067,1765],{"class":633},[84,13069,806],{"class":793},[84,13071,821],{"class":633},[84,13073,13074,13076,13078,13080,13082,13085],{"class":86,"line":1308},[84,13075,3821],{"class":633},[84,13077,806],{"class":793},[84,13079,1659],{"class":90},[84,13081,847],{"class":633},[84,13083,13084],{"class":94},"\"right_back_wheel\"",[84,13086,821],{"class":633},[84,13088,13089,13091,13093],{"class":86,"line":1313},[84,13090,1676],{"class":633},[84,13092,818],{"class":793},[84,13094,821],{"class":633},[84,13096,13097,13099,13101],{"class":86,"line":1319},[84,13098,1696],{"class":633},[84,13100,830],{"class":793},[84,13102,821],{"class":633},[84,13104,13105,13107,13109,13111,13113,13115,13117,13119,13121],{"class":86,"line":1324},[84,13106,1709],{"class":633},[84,13108,3607],{"class":793},[84,13110,6731],{"class":90},[84,13112,847],{"class":633},[84,13114,6736],{"class":94},[84,13116,5571],{"class":90},[84,13118,847],{"class":633},[84,13120,6728],{"class":94},[84,13122,853],{"class":633},[84,13124,13125,13127,13129],{"class":86,"line":1333},[84,13126,1747],{"class":633},[84,13128,830],{"class":793},[84,13130,821],{"class":633},[84,13132,13133,13135,13137,13139,13141,13143,13145,13147,13149],{"class":86,"line":1339},[84,13134,1696],{"class":633},[84,13136,3639],{"class":793},[84,13138,3944],{"class":90},[84,13140,847],{"class":633},[84,13142,12749],{"class":94},[84,13144,3936],{"class":90},[84,13146,847],{"class":633},[84,13148,3941],{"class":94},[84,13150,853],{"class":633},[84,13152,13153,13155,13157,13159,13161,13163],{"class":86,"line":1345},[84,13154,1696],{"class":633},[84,13156,3661],{"class":793},[84,13158,1659],{"class":90},[84,13160,847],{"class":633},[84,13162,12462],{"class":94},[84,13164,821],{"class":633},[84,13166,13167,13169,13171,13173,13175,13177],{"class":86,"line":1351},[84,13168,1709],{"class":633},[84,13170,3676],{"class":793},[84,13172,3841],{"class":90},[84,13174,847],{"class":633},[84,13176,12477],{"class":94},[84,13178,853],{"class":633},[84,13180,13181,13183,13185],{"class":86,"line":1357},[84,13182,1747],{"class":633},[84,13184,3661],{"class":793},[84,13186,821],{"class":633},[84,13188,13189,13191,13193],{"class":86,"line":2242},[84,13190,1756],{"class":633},[84,13192,818],{"class":793},[84,13194,821],{"class":633},[84,13196,13197,13199,13201],{"class":86,"line":2247},[84,13198,1765],{"class":633},[84,13200,806],{"class":793},[84,13202,821],{"class":633},[84,13204,13205,13207,13209],{"class":86,"line":2257},[84,13206,3989],{"class":633},[84,13208,794],{"class":793},[84,13210,821],{"class":633},[14,13212,13213],{},"显然的，通过xacro我们方便的实现了代码复用。",[14,13215,13216],{},[17,13217],{"alt":19,"src":13218},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1610.webp",[3547,13220,13221],{"id":13221},"语法",[76,13223,13228],{"className":13224,"code":13226,"language":13227},[13225],"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",[71,13229,13226],{"__ignoreMap":19},[14,13231,13232],{},"机器人由多部件组成，不同部件可能封装为单独的 xacro 文件，最后再将不同的文件集成，组合为完整机器人，可以使用文件包含实现。",[14,13234,13235],{},"语法格式：",[76,13237,13239],{"className":775,"code":13238,"language":777,"meta":19,"style":19},"\u003Cxacro:include filename=\"其他xacro文件\" \u002F>\n",[71,13240,13241],{"__ignoreMap":19},[84,13242,13243,13245,13248,13251,13253,13256],{"class":86,"line":87},[84,13244,1375],{"class":633},[84,13246,13247],{"class":793},"xacro:include",[84,13249,13250],{"class":90}," filename",[84,13252,847],{"class":633},[84,13254,13255],{"class":94},"\"其他xacro文件\"",[84,13257,3849],{"class":633},[14,13259,13260],{},"示例：",[76,13262,13264],{"className":775,"code":13263,"language":777,"meta":19,"style":19},"\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",[71,13265,13266,13287,13302,13317,13332],{"__ignoreMap":19},[84,13267,13268,13270,13272,13274,13276,13279,13281,13283,13285],{"class":86,"line":87},[84,13269,1375],{"class":633},[84,13271,794],{"class":793},[84,13273,1659],{"class":90},[84,13275,847],{"class":633},[84,13277,13278],{"class":94},"\"car\"",[84,13280,12250],{"class":90},[84,13282,847],{"class":633},[84,13284,12255],{"class":94},[84,13286,821],{"class":633},[84,13288,13289,13291,13293,13295,13297,13300],{"class":86,"line":644},[84,13290,1696],{"class":633},[84,13292,13247],{"class":793},[84,13294,13250],{"class":90},[84,13296,847],{"class":633},[84,13298,13299],{"class":94},"\"car_base.xacro\"",[84,13301,3849],{"class":633},[84,13303,13304,13306,13308,13310,13312,13315],{"class":86,"line":800},[84,13305,1696],{"class":633},[84,13307,13247],{"class":793},[84,13309,13250],{"class":90},[84,13311,847],{"class":633},[84,13313,13314],{"class":94},"\"car_camera.xacro\"",[84,13316,3849],{"class":633},[84,13318,13319,13321,13323,13325,13327,13330],{"class":86,"line":812},[84,13320,1696],{"class":633},[84,13322,13247],{"class":793},[84,13324,13250],{"class":90},[84,13326,847],{"class":633},[84,13328,13329],{"class":94},"\"car_laser.xacro\"",[84,13331,3849],{"class":633},[84,13333,13334,13336,13338],{"class":86,"line":824},[84,13335,3989],{"class":633},[84,13337,794],{"class":793},[84,13339,821],{"class":633},[76,13341,13343],{"className":775,"code":13342,"language":777,"meta":19,"style":19},"\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",[71,13344,13345,13367,13382,13397],{"__ignoreMap":19},[84,13346,13347,13349,13351,13353,13355,13358,13360,13362,13365],{"class":86,"line":87},[84,13348,1375],{"class":633},[84,13350,794],{"class":793},[84,13352,12250],{"class":90},[84,13354,847],{"class":633},[84,13356,13357],{"class":94},"\"http:\u002F\u002Fwww.ros.org\u002Fwiki\u002Fxacro\"",[84,13359,1659],{"class":90},[84,13361,847],{"class":633},[84,13363,13364],{"class":94},"\"demo4_include\"",[84,13366,821],{"class":633},[84,13368,13369,13371,13373,13375,13377,13380],{"class":86,"line":644},[84,13370,1676],{"class":633},[84,13372,13247],{"class":793},[84,13374,13250],{"class":90},[84,13376,847],{"class":633},[84,13378,13379],{"class":94},"\"demo02_base_pro.urdf.xacro\"",[84,13381,853],{"class":633},[84,13383,13384,13386,13388,13390,13392,13395],{"class":86,"line":800},[84,13385,1676],{"class":633},[84,13387,13247],{"class":793},[84,13389,13250],{"class":90},[84,13391,847],{"class":633},[84,13393,13394],{"class":94},"\"demo03_base_func.urdf.xacro\"",[84,13396,853],{"class":633},[84,13398,13399,13401,13403],{"class":86,"line":812},[84,13400,3989],{"class":633},[84,13402,794],{"class":793},[84,13404,821],{"class":633},[14,13406,13407],{},[17,13408],{"alt":19,"src":13409},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1614.webp",[14,13411,13412],{},[4641,13413,13414],{},"但不建议这样，建议父级xacro和子级xacro使用同样的name。",[653,13416,4765],{"id":13417},"练习-2",[3547,13419,13420],{"id":13420},"框架",[14,13422,12216],{},[14,13424,13425,13426,13428],{},"使用xacro创建一个四轮机器人模型，该模型底盘可以参考 ",[105,13427,12222],{}," 中的实现，并且在底盘之上添加了相机与激光雷达。相机与激光雷达的尺寸参数、安装位置可自定义。",[14,13430,13431],{},[17,13432],{"alt":19,"src":13433},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1615.webp",[14,13435,13436],{},"2.实现分析",[14,13438,13439],{},"需求中的机器人模型是由底盘、摄像头和雷达三部分组成的，那么可以将每一部分都封装进一个xacro文件，最后再通过xacro文件包含组织成一个完整的机器人模型。",[14,13441,13442],{},"3.实现",[14,13444,13445],{},"功能包cpp06_urdf的urdf\u002Fxacro目录下，新建多个xacro文件，分别为：",[163,13447,13448,13451,13454,13457],{},[142,13449,13450],{},"car.urdf.xacro：用于包含不同机器人部件对应的xacro文件；",[142,13452,13453],{},"car_base.urdf.xacro：描述机器人底盘的xacro文件；",[142,13455,13456],{},"car_camera.urdf.xacro：描述摄像头的xacro文件；",[142,13458,13459],{},"car_laser.urdf.xacro：描述雷达的xacro文件。",[14,13461,13462],{},"编辑car.urdf.xacro文件，输入如下内容：",[76,13464,13466],{"className":775,"code":13465,"language":777,"meta":19,"style":19},"\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",[71,13467,13468,13488,13503,13518,13533],{"__ignoreMap":19},[84,13469,13470,13472,13474,13476,13478,13480,13482,13484,13486],{"class":86,"line":87},[84,13471,1375],{"class":633},[84,13473,794],{"class":793},[84,13475,1659],{"class":90},[84,13477,847],{"class":633},[84,13479,13278],{"class":94},[84,13481,12250],{"class":90},[84,13483,847],{"class":633},[84,13485,12255],{"class":94},[84,13487,821],{"class":633},[84,13489,13490,13492,13494,13496,13498,13501],{"class":86,"line":644},[84,13491,1676],{"class":633},[84,13493,13247],{"class":793},[84,13495,13250],{"class":90},[84,13497,847],{"class":633},[84,13499,13500],{"class":94},"\"car_base.urdf.xacro\"",[84,13502,853],{"class":633},[84,13504,13505,13507,13509,13511,13513,13516],{"class":86,"line":800},[84,13506,1676],{"class":633},[84,13508,13247],{"class":793},[84,13510,13250],{"class":90},[84,13512,847],{"class":633},[84,13514,13515],{"class":94},"\"car_camera.urdf.xacro\"",[84,13517,853],{"class":633},[84,13519,13520,13522,13524,13526,13528,13531],{"class":86,"line":812},[84,13521,1676],{"class":633},[84,13523,13247],{"class":793},[84,13525,13250],{"class":90},[84,13527,847],{"class":633},[84,13529,13530],{"class":94},"\"car_laser.urdf.xacro\"",[84,13532,853],{"class":633},[84,13534,13535,13537,13539],{"class":86,"line":824},[84,13536,3989],{"class":633},[84,13538,794],{"class":793},[84,13540,821],{"class":633},[3547,13542,13543],{"id":13543},"车体",[14,13545,13546],{},"编辑car_base.urdf.xacro文件，输入如下内容：",[76,13548,13550],{"className":775,"code":13549,"language":777,"meta":19,"style":19},"\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",[71,13551,13552,13566,13570,13591,13595,13617,13639,13661,13665,13687,13691,13711,13731,13735,13749,13763,13771,13785,13799,13807,13821,13836,13844,13848,13862,13870,13878,13892,13900,13908,13916,13920,13934,13942,13946,13954,13969,13977,13997,14011,14019,14027,14047,14061,14075,14090,14098,14102,14123,14137,14145,14153,14173,14181,14201,14215,14223,14231,14252,14267,14281,14302,14316,14324,14332,14336,14364,14391,14417,14443],{"__ignoreMap":19},[84,13553,13554,13556,13558,13560,13562,13564],{"class":86,"line":87},[84,13555,1375],{"class":633},[84,13557,794],{"class":793},[84,13559,12250],{"class":90},[84,13561,847],{"class":633},[84,13563,12255],{"class":94},[84,13565,821],{"class":633},[84,13567,13568],{"class":86,"line":644},[84,13569,785],{"emptyLinePlaceholder":784},[84,13571,13572,13574,13576,13578,13580,13582,13584,13586,13589],{"class":86,"line":800},[84,13573,1676],{"class":633},[84,13575,12268],{"class":793},[84,13577,1659],{"class":90},[84,13579,847],{"class":633},[84,13581,12318],{"class":94},[84,13583,12278],{"class":90},[84,13585,847],{"class":633},[84,13587,13588],{"class":94},"\"3.1416\"",[84,13590,853],{"class":633},[84,13592,13593],{"class":86,"line":812},[84,13594,785],{"emptyLinePlaceholder":784},[84,13596,13597,13599,13601,13603,13605,13608,13610,13612,13615],{"class":86,"line":824},[84,13598,1676],{"class":633},[84,13600,12268],{"class":793},[84,13602,1659],{"class":90},[84,13604,847],{"class":633},[84,13606,13607],{"class":94},"\"base_link_x\"",[84,13609,12278],{"class":90},[84,13611,847],{"class":633},[84,13613,13614],{"class":94},"\"0.2\"",[84,13616,853],{"class":633},[84,13618,13619,13621,13623,13625,13627,13630,13632,13634,13637],{"class":86,"line":835},[84,13620,1676],{"class":633},[84,13622,12268],{"class":793},[84,13624,1659],{"class":90},[84,13626,847],{"class":633},[84,13628,13629],{"class":94},"\"base_link_y\"",[84,13631,12278],{"class":90},[84,13633,847],{"class":633},[84,13635,13636],{"class":94},"\"0.12\"",[84,13638,853],{"class":633},[84,13640,13641,13643,13645,13647,13649,13652,13654,13656,13659],{"class":86,"line":856},[84,13642,1676],{"class":633},[84,13644,12268],{"class":793},[84,13646,1659],{"class":90},[84,13648,847],{"class":633},[84,13650,13651],{"class":94},"\"base_link_z\"",[84,13653,12278],{"class":90},[84,13655,847],{"class":633},[84,13657,13658],{"class":94},"\"0.07\"",[84,13660,853],{"class":633},[84,13662,13663],{"class":86,"line":866},[84,13664,785],{"emptyLinePlaceholder":784},[84,13666,13667,13669,13671,13673,13675,13678,13680,13682,13685],{"class":86,"line":876},[84,13668,1676],{"class":633},[84,13670,12268],{"class":793},[84,13672,1659],{"class":90},[84,13674,847],{"class":633},[84,13676,13677],{"class":94},"\"distance\"",[84,13679,12278],{"class":90},[84,13681,847],{"class":633},[84,13683,13684],{"class":94},"\"0.015\"",[84,13686,853],{"class":633},[84,13688,13689],{"class":86,"line":886},[84,13690,785],{"emptyLinePlaceholder":784},[84,13692,13693,13695,13697,13699,13701,13703,13705,13707,13709],{"class":86,"line":1018},[84,13694,1676],{"class":633},[84,13696,12268],{"class":793},[84,13698,1659],{"class":90},[84,13700,847],{"class":633},[84,13702,12275],{"class":94},[84,13704,12278],{"class":90},[84,13706,847],{"class":633},[84,13708,6728],{"class":94},[84,13710,853],{"class":633},[84,13712,13713,13715,13717,13719,13721,13723,13725,13727,13729],{"class":86,"line":1023},[84,13714,1676],{"class":633},[84,13716,12268],{"class":793},[84,13718,1659],{"class":90},[84,13720,847],{"class":633},[84,13722,12297],{"class":94},[84,13724,12278],{"class":90},[84,13726,847],{"class":633},[84,13728,6736],{"class":94},[84,13730,853],{"class":633},[84,13732,13733],{"class":86,"line":1040},[84,13734,785],{"emptyLinePlaceholder":784},[84,13736,13737,13739,13741,13743,13745,13747],{"class":86,"line":1062},[84,13738,1676],{"class":633},[84,13740,3661],{"class":793},[84,13742,1659],{"class":90},[84,13744,847],{"class":633},[84,13746,3830],{"class":94},[84,13748,821],{"class":633},[84,13750,13751,13753,13755,13757,13759,13761],{"class":86,"line":1082},[84,13752,1709],{"class":633},[84,13754,3676],{"class":793},[84,13756,3841],{"class":90},[84,13758,847],{"class":633},[84,13760,3846],{"class":94},[84,13762,3849],{"class":633},[84,13764,13765,13767,13769],{"class":86,"line":1113},[84,13766,1756],{"class":633},[84,13768,3661],{"class":793},[84,13770,821],{"class":633},[84,13772,13773,13775,13777,13779,13781,13783],{"class":86,"line":1118},[84,13774,1676],{"class":633},[84,13776,3661],{"class":793},[84,13778,1659],{"class":90},[84,13780,847],{"class":633},[84,13782,5097],{"class":94},[84,13784,821],{"class":633},[84,13786,13787,13789,13791,13793,13795,13797],{"class":86,"line":1124},[84,13788,1709],{"class":633},[84,13790,3676],{"class":793},[84,13792,3841],{"class":90},[84,13794,847],{"class":633},[84,13796,5112],{"class":94},[84,13798,3849],{"class":633},[84,13800,13801,13803,13805],{"class":86,"line":1129},[84,13802,1756],{"class":633},[84,13804,3661],{"class":793},[84,13806,821],{"class":633},[84,13808,13809,13811,13813,13815,13817,13819],{"class":86,"line":1135},[84,13810,1676],{"class":633},[84,13812,3661],{"class":793},[84,13814,1659],{"class":90},[84,13816,847],{"class":633},[84,13818,6398],{"class":94},[84,13820,821],{"class":633},[84,13822,13823,13825,13827,13829,13831,13834],{"class":86,"line":1157},[84,13824,1709],{"class":633},[84,13826,3676],{"class":793},[84,13828,3841],{"class":90},[84,13830,847],{"class":633},[84,13832,13833],{"class":94},"\"0.2 0.2 0.2 0.95\"",[84,13835,3849],{"class":633},[84,13837,13838,13840,13842],{"class":86,"line":1168},[84,13839,1747],{"class":633},[84,13841,3661],{"class":793},[84,13843,821],{"class":633},[84,13845,13846],{"class":86,"line":1182},[84,13847,785],{"emptyLinePlaceholder":784},[84,13849,13850,13852,13854,13856,13858,13860],{"class":86,"line":1194},[84,13851,1676],{"class":633},[84,13853,806],{"class":793},[84,13855,1659],{"class":90},[84,13857,847],{"class":633},[84,13859,5544],{"class":94},[84,13861,821],{"class":633},[84,13863,13864,13866,13868],{"class":86,"line":1211},[84,13865,1709],{"class":633},[84,13867,818],{"class":793},[84,13869,821],{"class":633},[84,13871,13872,13874,13876],{"class":86,"line":1217},[84,13873,3900],{"class":633},[84,13875,830],{"class":793},[84,13877,821],{"class":633},[84,13879,13880,13882,13884,13886,13888,13890],{"class":86,"line":1222},[84,13881,12384],{"class":633},[84,13883,3615],{"class":793},[84,13885,5571],{"class":90},[84,13887,847],{"class":633},[84,13889,5576],{"class":94},[84,13891,853],{"class":633},[84,13893,13894,13896,13898],{"class":86,"line":1228},[84,13895,12492],{"class":633},[84,13897,830],{"class":793},[84,13899,821],{"class":633},[84,13901,13902,13904,13906],{"class":86,"line":1238},[84,13903,1738],{"class":633},[84,13905,818],{"class":793},[84,13907,821],{"class":633},[84,13909,13910,13912,13914],{"class":86,"line":1250},[84,13911,1756],{"class":633},[84,13913,806],{"class":793},[84,13915,821],{"class":633},[84,13917,13918],{"class":86,"line":1260},[84,13919,785],{"emptyLinePlaceholder":784},[84,13921,13922,13924,13926,13928,13930,13932],{"class":86,"line":1265},[84,13923,1676],{"class":633},[84,13925,806],{"class":793},[84,13927,1659],{"class":90},[84,13929,847],{"class":633},[84,13931,1685],{"class":94},[84,13933,821],{"class":633},[84,13935,13936,13938,13940],{"class":86,"line":1270},[84,13937,1709],{"class":633},[84,13939,818],{"class":793},[84,13941,821],{"class":633},[84,13943,13944],{"class":86,"line":1276},[84,13945,785],{"emptyLinePlaceholder":784},[84,13947,13948,13950,13952],{"class":86,"line":1286},[84,13949,3900],{"class":633},[84,13951,830],{"class":793},[84,13953,821],{"class":633},[84,13955,13956,13958,13960,13962,13964,13967],{"class":86,"line":1298},[84,13957,12384],{"class":633},[84,13959,841],{"class":793},[84,13961,844],{"class":90},[84,13963,847],{"class":633},[84,13965,13966],{"class":94},"\"${base_link_x} ${base_link_y} ${base_link_z}\"",[84,13968,3849],{"class":633},[84,13970,13971,13973,13975],{"class":86,"line":1308},[84,13972,12492],{"class":633},[84,13974,830],{"class":793},[84,13976,821],{"class":633},[84,13978,13979,13981,13983,13985,13987,13989,13991,13993,13995],{"class":86,"line":1313},[84,13980,3900],{"class":633},[84,13982,3639],{"class":793},[84,13984,3936],{"class":90},[84,13986,847],{"class":633},[84,13988,3941],{"class":94},[84,13990,3944],{"class":90},[84,13992,847],{"class":633},[84,13994,3941],{"class":94},[84,13996,3849],{"class":633},[84,13998,13999,14001,14003,14005,14007,14009],{"class":86,"line":1319},[84,14000,3900],{"class":633},[84,14002,3661],{"class":793},[84,14004,1659],{"class":90},[84,14006,847],{"class":633},[84,14008,3830],{"class":94},[84,14010,853],{"class":633},[84,14012,14013,14015,14017],{"class":86,"line":1324},[84,14014,1738],{"class":633},[84,14016,818],{"class":793},[84,14018,821],{"class":633},[84,14020,14021,14023,14025],{"class":86,"line":1333},[84,14022,1756],{"class":633},[84,14024,806],{"class":793},[84,14026,821],{"class":633},[84,14028,14029,14031,14033,14035,14037,14039,14041,14043,14045],{"class":86,"line":1339},[84,14030,1676],{"class":633},[84,14032,4650],{"class":793},[84,14034,1659],{"class":90},[84,14036,847],{"class":633},[84,14038,5620],{"class":94},[84,14040,5356],{"class":90},[84,14042,847],{"class":633},[84,14044,5627],{"class":94},[84,14046,821],{"class":633},[84,14048,14049,14051,14053,14055,14057,14059],{"class":86,"line":1345},[84,14050,1709],{"class":633},[84,14052,4497],{"class":793},[84,14054,5372],{"class":90},[84,14056,847],{"class":633},[84,14058,5544],{"class":94},[84,14060,853],{"class":633},[84,14062,14063,14065,14067,14069,14071,14073],{"class":86,"line":1351},[84,14064,1709],{"class":633},[84,14066,4512],{"class":793},[84,14068,5372],{"class":90},[84,14070,847],{"class":633},[84,14072,1685],{"class":94},[84,14074,853],{"class":633},[84,14076,14077,14079,14081,14083,14085,14088],{"class":86,"line":1357},[84,14078,1709],{"class":633},[84,14080,3639],{"class":793},[84,14082,3936],{"class":90},[84,14084,847],{"class":633},[84,14086,14087],{"class":94},"\"0.0 0.0 ${distance + base_link_z \u002F 2}\"",[84,14089,853],{"class":633},[84,14091,14092,14094,14096],{"class":86,"line":2242},[84,14093,1756],{"class":633},[84,14095,4650],{"class":793},[84,14097,821],{"class":633},[84,14099,14100],{"class":86,"line":2247},[84,14101,785],{"emptyLinePlaceholder":784},[84,14103,14104,14106,14108,14110,14112,14114,14116,14118,14121],{"class":86,"line":2257},[84,14105,1676],{"class":633},[84,14107,12338],{"class":793},[84,14109,1659],{"class":90},[84,14111,847],{"class":633},[84,14113,12345],{"class":94},[84,14115,12348],{"class":90},[84,14117,847],{"class":633},[84,14119,14120],{"class":94},"\"wheel_name is_front is_left\"",[84,14122,12356],{"class":633},[84,14124,14125,14127,14129,14131,14133,14135],{"class":86,"line":2268},[84,14126,1709],{"class":633},[84,14128,806],{"class":793},[84,14130,1659],{"class":90},[84,14132,847],{"class":633},[84,14134,12369],{"class":94},[84,14136,821],{"class":633},[84,14138,14139,14141,14143],{"class":86,"line":2277},[84,14140,3900],{"class":633},[84,14142,818],{"class":793},[84,14144,821],{"class":633},[84,14146,14147,14149,14151],{"class":86,"line":2282},[84,14148,12384],{"class":633},[84,14150,830],{"class":793},[84,14152,821],{"class":633},[84,14154,14155,14157,14159,14161,14163,14165,14167,14169,14171],{"class":86,"line":2287},[84,14156,12393],{"class":633},[84,14158,3607],{"class":793},[84,14160,5571],{"class":90},[84,14162,847],{"class":633},[84,14164,12402],{"class":94},[84,14166,6731],{"class":90},[84,14168,847],{"class":633},[84,14170,12409],{"class":94},[84,14172,3849],{"class":633},[84,14174,14175,14177,14179],{"class":86,"line":2296},[84,14176,12416],{"class":633},[84,14178,830],{"class":793},[84,14180,821],{"class":633},[84,14182,14183,14185,14187,14189,14191,14193,14195,14197,14199],{"class":86,"line":2904},[84,14184,12384],{"class":633},[84,14186,3639],{"class":793},[84,14188,3936],{"class":90},[84,14190,847],{"class":633},[84,14192,3941],{"class":94},[84,14194,3944],{"class":90},[84,14196,847],{"class":633},[84,14198,12443],{"class":94},[84,14200,3849],{"class":633},[84,14202,14203,14205,14207,14209,14211,14213],{"class":86,"line":2915},[84,14204,12384],{"class":633},[84,14206,3661],{"class":793},[84,14208,1659],{"class":90},[84,14210,847],{"class":633},[84,14212,6398],{"class":94},[84,14214,853],{"class":633},[84,14216,14217,14219,14221],{"class":86,"line":2943},[84,14218,12492],{"class":633},[84,14220,818],{"class":793},[84,14222,821],{"class":633},[84,14224,14225,14227,14229],{"class":86,"line":2948},[84,14226,1738],{"class":633},[84,14228,806],{"class":793},[84,14230,821],{"class":633},[84,14232,14233,14235,14237,14239,14241,14244,14246,14248,14250],{"class":86,"line":2953},[84,14234,1709],{"class":633},[84,14236,4650],{"class":793},[84,14238,1659],{"class":90},[84,14240,847],{"class":633},[84,14242,14243],{"class":94},"\"${wheel_name}2baselink\"",[84,14245,5356],{"class":90},[84,14247,847],{"class":633},[84,14249,5361],{"class":94},[84,14251,821],{"class":633},[84,14253,14254,14256,14258,14260,14262,14264],{"class":86,"line":2962},[84,14255,3900],{"class":633},[84,14257,4497],{"class":793},[84,14259,5372],{"class":90},[84,14261,847],{"class":633},[84,14263,1685],{"class":94},[84,14265,14266],{"class":633},"  \u002F>\n",[84,14268,14269,14271,14273,14275,14277,14279],{"class":86,"line":3352},[84,14270,3900],{"class":633},[84,14272,4512],{"class":793},[84,14274,5372],{"class":90},[84,14276,847],{"class":633},[84,14278,12369],{"class":94},[84,14280,3849],{"class":633},[84,14282,14283,14285,14287,14289,14291,14294,14296,14298,14300],{"class":86,"line":3358},[84,14284,3900],{"class":633},[84,14286,3639],{"class":793},[84,14288,3936],{"class":90},[84,14290,847],{"class":633},[84,14292,14293],{"class":94},"\"${(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}\"",[84,14295,3944],{"class":90},[84,14297,847],{"class":633},[84,14299,3941],{"class":94},[84,14301,3849],{"class":633},[84,14303,14304,14306,14308,14310,14312,14314],{"class":86,"line":3363},[84,14305,3900],{"class":633},[84,14307,5424],{"class":793},[84,14309,3936],{"class":90},[84,14311,847],{"class":633},[84,14313,6888],{"class":94},[84,14315,3849],{"class":633},[84,14317,14318,14320,14322],{"class":86,"line":3369},[84,14319,1738],{"class":633},[84,14321,4650],{"class":793},[84,14323,821],{"class":633},[84,14325,14326,14328,14330],{"class":86,"line":3374},[84,14327,1756],{"class":633},[84,14329,12338],{"class":793},[84,14331,821],{"class":633},[84,14333,14334],{"class":86,"line":3380},[84,14335,785],{"emptyLinePlaceholder":784},[84,14337,14338,14340,14342,14344,14346,14348,14351,14353,14355,14358,14360,14362],{"class":86,"line":3389},[84,14339,1676],{"class":633},[84,14341,12519],{"class":793},[84,14343,12522],{"class":90},[84,14345,847],{"class":633},[84,14347,12527],{"class":94},[84,14349,14350],{"class":90}," is_front",[84,14352,847],{"class":633},[84,14354,10301],{"class":94},[84,14356,14357],{"class":90}," is_left",[84,14359,847],{"class":633},[84,14361,10301],{"class":94},[84,14363,3849],{"class":633},[84,14365,14366,14368,14370,14372,14374,14376,14378,14380,14383,14385,14387,14389],{"class":86,"line":3401},[84,14367,1676],{"class":633},[84,14369,12519],{"class":793},[84,14371,12522],{"class":90},[84,14373,847],{"class":633},[84,14375,12542],{"class":94},[84,14377,14350],{"class":90},[84,14379,847],{"class":633},[84,14381,14382],{"class":94},"\"-1\"",[84,14384,14357],{"class":90},[84,14386,847],{"class":633},[84,14388,10301],{"class":94},[84,14390,3849],{"class":633},[84,14392,14393,14395,14397,14399,14401,14403,14405,14407,14409,14411,14413,14415],{"class":86,"line":3411},[84,14394,1676],{"class":633},[84,14396,12519],{"class":793},[84,14398,12522],{"class":90},[84,14400,847],{"class":633},[84,14402,12557],{"class":94},[84,14404,14350],{"class":90},[84,14406,847],{"class":633},[84,14408,10301],{"class":94},[84,14410,14357],{"class":90},[84,14412,847],{"class":633},[84,14414,14382],{"class":94},[84,14416,3849],{"class":633},[84,14418,14419,14421,14423,14425,14427,14429,14431,14433,14435,14437,14439,14441],{"class":86,"line":3416},[84,14420,1676],{"class":633},[84,14422,12519],{"class":793},[84,14424,12522],{"class":90},[84,14426,847],{"class":633},[84,14428,12572],{"class":94},[84,14430,14350],{"class":90},[84,14432,847],{"class":633},[84,14434,14382],{"class":94},[84,14436,14357],{"class":90},[84,14438,847],{"class":633},[84,14440,14382],{"class":94},[84,14442,3849],{"class":633},[84,14444,14445,14447,14449],{"class":86,"line":3421},[84,14446,3989],{"class":633},[84,14448,794],{"class":793},[84,14450,821],{"class":633},[3547,14452,14453],{"id":14453},"添加摄像头",[14,14455,14456],{},"编辑car_camera.urdf.xacro文件，输入如下内容：",[76,14458,14460],{"className":775,"code":14459,"language":777,"meta":19,"style":19},"\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",[71,14461,14462,14466,14480,14484,14507,14529,14551,14573,14595,14617,14621,14635,14643,14651,14666,14674,14695,14709,14717,14725,14729,14749,14763,14777,14792,14800],{"__ignoreMap":19},[84,14463,14464],{"class":86,"line":87},[84,14465,785],{"emptyLinePlaceholder":784},[84,14467,14468,14470,14472,14474,14476,14478],{"class":86,"line":644},[84,14469,1375],{"class":633},[84,14471,794],{"class":793},[84,14473,12250],{"class":90},[84,14475,847],{"class":633},[84,14477,12255],{"class":94},[84,14479,821],{"class":633},[84,14481,14482],{"class":86,"line":800},[84,14483,785],{"emptyLinePlaceholder":784},[84,14485,14486,14488,14490,14492,14494,14497,14499,14501,14504],{"class":86,"line":812},[84,14487,1676],{"class":633},[84,14489,12268],{"class":793},[84,14491,1659],{"class":90},[84,14493,847],{"class":633},[84,14495,14496],{"class":94},"\"camera_x\"",[84,14498,12278],{"class":90},[84,14500,847],{"class":633},[84,14502,14503],{"class":94},"\"0.012\"",[84,14505,14506],{"class":633}," \u002F> \n",[84,14508,14509,14511,14513,14515,14517,14520,14522,14524,14527],{"class":86,"line":824},[84,14510,1676],{"class":633},[84,14512,12268],{"class":793},[84,14514,1659],{"class":90},[84,14516,847],{"class":633},[84,14518,14519],{"class":94},"\"camera_y\"",[84,14521,12278],{"class":90},[84,14523,847],{"class":633},[84,14525,14526],{"class":94},"\"0.05\"",[84,14528,14506],{"class":633},[84,14530,14531,14533,14535,14537,14539,14542,14544,14546,14549],{"class":86,"line":835},[84,14532,1676],{"class":633},[84,14534,12268],{"class":793},[84,14536,1659],{"class":90},[84,14538,847],{"class":633},[84,14540,14541],{"class":94},"\"camera_z\"",[84,14543,12278],{"class":90},[84,14545,847],{"class":633},[84,14547,14548],{"class":94},"\"0.01\"",[84,14550,14506],{"class":633},[84,14552,14553,14555,14557,14559,14561,14564,14566,14568,14571],{"class":86,"line":856},[84,14554,1676],{"class":633},[84,14556,12268],{"class":793},[84,14558,1659],{"class":90},[84,14560,847],{"class":633},[84,14562,14563],{"class":94},"\"camera_joint_x\"",[84,14565,12278],{"class":90},[84,14567,847],{"class":633},[84,14569,14570],{"class":94},"\"${base_link_x \u002F 2 - camera_x \u002F 2}\"",[84,14572,14506],{"class":633},[84,14574,14575,14577,14579,14581,14583,14586,14588,14590,14593],{"class":86,"line":866},[84,14576,1676],{"class":633},[84,14578,12268],{"class":793},[84,14580,1659],{"class":90},[84,14582,847],{"class":633},[84,14584,14585],{"class":94},"\"camera_joint_y\"",[84,14587,12278],{"class":90},[84,14589,847],{"class":633},[84,14591,14592],{"class":94},"\"0.0\"",[84,14594,14506],{"class":633},[84,14596,14597,14599,14601,14603,14605,14608,14610,14612,14615],{"class":86,"line":876},[84,14598,1676],{"class":633},[84,14600,12268],{"class":793},[84,14602,1659],{"class":90},[84,14604,847],{"class":633},[84,14606,14607],{"class":94},"\"camera_joint_z\"",[84,14609,12278],{"class":90},[84,14611,847],{"class":633},[84,14613,14614],{"class":94},"\"${base_link_z \u002F 2 + camera_z \u002F 2}\"",[84,14616,14506],{"class":633},[84,14618,14619],{"class":86,"line":886},[84,14620,785],{"emptyLinePlaceholder":784},[84,14622,14623,14625,14627,14629,14631,14633],{"class":86,"line":1018},[84,14624,1676],{"class":633},[84,14626,806],{"class":793},[84,14628,1659],{"class":90},[84,14630,847],{"class":633},[84,14632,5245],{"class":94},[84,14634,821],{"class":633},[84,14636,14637,14639,14641],{"class":86,"line":1023},[84,14638,1709],{"class":633},[84,14640,818],{"class":793},[84,14642,821],{"class":633},[84,14644,14645,14647,14649],{"class":86,"line":1040},[84,14646,3900],{"class":633},[84,14648,830],{"class":793},[84,14650,821],{"class":633},[84,14652,14653,14655,14657,14659,14661,14664],{"class":86,"line":1062},[84,14654,12384],{"class":633},[84,14656,841],{"class":793},[84,14658,844],{"class":90},[84,14660,847],{"class":633},[84,14662,14663],{"class":94},"\"${camera_x} ${camera_y} ${camera_z}\"",[84,14665,3849],{"class":633},[84,14667,14668,14670,14672],{"class":86,"line":1082},[84,14669,12492],{"class":633},[84,14671,830],{"class":793},[84,14673,821],{"class":633},[84,14675,14676,14678,14680,14682,14684,14687,14689,14691,14693],{"class":86,"line":1113},[84,14677,3900],{"class":633},[84,14679,3639],{"class":793},[84,14681,3936],{"class":90},[84,14683,847],{"class":633},[84,14685,14686],{"class":94},"\"0.0 0.0 0.0\"",[84,14688,3944],{"class":90},[84,14690,847],{"class":633},[84,14692,14686],{"class":94},[84,14694,3849],{"class":633},[84,14696,14697,14699,14701,14703,14705,14707],{"class":86,"line":1118},[84,14698,3900],{"class":633},[84,14700,3661],{"class":793},[84,14702,1659],{"class":90},[84,14704,847],{"class":633},[84,14706,5097],{"class":94},[84,14708,3849],{"class":633},[84,14710,14711,14713,14715],{"class":86,"line":1124},[84,14712,1738],{"class":633},[84,14714,818],{"class":793},[84,14716,821],{"class":633},[84,14718,14719,14721,14723],{"class":86,"line":1129},[84,14720,1756],{"class":633},[84,14722,806],{"class":793},[84,14724,821],{"class":633},[84,14726,14727],{"class":86,"line":1135},[84,14728,785],{"emptyLinePlaceholder":784},[84,14730,14731,14733,14735,14737,14739,14741,14743,14745,14747],{"class":86,"line":1157},[84,14732,1676],{"class":633},[84,14734,4650],{"class":793},[84,14736,1659],{"class":90},[84,14738,847],{"class":633},[84,14740,5353],{"class":94},[84,14742,5356],{"class":90},[84,14744,847],{"class":633},[84,14746,5627],{"class":94},[84,14748,821],{"class":633},[84,14750,14751,14753,14755,14757,14759,14761],{"class":86,"line":1168},[84,14752,1709],{"class":633},[84,14754,4497],{"class":793},[84,14756,5372],{"class":90},[84,14758,847],{"class":633},[84,14760,1685],{"class":94},[84,14762,3849],{"class":633},[84,14764,14765,14767,14769,14771,14773,14775],{"class":86,"line":1182},[84,14766,1709],{"class":633},[84,14768,4512],{"class":793},[84,14770,5372],{"class":90},[84,14772,847],{"class":633},[84,14774,5245],{"class":94},[84,14776,3849],{"class":633},[84,14778,14779,14781,14783,14785,14787,14790],{"class":86,"line":1194},[84,14780,1709],{"class":633},[84,14782,3639],{"class":793},[84,14784,3936],{"class":90},[84,14786,847],{"class":633},[84,14788,14789],{"class":94},"\"${camera_joint_x} ${camera_joint_y} ${camera_joint_z}\"",[84,14791,3849],{"class":633},[84,14793,14794,14796,14798],{"class":86,"line":1211},[84,14795,1756],{"class":633},[84,14797,4650],{"class":793},[84,14799,821],{"class":633},[84,14801,14802,14804,14806],{"class":86,"line":1217},[84,14803,3989],{"class":633},[84,14805,794],{"class":793},[84,14807,821],{"class":633},[3547,14809,14810],{"id":14810},"添加雷达",[14,14812,14813],{},"编辑car_laser.urdf.xacro文件，输入如下内容：",[76,14815,14817],{"className":775,"code":14816,"language":777,"meta":19,"style":19},"\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",[71,14818,14819,14823,14837,14841,14856,14871,14879,14883,14905,14926,14947,14968,14990,14994,15009,15017,15025,15047,15055,15075,15089,15097,15105,15109,15130,15144,15158,15173,15181],{"__ignoreMap":19},[84,14820,14821],{"class":86,"line":87},[84,14822,785],{"emptyLinePlaceholder":784},[84,14824,14825,14827,14829,14831,14833,14835],{"class":86,"line":644},[84,14826,1375],{"class":633},[84,14828,794],{"class":793},[84,14830,12250],{"class":90},[84,14832,847],{"class":633},[84,14834,12255],{"class":94},[84,14836,821],{"class":633},[84,14838,14839],{"class":86,"line":800},[84,14840,785],{"emptyLinePlaceholder":784},[84,14842,14843,14845,14847,14849,14851,14854],{"class":86,"line":812},[84,14844,1676],{"class":633},[84,14846,3661],{"class":793},[84,14848,1659],{"class":90},[84,14850,847],{"class":633},[84,14852,14853],{"class":94},"\"blue\"",[84,14855,821],{"class":633},[84,14857,14858,14860,14862,14864,14866,14869],{"class":86,"line":824},[84,14859,1709],{"class":633},[84,14861,3676],{"class":793},[84,14863,3841],{"class":90},[84,14865,847],{"class":633},[84,14867,14868],{"class":94},"\"0.0 0.0 0.4 0.95\"",[84,14870,3849],{"class":633},[84,14872,14873,14875,14877],{"class":86,"line":835},[84,14874,1756],{"class":633},[84,14876,3661],{"class":793},[84,14878,821],{"class":633},[84,14880,14881],{"class":86,"line":856},[84,14882,785],{"emptyLinePlaceholder":784},[84,14884,14885,14887,14889,14891,14893,14896,14898,14900,14903],{"class":86,"line":866},[84,14886,1676],{"class":633},[84,14888,12268],{"class":793},[84,14890,1659],{"class":90},[84,14892,847],{"class":633},[84,14894,14895],{"class":94},"\"laser_length\"",[84,14897,12278],{"class":90},[84,14899,847],{"class":633},[84,14901,14902],{"class":94},"\"0.03\"",[84,14904,14506],{"class":633},[84,14906,14907,14909,14911,14913,14915,14918,14920,14922,14924],{"class":86,"line":876},[84,14908,1676],{"class":633},[84,14910,12268],{"class":793},[84,14912,1659],{"class":90},[84,14914,847],{"class":633},[84,14916,14917],{"class":94},"\"laser_radius\"",[84,14919,12278],{"class":90},[84,14921,847],{"class":633},[84,14923,14902],{"class":94},[84,14925,14506],{"class":633},[84,14927,14928,14930,14932,14934,14936,14939,14941,14943,14945],{"class":86,"line":886},[84,14929,1676],{"class":633},[84,14931,12268],{"class":793},[84,14933,1659],{"class":90},[84,14935,847],{"class":633},[84,14937,14938],{"class":94},"\"laser_joint_x\"",[84,14940,12278],{"class":90},[84,14942,847],{"class":633},[84,14944,14592],{"class":94},[84,14946,14506],{"class":633},[84,14948,14949,14951,14953,14955,14957,14960,14962,14964,14966],{"class":86,"line":1018},[84,14950,1676],{"class":633},[84,14952,12268],{"class":793},[84,14954,1659],{"class":90},[84,14956,847],{"class":633},[84,14958,14959],{"class":94},"\"laser_joint_y\"",[84,14961,12278],{"class":90},[84,14963,847],{"class":633},[84,14965,14592],{"class":94},[84,14967,14506],{"class":633},[84,14969,14970,14972,14974,14976,14978,14981,14983,14985,14988],{"class":86,"line":1023},[84,14971,1676],{"class":633},[84,14973,12268],{"class":793},[84,14975,1659],{"class":90},[84,14977,847],{"class":633},[84,14979,14980],{"class":94},"\"laser_joint_z\"",[84,14982,12278],{"class":90},[84,14984,847],{"class":633},[84,14986,14987],{"class":94},"\"${base_link_z \u002F 2 + laser_length \u002F 2}\"",[84,14989,14506],{"class":633},[84,14991,14992],{"class":86,"line":1040},[84,14993,785],{"emptyLinePlaceholder":784},[84,14995,14996,14998,15000,15002,15004,15007],{"class":86,"line":1062},[84,14997,1676],{"class":633},[84,14999,806],{"class":793},[84,15001,1659],{"class":90},[84,15003,847],{"class":633},[84,15005,15006],{"class":94},"\"laser\"",[84,15008,821],{"class":633},[84,15010,15011,15013,15015],{"class":86,"line":1082},[84,15012,1709],{"class":633},[84,15014,818],{"class":793},[84,15016,821],{"class":633},[84,15018,15019,15021,15023],{"class":86,"line":1113},[84,15020,3900],{"class":633},[84,15022,830],{"class":793},[84,15024,821],{"class":633},[84,15026,15027,15029,15031,15033,15035,15038,15040,15042,15045],{"class":86,"line":1118},[84,15028,12384],{"class":633},[84,15030,3607],{"class":793},[84,15032,5571],{"class":90},[84,15034,847],{"class":633},[84,15036,15037],{"class":94},"\"${laser_radius}\"",[84,15039,6731],{"class":90},[84,15041,847],{"class":633},[84,15043,15044],{"class":94},"\"${laser_length}\"",[84,15046,3849],{"class":633},[84,15048,15049,15051,15053],{"class":86,"line":1124},[84,15050,12492],{"class":633},[84,15052,830],{"class":793},[84,15054,821],{"class":633},[84,15056,15057,15059,15061,15063,15065,15067,15069,15071,15073],{"class":86,"line":1129},[84,15058,3900],{"class":633},[84,15060,3639],{"class":793},[84,15062,3936],{"class":90},[84,15064,847],{"class":633},[84,15066,14686],{"class":94},[84,15068,3944],{"class":90},[84,15070,847],{"class":633},[84,15072,14686],{"class":94},[84,15074,3849],{"class":633},[84,15076,15077,15079,15081,15083,15085,15087],{"class":86,"line":1135},[84,15078,3900],{"class":633},[84,15080,3661],{"class":793},[84,15082,1659],{"class":90},[84,15084,847],{"class":633},[84,15086,14853],{"class":94},[84,15088,3849],{"class":633},[84,15090,15091,15093,15095],{"class":86,"line":1157},[84,15092,1738],{"class":633},[84,15094,818],{"class":793},[84,15096,821],{"class":633},[84,15098,15099,15101,15103],{"class":86,"line":1168},[84,15100,1756],{"class":633},[84,15102,806],{"class":793},[84,15104,821],{"class":633},[84,15106,15107],{"class":86,"line":1182},[84,15108,785],{"emptyLinePlaceholder":784},[84,15110,15111,15113,15115,15117,15119,15122,15124,15126,15128],{"class":86,"line":1194},[84,15112,1676],{"class":633},[84,15114,4650],{"class":793},[84,15116,1659],{"class":90},[84,15118,847],{"class":633},[84,15120,15121],{"class":94},"\"laser2baselink\"",[84,15123,5356],{"class":90},[84,15125,847],{"class":633},[84,15127,5627],{"class":94},[84,15129,821],{"class":633},[84,15131,15132,15134,15136,15138,15140,15142],{"class":86,"line":1211},[84,15133,1709],{"class":633},[84,15135,4497],{"class":793},[84,15137,5372],{"class":90},[84,15139,847],{"class":633},[84,15141,1685],{"class":94},[84,15143,3849],{"class":633},[84,15145,15146,15148,15150,15152,15154,15156],{"class":86,"line":1217},[84,15147,1709],{"class":633},[84,15149,4512],{"class":793},[84,15151,5372],{"class":90},[84,15153,847],{"class":633},[84,15155,15006],{"class":94},[84,15157,3849],{"class":633},[84,15159,15160,15162,15164,15166,15168,15171],{"class":86,"line":1222},[84,15161,1709],{"class":633},[84,15163,3639],{"class":793},[84,15165,3936],{"class":90},[84,15167,847],{"class":633},[84,15169,15170],{"class":94},"\"${laser_joint_x} ${laser_joint_y} ${laser_joint_z}\"",[84,15172,3849],{"class":633},[84,15174,15175,15177,15179],{"class":86,"line":1228},[84,15176,1756],{"class":633},[84,15178,4650],{"class":793},[84,15180,821],{"class":633},[84,15182,15183,15185,15187],{"class":86,"line":1238},[84,15184,3989],{"class":633},[84,15186,794],{"class":793},[84,15188,821],{"class":633},[3547,15190,15191],{"id":15191},"执行",[14,15193,15194],{},"编译后，工作空间终端下调用如下命令执行：",[76,15196,15198],{"className":78,"code":15197,"language":80,"meta":19,"style":19},"\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",[71,15199,15200,15204,15209,15231,15236,15242,15248,15281],{"__ignoreMap":19},[84,15201,15202],{"class":86,"line":87},[84,15203,785],{"emptyLinePlaceholder":784},[84,15205,15206],{"class":86,"line":644},[84,15207,15208],{"class":1003},"# ROS Humble\n",[84,15210,15211,15213,15215,15217,15219,15222,15224,15226,15228],{"class":86,"line":800},[84,15212,724],{"class":90},[84,15214,1526],{"class":94},[84,15216,733],{"class":94},[84,15218,2518],{"class":94},[84,15220,15221],{"class":94}," model:=ros2",[84,15223,727],{"class":94},[84,15225,2496],{"class":94},[84,15227,2499],{"class":736},[84,15229,15230],{"class":94}," cpp06_urdf\u002Furdf\u002Fxacro\u002Fcar.urdf.xacro\n",[84,15232,15233],{"class":86,"line":812},[84,15234,15235],{"class":1003},"#ROS Jazzy\n",[84,15237,15238,15240],{"class":86,"line":824},[84,15239,1492],{"class":90},[84,15241,8125],{"class":94},[84,15243,15244,15246],{"class":86,"line":835},[84,15245,1516],{"class":736},[84,15247,1519],{"class":94},[84,15249,15250,15252,15254,15256,15258,15261,15263,15265,15267,15269,15272,15275,15278],{"class":86,"line":856},[84,15251,724],{"class":90},[84,15253,2421],{"class":94},[84,15255,12632],{"class":94},[84,15257,12632],{"class":94},[84,15259,15260],{"class":633}," $(",[84,15262,724],{"class":90},[84,15264,727],{"class":94},[84,15266,2496],{"class":94},[84,15268,733],{"class":94},[84,15270,15271],{"class":633},")",[84,15273,15274],{"class":94},"\u002Fshare\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002Fcar.urdf.xacro",[84,15276,15277],{"class":736}," -o",[84,15279,15280],{"class":94}," .\u002Fsrc\u002Fcpp06_urdf\u002Furdf\u002Furdf\u002Fcar.urdf\n",[84,15282,15283,15285,15287,15289,15291],{"class":86,"line":866},[84,15284,724],{"class":90},[84,15286,1526],{"class":94},[84,15288,733],{"class":94},[84,15290,2518],{"class":94},[84,15292,15293],{"class":94}," model:=.\u002Fsrc\u002Fcpp06_urdf\u002Furdf\u002Furdf\u002Fcar.urdf\n",[14,15295,15296],{},"命令执行后，rviz2 中可以显示与需求类似的机器人模型。",[14,15298,15299],{},[17,15300],{"alt":19,"src":15301},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1616.webp",[10,15303,15304],{"id":15304},"小结",[14,15306,15307],{},[17,15308],{"alt":19,"src":15309},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1617.webp",[14,15311,15312],{},"目前只是空壳，激光雷达和摄像头以及轮子还都是空壳，到进阶联系中，才可以实现作用。",[15314,15315,15316],"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":19,"searchDepth":644,"depth":644,"links":15318},[15319,15320,15321,15322,15323,15324,15325,15326],{"id":12,"depth":800,"text":12},{"id":61,"depth":800,"text":61},{"id":650,"depth":800,"text":651},{"id":3508,"depth":800,"text":3509},{"id":7619,"depth":800,"text":7620},{"id":7782,"depth":800,"text":7783},{"id":12121,"depth":800,"text":12121},{"id":15304,"depth":800,"text":15304},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan",0,"0900","2023-12-30","wiki\u002F2023-12-30-ros2-tutorial","zh-cn:2023-12-30-ros2-tutorial","\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言",false,null,"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","zh-CN","zh-cn",{},{"title":5,"description":19},"EXBx-2MLm-IbSV0xt4s7mE3sMac1ehfC_7SWkRHJxeo",[15346,15351,15356,15361,15366,15371,15376,15381,15386,15387,15392,15397,15402,15407,15412,15417,15422,15427,15432,15437,15442,15447,15452,15457,15462,15467,15471,15476,15480,15485,15490,15495,15500,15505,15510,15515,15520,15525,15530,15535,15540,15545,15550,15555,15560,15565,15570,15575,15580,15585,15590,15595,15600,15605,15610,15615,15620,15625,15630,15635],{"path":15347,"stem":15348,"title":15349,"date":15330,"chapterOrder":15350,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","wiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","ROS2介绍","0100",{"path":15352,"stem":15353,"title":15354,"date":15330,"chapterOrder":15355,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","wiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","入门操作","0200",{"path":15357,"stem":15358,"title":15359,"date":15330,"chapterOrder":15360,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","wiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","工作空间与功能包","0300",{"path":15362,"stem":15363,"title":15364,"date":15330,"chapterOrder":15365,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","四大通信","0400",{"path":15367,"stem":15368,"title":15369,"date":15330,"chapterOrder":15370,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2其他通信机制","0500",{"path":15372,"stem":15373,"title":15374,"date":15330,"chapterOrder":15375,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","wiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch","0600",{"path":15377,"stem":15378,"title":15379,"date":15330,"chapterOrder":15380,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","wiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","回溯rosbag2","0700",{"path":15382,"stem":15383,"title":15384,"date":15330,"chapterOrder":15385,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","wiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","坐标变换TF","0800",{"path":15327,"stem":15336,"title":5,"date":15330,"chapterOrder":15329,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},{"path":15388,"stem":15389,"title":15390,"date":15330,"chapterOrder":15391,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2仿真平台","1000",{"path":15393,"stem":15394,"title":15395,"date":15330,"chapterOrder":15396,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic","1100-0100",{"path":15398,"stem":15399,"title":15400,"date":15330,"chapterOrder":15401,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","1100-0200",{"path":15403,"stem":15404,"title":15405,"date":15330,"chapterOrder":15406,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）","1100-0300",{"path":15408,"stem":15409,"title":15410,"date":15330,"chapterOrder":15411,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","将Ign Gazebo迁移至Gz Sim","1100-0400",{"path":15413,"stem":15414,"title":15415,"date":15330,"chapterOrder":15416,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gezebo仿真平台","1100",{"path":15418,"stem":15419,"title":15420,"date":15330,"chapterOrder":15421,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble导航仿真","1200-0100",{"path":15423,"stem":15424,"title":15425,"date":15330,"chapterOrder":15426,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy导航仿真","1200-0200",{"path":15428,"stem":15429,"title":15430,"date":15330,"chapterOrder":15431,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Humble与Jazzy导航的差异","1200-0300",{"path":15433,"stem":15434,"title":15435,"date":15330,"chapterOrder":15436,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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(仿真篇)","1200",{"path":15438,"stem":15439,"title":15440,"date":15330,"chapterOrder":15441,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio库","1300-0100-0100",{"path":15443,"stem":15444,"title":15445,"date":15330,"chapterOrder":15446,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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库","1300-0100-0200",{"path":15448,"stem":15449,"title":15450,"date":15330,"chapterOrder":15451,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART串口通信","1300-0100",{"path":15453,"stem":15454,"title":15455,"date":15330,"chapterOrder":15456,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","SocketCAN","1300-0200-0100",{"path":15458,"stem":15459,"title":15460,"date":15330,"chapterOrder":15461,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN","1300-0200-0200",{"path":15463,"stem":15464,"title":15465,"date":15330,"chapterOrder":15466,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN通信","1300-0200",{"path":15468,"stem":15469,"title":15440,"date":15330,"chapterOrder":15470,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso","1300-0300-0100",{"path":15472,"stem":15473,"title":15474,"date":15330,"chapterOrder":15475,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP通信","1300-0300",{"path":15477,"stem":15478,"title":15440,"date":15330,"chapterOrder":15479,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso","1300-0400-0100",{"path":15481,"stem":15482,"title":15483,"date":15330,"chapterOrder":15484,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP通信","1300-0400",{"path":15486,"stem":15487,"title":15488,"date":15330,"chapterOrder":15489,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux硬件通信","1300",{"path":15491,"stem":15492,"title":15493,"date":15330,"chapterOrder":15494,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","机器人组成","1400-0100",{"path":15496,"stem":15497,"title":15498,"date":15330,"chapterOrder":15499,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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","1400-0200-0100",{"path":15501,"stem":15502,"title":15503,"date":15330,"chapterOrder":15504,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","远程访问桌面","1400-0200-0200",{"path":15506,"stem":15507,"title":15508,"date":15330,"chapterOrder":15509,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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-工控机之远程开发环境","工控机之远程开发环境","1400-0200",{"path":15511,"stem":15512,"title":15513,"date":15330,"chapterOrder":15514,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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设备","1400-0300",{"path":15516,"stem":15517,"title":15518,"date":15330,"chapterOrder":15519,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","分布式搭建","1400-0400",{"path":15521,"stem":15522,"title":15523,"date":15330,"chapterOrder":15524,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","优化日志","1400-0500",{"path":15526,"stem":15527,"title":15528,"date":15330,"chapterOrder":15529,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","里程计Odom","1400-0600-0100",{"path":15531,"stem":15532,"title":15533,"date":15330,"chapterOrder":15534,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","惯性计IMU","1400-0600-0200",{"path":15536,"stem":15537,"title":15538,"date":15330,"chapterOrder":15539,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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","1400-0600-0300",{"path":15541,"stem":15542,"title":15543,"date":15330,"chapterOrder":15544,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","相机Camera","1400-0600-0400",{"path":15546,"stem":15547,"title":15548,"date":15330,"chapterOrder":15549,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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","1400-0600-0500",{"path":15551,"stem":15552,"title":15553,"date":15330,"chapterOrder":15554,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","手柄JOY","1400-0600-0600",{"path":15556,"stem":15557,"title":15558,"date":15330,"chapterOrder":15559,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","键盘控制节点","1400-0600-0700",{"path":15561,"stem":15562,"title":15563,"date":15330,"chapterOrder":15564,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","硬件平台","1400-0600",{"path":15566,"stem":15567,"title":15568,"date":15330,"chapterOrder":15569,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","坐标系与话题关系","1400-0700",{"path":15571,"stem":15572,"title":15573,"date":15330,"chapterOrder":15574,"chapterDepth":800,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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-轮式里程计标定","轮式里程计标定","1400-0800-0100-0100",{"path":15576,"stem":15577,"title":15578,"date":15330,"chapterOrder":15579,"chapterDepth":800,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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融合","1400-0800-0100-0200",{"path":15581,"stem":15582,"title":15583,"date":15330,"chapterOrder":15584,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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-轮式里程计标定与融合","轮式里程计标定与融合","1400-0800-0100",{"path":15586,"stem":15587,"title":15588,"date":15330,"chapterOrder":15589,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","激光雷达工具","1400-0800-0200",{"path":15591,"stem":15592,"title":15593,"date":15330,"chapterOrder":15594,"chapterDepth":644,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","相机使用进阶","1400-0800-0300",{"path":15596,"stem":15597,"title":15598,"date":15330,"chapterOrder":15599,"chapterDepth":87,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","硬件平台进阶","1400-0800",{"path":15601,"stem":15602,"title":15603,"date":15330,"chapterOrder":15604,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","机器人硬件","1400",{"path":15606,"stem":15607,"title":15608,"date":15330,"chapterOrder":15609,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","wiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control","1500",{"path":15611,"stem":15612,"title":15613,"date":15330,"chapterOrder":15614,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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工业机器人机械臂","1600",{"path":15616,"stem":15617,"title":15618,"date":15330,"chapterOrder":15619,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\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(实体篇)","1700",{"path":15621,"stem":15622,"title":15623,"date":15330,"chapterOrder":15624,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","wiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS","1800",{"path":15626,"stem":15627,"title":15628,"date":15330,"chapterOrder":15629,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots仿真平台","1900",{"path":15631,"stem":15632,"title":15633,"date":15330,"chapterOrder":15634,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15337},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","wiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV","2000",{"path":15333,"stem":15636,"title":15637,"date":15330,"chapterOrder":15338,"chapterDepth":15328,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":784},"wiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2机器人操作系统教程",{"variants":15639},[15640,15643,15646,15649,15652],{"path":15641,"localeSlug":15642,"i18nKey":15336},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","en-us",{"path":15644,"localeSlug":15645,"i18nKey":15336},"\u002Fzh-hant\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","zh-hant",{"path":15647,"localeSlug":15648,"i18nKey":15336},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","zh-hk",{"path":15650,"localeSlug":15651,"i18nKey":15336},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","zh-tw",{"path":15327,"localeSlug":15341,"i18nKey":15336},[15641,15339,15644,15339,15647,15339,15650,15339,15327,15339],1784646769057]