[{"data":1,"prerenderedAt":15468},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan":3,"wiki-doc-items-2023-12-30-ros2-tutorial":15342},{"id":4,"title":5,"body":6,"chapter":427,"chapterSort":15330,"date":15331,"description":19,"docKey":15332,"docRoot":15333,"docTitle":15334,"extension":15335,"isWikiDoc":784,"isWikiIndex":15336,"meta":15337,"navigation":784,"path":15338,"seo":15339,"stem":15340,"wikiDepth":87,"__hash__":15341},"wiki\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch9-可视化平台RVIZ2与URDF建模语言.md","可视化平台RVIZ2与URDF建模语言",{"type":7,"value":8,"toc":15320},"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,4367,4370,4375,4380,4385,4388,4391,4396,4399,4402,4407,4412,4415,4420,4423,4428,4431,4436,4441,4444,4447,4450,4455,4488,4491,4697,4702,4705,4710,4713,4716,4721,4724,4729,4732,4737,4740,4745,4750,4753,4756,4761,4764,4767,4772,4775,4780,4785,4790,4795,4800,4805,4810,4813,4818,4821,4826,4829,4834,4837,4842,4845,4850,4853,4858,4861,4866,4869,4913,4918,4923,4926,4931,4934,4939,4947,4950,4955,4960,4965,4968,4973,4976,4984,5001,5006,5011,5014,5019,5022,5455,5458,5461,5466,5474,5477,5480,5485,5488,5491,5496,5499,5502,5505,5508,5513,5518,5523,5528,5604,5682,5685,5693,5696,5699,6271,6274,6279,6282,6287,7582,7585,7613,7618,7622,7625,7639,7645,7651,7658,7661,7673,7676,7681,7684,7689,7692,7697,7703,7710,7712,7723,7726,7731,7734,7746,7751,7758,7763,7768,7773,7778,7781,7785,7788,7791,7796,7799,7802,7809,7812,7819,7822,7827,7830,7835,7840,7845,7848,7853,7858,7863,7868,7873,7878,7881,7885,7890,7897,7902,7907,7912,7915,7920,7923,7928,7933,7936,7941,7946,7951,7956,7959,7964,7972,7975,7978,7983,7986,7989,7992,7997,8002,8007,8012,8017,8022,8025,8030,8033,8038,8041,8046,8051,8056,8061,8066,8071,8074,8078,8083,8088,8093,8098,8165,8170,8178,8181,8186,8194,8199,8204,8207,8233,8236,8301,8304,8551,8554,8851,8856,8859,8864,9369,9374,9377,9380,9388,9391,9396,9399,9404,9409,9412,9417,9420,11920,11925,11941,11946,11951,11956,11967,11972,11977,11992,11997,12002,12007,12012,12017,12025,12030,12033,12038,12041,12045,12048,12051,12054,12059,12064,12069,12072,12075,12082,12090,12093,12104,12108,12111,12114,12117,12122,12125,12129,12134,12137,12149,12156,12161,12164,12167,12172,12175,12178,12181,12217,12220,12227,12230,12233,12586,12591,12594,12597,12600,12603,12640,12643,13214,13217,13222,13225,13233,13236,13239,13261,13264,13343,13408,13413,13418,13421,13424,13426,13432,13437,13440,13443,13446,13449,13463,13466,13544,13547,13550,14454,14457,14460,14811,14814,14817,15192,15195,15198,15297,15300,15305,15308,15313,15316],[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,4366],"a",{"href":4363,"rel":4364},"https:\u002F\u002Fmp.weixin.qq.com\u002Fmp\u002Fhomepage?%5C_%5C_biz=MzI4MjkyMDgyMA==&hid=7&sn=1efc3d3cee0142970227785f767cc7c8&scene=18",[4365],"nofollow","https:\u002F\u002Fmp.weixin.qq.com\u002Fmp\u002Fhomepage?\\_\\_biz=MzI4MjkyMDgyMA==&hid=7&sn=1efc3d3cee0142970227785f767cc7c8&scene=18",[14,4368,4369],{},"当然，没时间学习可以直接用别人画好的机器人，在Github上搜索turtlebot3",[14,4371,4372],{},[17,4373],{"alt":19,"src":4374},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1482.webp",[14,4376,4377],{},[17,4378],{"alt":19,"src":4379},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1483.webp",[14,4381,4382],{},[17,4383],{"alt":19,"src":4384},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1484.webp",[14,4386,4387],{},"这里有已经导出的模型，bases里是外观的模型，sensors是传感器的模型，wheels是轮子的模型。",[14,4389,4390],{},"我们克隆下仓库，注意要克隆branch是ros2的分支。",[14,4392,4393],{},[17,4394],{"alt":19,"src":4395},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1485.webp",[14,4397,4398],{},"我们引用一个就行了，看看效果即可，真正的应用还是要用SolidWorks通过SW2URDF插件进行导出",[14,4400,4401],{},"把项目里的meshes\u002Fbases里的burger_base.stl拷贝到我们WS里的meshes目录",[14,4403,4404],{},[17,4405],{"alt":19,"src":4406},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1486.webp",[14,4408,4409],{},[17,4410],{"alt":19,"src":4411},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1487.webp",[14,4413,4414],{},"filename是写刚才的皮肤文件，package:\u002F\u002F就是协议名，后面跟包名，也就是cpp06_urdf。然后跟功能包下的文件路径，也就是meshes\u002Fburger_base.stl（其实也就是share下的路径）",[14,4416,4417],{},[17,4418],{"alt":19,"src":4419},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1488.webp",[14,4421,4422],{},"因为是个三维模型，所以在填scale大小缩放时，需要填3个比例，咱们都填1.0即可。",[14,4424,4425],{},[17,4426],{"alt":19,"src":4427},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1489.webp",[14,4429,4430],{},"为什么显示的模型会这么大呢，因为rviz2以米为单位，而stl是以mm为单位，注意。在机械上，默认不说单位就都是mm，不要乱改单位，一般都要以mm为单位，咱们是做机器人的，要专业一些。",[14,4432,4433],{},[17,4434],{"alt":19,"src":4435},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1490.webp",[14,4437,4438],{},[17,4439],{"alt":19,"src":4440},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1491.webp",[653,4442,4443],{"id":4443},"joint标签",[3547,4445,3512],{"id":4446},"简介-2",[14,4448,4449],{},"urdf 中的 joint 标签用于描述机器人关节的运动学和动力学属性，还可以指定关节运动的安全极限，机器人的两个部件(分别称之为 parent link 与 child link)以”关节“的形式相连接，不同的关节有不同的运动形式: 旋转、滑动、固定、旋转速度、旋转角度限制....,比如:安装在底座上的轮子可以360度旋转，而摄像头则可能是完全固定在底座上。",[14,4451,4452],{},[17,4453],{"alt":19,"src":4454},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1492.webp",[163,4456,4457,4462],{},[142,4458,4459,4461],{},[105,4460,1094],{}," （必填）：为关节命名，名称需要唯一。",[142,4463,4464,4467,4468],{},[105,4465,4466],{},"type"," （必填）：设置关节类型，可用类型如下：",[163,4469,4470,4473,4476,4479,4482,4485],{},[142,4471,4472],{},"continuous：旋转关节，可以绕单轴无限旋转。",[142,4474,4475],{},"revolute：旋转关节，类似于 continues，但是有旋转角度限制。",[142,4477,4478],{},"prismatic：滑动关节，沿某一轴线移动的关节，有位置极限。",[142,4480,4481],{},"planer：平面关节，允许在平面正交方向上平移或旋转。",[142,4483,4484],{},"floating：浮动关节，允许进行平移、旋转运动。",[142,4486,4487],{},"fixed：固定关节，不允许运动的特殊关节。",[14,4489,4490],{},"以下是子级标签",[163,4492,4493,4508,4523,4542,4555,4577,4599,4633,4665],{},[142,4494,4495,4500,4501],{},[105,4496,4497],{},[4498,4499],"parent",{}," （必填）：指定父级link。",[163,4502,4503],{},[142,4504,4505,4507],{},[105,4506,806],{}," （必填）：父级link的名字，是这个link在机器人结构树中的名字。",[142,4509,4510,4515,4516],{},[105,4511,4512],{},[4513,4514],"child",{}," （必填）：指定子级link。",[163,4517,4518],{},[142,4519,4520,4522],{},[105,4521,806],{}," （必填）：子级link的名字，是这个link在机器人结构树中的名字。",[142,4524,4525,4529,4530],{},[105,4526,4527],{},[3639,4528],{}," （可选）：这是从父link到子link的转换，关节位于子link的原点。",[163,4531,4532,4537],{},[142,4533,4534,4536],{},[105,4535,3648],{}," ：各轴线上的偏移量。",[142,4538,4539,4541],{},[105,4540,3654],{}," ：各轴线上的偏移弧度。",[142,4543,4544,4547,4548],{},[105,4545,4546],{},"\u003Caxis>"," （可选）：如不设置，默认值为（1，0，0）。",[163,4549,4550],{},[142,4551,4552,4554],{},[105,4553,3648],{}," ：用于设置围绕哪个关节轴运动。",[142,4556,4557,4562,4563],{},[105,4558,4559],{},[4560,4561],"calibration",{}," （可选）：关节的参考位置，用于校准关节的绝对位置。",[163,4564,4565,4571],{},[142,4566,4567,4570],{},[105,4568,4569],{},"rising"," （可选）：当关节向正方向移动时，该参考位置将触发上升沿。",[142,4572,4573,4576],{},[105,4574,4575],{},"falling"," （可选）：当关节向正方向移动时，该参考位置将触发下降沿。",[142,4578,4579,4584,4585],{},[105,4580,4581],{},[4582,4583],"dynamics",{}," （可选）：指定接头物理特性的元素。这些值用于指定关节的建模属性，对仿真较为有用。",[163,4586,4587,4593],{},[142,4588,4589,4592],{},[105,4590,4591],{},"damping"," （可选）：关节的物理阻尼值，默认为0。",[142,4594,4595,4598],{},[105,4596,4597],{},"friction"," （可选）：关节的物理静摩擦值，默认为0。",[142,4600,4601,4606,4607],{},[105,4602,4603],{},[4604,4605],"limit",{}," （关节类型是revolute或prismatic时为必须的）：",[163,4608,4609,4615,4621,4627],{},[142,4610,4611,4614],{},[105,4612,4613],{},"lower"," （可选）：指定关节下限的属性（旋转关节以弧度为单位，棱柱关节以米为单位）。如果关节是连续的，则省略。",[142,4616,4617,4620],{},[105,4618,4619],{},"upper"," （可选）：指定关节上限的属性（旋转关节以弧度为单位，棱柱关节以米为单位）。如果关节是连续的，则省略。",[142,4622,4623,4626],{},[105,4624,4625],{},"effort"," （必填）：指定关节可受力的最大值。",[142,4628,4629,4632],{},[105,4630,4631],{},"velocity"," （必填）：用于设置最大关节速度（旋转关节以弧度每秒 [rad\u002Fs] 为单位，棱柱关节以米每秒 [m\u002Fs] 为单位）。",[142,4634,4635,4640,4641,127,4645],{},[105,4636,4637],{},[4638,4639],"mimic",{}," （可选）：此标签用于指定定义的关节模仿另一个现有关节。该关节的值可以计算为",[4642,4643,4644],"em",{},"value = multiplier * other_joint_value + offset",[163,4646,4647,4653,4659],{},[142,4648,4649,4652],{},[105,4650,4651],{},"joint"," （必填）：指定要模拟的关节的名称。",[142,4654,4655,4658],{},[105,4656,4657],{},"multiplier"," （可选）：指定上述公式中的乘法因子。",[142,4660,4661,4664],{},[105,4662,4663],{},"offset"," （可选）：指定要在上述公式中添加的偏移量，默认为 0（旋转关节的单位是弧度，棱柱关节的单位是米）。",[142,4666,4667,4670,4671],{},[105,4668,4669],{},"\u003Csafety_controller>"," （可选）：安全控制器。",[163,4672,4673,4679,4685,4691],{},[142,4674,4675,4678],{},[105,4676,4677],{},"soft_lower_limit"," （可选）：指定安全控制器开始限制关节位置的下关节边界，此限制需要大于joint下限。",[142,4680,4681,4684],{},[105,4682,4683],{},"soft_upper_limit"," （可选）：指定安全控制器开始限制关节位置的关节上边界的属性，此限制需要小于joint上限。",[142,4686,4687,4690],{},[105,4688,4689],{},"k_position"," （可选）：指定位置和速度限制之间的关系。",[142,4692,4693,4696],{},[105,4694,4695],{},"k_velocity"," （必填）：指定力和速度限制之间的关系。",[14,4698,4699],{},[17,4700],{"alt":19,"src":4701},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1493.webp",[14,4703,4704],{},"关节名称是必填的，且是唯一的。",[14,4706,4707],{},[17,4708],{"alt":19,"src":4709},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1494.webp",[14,4711,4712],{},"咱们最常用的是有限位的revolute类型的关节，continuous可无限旋转的关节，fixed固定关节，这个根据具体的关节类型来填。",[14,4714,4715],{},"revolute一般用于工业机器人机械臂的关节，continuous比如舵轮结构的“关节”，fixed就是一些固定的不能运动的结构关节。",[14,4717,4718],{},[17,4719],{"alt":19,"src":4720},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1495.webp",[14,4722,4723],{},"子集标签很多，咱们用的最常用的就几个，记住常用的即可。",[14,4725,4726],{},[17,4727],{"alt":19,"src":4728},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1496.webp",[14,4730,4731],{},"parent标签，link属性指定父级link的名字。",[14,4733,4734],{},[17,4735],{"alt":19,"src":4736},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1497.webp",[14,4738,4739],{},"child标签类似。",[14,4741,4742],{},[17,4743],{"alt":19,"src":4744},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1498.webp",[14,4746,4747],{},[17,4748],{"alt":19,"src":4749},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1499.webp",[14,4751,4752],{},"这个轴，默认是1，0，0，以X轴进行旋转，但是咱们一般是需要设置的，可通过SolidWorks设置基准轴进行设置。",[14,4754,4755],{},"剩下的标签，都与关节类型有关，比如limit，如果关节类型是revolute，而且不设置limit，那么在joint_state_publisher_gui里是无法调关节的角度的。",[14,4757,4758],{},[17,4759],{"alt":19,"src":4760},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1500.webp",[14,4762,4763],{},"其他标签用到的时候再进行介绍。",[3547,4765,4766],{"id":4766},"练习",[14,4768,4769],{},[17,4770],{"alt":19,"src":4771},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1501.webp",[14,4773,4774],{},"先把俩关节，单独实现，然后再通过joint关节进行连接。",[14,4776,4777],{},[17,4778],{"alt":19,"src":4779},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1502.webp",[14,4781,4782],{},[17,4783],{"alt":19,"src":4784},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1503.webp",[14,4786,4787],{},[17,4788],{"alt":19,"src":4789},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1504.webp",[14,4791,4792],{},[17,4793],{"alt":19,"src":4794},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1505.webp",[14,4796,4797],{},[17,4798],{"alt":19,"src":4799},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1506.webp",[14,4801,4802],{},[17,4803],{"alt":19,"src":4804},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1507.webp",[14,4806,4807],{},[17,4808],{"alt":19,"src":4809},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1508.webp",[14,4811,4812],{},"黄色的话，红和绿要多一些。",[14,4814,4815],{},[17,4816],{"alt":19,"src":4817},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1509.webp",[14,4819,4820],{},"这是红色。",[14,4822,4823],{},[17,4824],{"alt":19,"src":4825},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1510.webp",[14,4827,4828],{},"底盘Link就创建完毕了，",[14,4830,4831],{},[17,4832],{"alt":19,"src":4833},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1511.webp",[14,4835,4836],{},"摄像头Link也创建完毕了，",[14,4838,4839],{},[17,4840],{"alt":19,"src":4841},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1512.webp",[14,4843,4844],{},"关节名字设置为camera2base_link，也就是摄像头连接底座的joint，然后类型是360度都可以转的continuous。",[14,4846,4847],{},[17,4848],{"alt":19,"src":4849},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1513.webp",[14,4851,4852],{},"填入子级Link与父级Link",[14,4854,4855],{},[17,4856],{"alt":19,"src":4857},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1514.webp",[14,4859,4860],{},"这样两个Link就通过该Joint连接到一起了。",[14,4862,4863],{},[17,4864],{"alt":19,"src":4865},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1515.webp",[14,4867,4868],{},"还需要设置这俩选项，咱们先不设置，先看默认是什么状态。",[76,4870,4872],{"className":78,"code":4871,"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,4873,4874,4884,4890],{"__ignoreMap":19},[84,4875,4876,4878,4880,4882],{"class":86,"line":87},[84,4877,1492],{"class":90},[84,4879,1495],{"class":94},[84,4881,1498],{"class":736},[84,4883,1501],{"class":94},[84,4885,4886,4888],{"class":86,"line":644},[84,4887,1516],{"class":736},[84,4889,1519],{"class":94},[84,4891,4892,4894,4896,4898,4900,4902,4904,4906,4908,4910],{"class":86,"line":800},[84,4893,724],{"class":90},[84,4895,1526],{"class":94},[84,4897,733],{"class":94},[84,4899,2518],{"class":94},[84,4901,2521],{"class":94},[84,4903,724],{"class":90},[84,4905,2526],{"class":94},[84,4907,2529],{"class":736},[84,4909,2532],{"class":94},[84,4911,4912],{"class":90},"\u002Furdf\u002Furdf\u002Fdemo03_joint.urdf\n",[14,4914,4915],{},[17,4916],{"alt":19,"src":4917},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1516.webp",[14,4919,4920],{},[17,4921],{"alt":19,"src":4922},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1517.webp",[14,4924,4925],{},"可以打开TF看看坐标系，勾上Show Names，发现是重合的。所以显示效果不满足咱们的逻辑业务。（默认状态下），所以需要设置偏移量。",[14,4927,4928],{},[17,4929],{"alt":19,"src":4930},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1518.webp",[14,4932,4933],{},"如果咱们想把摄像头移动到车头，如图所示，在X上有偏移量，Y没有，但是Z有。然后roll，pitch，yaw上没有。",[14,4935,4936],{},[17,4937],{"alt":19,"src":4938},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1519.webp",[14,4940,4941,4944],{},[17,4942],{"alt":19,"src":4943},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1520.webp",[17,4945],{"alt":19,"src":4946},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1521.webp",[14,4948,4949],{},"Z的高度就是1\u002F2的底盘高度+1\u002F2的摄像头高度",[14,4951,4952],{},[17,4953],{"alt":19,"src":4954},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1522.webp",[14,4956,4957],{},[17,4958],{"alt":19,"src":4959},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1523.webp",[14,4961,4962],{},[17,4963],{"alt":19,"src":4964},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1524.webp",[14,4966,4967],{},"咱们要绕Yaw旋转，所以也就是绕Z轴旋转，也就是001，注意一定得是整形，不能是浮点型。",[14,4969,4970],{},[17,4971],{"alt":19,"src":4972},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1525.webp",[14,4974,4975],{},"想要看是否能旋转，要打开joint_state_publisher_gui，可以从launch中打开，也可以从终端中直接打开。",[14,4977,4978,4981],{},[17,4979],{"alt":19,"src":4980},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1526.webp",[17,4982],{"alt":19,"src":4983},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1527.webp",[76,4985,4987],{"className":78,"code":4986,"language":80,"meta":19,"style":19},"ros2 run joint_state_publisher_gui joint_state_publisher_gui\n",[71,4988,4989],{"__ignoreMap":19},[84,4990,4991,4993,4995,4998],{"class":86,"line":87},[84,4992,724],{"class":90},[84,4994,2421],{"class":94},[84,4996,4997],{"class":94}," joint_state_publisher_gui",[84,4999,5000],{"class":94}," joint_state_publisher_gui\n",[14,5002,5003],{},[17,5004],{"alt":19,"src":5005},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1528.webp",[14,5007,5008],{},[17,5009],{"alt":19,"src":5010},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1529.webp",[14,5012,5013],{},"拖拽滚动条可改变摄像头的Yaw",[14,5015,5016],{},[17,5017],{"alt":19,"src":5018},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1530.webp",[14,5020,5021],{},"Randomize是随机数，Center是回中(复位)",[76,5023,5025],{"className":775,"code":5024,"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,5026,5027,5031,5046,5050,5064,5078,5086,5101,5116,5124,5138,5146,5150,5158,5172,5180,5200,5214,5222,5230,5234,5249,5257,5265,5280,5288,5308,5322,5330,5338,5342,5365,5380,5394,5398,5419,5435,5443,5447],{"__ignoreMap":19},[84,5028,5029],{"class":86,"line":87},[84,5030,785],{"emptyLinePlaceholder":784},[84,5032,5033,5035,5037,5039,5041,5044],{"class":86,"line":644},[84,5034,790],{"class":633},[84,5036,794],{"class":793},[84,5038,1659],{"class":90},[84,5040,847],{"class":633},[84,5042,5043],{"class":94},"\"joint_demo\"",[84,5045,821],{"class":633},[84,5047,5048],{"class":86,"line":800},[84,5049,785],{"emptyLinePlaceholder":784},[84,5051,5052,5054,5056,5058,5060,5062],{"class":86,"line":812},[84,5053,3821],{"class":633},[84,5055,3661],{"class":793},[84,5057,1659],{"class":90},[84,5059,847],{"class":633},[84,5061,3830],{"class":94},[84,5063,821],{"class":633},[84,5065,5066,5068,5070,5072,5074,5076],{"class":86,"line":824},[84,5067,1676],{"class":633},[84,5069,3676],{"class":793},[84,5071,3841],{"class":90},[84,5073,847],{"class":633},[84,5075,3846],{"class":94},[84,5077,3849],{"class":633},[84,5079,5080,5082,5084],{"class":86,"line":835},[84,5081,1765],{"class":633},[84,5083,3661],{"class":793},[84,5085,821],{"class":633},[84,5087,5088,5090,5092,5094,5096,5099],{"class":86,"line":856},[84,5089,3821],{"class":633},[84,5091,3661],{"class":793},[84,5093,1659],{"class":90},[84,5095,847],{"class":633},[84,5097,5098],{"class":94},"\"red\"",[84,5100,821],{"class":633},[84,5102,5103,5105,5107,5109,5111,5114],{"class":86,"line":866},[84,5104,1676],{"class":633},[84,5106,3676],{"class":793},[84,5108,3841],{"class":90},[84,5110,847],{"class":633},[84,5112,5113],{"class":94},"\"0.8 0.1 0.1 0.8\"",[84,5115,3849],{"class":633},[84,5117,5118,5120,5122],{"class":86,"line":876},[84,5119,1765],{"class":633},[84,5121,3661],{"class":793},[84,5123,821],{"class":633},[84,5125,5126,5128,5130,5132,5134,5136],{"class":86,"line":886},[84,5127,3821],{"class":633},[84,5129,806],{"class":793},[84,5131,1659],{"class":90},[84,5133,847],{"class":633},[84,5135,1685],{"class":94},[84,5137,821],{"class":633},[84,5139,5140,5142,5144],{"class":86,"line":1018},[84,5141,1676],{"class":633},[84,5143,818],{"class":793},[84,5145,821],{"class":633},[84,5147,5148],{"class":86,"line":1023},[84,5149,785],{"emptyLinePlaceholder":784},[84,5151,5152,5154,5156],{"class":86,"line":1040},[84,5153,1709],{"class":633},[84,5155,830],{"class":793},[84,5157,821],{"class":633},[84,5159,5160,5162,5164,5166,5168,5170],{"class":86,"line":1062},[84,5161,3900],{"class":633},[84,5163,841],{"class":793},[84,5165,844],{"class":90},[84,5167,847],{"class":633},[84,5169,3909],{"class":94},[84,5171,3849],{"class":633},[84,5173,5174,5176,5178],{"class":86,"line":1082},[84,5175,1738],{"class":633},[84,5177,830],{"class":793},[84,5179,821],{"class":633},[84,5181,5182,5184,5186,5188,5190,5192,5194,5196,5198],{"class":86,"line":1113},[84,5183,1709],{"class":633},[84,5185,3639],{"class":793},[84,5187,3936],{"class":90},[84,5189,847],{"class":633},[84,5191,3941],{"class":94},[84,5193,3944],{"class":90},[84,5195,847],{"class":633},[84,5197,3941],{"class":94},[84,5199,3849],{"class":633},[84,5201,5202,5204,5206,5208,5210,5212],{"class":86,"line":1118},[84,5203,1709],{"class":633},[84,5205,3661],{"class":793},[84,5207,1659],{"class":90},[84,5209,847],{"class":633},[84,5211,3830],{"class":94},[84,5213,853],{"class":633},[84,5215,5216,5218,5220],{"class":86,"line":1124},[84,5217,1756],{"class":633},[84,5219,818],{"class":793},[84,5221,821],{"class":633},[84,5223,5224,5226,5228],{"class":86,"line":1129},[84,5225,1765],{"class":633},[84,5227,806],{"class":793},[84,5229,821],{"class":633},[84,5231,5232],{"class":86,"line":1135},[84,5233,785],{"emptyLinePlaceholder":784},[84,5235,5236,5238,5240,5242,5244,5247],{"class":86,"line":1157},[84,5237,3821],{"class":633},[84,5239,806],{"class":793},[84,5241,1659],{"class":90},[84,5243,847],{"class":633},[84,5245,5246],{"class":94},"\"camera\"",[84,5248,821],{"class":633},[84,5250,5251,5253,5255],{"class":86,"line":1168},[84,5252,1696],{"class":633},[84,5254,818],{"class":793},[84,5256,821],{"class":633},[84,5258,5259,5261,5263],{"class":86,"line":1182},[84,5260,1722],{"class":633},[84,5262,830],{"class":793},[84,5264,821],{"class":633},[84,5266,5267,5269,5271,5273,5275,5278],{"class":86,"line":1194},[84,5268,4254],{"class":633},[84,5270,841],{"class":793},[84,5272,844],{"class":90},[84,5274,847],{"class":633},[84,5276,5277],{"class":94},"\"0.02 0.05 0.05\"",[84,5279,3849],{"class":633},[84,5281,5282,5284,5286],{"class":86,"line":1211},[84,5283,4273],{"class":633},[84,5285,830],{"class":793},[84,5287,821],{"class":633},[84,5289,5290,5292,5294,5296,5298,5300,5302,5304,5306],{"class":86,"line":1217},[84,5291,1722],{"class":633},[84,5293,3639],{"class":793},[84,5295,3936],{"class":90},[84,5297,847],{"class":633},[84,5299,3941],{"class":94},[84,5301,3944],{"class":90},[84,5303,847],{"class":633},[84,5305,3941],{"class":94},[84,5307,3849],{"class":633},[84,5309,5310,5312,5314,5316,5318,5320],{"class":86,"line":1222},[84,5311,1722],{"class":633},[84,5313,3661],{"class":793},[84,5315,1659],{"class":90},[84,5317,847],{"class":633},[84,5319,5098],{"class":94},[84,5321,3849],{"class":633},[84,5323,5324,5326,5328],{"class":86,"line":1228},[84,5325,1747],{"class":633},[84,5327,818],{"class":793},[84,5329,821],{"class":633},[84,5331,5332,5334,5336],{"class":86,"line":1238},[84,5333,1765],{"class":633},[84,5335,806],{"class":793},[84,5337,821],{"class":633},[84,5339,5340],{"class":86,"line":1250},[84,5341,785],{"emptyLinePlaceholder":784},[84,5343,5344,5346,5348,5350,5352,5355,5358,5360,5363],{"class":86,"line":1260},[84,5345,3821],{"class":633},[84,5347,4651],{"class":793},[84,5349,1659],{"class":90},[84,5351,847],{"class":633},[84,5353,5354],{"class":94},"\"camera2baselink\"",[84,5356,5357],{"class":90}," type",[84,5359,847],{"class":633},[84,5361,5362],{"class":94},"\"continuous\"",[84,5364,821],{"class":633},[84,5366,5367,5369,5371,5374,5376,5378],{"class":86,"line":1265},[84,5368,1696],{"class":633},[84,5370,4498],{"class":793},[84,5372,5373],{"class":90}," link",[84,5375,847],{"class":633},[84,5377,1685],{"class":94},[84,5379,853],{"class":633},[84,5381,5382,5384,5386,5388,5390,5392],{"class":86,"line":1270},[84,5383,1696],{"class":633},[84,5385,4513],{"class":793},[84,5387,5373],{"class":90},[84,5389,847],{"class":633},[84,5391,5246],{"class":94},[84,5393,3849],{"class":633},[84,5395,5396],{"class":86,"line":1276},[84,5397,785],{"emptyLinePlaceholder":784},[84,5399,5400,5402,5404,5406,5408,5411,5413,5415,5417],{"class":86,"line":1286},[84,5401,1696],{"class":633},[84,5403,3639],{"class":793},[84,5405,3936],{"class":90},[84,5407,847],{"class":633},[84,5409,5410],{"class":94},"\"0.2 0 0.075\"",[84,5412,3944],{"class":90},[84,5414,847],{"class":633},[84,5416,3941],{"class":94},[84,5418,3849],{"class":633},[84,5420,5421,5423,5426,5428,5430,5433],{"class":86,"line":1298},[84,5422,1696],{"class":633},[84,5424,5425],{"class":793},"axis",[84,5427,3936],{"class":90},[84,5429,847],{"class":633},[84,5431,5432],{"class":94},"\"0 0 1\"",[84,5434,3849],{"class":633},[84,5436,5437,5439,5441],{"class":86,"line":1308},[84,5438,1765],{"class":633},[84,5440,4651],{"class":793},[84,5442,821],{"class":633},[84,5444,5445],{"class":86,"line":1313},[84,5446,785],{"emptyLinePlaceholder":784},[84,5448,5449,5451,5453],{"class":86,"line":1319},[84,5450,3989],{"class":633},[84,5452,794],{"class":793},[84,5454,821],{"class":633},[3547,5456,5457],{"id":5457},"joint_state_publisher",[14,5459,5460],{},"bug:Yaw不稳定，会一直回中。",[14,5462,5463],{},[17,5464],{"alt":19,"src":5465},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1531.webp",[14,5467,5468,5471],{},[17,5469],{"alt":19,"src":5470},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1532.webp",[17,5472],{"alt":19,"src":5473},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1533.webp",[14,5475,5476],{},"其实是因为launch里启动的和终端里启动的冲突了。",[14,5478,5479],{},"解决方案：只启动其中一个。",[14,5481,5482],{},[17,5483],{"alt":19,"src":5484},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1534.webp",[14,5486,5487],{},"解决方案：直接在Launch里启动GUI版本的，这样即可解决。(但是不建议)",[14,5489,5490],{},"建议方案：用非GUI版本的，因为以后，我们控制关节是用程序控制，而不是GUI控制。",[14,5492,5493],{},[17,5494],{"alt":19,"src":5495},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1535.webp",[14,5497,5498],{},"如果只是想展示模型，用GUI，",[14,5500,5501],{},"如果想用程序控制，用普通版。",[3547,5503,5504],{"id":5504},"base_footprint",[14,5506,5507],{},"bug:机器人底盘半沉入地下",[14,5509,5510],{},[17,5511],{"alt":19,"src":5512},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1536.webp",[14,5514,5515],{},[17,5516],{"alt":19,"src":5517},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1537.webp",[14,5519,5520],{},[17,5521],{"alt":19,"src":5522},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1538.webp",[14,5524,5525],{},[17,5526],{"alt":19,"src":5527},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1539.webp",[76,5529,5531],{"className":775,"code":5530,"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,5532,5533,5548,5556,5564,5580,5588,5596],{"__ignoreMap":19},[84,5534,5535,5537,5539,5541,5543,5546],{"class":86,"line":87},[84,5536,3821],{"class":633},[84,5538,806],{"class":793},[84,5540,1659],{"class":90},[84,5542,847],{"class":633},[84,5544,5545],{"class":94},"\"base_footprint\"",[84,5547,821],{"class":633},[84,5549,5550,5552,5554],{"class":86,"line":644},[84,5551,1676],{"class":633},[84,5553,818],{"class":793},[84,5555,821],{"class":633},[84,5557,5558,5560,5562],{"class":86,"line":800},[84,5559,1696],{"class":633},[84,5561,830],{"class":793},[84,5563,821],{"class":633},[84,5565,5566,5568,5570,5573,5575,5578],{"class":86,"line":812},[84,5567,1722],{"class":633},[84,5569,3615],{"class":793},[84,5571,5572],{"class":90}," radius",[84,5574,847],{"class":633},[84,5576,5577],{"class":94},"\"0.001\"",[84,5579,853],{"class":633},[84,5581,5582,5584,5586],{"class":86,"line":824},[84,5583,1747],{"class":633},[84,5585,830],{"class":793},[84,5587,821],{"class":633},[84,5589,5590,5592,5594],{"class":86,"line":835},[84,5591,1756],{"class":633},[84,5593,818],{"class":793},[84,5595,821],{"class":633},[84,5597,5598,5600,5602],{"class":86,"line":856},[84,5599,1765],{"class":633},[84,5601,806],{"class":793},[84,5603,821],{"class":633},[76,5605,5607],{"className":775,"code":5606,"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,5608,5609,5631,5645,5659,5674],{"__ignoreMap":19},[84,5610,5611,5613,5615,5617,5619,5622,5624,5626,5629],{"class":86,"line":87},[84,5612,1676],{"class":633},[84,5614,4651],{"class":793},[84,5616,1659],{"class":90},[84,5618,847],{"class":633},[84,5620,5621],{"class":94},"\"baselink2basefootprint\"",[84,5623,5357],{"class":90},[84,5625,847],{"class":633},[84,5627,5628],{"class":94},"\"fixed\"",[84,5630,821],{"class":633},[84,5632,5633,5635,5637,5639,5641,5643],{"class":86,"line":644},[84,5634,1696],{"class":633},[84,5636,4498],{"class":793},[84,5638,5373],{"class":90},[84,5640,847],{"class":633},[84,5642,5545],{"class":94},[84,5644,853],{"class":633},[84,5646,5647,5649,5651,5653,5655,5657],{"class":86,"line":800},[84,5648,1696],{"class":633},[84,5650,4513],{"class":793},[84,5652,5373],{"class":90},[84,5654,847],{"class":633},[84,5656,1685],{"class":94},[84,5658,853],{"class":633},[84,5660,5661,5663,5665,5667,5669,5672],{"class":86,"line":812},[84,5662,1696],{"class":633},[84,5664,3639],{"class":793},[84,5666,3936],{"class":90},[84,5668,847],{"class":633},[84,5670,5671],{"class":94},"\"0.0 0.0 0.05\"",[84,5673,853],{"class":633},[84,5675,5676,5678,5680],{"class":86,"line":824},[84,5677,1756],{"class":633},[84,5679,4651],{"class":793},[84,5681,821],{"class":633},[14,5683,5684],{},"Z的偏移量要填下沉底盘的距离，也就是整车底盘的一半。",[14,5686,5687,5690],{},[17,5688],{"alt":19,"src":5689},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1540.webp",[17,5691],{"alt":19,"src":5692},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1541.webp",[14,5694,5695],{},"修改参考坐标系",[14,5697,5698],{},"其实这个优化，可以不做，影响不大。但是建议用有basefootprint版本的。",[76,5700,5702],{"className":775,"code":5701,"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,5703,5704,5708,5723,5727,5741,5755,5763,5777,5791,5799,5803,5817,5825,5833,5847,5855,5863,5871,5875,5889,5897,5901,5909,5923,5931,5951,5965,5973,5981,5985,6005,6019,6033,6047,6055,6059,6073,6081,6089,6103,6111,6131,6145,6153,6161,6165,6185,6199,6213,6217,6237,6251,6259,6263],{"__ignoreMap":19},[84,5705,5706],{"class":86,"line":87},[84,5707,785],{"emptyLinePlaceholder":784},[84,5709,5710,5712,5714,5716,5718,5721],{"class":86,"line":644},[84,5711,790],{"class":633},[84,5713,794],{"class":793},[84,5715,1659],{"class":90},[84,5717,847],{"class":633},[84,5719,5720],{"class":94},"\"base_footprint_demo\"",[84,5722,821],{"class":633},[84,5724,5725],{"class":86,"line":800},[84,5726,785],{"emptyLinePlaceholder":784},[84,5728,5729,5731,5733,5735,5737,5739],{"class":86,"line":812},[84,5730,3821],{"class":633},[84,5732,3661],{"class":793},[84,5734,1659],{"class":90},[84,5736,847],{"class":633},[84,5738,3830],{"class":94},[84,5740,821],{"class":633},[84,5742,5743,5745,5747,5749,5751,5753],{"class":86,"line":824},[84,5744,1676],{"class":633},[84,5746,3676],{"class":793},[84,5748,3841],{"class":90},[84,5750,847],{"class":633},[84,5752,3846],{"class":94},[84,5754,3849],{"class":633},[84,5756,5757,5759,5761],{"class":86,"line":835},[84,5758,1765],{"class":633},[84,5760,3661],{"class":793},[84,5762,821],{"class":633},[84,5764,5765,5767,5769,5771,5773,5775],{"class":86,"line":856},[84,5766,3821],{"class":633},[84,5768,3661],{"class":793},[84,5770,1659],{"class":90},[84,5772,847],{"class":633},[84,5774,5098],{"class":94},[84,5776,821],{"class":633},[84,5778,5779,5781,5783,5785,5787,5789],{"class":86,"line":866},[84,5780,1676],{"class":633},[84,5782,3676],{"class":793},[84,5784,3841],{"class":90},[84,5786,847],{"class":633},[84,5788,5113],{"class":94},[84,5790,3849],{"class":633},[84,5792,5793,5795,5797],{"class":86,"line":876},[84,5794,1765],{"class":633},[84,5796,3661],{"class":793},[84,5798,821],{"class":633},[84,5800,5801],{"class":86,"line":886},[84,5802,785],{"emptyLinePlaceholder":784},[84,5804,5805,5807,5809,5811,5813,5815],{"class":86,"line":1018},[84,5806,3821],{"class":633},[84,5808,806],{"class":793},[84,5810,1659],{"class":90},[84,5812,847],{"class":633},[84,5814,5545],{"class":94},[84,5816,821],{"class":633},[84,5818,5819,5821,5823],{"class":86,"line":1023},[84,5820,1676],{"class":633},[84,5822,818],{"class":793},[84,5824,821],{"class":633},[84,5826,5827,5829,5831],{"class":86,"line":1040},[84,5828,1696],{"class":633},[84,5830,830],{"class":793},[84,5832,821],{"class":633},[84,5834,5835,5837,5839,5841,5843,5845],{"class":86,"line":1062},[84,5836,1722],{"class":633},[84,5838,3615],{"class":793},[84,5840,5572],{"class":90},[84,5842,847],{"class":633},[84,5844,5577],{"class":94},[84,5846,853],{"class":633},[84,5848,5849,5851,5853],{"class":86,"line":1082},[84,5850,1747],{"class":633},[84,5852,830],{"class":793},[84,5854,821],{"class":633},[84,5856,5857,5859,5861],{"class":86,"line":1113},[84,5858,1756],{"class":633},[84,5860,818],{"class":793},[84,5862,821],{"class":633},[84,5864,5865,5867,5869],{"class":86,"line":1118},[84,5866,1765],{"class":633},[84,5868,806],{"class":793},[84,5870,821],{"class":633},[84,5872,5873],{"class":86,"line":1124},[84,5874,785],{"emptyLinePlaceholder":784},[84,5876,5877,5879,5881,5883,5885,5887],{"class":86,"line":1129},[84,5878,3821],{"class":633},[84,5880,806],{"class":793},[84,5882,1659],{"class":90},[84,5884,847],{"class":633},[84,5886,1685],{"class":94},[84,5888,821],{"class":633},[84,5890,5891,5893,5895],{"class":86,"line":1135},[84,5892,1676],{"class":633},[84,5894,818],{"class":793},[84,5896,821],{"class":633},[84,5898,5899],{"class":86,"line":1157},[84,5900,785],{"emptyLinePlaceholder":784},[84,5902,5903,5905,5907],{"class":86,"line":1168},[84,5904,1709],{"class":633},[84,5906,830],{"class":793},[84,5908,821],{"class":633},[84,5910,5911,5913,5915,5917,5919,5921],{"class":86,"line":1182},[84,5912,3900],{"class":633},[84,5914,841],{"class":793},[84,5916,844],{"class":90},[84,5918,847],{"class":633},[84,5920,3909],{"class":94},[84,5922,3849],{"class":633},[84,5924,5925,5927,5929],{"class":86,"line":1194},[84,5926,1738],{"class":633},[84,5928,830],{"class":793},[84,5930,821],{"class":633},[84,5932,5933,5935,5937,5939,5941,5943,5945,5947,5949],{"class":86,"line":1211},[84,5934,1709],{"class":633},[84,5936,3639],{"class":793},[84,5938,3936],{"class":90},[84,5940,847],{"class":633},[84,5942,3941],{"class":94},[84,5944,3944],{"class":90},[84,5946,847],{"class":633},[84,5948,3941],{"class":94},[84,5950,3849],{"class":633},[84,5952,5953,5955,5957,5959,5961,5963],{"class":86,"line":1217},[84,5954,1709],{"class":633},[84,5956,3661],{"class":793},[84,5958,1659],{"class":90},[84,5960,847],{"class":633},[84,5962,3830],{"class":94},[84,5964,853],{"class":633},[84,5966,5967,5969,5971],{"class":86,"line":1222},[84,5968,1756],{"class":633},[84,5970,818],{"class":793},[84,5972,821],{"class":633},[84,5974,5975,5977,5979],{"class":86,"line":1228},[84,5976,1765],{"class":633},[84,5978,806],{"class":793},[84,5980,821],{"class":633},[84,5982,5983],{"class":86,"line":1238},[84,5984,785],{"emptyLinePlaceholder":784},[84,5986,5987,5989,5991,5993,5995,5997,5999,6001,6003],{"class":86,"line":1250},[84,5988,3821],{"class":633},[84,5990,4651],{"class":793},[84,5992,1659],{"class":90},[84,5994,847],{"class":633},[84,5996,5621],{"class":94},[84,5998,5357],{"class":90},[84,6000,847],{"class":633},[84,6002,5628],{"class":94},[84,6004,821],{"class":633},[84,6006,6007,6009,6011,6013,6015,6017],{"class":86,"line":1260},[84,6008,1676],{"class":633},[84,6010,4498],{"class":793},[84,6012,5373],{"class":90},[84,6014,847],{"class":633},[84,6016,5545],{"class":94},[84,6018,853],{"class":633},[84,6020,6021,6023,6025,6027,6029,6031],{"class":86,"line":1265},[84,6022,1676],{"class":633},[84,6024,4513],{"class":793},[84,6026,5373],{"class":90},[84,6028,847],{"class":633},[84,6030,1685],{"class":94},[84,6032,853],{"class":633},[84,6034,6035,6037,6039,6041,6043,6045],{"class":86,"line":1270},[84,6036,1676],{"class":633},[84,6038,3639],{"class":793},[84,6040,3936],{"class":90},[84,6042,847],{"class":633},[84,6044,5671],{"class":94},[84,6046,853],{"class":633},[84,6048,6049,6051,6053],{"class":86,"line":1276},[84,6050,1765],{"class":633},[84,6052,4651],{"class":793},[84,6054,821],{"class":633},[84,6056,6057],{"class":86,"line":1286},[84,6058,785],{"emptyLinePlaceholder":784},[84,6060,6061,6063,6065,6067,6069,6071],{"class":86,"line":1298},[84,6062,3821],{"class":633},[84,6064,806],{"class":793},[84,6066,1659],{"class":90},[84,6068,847],{"class":633},[84,6070,5246],{"class":94},[84,6072,821],{"class":633},[84,6074,6075,6077,6079],{"class":86,"line":1308},[84,6076,1696],{"class":633},[84,6078,818],{"class":793},[84,6080,821],{"class":633},[84,6082,6083,6085,6087],{"class":86,"line":1313},[84,6084,1722],{"class":633},[84,6086,830],{"class":793},[84,6088,821],{"class":633},[84,6090,6091,6093,6095,6097,6099,6101],{"class":86,"line":1319},[84,6092,4254],{"class":633},[84,6094,841],{"class":793},[84,6096,844],{"class":90},[84,6098,847],{"class":633},[84,6100,5277],{"class":94},[84,6102,3849],{"class":633},[84,6104,6105,6107,6109],{"class":86,"line":1324},[84,6106,4273],{"class":633},[84,6108,830],{"class":793},[84,6110,821],{"class":633},[84,6112,6113,6115,6117,6119,6121,6123,6125,6127,6129],{"class":86,"line":1333},[84,6114,1722],{"class":633},[84,6116,3639],{"class":793},[84,6118,3936],{"class":90},[84,6120,847],{"class":633},[84,6122,3941],{"class":94},[84,6124,3944],{"class":90},[84,6126,847],{"class":633},[84,6128,3941],{"class":94},[84,6130,3849],{"class":633},[84,6132,6133,6135,6137,6139,6141,6143],{"class":86,"line":1339},[84,6134,1722],{"class":633},[84,6136,3661],{"class":793},[84,6138,1659],{"class":90},[84,6140,847],{"class":633},[84,6142,5098],{"class":94},[84,6144,3849],{"class":633},[84,6146,6147,6149,6151],{"class":86,"line":1345},[84,6148,1747],{"class":633},[84,6150,818],{"class":793},[84,6152,821],{"class":633},[84,6154,6155,6157,6159],{"class":86,"line":1351},[84,6156,1765],{"class":633},[84,6158,806],{"class":793},[84,6160,821],{"class":633},[84,6162,6163],{"class":86,"line":1357},[84,6164,785],{"emptyLinePlaceholder":784},[84,6166,6167,6169,6171,6173,6175,6177,6179,6181,6183],{"class":86,"line":2242},[84,6168,3821],{"class":633},[84,6170,4651],{"class":793},[84,6172,1659],{"class":90},[84,6174,847],{"class":633},[84,6176,5354],{"class":94},[84,6178,5357],{"class":90},[84,6180,847],{"class":633},[84,6182,5628],{"class":94},[84,6184,821],{"class":633},[84,6186,6187,6189,6191,6193,6195,6197],{"class":86,"line":2247},[84,6188,1696],{"class":633},[84,6190,4498],{"class":793},[84,6192,5373],{"class":90},[84,6194,847],{"class":633},[84,6196,1685],{"class":94},[84,6198,853],{"class":633},[84,6200,6201,6203,6205,6207,6209,6211],{"class":86,"line":2257},[84,6202,1696],{"class":633},[84,6204,4513],{"class":793},[84,6206,5373],{"class":90},[84,6208,847],{"class":633},[84,6210,5246],{"class":94},[84,6212,3849],{"class":633},[84,6214,6215],{"class":86,"line":2268},[84,6216,785],{"emptyLinePlaceholder":784},[84,6218,6219,6221,6223,6225,6227,6229,6231,6233,6235],{"class":86,"line":2277},[84,6220,1696],{"class":633},[84,6222,3639],{"class":793},[84,6224,3936],{"class":90},[84,6226,847],{"class":633},[84,6228,5410],{"class":94},[84,6230,3944],{"class":90},[84,6232,847],{"class":633},[84,6234,3941],{"class":94},[84,6236,3849],{"class":633},[84,6238,6239,6241,6243,6245,6247,6249],{"class":86,"line":2282},[84,6240,1696],{"class":633},[84,6242,5425],{"class":793},[84,6244,3936],{"class":90},[84,6246,847],{"class":633},[84,6248,5432],{"class":94},[84,6250,3849],{"class":633},[84,6252,6253,6255,6257],{"class":86,"line":2287},[84,6254,1765],{"class":633},[84,6256,4651],{"class":793},[84,6258,821],{"class":633},[84,6260,6261],{"class":86,"line":2296},[84,6262,785],{"emptyLinePlaceholder":784},[84,6264,6265,6267,6269],{"class":86,"line":2904},[84,6266,3989],{"class":633},[84,6268,794],{"class":793},[84,6270,821],{"class":633},[653,6272,4766],{"id":6273},"练习-1",[14,6275,6276],{},[17,6277],{"alt":19,"src":6278},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1542.webp",[14,6280,6281],{},"没必要太深入练习，咱们可以直接用SolidWorks建模，更为友好。",[14,6283,6284],{},[17,6285],{"alt":19,"src":6286},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1543.webp",[76,6288,6290],{"className":775,"code":6289,"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,6291,6292,6296,6311,6315,6329,6343,6351,6365,6379,6387,6402,6417,6425,6429,6443,6451,6459,6473,6481,6489,6497,6501,6515,6523,6527,6535,6550,6558,6578,6592,6600,6608,6612,6632,6646,6660,6674,6682,6686,6701,6709,6717,6740,6748,6769,6783,6791,6799,6803,6824,6838,6852,6856,6877,6892,6900,6904,6919,6927,6935,6955,6963,6983,6997,7005,7013,7017,7038,7052,7066,7070,7091,7105,7113,7117,7132,7140,7148,7168,7176,7196,7211,7220,7229,7234,7256,7271,7286,7291,7313,7328,7337,7342,7358,7367,7376,7397,7406,7427,7442,7451,7460,7465,7487,7502,7517,7522,7544,7559,7568,7573],{"__ignoreMap":19},[84,6293,6294],{"class":86,"line":87},[84,6295,785],{"emptyLinePlaceholder":784},[84,6297,6298,6300,6302,6304,6306,6309],{"class":86,"line":644},[84,6299,790],{"class":633},[84,6301,794],{"class":793},[84,6303,1659],{"class":90},[84,6305,847],{"class":633},[84,6307,6308],{"class":94},"\"exercise_demo\"",[84,6310,821],{"class":633},[84,6312,6313],{"class":86,"line":800},[84,6314,785],{"emptyLinePlaceholder":784},[84,6316,6317,6319,6321,6323,6325,6327],{"class":86,"line":812},[84,6318,3821],{"class":633},[84,6320,3661],{"class":793},[84,6322,1659],{"class":90},[84,6324,847],{"class":633},[84,6326,3830],{"class":94},[84,6328,821],{"class":633},[84,6330,6331,6333,6335,6337,6339,6341],{"class":86,"line":824},[84,6332,1676],{"class":633},[84,6334,3676],{"class":793},[84,6336,3841],{"class":90},[84,6338,847],{"class":633},[84,6340,3846],{"class":94},[84,6342,3849],{"class":633},[84,6344,6345,6347,6349],{"class":86,"line":835},[84,6346,1765],{"class":633},[84,6348,3661],{"class":793},[84,6350,821],{"class":633},[84,6352,6353,6355,6357,6359,6361,6363],{"class":86,"line":856},[84,6354,3821],{"class":633},[84,6356,3661],{"class":793},[84,6358,1659],{"class":90},[84,6360,847],{"class":633},[84,6362,5098],{"class":94},[84,6364,821],{"class":633},[84,6366,6367,6369,6371,6373,6375,6377],{"class":86,"line":866},[84,6368,1676],{"class":633},[84,6370,3676],{"class":793},[84,6372,3841],{"class":90},[84,6374,847],{"class":633},[84,6376,5113],{"class":94},[84,6378,3849],{"class":633},[84,6380,6381,6383,6385],{"class":86,"line":876},[84,6382,1765],{"class":633},[84,6384,3661],{"class":793},[84,6386,821],{"class":633},[84,6388,6389,6391,6393,6395,6397,6400],{"class":86,"line":886},[84,6390,3821],{"class":633},[84,6392,3661],{"class":793},[84,6394,1659],{"class":90},[84,6396,847],{"class":633},[84,6398,6399],{"class":94},"\"gray\"",[84,6401,821],{"class":633},[84,6403,6404,6406,6408,6410,6412,6415],{"class":86,"line":1018},[84,6405,1676],{"class":633},[84,6407,3676],{"class":793},[84,6409,3841],{"class":90},[84,6411,847],{"class":633},[84,6413,6414],{"class":94},"\"0.2 0.2 0.2 0.8\"",[84,6416,3849],{"class":633},[84,6418,6419,6421,6423],{"class":86,"line":1023},[84,6420,1765],{"class":633},[84,6422,3661],{"class":793},[84,6424,821],{"class":633},[84,6426,6427],{"class":86,"line":1040},[84,6428,785],{"emptyLinePlaceholder":784},[84,6430,6431,6433,6435,6437,6439,6441],{"class":86,"line":1062},[84,6432,3821],{"class":633},[84,6434,806],{"class":793},[84,6436,1659],{"class":90},[84,6438,847],{"class":633},[84,6440,5545],{"class":94},[84,6442,821],{"class":633},[84,6444,6445,6447,6449],{"class":86,"line":1082},[84,6446,1676],{"class":633},[84,6448,818],{"class":793},[84,6450,821],{"class":633},[84,6452,6453,6455,6457],{"class":86,"line":1113},[84,6454,1696],{"class":633},[84,6456,830],{"class":793},[84,6458,821],{"class":633},[84,6460,6461,6463,6465,6467,6469,6471],{"class":86,"line":1118},[84,6462,1722],{"class":633},[84,6464,3615],{"class":793},[84,6466,5572],{"class":90},[84,6468,847],{"class":633},[84,6470,5577],{"class":94},[84,6472,853],{"class":633},[84,6474,6475,6477,6479],{"class":86,"line":1124},[84,6476,1747],{"class":633},[84,6478,830],{"class":793},[84,6480,821],{"class":633},[84,6482,6483,6485,6487],{"class":86,"line":1129},[84,6484,1756],{"class":633},[84,6486,818],{"class":793},[84,6488,821],{"class":633},[84,6490,6491,6493,6495],{"class":86,"line":1135},[84,6492,1765],{"class":633},[84,6494,806],{"class":793},[84,6496,821],{"class":633},[84,6498,6499],{"class":86,"line":1157},[84,6500,785],{"emptyLinePlaceholder":784},[84,6502,6503,6505,6507,6509,6511,6513],{"class":86,"line":1168},[84,6504,3821],{"class":633},[84,6506,806],{"class":793},[84,6508,1659],{"class":90},[84,6510,847],{"class":633},[84,6512,1685],{"class":94},[84,6514,821],{"class":633},[84,6516,6517,6519,6521],{"class":86,"line":1182},[84,6518,1676],{"class":633},[84,6520,818],{"class":793},[84,6522,821],{"class":633},[84,6524,6525],{"class":86,"line":1194},[84,6526,785],{"emptyLinePlaceholder":784},[84,6528,6529,6531,6533],{"class":86,"line":1211},[84,6530,1709],{"class":633},[84,6532,830],{"class":793},[84,6534,821],{"class":633},[84,6536,6537,6539,6541,6543,6545,6548],{"class":86,"line":1217},[84,6538,3900],{"class":633},[84,6540,841],{"class":793},[84,6542,844],{"class":90},[84,6544,847],{"class":633},[84,6546,6547],{"class":94},"\"0.2 0.12 0.07\"",[84,6549,3849],{"class":633},[84,6551,6552,6554,6556],{"class":86,"line":1222},[84,6553,1738],{"class":633},[84,6555,830],{"class":793},[84,6557,821],{"class":633},[84,6559,6560,6562,6564,6566,6568,6570,6572,6574,6576],{"class":86,"line":1228},[84,6561,1709],{"class":633},[84,6563,3639],{"class":793},[84,6565,3936],{"class":90},[84,6567,847],{"class":633},[84,6569,3941],{"class":94},[84,6571,3944],{"class":90},[84,6573,847],{"class":633},[84,6575,3941],{"class":94},[84,6577,3849],{"class":633},[84,6579,6580,6582,6584,6586,6588,6590],{"class":86,"line":1238},[84,6581,1709],{"class":633},[84,6583,3661],{"class":793},[84,6585,1659],{"class":90},[84,6587,847],{"class":633},[84,6589,3830],{"class":94},[84,6591,853],{"class":633},[84,6593,6594,6596,6598],{"class":86,"line":1250},[84,6595,1756],{"class":633},[84,6597,818],{"class":793},[84,6599,821],{"class":633},[84,6601,6602,6604,6606],{"class":86,"line":1260},[84,6603,1765],{"class":633},[84,6605,806],{"class":793},[84,6607,821],{"class":633},[84,6609,6610],{"class":86,"line":1265},[84,6611,785],{"emptyLinePlaceholder":784},[84,6613,6614,6616,6618,6620,6622,6624,6626,6628,6630],{"class":86,"line":1270},[84,6615,3821],{"class":633},[84,6617,4651],{"class":793},[84,6619,1659],{"class":90},[84,6621,847],{"class":633},[84,6623,5621],{"class":94},[84,6625,5357],{"class":90},[84,6627,847],{"class":633},[84,6629,5628],{"class":94},[84,6631,821],{"class":633},[84,6633,6634,6636,6638,6640,6642,6644],{"class":86,"line":1276},[84,6635,1676],{"class":633},[84,6637,4498],{"class":793},[84,6639,5373],{"class":90},[84,6641,847],{"class":633},[84,6643,5545],{"class":94},[84,6645,853],{"class":633},[84,6647,6648,6650,6652,6654,6656,6658],{"class":86,"line":1286},[84,6649,1676],{"class":633},[84,6651,4513],{"class":793},[84,6653,5373],{"class":90},[84,6655,847],{"class":633},[84,6657,1685],{"class":94},[84,6659,853],{"class":633},[84,6661,6662,6664,6666,6668,6670,6672],{"class":86,"line":1298},[84,6663,1676],{"class":633},[84,6665,3639],{"class":793},[84,6667,3936],{"class":90},[84,6669,847],{"class":633},[84,6671,5671],{"class":94},[84,6673,853],{"class":633},[84,6675,6676,6678,6680],{"class":86,"line":1308},[84,6677,1765],{"class":633},[84,6679,4651],{"class":793},[84,6681,821],{"class":633},[84,6683,6684],{"class":86,"line":1313},[84,6685,785],{"emptyLinePlaceholder":784},[84,6687,6688,6690,6692,6694,6696,6699],{"class":86,"line":1319},[84,6689,3821],{"class":633},[84,6691,806],{"class":793},[84,6693,1659],{"class":90},[84,6695,847],{"class":633},[84,6697,6698],{"class":94},"\"front_left_wheel\"",[84,6700,821],{"class":633},[84,6702,6703,6705,6707],{"class":86,"line":1324},[84,6704,1696],{"class":633},[84,6706,818],{"class":793},[84,6708,821],{"class":633},[84,6710,6711,6713,6715],{"class":86,"line":1333},[84,6712,1722],{"class":633},[84,6714,830],{"class":793},[84,6716,821],{"class":633},[84,6718,6719,6721,6723,6725,6727,6730,6733,6735,6738],{"class":86,"line":1339},[84,6720,4254],{"class":633},[84,6722,3607],{"class":793},[84,6724,5572],{"class":90},[84,6726,847],{"class":633},[84,6728,6729],{"class":94},"\"0.025\"",[84,6731,6732],{"class":90}," length",[84,6734,847],{"class":633},[84,6736,6737],{"class":94},"\"0.02\"",[84,6739,853],{"class":633},[84,6741,6742,6744,6746],{"class":86,"line":1345},[84,6743,4273],{"class":633},[84,6745,830],{"class":793},[84,6747,821],{"class":633},[84,6749,6750,6752,6754,6756,6758,6760,6762,6764,6767],{"class":86,"line":1351},[84,6751,1722],{"class":633},[84,6753,3639],{"class":793},[84,6755,3936],{"class":90},[84,6757,847],{"class":633},[84,6759,3941],{"class":94},[84,6761,3944],{"class":90},[84,6763,847],{"class":633},[84,6765,6766],{"class":94},"\"1.57 0 0\"",[84,6768,3849],{"class":633},[84,6770,6771,6773,6775,6777,6779,6781],{"class":86,"line":1357},[84,6772,1722],{"class":633},[84,6774,3661],{"class":793},[84,6776,1659],{"class":90},[84,6778,847],{"class":633},[84,6780,6399],{"class":94},[84,6782,3849],{"class":633},[84,6784,6785,6787,6789],{"class":86,"line":2242},[84,6786,1747],{"class":633},[84,6788,818],{"class":793},[84,6790,821],{"class":633},[84,6792,6793,6795,6797],{"class":86,"line":2247},[84,6794,1765],{"class":633},[84,6796,806],{"class":793},[84,6798,821],{"class":633},[84,6800,6801],{"class":86,"line":2257},[84,6802,785],{"emptyLinePlaceholder":784},[84,6804,6805,6807,6809,6811,6813,6816,6818,6820,6822],{"class":86,"line":2268},[84,6806,3821],{"class":633},[84,6808,4651],{"class":793},[84,6810,1659],{"class":90},[84,6812,847],{"class":633},[84,6814,6815],{"class":94},"\"frontleftwheel2baselink\"",[84,6817,5357],{"class":90},[84,6819,847],{"class":633},[84,6821,5362],{"class":94},[84,6823,821],{"class":633},[84,6825,6826,6828,6830,6832,6834,6836],{"class":86,"line":2277},[84,6827,1696],{"class":633},[84,6829,4498],{"class":793},[84,6831,5373],{"class":90},[84,6833,847],{"class":633},[84,6835,1685],{"class":94},[84,6837,853],{"class":633},[84,6839,6840,6842,6844,6846,6848,6850],{"class":86,"line":2282},[84,6841,1696],{"class":633},[84,6843,4513],{"class":793},[84,6845,5373],{"class":90},[84,6847,847],{"class":633},[84,6849,6698],{"class":94},[84,6851,3849],{"class":633},[84,6853,6854],{"class":86,"line":2287},[84,6855,785],{"emptyLinePlaceholder":784},[84,6857,6858,6860,6862,6864,6866,6869,6871,6873,6875],{"class":86,"line":2296},[84,6859,1696],{"class":633},[84,6861,3639],{"class":793},[84,6863,3936],{"class":90},[84,6865,847],{"class":633},[84,6867,6868],{"class":94},"\"0.075 0.06 -0.025\"",[84,6870,3944],{"class":90},[84,6872,847],{"class":633},[84,6874,3941],{"class":94},[84,6876,3849],{"class":633},[84,6878,6879,6881,6883,6885,6887,6890],{"class":86,"line":2904},[84,6880,1696],{"class":633},[84,6882,5425],{"class":793},[84,6884,3936],{"class":90},[84,6886,847],{"class":633},[84,6888,6889],{"class":94},"\"0 1 0\"",[84,6891,3849],{"class":633},[84,6893,6894,6896,6898],{"class":86,"line":2915},[84,6895,1765],{"class":633},[84,6897,4651],{"class":793},[84,6899,821],{"class":633},[84,6901,6902],{"class":86,"line":2943},[84,6903,785],{"emptyLinePlaceholder":784},[84,6905,6906,6908,6910,6912,6914,6917],{"class":86,"line":2948},[84,6907,3821],{"class":633},[84,6909,806],{"class":793},[84,6911,1659],{"class":90},[84,6913,847],{"class":633},[84,6915,6916],{"class":94},"\"front_right_wheel\"",[84,6918,821],{"class":633},[84,6920,6921,6923,6925],{"class":86,"line":2953},[84,6922,1676],{"class":633},[84,6924,818],{"class":793},[84,6926,821],{"class":633},[84,6928,6929,6931,6933],{"class":86,"line":2962},[84,6930,1709],{"class":633},[84,6932,830],{"class":793},[84,6934,821],{"class":633},[84,6936,6937,6939,6941,6943,6945,6947,6949,6951,6953],{"class":86,"line":3352},[84,6938,3900],{"class":633},[84,6940,3607],{"class":793},[84,6942,5572],{"class":90},[84,6944,847],{"class":633},[84,6946,6729],{"class":94},[84,6948,6732],{"class":90},[84,6950,847],{"class":633},[84,6952,6737],{"class":94},[84,6954,853],{"class":633},[84,6956,6957,6959,6961],{"class":86,"line":3358},[84,6958,1738],{"class":633},[84,6960,830],{"class":793},[84,6962,821],{"class":633},[84,6964,6965,6967,6969,6971,6973,6975,6977,6979,6981],{"class":86,"line":3363},[84,6966,1709],{"class":633},[84,6968,3639],{"class":793},[84,6970,3936],{"class":90},[84,6972,847],{"class":633},[84,6974,3941],{"class":94},[84,6976,3944],{"class":90},[84,6978,847],{"class":633},[84,6980,6766],{"class":94},[84,6982,3849],{"class":633},[84,6984,6985,6987,6989,6991,6993,6995],{"class":86,"line":3369},[84,6986,1709],{"class":633},[84,6988,3661],{"class":793},[84,6990,1659],{"class":90},[84,6992,847],{"class":633},[84,6994,6399],{"class":94},[84,6996,3849],{"class":633},[84,6998,6999,7001,7003],{"class":86,"line":3374},[84,7000,1756],{"class":633},[84,7002,818],{"class":793},[84,7004,821],{"class":633},[84,7006,7007,7009,7011],{"class":86,"line":3380},[84,7008,1765],{"class":633},[84,7010,806],{"class":793},[84,7012,821],{"class":633},[84,7014,7015],{"class":86,"line":3389},[84,7016,785],{"emptyLinePlaceholder":784},[84,7018,7019,7021,7023,7025,7027,7030,7032,7034,7036],{"class":86,"line":3401},[84,7020,3821],{"class":633},[84,7022,4651],{"class":793},[84,7024,1659],{"class":90},[84,7026,847],{"class":633},[84,7028,7029],{"class":94},"\"frontrightwheel2baselink\"",[84,7031,5357],{"class":90},[84,7033,847],{"class":633},[84,7035,5362],{"class":94},[84,7037,821],{"class":633},[84,7039,7040,7042,7044,7046,7048,7050],{"class":86,"line":3411},[84,7041,1696],{"class":633},[84,7043,4498],{"class":793},[84,7045,5373],{"class":90},[84,7047,847],{"class":633},[84,7049,1685],{"class":94},[84,7051,853],{"class":633},[84,7053,7054,7056,7058,7060,7062,7064],{"class":86,"line":3416},[84,7055,1696],{"class":633},[84,7057,4513],{"class":793},[84,7059,5373],{"class":90},[84,7061,847],{"class":633},[84,7063,6916],{"class":94},[84,7065,3849],{"class":633},[84,7067,7068],{"class":86,"line":3421},[84,7069,785],{"emptyLinePlaceholder":784},[84,7071,7072,7074,7076,7078,7080,7083,7085,7087,7089],{"class":86,"line":3430},[84,7073,1696],{"class":633},[84,7075,3639],{"class":793},[84,7077,3936],{"class":90},[84,7079,847],{"class":633},[84,7081,7082],{"class":94},"\"0.075 -0.06 -0.025\"",[84,7084,3944],{"class":90},[84,7086,847],{"class":633},[84,7088,3941],{"class":94},[84,7090,3849],{"class":633},[84,7092,7093,7095,7097,7099,7101,7103],{"class":86,"line":3441},[84,7094,1696],{"class":633},[84,7096,5425],{"class":793},[84,7098,3936],{"class":90},[84,7100,847],{"class":633},[84,7102,6889],{"class":94},[84,7104,3849],{"class":633},[84,7106,7107,7109,7111],{"class":86,"line":3452},[84,7108,1765],{"class":633},[84,7110,4651],{"class":793},[84,7112,821],{"class":633},[84,7114,7115],{"class":86,"line":3457},[84,7116,785],{"emptyLinePlaceholder":784},[84,7118,7119,7121,7123,7125,7127,7130],{"class":86,"line":3463},[84,7120,3821],{"class":633},[84,7122,806],{"class":793},[84,7124,1659],{"class":90},[84,7126,847],{"class":633},[84,7128,7129],{"class":94},"\"back_left_wheel\"",[84,7131,821],{"class":633},[84,7133,7134,7136,7138],{"class":86,"line":3477},[84,7135,1676],{"class":633},[84,7137,818],{"class":793},[84,7139,821],{"class":633},[84,7141,7142,7144,7146],{"class":86,"line":3482},[84,7143,1709],{"class":633},[84,7145,830],{"class":793},[84,7147,821],{"class":633},[84,7149,7150,7152,7154,7156,7158,7160,7162,7164,7166],{"class":86,"line":3487},[84,7151,3900],{"class":633},[84,7153,3607],{"class":793},[84,7155,5572],{"class":90},[84,7157,847],{"class":633},[84,7159,6729],{"class":94},[84,7161,6732],{"class":90},[84,7163,847],{"class":633},[84,7165,6737],{"class":94},[84,7167,853],{"class":633},[84,7169,7170,7172,7174],{"class":86,"line":3492},[84,7171,1738],{"class":633},[84,7173,830],{"class":793},[84,7175,821],{"class":633},[84,7177,7178,7180,7182,7184,7186,7188,7190,7192,7194],{"class":86,"line":3501},[84,7179,1709],{"class":633},[84,7181,3639],{"class":793},[84,7183,3936],{"class":90},[84,7185,847],{"class":633},[84,7187,3941],{"class":94},[84,7189,3944],{"class":90},[84,7191,847],{"class":633},[84,7193,6766],{"class":94},[84,7195,3849],{"class":633},[84,7197,7199,7201,7203,7205,7207,7209],{"class":86,"line":7198},81,[84,7200,1709],{"class":633},[84,7202,3661],{"class":793},[84,7204,1659],{"class":90},[84,7206,847],{"class":633},[84,7208,6399],{"class":94},[84,7210,3849],{"class":633},[84,7212,7214,7216,7218],{"class":86,"line":7213},82,[84,7215,1756],{"class":633},[84,7217,818],{"class":793},[84,7219,821],{"class":633},[84,7221,7223,7225,7227],{"class":86,"line":7222},83,[84,7224,1765],{"class":633},[84,7226,806],{"class":793},[84,7228,821],{"class":633},[84,7230,7232],{"class":86,"line":7231},84,[84,7233,785],{"emptyLinePlaceholder":784},[84,7235,7237,7239,7241,7243,7245,7248,7250,7252,7254],{"class":86,"line":7236},85,[84,7238,3821],{"class":633},[84,7240,4651],{"class":793},[84,7242,1659],{"class":90},[84,7244,847],{"class":633},[84,7246,7247],{"class":94},"\"backleftwheel2baselink\"",[84,7249,5357],{"class":90},[84,7251,847],{"class":633},[84,7253,5362],{"class":94},[84,7255,821],{"class":633},[84,7257,7259,7261,7263,7265,7267,7269],{"class":86,"line":7258},86,[84,7260,1676],{"class":633},[84,7262,4498],{"class":793},[84,7264,5373],{"class":90},[84,7266,847],{"class":633},[84,7268,1685],{"class":94},[84,7270,853],{"class":633},[84,7272,7274,7276,7278,7280,7282,7284],{"class":86,"line":7273},87,[84,7275,1676],{"class":633},[84,7277,4513],{"class":793},[84,7279,5373],{"class":90},[84,7281,847],{"class":633},[84,7283,7129],{"class":94},[84,7285,3849],{"class":633},[84,7287,7289],{"class":86,"line":7288},88,[84,7290,785],{"emptyLinePlaceholder":784},[84,7292,7294,7296,7298,7300,7302,7305,7307,7309,7311],{"class":86,"line":7293},89,[84,7295,1676],{"class":633},[84,7297,3639],{"class":793},[84,7299,3936],{"class":90},[84,7301,847],{"class":633},[84,7303,7304],{"class":94},"\"-0.075 0.06 -0.025\"",[84,7306,3944],{"class":90},[84,7308,847],{"class":633},[84,7310,3941],{"class":94},[84,7312,3849],{"class":633},[84,7314,7316,7318,7320,7322,7324,7326],{"class":86,"line":7315},90,[84,7317,1676],{"class":633},[84,7319,5425],{"class":793},[84,7321,3936],{"class":90},[84,7323,847],{"class":633},[84,7325,6889],{"class":94},[84,7327,3849],{"class":633},[84,7329,7331,7333,7335],{"class":86,"line":7330},91,[84,7332,1765],{"class":633},[84,7334,4651],{"class":793},[84,7336,821],{"class":633},[84,7338,7340],{"class":86,"line":7339},92,[84,7341,785],{"emptyLinePlaceholder":784},[84,7343,7345,7347,7349,7351,7353,7356],{"class":86,"line":7344},93,[84,7346,3821],{"class":633},[84,7348,806],{"class":793},[84,7350,1659],{"class":90},[84,7352,847],{"class":633},[84,7354,7355],{"class":94},"\"back_right_wheel\"",[84,7357,821],{"class":633},[84,7359,7361,7363,7365],{"class":86,"line":7360},94,[84,7362,1676],{"class":633},[84,7364,818],{"class":793},[84,7366,821],{"class":633},[84,7368,7370,7372,7374],{"class":86,"line":7369},95,[84,7371,1709],{"class":633},[84,7373,830],{"class":793},[84,7375,821],{"class":633},[84,7377,7379,7381,7383,7385,7387,7389,7391,7393,7395],{"class":86,"line":7378},96,[84,7380,3900],{"class":633},[84,7382,3607],{"class":793},[84,7384,5572],{"class":90},[84,7386,847],{"class":633},[84,7388,6729],{"class":94},[84,7390,6732],{"class":90},[84,7392,847],{"class":633},[84,7394,6737],{"class":94},[84,7396,853],{"class":633},[84,7398,7400,7402,7404],{"class":86,"line":7399},97,[84,7401,1738],{"class":633},[84,7403,830],{"class":793},[84,7405,821],{"class":633},[84,7407,7409,7411,7413,7415,7417,7419,7421,7423,7425],{"class":86,"line":7408},98,[84,7410,1709],{"class":633},[84,7412,3639],{"class":793},[84,7414,3936],{"class":90},[84,7416,847],{"class":633},[84,7418,3941],{"class":94},[84,7420,3944],{"class":90},[84,7422,847],{"class":633},[84,7424,6766],{"class":94},[84,7426,3849],{"class":633},[84,7428,7430,7432,7434,7436,7438,7440],{"class":86,"line":7429},99,[84,7431,1709],{"class":633},[84,7433,3661],{"class":793},[84,7435,1659],{"class":90},[84,7437,847],{"class":633},[84,7439,6399],{"class":94},[84,7441,3849],{"class":633},[84,7443,7445,7447,7449],{"class":86,"line":7444},100,[84,7446,1756],{"class":633},[84,7448,818],{"class":793},[84,7450,821],{"class":633},[84,7452,7454,7456,7458],{"class":86,"line":7453},101,[84,7455,1765],{"class":633},[84,7457,806],{"class":793},[84,7459,821],{"class":633},[84,7461,7463],{"class":86,"line":7462},102,[84,7464,785],{"emptyLinePlaceholder":784},[84,7466,7468,7470,7472,7474,7476,7479,7481,7483,7485],{"class":86,"line":7467},103,[84,7469,3821],{"class":633},[84,7471,4651],{"class":793},[84,7473,1659],{"class":90},[84,7475,847],{"class":633},[84,7477,7478],{"class":94},"\"backrightwheel2baselink\"",[84,7480,5357],{"class":90},[84,7482,847],{"class":633},[84,7484,5362],{"class":94},[84,7486,821],{"class":633},[84,7488,7490,7492,7494,7496,7498,7500],{"class":86,"line":7489},104,[84,7491,1676],{"class":633},[84,7493,4498],{"class":793},[84,7495,5373],{"class":90},[84,7497,847],{"class":633},[84,7499,1685],{"class":94},[84,7501,853],{"class":633},[84,7503,7505,7507,7509,7511,7513,7515],{"class":86,"line":7504},105,[84,7506,1676],{"class":633},[84,7508,4513],{"class":793},[84,7510,5373],{"class":90},[84,7512,847],{"class":633},[84,7514,7355],{"class":94},[84,7516,3849],{"class":633},[84,7518,7520],{"class":86,"line":7519},106,[84,7521,785],{"emptyLinePlaceholder":784},[84,7523,7525,7527,7529,7531,7533,7536,7538,7540,7542],{"class":86,"line":7524},107,[84,7526,1676],{"class":633},[84,7528,3639],{"class":793},[84,7530,3936],{"class":90},[84,7532,847],{"class":633},[84,7534,7535],{"class":94},"\"-0.075 -0.06 -0.025\"",[84,7537,3944],{"class":90},[84,7539,847],{"class":633},[84,7541,3941],{"class":94},[84,7543,3849],{"class":633},[84,7545,7547,7549,7551,7553,7555,7557],{"class":86,"line":7546},108,[84,7548,1676],{"class":633},[84,7550,5425],{"class":793},[84,7552,3936],{"class":90},[84,7554,847],{"class":633},[84,7556,6889],{"class":94},[84,7558,3849],{"class":633},[84,7560,7562,7564,7566],{"class":86,"line":7561},109,[84,7563,1765],{"class":633},[84,7565,4651],{"class":793},[84,7567,821],{"class":633},[84,7569,7571],{"class":86,"line":7570},110,[84,7572,785],{"emptyLinePlaceholder":784},[84,7574,7576,7578,7580],{"class":86,"line":7575},111,[84,7577,3989],{"class":633},[84,7579,794],{"class":793},[84,7581,821],{"class":633},[14,7583,7584],{},"终端运行",[76,7586,7588],{"className":78,"code":7587,"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,7589,7590],{"__ignoreMap":19},[84,7591,7592,7594,7596,7598,7600,7602,7604,7606,7608,7610],{"class":86,"line":87},[84,7593,724],{"class":90},[84,7595,1526],{"class":94},[84,7597,733],{"class":94},[84,7599,2518],{"class":94},[84,7601,2521],{"class":94},[84,7603,724],{"class":90},[84,7605,2526],{"class":94},[84,7607,2529],{"class":736},[84,7609,2532],{"class":94},[84,7611,7612],{"class":90},"\u002Furdf\u002Furdf\u002Fdemo05_exercise.urdf\n",[14,7614,7615],{},[17,7616],{"alt":19,"src":7617},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1544.webp",[10,7619,7621],{"id":7620},"urdf工具","URDF工具",[14,7623,7624],{},"在 ROS2 中，提供了一些URDF文件相关的工具，比如:",[163,7626,7627,7633],{},[142,7628,7629,7632],{},[71,7630,7631],{},"check_urdf","命令可以检查复杂的 urdf 文件是否存在语法问题；",[142,7634,7635,7638],{},[71,7636,7637],{},"urdf_to_graphviz","命令可以查看 urdf 模型结构，显示不同 link 的层级关系。",[14,7640,7641,7642,127],{},"当然，要使用工具之前，请先安装，安装命令：",[71,7643,7644],{},"sudo apt install liburdfdom-tools",[653,7646,7648],{"id":7647},"check_urdf-语法检查",[105,7649,7650],{},"check_urdf 语法检查",[14,7652,7653,7654,7657],{},"进入urdf文件所属目录，调用：",[71,7655,7656],{},"check_urdf urdf文件","，如果不抛出异常，说明文件合法，否则非法。",[14,7659,7660],{},"示例，终端下进入功能包 cpp06_urdf 的 urdf\u002Furdf 目录，执行如下命令：",[76,7662,7664],{"className":78,"code":7663,"language":80,"meta":19,"style":19},"check_urdf demo05_exercise.urdf\n",[71,7665,7666],{"__ignoreMap":19},[84,7667,7668,7670],{"class":86,"line":87},[84,7669,7631],{"class":90},[84,7671,7672],{"class":94}," demo05_exercise.urdf\n",[14,7674,7675],{},"urdf 文件如无异常，将显示urdf中link的层级关系，如下图所示：",[14,7677,7678],{},[17,7679],{"alt":19,"src":7680},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1545.webp",[14,7682,7683],{},"否则将会给出错误提示。",[14,7685,7686],{},[17,7687],{"alt":19,"src":7688},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1546.webp",[14,7690,7691],{},"演示错误，",[14,7693,7694],{},[17,7695],{"alt":19,"src":7696},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1547.webp",[653,7698,7700],{"id":7699},"urdf_to_graphviz-结构查看",[105,7701,7702],{},"urdf_to_graphviz 结构查看",[14,7704,7705,7706,7709],{},"进入urdf文件所属目录，调用:",[71,7707,7708],{},"urdf_to_graphviz urdf文件","，当前目录下会生成 pdf 文件。",[14,7711,7660],{},[76,7713,7715],{"className":78,"code":7714,"language":80,"meta":19,"style":19},"urdf_to_graphviz demo05_exercise.urdf\n",[71,7716,7717],{"__ignoreMap":19},[84,7718,7719,7721],{"class":86,"line":87},[84,7720,7637],{"class":90},[84,7722,7672],{"class":94},[14,7724,7725],{},"当前目录下，将生成以urdf中robot名称命名的.pdf和.gv文件，打开pdf文件会显示如下图内容：",[14,7727,7728],{},[17,7729],{"alt":19,"src":7730},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1548.webp",[14,7732,7733],{},"在上图中会以树形结构显示link与joint的关系。",[14,7735,7736,7738,7739,7742,7743,7745],{},[105,7737,3777],{}," 该工具以前名为",[71,7740,7741],{},"urdf_to_graphiz","现建议使用",[71,7744,7637],{},"替代。",[14,7747,7748],{},[17,7749],{"alt":19,"src":7750},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1549.webp",[14,7752,7753,7755,7756,127],{},[71,7754,7741],{},"是历史版本，已经被废弃，建议用",[71,7757,7637],{},[14,7759,7760],{},[17,7761],{"alt":19,"src":7762},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1550.webp",[14,7764,7765],{},[17,7766],{"alt":19,"src":7767},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1551.webp",[14,7769,7770],{},[17,7771],{"alt":19,"src":7772},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1552.webp",[14,7774,7775],{},[17,7776],{"alt":19,"src":7777},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1553.webp",[14,7779,7780],{},"黑色方框代表Link，蓝色代表Joint，也会展示平移量和旋转度等信息。",[10,7782,7784],{"id":7783},"sw2urdf","SW2URDF",[653,7786,7787],{"id":7787},"solidworks简介",[14,7789,7790],{},"SolidWorks是一种计算机辅助设计（CAD）和计算机辅助制造（CAM）软件，由Dassault Systèmes SolidWorks Corp.开发。它主要用于工程设计和制造，可用于创建3D三维模型、进行装配设计、进行工程分析和绘图等。SolidWorks具有直观的用户界面和强大的功能，使工程师和设计师能够快速而精确地设计复杂的零部件和装配体。该软件广泛应用于机械、航空航天、汽车、医疗设备等行业，是工程设计领域的重要工具之一。",[14,7792,7793],{},[17,7794],{"alt":19,"src":7795},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1554.webp",[653,7797,7798],{"id":7798},"solidworks插件sw2urdf介绍",[14,7800,7801],{},"sw2urdf插件维基百科：",[14,7803,7804],{},[4361,7805,7808],{"href":7806,"rel":7807},"https:\u002F\u002Fwiki.ros.org\u002Fsw%5C_urdf%5C_exporter",[4365],"https:\u002F\u002Fwiki.ros.org\u002Fsw\\_urdf\\_exporter",[14,7810,7811],{},"github下载链接：",[14,7813,7814],{},[4361,7815,7818],{"href":7816,"rel":7817},"https:\u002F\u002Fgithub.com\u002Fros\u002Fsolidworks%5C_urdf%5C_exporter\u002Freleases",[4365],"https:\u002F\u002Fgithub.com\u002Fros\u002Fsolidworks\\_urdf\\_exporter\u002Freleases",[14,7820,7821],{},"虽然github链接上写着只支持到SW2021，但是目前发现最新版SW(2022、2024经测试)也是可以正常用的。",[14,7823,7824],{},[17,7825],{"alt":19,"src":7826},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1555.webp",[653,7828,7829],{"id":7829},"安装sw2urdf",[139,7831,7832],{},[142,7833,7834],{},"去github上下载sw2urdf插件（这个SW版本不用管，实测在后续的SW版本依然可用）",[14,7836,7837],{},[17,7838],{"alt":19,"src":7839},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1556.webp",[139,7841,7842],{"start":644},[142,7843,7844],{},"查看SW的安装路径",[14,7846,7847],{},"比如我的路径\"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\\"",[14,7849,7850],{},[17,7851],{"alt":19,"src":7852},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1557.webp",[139,7854,7855],{"start":800},[142,7856,7857],{},"打开插件安装器，默认情况下会自动找到你的SW路径进行安装，如果没有自动找到路径安装，那么需要手动选取SW安装路径。",[14,7859,7860],{},[17,7861],{"alt":19,"src":7862},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1558.webp",[139,7864,7865],{"start":812},[142,7866,7867],{},"查看插件是否安装成功",[14,7869,7870],{},[17,7871],{"alt":19,"src":7872},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1559.webp",[14,7874,7875],{},[17,7876],{"alt":19,"src":7877},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1560.webp",[14,7879,7880],{},"如图这样就是安装成功了。",[653,7882,7884],{"id":7883},"导出urdf与meshes","导出URDF与Meshes",[139,7886,7887],{},[142,7888,7889],{},"如图是一个标准的SW装配体图(大家也可以尝试自己手撸一个，里面没有传动装置也可以)",[14,7891,7892,7893],{},"这个过程看不太懂的话，可以参考一下古月居老师的视频，结合本教程一起学习。 【SolidWorks模型导出urdf（古月居老师）-哔哩哔哩】",[4361,7894,7895],{"href":7895,"rel":7896},"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Tx411o7rH",[4365],[14,7898,7899],{},[17,7900],{"alt":19,"src":7901},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1561.webp",[139,7903,7904],{"start":644},[142,7905,7906],{},"对joint关节建立基准轴",[14,7908,7909],{},[17,7910],{"alt":19,"src":7911},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1562.webp",[14,7913,7914],{},"选择关节的圆柱面或者其他面，对转轴进行标定",[14,7916,7917],{},[17,7918],{"alt":19,"src":7919},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1563.webp",[14,7921,7922],{},"如果建完基准轴，发现不能够正常展示，那么就打开该选项。",[14,7924,7925],{},[17,7926],{"alt":19,"src":7927},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1564.webp",[14,7929,7930],{},[17,7931],{"alt":19,"src":7932},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1565.webp",[14,7934,7935],{},"建完所有系后",[139,7937,7938],{"start":800},[142,7939,7940],{},"打开export as URDF选项",[14,7942,7943],{},[17,7944],{"alt":19,"src":7945},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1566.webp",[139,7947,7948],{"start":812},[142,7949,7950],{},"需要先选择base_link基底刚体",[14,7952,7953],{},[17,7954],{"alt":19,"src":7955},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1567.webp",[14,7957,7958],{},"这里的Global Origin可能需要自己选择，就选择Origin_Global即可，但是一般选择automatically Generate即可。",[139,7960,7961],{"start":824},[142,7962,7963],{},"因为他的base_link通过一个joint连接了一个child_link，所以，这个选项要填1。",[14,7965,7966,7969],{},[17,7967],{"alt":19,"src":7968},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1568.webp",[17,7970],{"alt":19,"src":7971},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1569.webp",[14,7973,7974],{},"咱们把base_link连接的关节叫joint1，把joint1连接的更上面的刚体叫做link1,",[14,7976,7977],{},"然后参考基准轴选择刚才咱们在这个关节处建立的基准轴1，然后joint type关节类型选择revolute（有限位的关节，只有这样，机器人关节才可以正常运动）",[14,7979,7980],{},[17,7981],{"alt":19,"src":7982},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1570.webp",[14,7984,7985],{},"这里的参考坐标系系统可以选择automatically Generate，也可以选择Origin_Joint1。",[14,7987,7988],{},"然后再在link1上加一，创建link2。",[14,7990,7991],{},"后面的link3，link4添加步骤是一样的，不再详细展示。",[14,7993,7994],{},[17,7995],{"alt":19,"src":7996},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1571.webp",[14,7998,7999],{},[17,8000],{"alt":19,"src":8001},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1572.webp",[14,8003,8004],{},[17,8005],{"alt":19,"src":8006},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1573.webp",[139,8008,8009],{"start":835},[142,8010,8011],{},"点击preview and export",[14,8013,8014],{},[17,8015],{"alt":19,"src":8016},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1574.webp",[139,8018,8019],{"start":856},[142,8020,8021],{},"对关节进行限位设置",[14,8023,8024],{},"coordinates是坐标系，axis是轴，如果这里Axis坐标显示错误，那么说明Coordinates或者Axis选择错了，请手动选择正确的坐标系或者基准轴。",[14,8026,8027],{},[17,8028],{"alt":19,"src":8029},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1575.webp",[14,8031,8032],{},"如果转轴生成错误，比如都是000，可以自己填一下。",[14,8034,8035],{},[17,8036],{"alt":19,"src":8037},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1576.webp",[14,8039,8040],{},"比如这里是X轴，可以把左轮全填-100,右轮100（这里，仅供参考，chatgpt提供的解决方案）",[14,8042,8043],{},[17,8044],{"alt":19,"src":8045},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1577.webp",[139,8047,8048],{"start":866},[142,8049,8050],{},"查看矩阵，并点导出urdf与meshes",[14,8052,8053],{},[17,8054],{"alt":19,"src":8055},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1578.webp",[14,8057,8058],{},[17,8059],{"alt":19,"src":8060},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1579.webp",[14,8062,8063],{},[17,8064],{"alt":19,"src":8065},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1580.webp",[14,8067,8068],{},[17,8069],{"alt":19,"src":8070},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1581.webp",[14,8072,8073],{},"这样就成功生成ROS1的WS了，将WS移动至Linux系统。",[653,8075,8077],{"id":8076},"将ros1的ws转化为ros2的ws","将ROS1的WS转化为ROS2的WS",[139,8079,8080],{},[142,8081,8082],{},"先将ROS1的WS移动到Linux系统上",[14,8084,8085],{},[17,8086],{"alt":19,"src":8087},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1582.webp",[139,8089,8090],{"start":644},[142,8091,8092],{},"新建一个ROS2的WS",[14,8094,8095],{},[17,8096],{"alt":19,"src":8097},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1583.webp",[76,8099,8101],{"className":78,"code":8100,"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,8102,8103,8114,8122,8129,8136,8151,8158],{"__ignoreMap":19},[84,8104,8105,8108,8111],{"class":86,"line":87},[84,8106,8107],{"class":90},"mkdir",[84,8109,8110],{"class":736}," -p",[84,8112,8113],{"class":94}," ros2_4axisrobot_ws\u002Fsrc\n",[84,8115,8116,8119],{"class":86,"line":644},[84,8117,8118],{"class":736},"cd",[84,8120,8121],{"class":94}," ros2_4axisrobot_ws\u002F\n",[84,8123,8124,8126],{"class":86,"line":800},[84,8125,1492],{"class":90},[84,8127,8128],{"class":94}," build\n",[84,8130,8131,8133],{"class":86,"line":812},[84,8132,8118],{"class":736},[84,8134,8135],{"class":94}," src\n",[84,8137,8138,8140,8142,8144,8147,8149],{"class":86,"line":824},[84,8139,724],{"class":90},[84,8141,727],{"class":94},[84,8143,730],{"class":94},[84,8145,8146],{"class":94}," cpp01_urdf",[84,8148,737],{"class":736},[84,8150,740],{"class":94},[84,8152,8153,8155],{"class":86,"line":835},[84,8154,8118],{"class":736},[84,8156,8157],{"class":94}," ..\n",[84,8159,8160,8162],{"class":86,"line":856},[84,8161,71],{"class":90},[84,8163,8164],{"class":94}," .\n",[139,8166,8167],{"start":800},[142,8168,8169],{},"完善WS的目录",[14,8171,8172,8175],{},[17,8173],{"alt":19,"src":8174},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1584.webp",[17,8176],{"alt":19,"src":8177},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1585.webp",[14,8179,8180],{},"在.\u002Fsrc\u002Fcpp01_urdf路径下创建launch、meshes、rviz、urdf等等文件夹，在urdf文件夹下再新建urdf和xacro文件夹",[139,8182,8183],{"start":812},[142,8184,8185],{},"复制ROS1的WS里的URDF和Meshes到ROS2的WS中",[14,8187,8188,8191],{},[17,8189],{"alt":19,"src":8190},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1586.webp",[17,8192],{"alt":19,"src":8193},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1587.webp",[14,8195,8196],{},[17,8197],{"alt":19,"src":8198},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1588.webp",[139,8200,8201],{"start":824},[142,8202,8203],{},"对CMake和package进行配置",[14,8205,8206],{},"在CMake中请添加",[76,8208,8209],{"className":1445,"code":1446,"language":1447,"meta":19,"style":19},[71,8210,8211,8217,8221,8229],{"__ignoreMap":19},[84,8212,8213,8215],{"class":86,"line":87},[84,8214,1454],{"class":637},[84,8216,1457],{"class":633},[84,8218,8219],{"class":86,"line":644},[84,8220,1462],{"class":633},[84,8222,8223,8225,8227],{"class":86,"line":800},[84,8224,1467],{"class":633},[84,8226,1470],{"class":637},[84,8228,1473],{"class":633},[84,8230,8231],{"class":86,"line":812},[84,8232,1037],{"class":633},[14,8234,8235],{},"在Package.xml中请添加",[76,8237,8239],{"className":775,"code":8238,"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,8240,8241,8253,8265,8277,8289],{"__ignoreMap":19},[84,8242,8243,8245,8247,8249,8251],{"class":86,"line":87},[84,8244,3821],{"class":633},[84,8246,1378],{"class":793},[84,8248,1381],{"class":633},[84,8250,1378],{"class":793},[84,8252,821],{"class":633},[84,8254,8255,8257,8259,8261,8263],{"class":86,"line":644},[84,8256,3821],{"class":633},[84,8258,1378],{"class":793},[84,8260,1394],{"class":633},[84,8262,1378],{"class":793},[84,8264,821],{"class":633},[84,8266,8267,8269,8271,8273,8275],{"class":86,"line":800},[84,8268,3821],{"class":633},[84,8270,1378],{"class":793},[84,8272,1407],{"class":633},[84,8274,1378],{"class":793},[84,8276,821],{"class":633},[84,8278,8279,8281,8283,8285,8287],{"class":86,"line":812},[84,8280,3821],{"class":633},[84,8282,1378],{"class":793},[84,8284,1420],{"class":633},[84,8286,1378],{"class":793},[84,8288,821],{"class":633},[84,8290,8291,8293,8295,8297,8299],{"class":86,"line":824},[84,8292,3821],{"class":633},[84,8294,1378],{"class":793},[84,8296,1433],{"class":633},[84,8298,1378],{"class":793},[84,8300,821],{"class":633},[14,8302,8303],{},"CMakeLists.txt",[76,8305,8307],{"className":1445,"code":8306,"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,8308,8309,8323,8331,8335,8357,8365,8373,8377,8382,8390,8394,8399,8403,8408,8412,8417,8421,8427,8431,8439,8443,8447,8454,8462,8466,8471,8475,8480,8493,8497,8502,8506,8511,8515,8520,8531,8536,8542,8546],{"__ignoreMap":19},[84,8310,8311,8314,8317,8320],{"class":86,"line":87},[84,8312,8313],{"class":637},"cmake_minimum_required",[84,8315,8316],{"class":633},"(",[84,8318,8319],{"class":90},"VERSION",[84,8321,8322],{"class":633}," 3.8)\n",[84,8324,8325,8328],{"class":86,"line":644},[84,8326,8327],{"class":637},"project",[84,8329,8330],{"class":633},"(cpp01_urdf)\n",[84,8332,8333],{"class":86,"line":800},[84,8334,785],{"emptyLinePlaceholder":784},[84,8336,8337,8340,8343,8346,8349,8352,8355],{"class":86,"line":812},[84,8338,8339],{"class":637},"if",[84,8341,8342],{"class":633},"(CMAKE_COMPILER_IS_GNUCXX ",[84,8344,8345],{"class":637},"OR",[84,8347,8348],{"class":633}," CMAKE_CXX_COMPILER_ID ",[84,8350,8351],{"class":637},"MATCHES",[84,8353,8354],{"class":94}," \"Clang\"",[84,8356,1037],{"class":633},[84,8358,8359,8362],{"class":86,"line":824},[84,8360,8361],{"class":637},"  add_compile_options",[84,8363,8364],{"class":633},"(-Wall -Wextra -Wpedantic)\n",[84,8366,8367,8370],{"class":86,"line":835},[84,8368,8369],{"class":637},"endif",[84,8371,8372],{"class":633},"()\n",[84,8374,8375],{"class":86,"line":856},[84,8376,785],{"emptyLinePlaceholder":784},[84,8378,8379],{"class":86,"line":866},[84,8380,8381],{"class":1003},"# find dependencies\n",[84,8383,8384,8387],{"class":86,"line":876},[84,8385,8386],{"class":637},"find_package",[84,8388,8389],{"class":633},"(ament_cmake REQUIRED)\n",[84,8391,8392],{"class":86,"line":886},[84,8393,785],{"emptyLinePlaceholder":784},[84,8395,8396],{"class":86,"line":1018},[84,8397,8398],{"class":1003},"# uncomment the following section in order to fill in\n",[84,8400,8401],{"class":86,"line":1023},[84,8402,785],{"emptyLinePlaceholder":784},[84,8404,8405],{"class":86,"line":1040},[84,8406,8407],{"class":1003},"# further dependencies manually.\n",[84,8409,8410],{"class":86,"line":1062},[84,8411,785],{"emptyLinePlaceholder":784},[84,8413,8414],{"class":86,"line":1082},[84,8415,8416],{"class":1003},"# find_package(\u003Cdependency> REQUIRED)\n",[84,8418,8419],{"class":86,"line":1113},[84,8420,785],{"emptyLinePlaceholder":784},[84,8422,8423,8425],{"class":86,"line":1118},[84,8424,1454],{"class":637},[84,8426,1457],{"class":633},[84,8428,8429],{"class":86,"line":1124},[84,8430,1462],{"class":633},[84,8432,8433,8435,8437],{"class":86,"line":1129},[84,8434,1467],{"class":633},[84,8436,1470],{"class":637},[84,8438,1473],{"class":633},[84,8440,8441],{"class":86,"line":1135},[84,8442,1037],{"class":633},[84,8444,8445],{"class":86,"line":1157},[84,8446,785],{"emptyLinePlaceholder":784},[84,8448,8449,8451],{"class":86,"line":1168},[84,8450,8339],{"class":637},[84,8452,8453],{"class":633},"(BUILD_TESTING)\n",[84,8455,8456,8459],{"class":86,"line":1182},[84,8457,8458],{"class":637},"  find_package",[84,8460,8461],{"class":633},"(ament_lint_auto REQUIRED)\n",[84,8463,8464],{"class":86,"line":1194},[84,8465,785],{"emptyLinePlaceholder":784},[84,8467,8468],{"class":86,"line":1211},[84,8469,8470],{"class":1003},"  # the following line skips the linter which checks for copyrights\n",[84,8472,8473],{"class":86,"line":1217},[84,8474,785],{"emptyLinePlaceholder":784},[84,8476,8477],{"class":86,"line":1222},[84,8478,8479],{"class":1003},"  # comment the line when a copyright and license is added to all source files\n",[84,8481,8482,8485,8488,8491],{"class":86,"line":1228},[84,8483,8484],{"class":637},"  set",[84,8486,8487],{"class":633},"(ament_cmake_copyright_FOUND ",[84,8489,8490],{"class":637},"TRUE",[84,8492,1037],{"class":633},[84,8494,8495],{"class":86,"line":1238},[84,8496,785],{"emptyLinePlaceholder":784},[84,8498,8499],{"class":86,"line":1250},[84,8500,8501],{"class":1003},"  # the following line skips cpplint (only works in a git repo)\n",[84,8503,8504],{"class":86,"line":1260},[84,8505,785],{"emptyLinePlaceholder":784},[84,8507,8508],{"class":86,"line":1265},[84,8509,8510],{"class":1003},"  # comment the line when this package is in a git repo and when\n",[84,8512,8513],{"class":86,"line":1270},[84,8514,785],{"emptyLinePlaceholder":784},[84,8516,8517],{"class":86,"line":1276},[84,8518,8519],{"class":1003},"  # a copyright and license is added to all source files\n",[84,8521,8522,8524,8527,8529],{"class":86,"line":1286},[84,8523,8484],{"class":637},[84,8525,8526],{"class":633},"(ament_cmake_cpplint_FOUND ",[84,8528,8490],{"class":637},[84,8530,1037],{"class":633},[84,8532,8533],{"class":86,"line":1298},[84,8534,8535],{"class":633},"  ament_lint_auto_find_test_dependencies()\n",[84,8537,8538,8540],{"class":86,"line":1308},[84,8539,8369],{"class":637},[84,8541,8372],{"class":633},[84,8543,8544],{"class":86,"line":1313},[84,8545,785],{"emptyLinePlaceholder":784},[84,8547,8548],{"class":86,"line":1319},[84,8549,8550],{"class":633},"ament_package()\n",[14,8552,8553],{},"package.xml",[76,8555,8557],{"className":775,"code":8556,"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,8558,8559,8577,8602,8619,8632,8646,8660,8682,8696,8700,8714,8718,8730,8742,8754,8766,8778,8782,8796,8809,8813,8822,8835,8843],{"__ignoreMap":19},[84,8560,8561,8564,8566,8569,8571,8574],{"class":86,"line":87},[84,8562,8563],{"class":633},"\u003C?",[84,8565,777],{"class":793},[84,8567,8568],{"class":90}," version",[84,8570,847],{"class":633},[84,8572,8573],{"class":94},"\"1.0\"",[84,8575,8576],{"class":633},"?>\n",[84,8578,8579,8581,8584,8587,8589,8592,8595,8597,8600],{"class":86,"line":644},[84,8580,8563],{"class":633},[84,8582,8583],{"class":793},"xml-model",[84,8585,8586],{"class":90}," href",[84,8588,847],{"class":633},[84,8590,8591],{"class":94},"\"http:\u002F\u002Fdownload.ros.org\u002Fschema\u002Fpackage_format3.xsd\"",[84,8593,8594],{"class":90}," schematypens",[84,8596,847],{"class":633},[84,8598,8599],{"class":94},"\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema\"",[84,8601,8576],{"class":633},[84,8603,8604,8606,8609,8612,8614,8617],{"class":86,"line":800},[84,8605,1375],{"class":633},[84,8607,8608],{"class":793},"package",[84,8610,8611],{"class":90}," format",[84,8613,847],{"class":633},[84,8615,8616],{"class":94},"\"3\"",[84,8618,821],{"class":633},[84,8620,8621,8623,8625,8628,8630],{"class":86,"line":812},[84,8622,3821],{"class":633},[84,8624,1094],{"class":793},[84,8626,8627],{"class":633},">cpp01_urdf\u003C\u002F",[84,8629,1094],{"class":793},[84,8631,821],{"class":633},[84,8633,8634,8636,8639,8642,8644],{"class":86,"line":824},[84,8635,3821],{"class":633},[84,8637,8638],{"class":793},"version",[84,8640,8641],{"class":633},">0.0.0\u003C\u002F",[84,8643,8638],{"class":793},[84,8645,821],{"class":633},[84,8647,8648,8650,8653,8656,8658],{"class":86,"line":835},[84,8649,3821],{"class":633},[84,8651,8652],{"class":793},"description",[84,8654,8655],{"class":633},">TODO: Package description\u003C\u002F",[84,8657,8652],{"class":793},[84,8659,821],{"class":633},[84,8661,8662,8664,8667,8670,8672,8675,8678,8680],{"class":86,"line":856},[84,8663,3821],{"class":633},[84,8665,8666],{"class":793},"maintainer",[84,8668,8669],{"class":90}," email",[84,8671,847],{"class":633},[84,8673,8674],{"class":94},"\"tungchiahui@gmail.com\"",[84,8676,8677],{"class":633},">tungchiahui\u003C\u002F",[84,8679,8666],{"class":793},[84,8681,821],{"class":633},[84,8683,8684,8686,8689,8692,8694],{"class":86,"line":866},[84,8685,3821],{"class":633},[84,8687,8688],{"class":793},"license",[84,8690,8691],{"class":633},">TODO: License declaration\u003C\u002F",[84,8693,8688],{"class":793},[84,8695,821],{"class":633},[84,8697,8698],{"class":86,"line":876},[84,8699,785],{"emptyLinePlaceholder":784},[84,8701,8702,8704,8707,8710,8712],{"class":86,"line":886},[84,8703,3821],{"class":633},[84,8705,8706],{"class":793},"buildtool_depend",[84,8708,8709],{"class":633},">ament_cmake\u003C\u002F",[84,8711,8706],{"class":793},[84,8713,821],{"class":633},[84,8715,8716],{"class":86,"line":1018},[84,8717,785],{"emptyLinePlaceholder":784},[84,8719,8720,8722,8724,8726,8728],{"class":86,"line":1023},[84,8721,3821],{"class":633},[84,8723,1378],{"class":793},[84,8725,1381],{"class":633},[84,8727,1378],{"class":793},[84,8729,821],{"class":633},[84,8731,8732,8734,8736,8738,8740],{"class":86,"line":1040},[84,8733,3821],{"class":633},[84,8735,1378],{"class":793},[84,8737,1394],{"class":633},[84,8739,1378],{"class":793},[84,8741,821],{"class":633},[84,8743,8744,8746,8748,8750,8752],{"class":86,"line":1062},[84,8745,3821],{"class":633},[84,8747,1378],{"class":793},[84,8749,1407],{"class":633},[84,8751,1378],{"class":793},[84,8753,821],{"class":633},[84,8755,8756,8758,8760,8762,8764],{"class":86,"line":1082},[84,8757,3821],{"class":633},[84,8759,1378],{"class":793},[84,8761,1420],{"class":633},[84,8763,1378],{"class":793},[84,8765,821],{"class":633},[84,8767,8768,8770,8772,8774,8776],{"class":86,"line":1113},[84,8769,3821],{"class":633},[84,8771,1378],{"class":793},[84,8773,1433],{"class":633},[84,8775,1378],{"class":793},[84,8777,821],{"class":633},[84,8779,8780],{"class":86,"line":1118},[84,8781,785],{"emptyLinePlaceholder":784},[84,8783,8784,8786,8789,8792,8794],{"class":86,"line":1124},[84,8785,3821],{"class":633},[84,8787,8788],{"class":793},"test_depend",[84,8790,8791],{"class":633},">ament_lint_auto\u003C\u002F",[84,8793,8788],{"class":793},[84,8795,821],{"class":633},[84,8797,8798,8800,8802,8805,8807],{"class":86,"line":1129},[84,8799,3821],{"class":633},[84,8801,8788],{"class":793},[84,8803,8804],{"class":633},">ament_lint_common\u003C\u002F",[84,8806,8788],{"class":793},[84,8808,821],{"class":633},[84,8810,8811],{"class":86,"line":1135},[84,8812,785],{"emptyLinePlaceholder":784},[84,8814,8815,8817,8820],{"class":86,"line":1157},[84,8816,3821],{"class":633},[84,8818,8819],{"class":793},"export",[84,8821,821],{"class":633},[84,8823,8824,8826,8829,8831,8833],{"class":86,"line":1168},[84,8825,1676],{"class":633},[84,8827,8828],{"class":793},"build_type",[84,8830,8709],{"class":633},[84,8832,8828],{"class":793},[84,8834,821],{"class":633},[84,8836,8837,8839,8841],{"class":86,"line":1182},[84,8838,1765],{"class":633},[84,8840,8819],{"class":793},[84,8842,821],{"class":633},[84,8844,8845,8847,8849],{"class":86,"line":1194},[84,8846,3989],{"class":633},[84,8848,8608],{"class":793},[84,8850,821],{"class":633},[139,8852,8853],{"start":835},[142,8854,8855],{},"对launch文件进行编写",[14,8857,8858],{},"详细过程请看URDF有关Launch的核心优化那一节",[14,8860,8861],{},[17,8862],{"alt":19,"src":8863},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1589.webp",[76,8865,8867],{"className":909,"code":8866,"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,8868,8869,8879,8889,8893,8897,8901,8905,8909,8913,8917,8921,8931,8941,8945,8949,8953,8957,8961,8965,8969,8973,8977,8981,8985,8989,8993,8997,9001,9005,9009,9013,9017,9021,9031,9035,9045,9055,9059,9065,9069,9083,9087,9105,9121,9125,9147,9151,9167,9175,9185,9195,9207,9211,9215,9220,9224,9228,9232,9236,9240,9244,9248,9252,9256,9261,9269,9279,9287,9291,9295,9303,9313,9323,9327,9331,9343,9347,9351,9355,9363],{"__ignoreMap":19},[84,8870,8871,8873,8875,8877],{"class":86,"line":87},[84,8872,918],{"class":637},[84,8874,921],{"class":633},[84,8876,924],{"class":637},[84,8878,927],{"class":633},[84,8880,8881,8883,8885,8887],{"class":86,"line":644},[84,8882,918],{"class":637},[84,8884,934],{"class":633},[84,8886,924],{"class":637},[84,8888,939],{"class":633},[84,8890,8891],{"class":86,"line":800},[84,8892,785],{"emptyLinePlaceholder":784},[84,8894,8895],{"class":86,"line":812},[84,8896,1988],{"class":1003},[84,8898,8899],{"class":86,"line":824},[84,8900,785],{"emptyLinePlaceholder":784},[84,8902,8903],{"class":86,"line":835},[84,8904,1997],{"class":1003},[84,8906,8907],{"class":86,"line":856},[84,8908,785],{"emptyLinePlaceholder":784},[84,8910,8911],{"class":86,"line":866},[84,8912,2006],{"class":1003},[84,8914,8915],{"class":86,"line":876},[84,8916,785],{"emptyLinePlaceholder":784},[84,8918,8919],{"class":86,"line":886},[84,8920,2015],{"class":1003},[84,8922,8923,8925,8927,8929],{"class":86,"line":1018},[84,8924,918],{"class":637},[84,8926,989],{"class":633},[84,8928,924],{"class":637},[84,8930,994],{"class":633},[84,8932,8933,8935,8937,8939],{"class":86,"line":1023},[84,8934,918],{"class":637},[84,8936,977],{"class":633},[84,8938,924],{"class":637},[84,8940,2628],{"class":633},[84,8942,8943],{"class":86,"line":1040},[84,8944,785],{"emptyLinePlaceholder":784},[84,8946,8947],{"class":86,"line":1062},[84,8948,2042],{"class":1003},[84,8950,8951],{"class":86,"line":1082},[84,8952,785],{"emptyLinePlaceholder":784},[84,8954,8955],{"class":86,"line":1113},[84,8956,2051],{"class":1003},[84,8958,8959],{"class":86,"line":1118},[84,8960,785],{"emptyLinePlaceholder":784},[84,8962,8963],{"class":86,"line":1124},[84,8964,2060],{"class":1003},[84,8966,8967],{"class":86,"line":1129},[84,8968,785],{"emptyLinePlaceholder":784},[84,8970,8971],{"class":86,"line":1135},[84,8972,2069],{"class":1003},[84,8974,8975],{"class":86,"line":1157},[84,8976,785],{"emptyLinePlaceholder":784},[84,8978,8979],{"class":86,"line":1168},[84,8980,2078],{"class":1003},[84,8982,8983],{"class":86,"line":1182},[84,8984,785],{"emptyLinePlaceholder":784},[84,8986,8987],{"class":86,"line":1194},[84,8988,2087],{"class":1003},[84,8990,8991],{"class":86,"line":1211},[84,8992,785],{"emptyLinePlaceholder":784},[84,8994,8995],{"class":86,"line":1217},[84,8996,2096],{"class":1003},[84,8998,8999],{"class":86,"line":1222},[84,9000,785],{"emptyLinePlaceholder":784},[84,9002,9003],{"class":86,"line":1228},[84,9004,2105],{"class":1003},[84,9006,9007],{"class":86,"line":1238},[84,9008,785],{"emptyLinePlaceholder":784},[84,9010,9011],{"class":86,"line":1250},[84,9012,2114],{"class":1003},[84,9014,9015],{"class":86,"line":1260},[84,9016,785],{"emptyLinePlaceholder":784},[84,9018,9019],{"class":86,"line":1265},[84,9020,2123],{"class":1003},[84,9022,9023,9025,9027,9029],{"class":86,"line":1270},[84,9024,918],{"class":637},[84,9026,953],{"class":633},[84,9028,924],{"class":637},[84,9030,958],{"class":633},[84,9032,9033],{"class":86,"line":1276},[84,9034,785],{"emptyLinePlaceholder":784},[84,9036,9037,9039,9041,9043],{"class":86,"line":1286},[84,9038,918],{"class":637},[84,9040,965],{"class":633},[84,9042,924],{"class":637},[84,9044,970],{"class":633},[84,9046,9047,9049,9051,9053],{"class":86,"line":1298},[84,9048,918],{"class":637},[84,9050,977],{"class":633},[84,9052,924],{"class":637},[84,9054,2158],{"class":633},[84,9056,9057],{"class":86,"line":1308},[84,9058,785],{"emptyLinePlaceholder":784},[84,9060,9061,9063],{"class":86,"line":1313},[84,9062,924],{"class":637},[84,9064,946],{"class":633},[84,9066,9067],{"class":86,"line":1319},[84,9068,785],{"emptyLinePlaceholder":784},[84,9070,9071,9074,9076,9078,9081],{"class":86,"line":1324},[84,9072,9073],{"class":633},"cpp01_urdf_dir ",[84,9075,847],{"class":637},[84,9077,1031],{"class":633},[84,9079,9080],{"class":94},"\"cpp01_urdf\"",[84,9082,1037],{"class":633},[84,9084,9085],{"class":86,"line":1333},[84,9086,785],{"emptyLinePlaceholder":784},[84,9088,9089,9091,9093,9096,9098,9100,9103],{"class":86,"line":1339},[84,9090,3197],{"class":633},[84,9092,847],{"class":637},[84,9094,9095],{"class":633}," os.path.join(cpp01_urdf_dir,",[84,9097,1051],{"class":94},[84,9099,1054],{"class":633},[84,9101,9102],{"class":94},"\"4axisrobot.urdf\"",[84,9104,1037],{"class":633},[84,9106,9107,9109,9111,9113,9115,9117,9119],{"class":86,"line":1345},[84,9108,3215],{"class":633},[84,9110,847],{"class":637},[84,9112,9095],{"class":633},[84,9114,1072],{"class":94},[84,9116,1054],{"class":633},[84,9118,3226],{"class":94},[84,9120,1037],{"class":633},[84,9122,9123],{"class":86,"line":1351},[84,9124,785],{"emptyLinePlaceholder":784},[84,9126,9127,9129,9131,9133,9135,9137,9139,9141,9143,9145],{"class":86,"line":1357},[84,9128,2751],{"class":633},[84,9130,847],{"class":637},[84,9132,1090],{"class":633},[84,9134,1094],{"class":1093},[84,9136,847],{"class":637},[84,9138,1099],{"class":94},[84,9140,1054],{"class":633},[84,9142,1105],{"class":1093},[84,9144,847],{"class":637},[84,9146,1110],{"class":633},[84,9148,9149],{"class":86,"line":2242},[84,9150,785],{"emptyLinePlaceholder":784},[84,9152,9153,9155,9157,9159,9161,9163,9165],{"class":86,"line":2247},[84,9154,2167],{"class":633},[84,9156,847],{"class":637},[84,9158,1143],{"class":633},[84,9160,1146],{"class":94},[84,9162,1149],{"class":633},[84,9164,1099],{"class":94},[84,9166,1154],{"class":633},[84,9168,9169,9171,9173],{"class":86,"line":2257},[84,9170,2195],{"class":633},[84,9172,847],{"class":637},[84,9174,1165],{"class":633},[84,9176,9177,9179,9181,9183],{"class":86,"line":2268},[84,9178,2204],{"class":1093},[84,9180,847],{"class":637},[84,9182,1176],{"class":94},[84,9184,1179],{"class":633},[84,9186,9187,9189,9191,9193],{"class":86,"line":2277},[84,9188,2215],{"class":1093},[84,9190,847],{"class":637},[84,9192,1176],{"class":94},[84,9194,1179],{"class":633},[84,9196,9197,9199,9201,9203,9205],{"class":86,"line":2282},[84,9198,2226],{"class":1093},[84,9200,847],{"class":637},[84,9202,1202],{"class":633},[84,9204,1205],{"class":94},[84,9206,2235],{"class":633},[84,9208,9209],{"class":86,"line":2287},[84,9210,1037],{"class":633},[84,9212,9213],{"class":86,"line":2296},[84,9214,785],{"emptyLinePlaceholder":784},[84,9216,9217],{"class":86,"line":2904},[84,9218,9219],{"class":1003},"# 关节信息节点(建议)\n",[84,9221,9222],{"class":86,"line":2915},[84,9223,785],{"emptyLinePlaceholder":784},[84,9225,9226],{"class":86,"line":2943},[84,9227,3336],{"class":1003},[84,9229,9230],{"class":86,"line":2948},[84,9231,785],{"emptyLinePlaceholder":784},[84,9233,9234],{"class":86,"line":2953},[84,9235,3345],{"class":1003},[84,9237,9238],{"class":86,"line":2962},[84,9239,785],{"emptyLinePlaceholder":784},[84,9241,9242],{"class":86,"line":3352},[84,9243,3355],{"class":1003},[84,9245,9246],{"class":86,"line":3358},[84,9247,785],{"emptyLinePlaceholder":784},[84,9249,9250],{"class":86,"line":3363},[84,9251,3366],{"class":1003},[84,9253,9254],{"class":86,"line":3369},[84,9255,785],{"emptyLinePlaceholder":784},[84,9257,9258],{"class":86,"line":3374},[84,9259,9260],{"class":1003},"# 关节信息节点图形界面\n",[84,9262,9263,9265,9267],{"class":86,"line":3380},[84,9264,2853],{"class":633},[84,9266,847],{"class":637},[84,9268,1165],{"class":633},[84,9270,9271,9273,9275,9277],{"class":86,"line":3389},[84,9272,2204],{"class":1093},[84,9274,847],{"class":637},[84,9276,3396],{"class":94},[84,9278,1179],{"class":633},[84,9280,9281,9283,9285],{"class":86,"line":3401},[84,9282,2215],{"class":1093},[84,9284,847],{"class":637},[84,9286,3408],{"class":94},[84,9288,9289],{"class":86,"line":3411},[84,9290,1037],{"class":633},[84,9292,9293],{"class":86,"line":3416},[84,9294,785],{"emptyLinePlaceholder":784},[84,9296,9297,9299,9301],{"class":86,"line":3421},[84,9298,2250],{"class":633},[84,9300,847],{"class":637},[84,9302,1165],{"class":633},[84,9304,9305,9307,9309,9311],{"class":86,"line":3430},[84,9306,2204],{"class":1093},[84,9308,847],{"class":637},[84,9310,1293],{"class":94},[84,9312,1179],{"class":633},[84,9314,9315,9317,9319,9321],{"class":86,"line":3441},[84,9316,2215],{"class":1093},[84,9318,847],{"class":637},[84,9320,1293],{"class":94},[84,9322,1179],{"class":633},[84,9324,9325],{"class":86,"line":3452},[84,9326,785],{"emptyLinePlaceholder":784},[84,9328,9329],{"class":86,"line":3457},[84,9330,3460],{"class":1003},[84,9332,9333,9335,9337,9339,9341],{"class":86,"line":3463},[84,9334,2918],{"class":1093},[84,9336,847],{"class":637},[84,9338,2923],{"class":633},[84,9340,2926],{"class":94},[84,9342,3474],{"class":633},[84,9344,9345],{"class":86,"line":3477},[84,9346,785],{"emptyLinePlaceholder":784},[84,9348,9349],{"class":86,"line":3482},[84,9350,1214],{"class":633},[84,9352,9353],{"class":86,"line":3487},[84,9354,785],{"emptyLinePlaceholder":784},[84,9356,9357,9359,9361],{"class":86,"line":3492},[84,9358,1009],{"class":637},[84,9360,1012],{"class":90},[84,9362,1015],{"class":633},[84,9364,9365,9367],{"class":86,"line":3501},[84,9366,1327],{"class":637},[84,9368,2967],{"class":633},[139,9370,9371],{"start":856},[142,9372,9373],{},"对URDF文件进行修改",[14,9375,9376],{},"修改的内容主要有两项，一个是meshes的路径，一个是删掉易引起报错的注释。",[14,9378,9379],{},"主要由于ROS1的WS和ROS2的WS路径不同，所以，我们只需要修改有关路径的内容，比如说Meshes的路径",[14,9381,9382,9385],{},[17,9383],{"alt":19,"src":9384},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1590.webp",[17,9386],{"alt":19,"src":9387},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1591.webp",[14,9389,9390],{},"package:\u002F\u002F一般是share目录，所以我们需要从cpp01_urdf这一级开始写（share目录需要编译后才会显示）",[14,9392,9393],{},[17,9394],{"alt":19,"src":9395},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1592.webp",[14,9397,9398],{},"然后按Ctrl+H",[14,9400,9401],{},[17,9402],{"alt":19,"src":9403},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1593.webp",[14,9405,9406],{},[17,9407],{"alt":19,"src":9408},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1594.webp",[14,9410,9411],{},"然后还需要删除掉urdf文件刚开始的注释，否则也会报错",[14,9413,9414],{},[17,9415],{"alt":19,"src":9416},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1595.webp",[14,9418,9419],{},"如下是替换完毕的URDF文件：",[76,9421,9423],{"className":775,"code":9422,"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,9424,9425,9447,9454,9466,9473,9484,9492,9499,9509,9520,9527,9539,9546,9556,9566,9576,9586,9596,9608,9616,9624,9630,9639,9649,9657,9664,9676,9684,9691,9703,9710,9722,9730,9738,9746,9752,9760,9770,9778,9784,9794,9802,9810,9818,9824,9835,9843,9849,9858,9868,9874,9885,9891,9900,9909,9918,9927,9936,9947,9955,9963,9969,9977,9987,9995,10001,10012,10020,10026,10036,10042,10053,10061,10069,10077,10083,10091,10101,10109,10115,10125,10133,10141,10149,10156,10165,10177,10183,10193,10205,10212,10223,10230,10240,10247,10258,10265,10275,10285,10295,10307,10315,10321,10332,10340,10346,10355,10365,10371,10382,10388,10397,10407,10417,10427,10437,10449,10458,10467,10474,10483,10494,10503,10510,10522,10531,10538,10549,10556,10567,10576,10585,10594,10601,10610,10621,10630,10637,10648,10657,10666,10675,10682,10692,10703,10710,10720,10732,10739,10750,10757,10768,10775,10787,10794,10803,10812,10821,10832,10841,10848,10860,10869,10876,10886,10897,10904,10916,10923,10933,10943,10953,10963,10973,10985,10994,11003,11010,11019,11030,11039,11046,11058,11067,11074,11085,11092,11103,11112,11121,11130,11137,11146,11157,11166,11173,11184,11193,11202,11211,11218,11228,11239,11246,11256,11268,11275,11286,11293,11304,11311,11322,11329,11338,11347,11356,11367,11376,11383,11395,11404,11411,11421,11432,11439,11451,11458,11468,11478,11488,11498,11508,11520,11529,11538,11545,11554,11565,11574,11581,11593,11602,11609,11620,11627,11638,11647,11656,11665,11672,11681,11692,11701,11708,11719,11728,11737,11746,11753,11763,11774,11781,11791,11803,11810,11821,11828,11839,11846,11857,11864,11873,11882,11891,11902,11911],{"__ignoreMap":19},[84,9426,9427,9429,9431,9433,9435,9437,9440,9442,9445],{"class":86,"line":87},[84,9428,8563],{"class":633},[84,9430,777],{"class":793},[84,9432,8568],{"class":90},[84,9434,847],{"class":633},[84,9436,8573],{"class":94},[84,9438,9439],{"class":90}," encoding",[84,9441,847],{"class":633},[84,9443,9444],{"class":94},"\"utf-8\"",[84,9446,8576],{"class":633},[84,9448,9449,9451],{"class":86,"line":644},[84,9450,1375],{"class":633},[84,9452,9453],{"class":793},"robot\n",[84,9455,9456,9459,9461,9464],{"class":86,"line":800},[84,9457,9458],{"class":90},"  name",[84,9460,847],{"class":633},[84,9462,9463],{"class":94},"\"4axisrobot\"",[84,9465,821],{"class":633},[84,9467,9468,9470],{"class":86,"line":812},[84,9469,3821],{"class":633},[84,9471,9472],{"class":793},"link\n",[84,9474,9475,9478,9480,9482],{"class":86,"line":824},[84,9476,9477],{"class":90},"    name",[84,9479,847],{"class":633},[84,9481,1685],{"class":94},[84,9483,821],{"class":633},[84,9485,9486,9488,9490],{"class":86,"line":835},[84,9487,1676],{"class":633},[84,9489,3733],{"class":793},[84,9491,821],{"class":633},[84,9493,9494,9496],{"class":86,"line":856},[84,9495,1696],{"class":633},[84,9497,9498],{"class":793},"origin\n",[84,9500,9501,9504,9506],{"class":86,"line":866},[84,9502,9503],{"class":90},"        xyz",[84,9505,847],{"class":633},[84,9507,9508],{"class":94},"\"-0.0819771145953119 -0.0394328123681598 -0.0605612328464761\"\n",[84,9510,9511,9514,9516,9518],{"class":86,"line":876},[84,9512,9513],{"class":90},"        rpy",[84,9515,847],{"class":633},[84,9517,3941],{"class":94},[84,9519,3849],{"class":633},[84,9521,9522,9524],{"class":86,"line":886},[84,9523,1696],{"class":633},[84,9525,9526],{"class":793},"mass\n",[84,9528,9529,9532,9534,9537],{"class":86,"line":1018},[84,9530,9531],{"class":90},"        value",[84,9533,847],{"class":633},[84,9535,9536],{"class":94},"\"7.43807257011133\"",[84,9538,3849],{"class":633},[84,9540,9541,9543],{"class":86,"line":1023},[84,9542,1696],{"class":633},[84,9544,9545],{"class":793},"inertia\n",[84,9547,9548,9551,9553],{"class":86,"line":1040},[84,9549,9550],{"class":90},"        ixx",[84,9552,847],{"class":633},[84,9554,9555],{"class":94},"\"0.33173827700719\"\n",[84,9557,9558,9561,9563],{"class":86,"line":1062},[84,9559,9560],{"class":90},"        ixy",[84,9562,847],{"class":633},[84,9564,9565],{"class":94},"\"-1.91350798633049E-05\"\n",[84,9567,9568,9571,9573],{"class":86,"line":1082},[84,9569,9570],{"class":90},"        ixz",[84,9572,847],{"class":633},[84,9574,9575],{"class":94},"\"-2.38586363043925E-05\"\n",[84,9577,9578,9581,9583],{"class":86,"line":1113},[84,9579,9580],{"class":90},"        iyy",[84,9582,847],{"class":633},[84,9584,9585],{"class":94},"\"0.510937907009661\"\n",[84,9587,9588,9591,9593],{"class":86,"line":1118},[84,9589,9590],{"class":90},"        iyz",[84,9592,847],{"class":633},[84,9594,9595],{"class":94},"\"1.14706407748075E-05\"\n",[84,9597,9598,9601,9603,9606],{"class":86,"line":1124},[84,9599,9600],{"class":90},"        izz",[84,9602,847],{"class":633},[84,9604,9605],{"class":94},"\"0.66107272632796\"",[84,9607,3849],{"class":633},[84,9609,9610,9612,9614],{"class":86,"line":1129},[84,9611,1756],{"class":633},[84,9613,3733],{"class":793},[84,9615,821],{"class":633},[84,9617,9618,9620,9622],{"class":86,"line":1135},[84,9619,1676],{"class":633},[84,9621,818],{"class":793},[84,9623,821],{"class":633},[84,9625,9626,9628],{"class":86,"line":1157},[84,9627,1696],{"class":633},[84,9629,9498],{"class":793},[84,9631,9632,9634,9636],{"class":86,"line":1168},[84,9633,9503],{"class":90},[84,9635,847],{"class":633},[84,9637,9638],{"class":94},"\"0 0 0\"\n",[84,9640,9641,9643,9645,9647],{"class":86,"line":1182},[84,9642,9513],{"class":90},[84,9644,847],{"class":633},[84,9646,3941],{"class":94},[84,9648,3849],{"class":633},[84,9650,9651,9653,9655],{"class":86,"line":1194},[84,9652,1696],{"class":633},[84,9654,830],{"class":793},[84,9656,821],{"class":633},[84,9658,9659,9661],{"class":86,"line":1211},[84,9660,1709],{"class":633},[84,9662,9663],{"class":793},"mesh\n",[84,9665,9666,9669,9671,9674],{"class":86,"line":1217},[84,9667,9668],{"class":90},"          filename",[84,9670,847],{"class":633},[84,9672,9673],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Fbase_link.STL\"",[84,9675,3849],{"class":633},[84,9677,9678,9680,9682],{"class":86,"line":1222},[84,9679,1747],{"class":633},[84,9681,830],{"class":793},[84,9683,821],{"class":633},[84,9685,9686,9688],{"class":86,"line":1228},[84,9687,1696],{"class":633},[84,9689,9690],{"class":793},"material\n",[84,9692,9693,9696,9698,9701],{"class":86,"line":1238},[84,9694,9695],{"class":90},"        name",[84,9697,847],{"class":633},[84,9699,9700],{"class":94},"\"\"",[84,9702,821],{"class":633},[84,9704,9705,9707],{"class":86,"line":1250},[84,9706,1709],{"class":633},[84,9708,9709],{"class":793},"color\n",[84,9711,9712,9715,9717,9720],{"class":86,"line":1260},[84,9713,9714],{"class":90},"          rgba",[84,9716,847],{"class":633},[84,9718,9719],{"class":94},"\"0.792156862745098 0.819607843137255 0.933333333333333 1\"",[84,9721,3849],{"class":633},[84,9723,9724,9726,9728],{"class":86,"line":1265},[84,9725,1747],{"class":633},[84,9727,3661],{"class":793},[84,9729,821],{"class":633},[84,9731,9732,9734,9736],{"class":86,"line":1270},[84,9733,1756],{"class":633},[84,9735,818],{"class":793},[84,9737,821],{"class":633},[84,9739,9740,9742,9744],{"class":86,"line":1276},[84,9741,1676],{"class":633},[84,9743,3698],{"class":793},[84,9745,821],{"class":633},[84,9747,9748,9750],{"class":86,"line":1286},[84,9749,1696],{"class":633},[84,9751,9498],{"class":793},[84,9753,9754,9756,9758],{"class":86,"line":1298},[84,9755,9503],{"class":90},[84,9757,847],{"class":633},[84,9759,9638],{"class":94},[84,9761,9762,9764,9766,9768],{"class":86,"line":1308},[84,9763,9513],{"class":90},[84,9765,847],{"class":633},[84,9767,3941],{"class":94},[84,9769,3849],{"class":633},[84,9771,9772,9774,9776],{"class":86,"line":1313},[84,9773,1696],{"class":633},[84,9775,830],{"class":793},[84,9777,821],{"class":633},[84,9779,9780,9782],{"class":86,"line":1319},[84,9781,1709],{"class":633},[84,9783,9663],{"class":793},[84,9785,9786,9788,9790,9792],{"class":86,"line":1324},[84,9787,9668],{"class":90},[84,9789,847],{"class":633},[84,9791,9673],{"class":94},[84,9793,3849],{"class":633},[84,9795,9796,9798,9800],{"class":86,"line":1333},[84,9797,1747],{"class":633},[84,9799,830],{"class":793},[84,9801,821],{"class":633},[84,9803,9804,9806,9808],{"class":86,"line":1339},[84,9805,1756],{"class":633},[84,9807,3698],{"class":793},[84,9809,821],{"class":633},[84,9811,9812,9814,9816],{"class":86,"line":1345},[84,9813,1765],{"class":633},[84,9815,806],{"class":793},[84,9817,821],{"class":633},[84,9819,9820,9822],{"class":86,"line":1351},[84,9821,3821],{"class":633},[84,9823,9472],{"class":793},[84,9825,9826,9828,9830,9833],{"class":86,"line":1357},[84,9827,9477],{"class":90},[84,9829,847],{"class":633},[84,9831,9832],{"class":94},"\"link1\"",[84,9834,821],{"class":633},[84,9836,9837,9839,9841],{"class":86,"line":2242},[84,9838,1676],{"class":633},[84,9840,3733],{"class":793},[84,9842,821],{"class":633},[84,9844,9845,9847],{"class":86,"line":2247},[84,9846,1696],{"class":633},[84,9848,9498],{"class":793},[84,9850,9851,9853,9855],{"class":86,"line":2257},[84,9852,9503],{"class":90},[84,9854,847],{"class":633},[84,9856,9857],{"class":94},"\"0.19141 -0.050676 -0.030057\"\n",[84,9859,9860,9862,9864,9866],{"class":86,"line":2268},[84,9861,9513],{"class":90},[84,9863,847],{"class":633},[84,9865,3941],{"class":94},[84,9867,3849],{"class":633},[84,9869,9870,9872],{"class":86,"line":2277},[84,9871,1696],{"class":633},[84,9873,9526],{"class":793},[84,9875,9876,9878,9880,9883],{"class":86,"line":2282},[84,9877,9531],{"class":90},[84,9879,847],{"class":633},[84,9881,9882],{"class":94},"\"21.822\"",[84,9884,3849],{"class":633},[84,9886,9887,9889],{"class":86,"line":2287},[84,9888,1696],{"class":633},[84,9890,9545],{"class":793},[84,9892,9893,9895,9897],{"class":86,"line":2296},[84,9894,9550],{"class":90},[84,9896,847],{"class":633},[84,9898,9899],{"class":94},"\"0.50464\"\n",[84,9901,9902,9904,9906],{"class":86,"line":2904},[84,9903,9560],{"class":90},[84,9905,847],{"class":633},[84,9907,9908],{"class":94},"\"0.13295\"\n",[84,9910,9911,9913,9915],{"class":86,"line":2915},[84,9912,9570],{"class":90},[84,9914,847],{"class":633},[84,9916,9917],{"class":94},"\"0.087353\"\n",[84,9919,9920,9922,9924],{"class":86,"line":2943},[84,9921,9580],{"class":90},[84,9923,847],{"class":633},[84,9925,9926],{"class":94},"\"0.59136\"\n",[84,9928,9929,9931,9933],{"class":86,"line":2948},[84,9930,9590],{"class":90},[84,9932,847],{"class":633},[84,9934,9935],{"class":94},"\"-0.066053\"\n",[84,9937,9938,9940,9942,9945],{"class":86,"line":2953},[84,9939,9600],{"class":90},[84,9941,847],{"class":633},[84,9943,9944],{"class":94},"\"0.64081\"",[84,9946,3849],{"class":633},[84,9948,9949,9951,9953],{"class":86,"line":2962},[84,9950,1756],{"class":633},[84,9952,3733],{"class":793},[84,9954,821],{"class":633},[84,9956,9957,9959,9961],{"class":86,"line":3352},[84,9958,1676],{"class":633},[84,9960,818],{"class":793},[84,9962,821],{"class":633},[84,9964,9965,9967],{"class":86,"line":3358},[84,9966,1696],{"class":633},[84,9968,9498],{"class":793},[84,9970,9971,9973,9975],{"class":86,"line":3363},[84,9972,9503],{"class":90},[84,9974,847],{"class":633},[84,9976,9638],{"class":94},[84,9978,9979,9981,9983,9985],{"class":86,"line":3369},[84,9980,9513],{"class":90},[84,9982,847],{"class":633},[84,9984,3941],{"class":94},[84,9986,3849],{"class":633},[84,9988,9989,9991,9993],{"class":86,"line":3374},[84,9990,1696],{"class":633},[84,9992,830],{"class":793},[84,9994,821],{"class":633},[84,9996,9997,9999],{"class":86,"line":3380},[84,9998,1709],{"class":633},[84,10000,9663],{"class":793},[84,10002,10003,10005,10007,10010],{"class":86,"line":3389},[84,10004,9668],{"class":90},[84,10006,847],{"class":633},[84,10008,10009],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink1.STL\"",[84,10011,3849],{"class":633},[84,10013,10014,10016,10018],{"class":86,"line":3401},[84,10015,1747],{"class":633},[84,10017,830],{"class":793},[84,10019,821],{"class":633},[84,10021,10022,10024],{"class":86,"line":3411},[84,10023,1696],{"class":633},[84,10025,9690],{"class":793},[84,10027,10028,10030,10032,10034],{"class":86,"line":3416},[84,10029,9695],{"class":90},[84,10031,847],{"class":633},[84,10033,9700],{"class":94},[84,10035,821],{"class":633},[84,10037,10038,10040],{"class":86,"line":3421},[84,10039,1709],{"class":633},[84,10041,9709],{"class":793},[84,10043,10044,10046,10048,10051],{"class":86,"line":3430},[84,10045,9714],{"class":90},[84,10047,847],{"class":633},[84,10049,10050],{"class":94},"\"0.79216 0.81961 0.93333 1\"",[84,10052,3849],{"class":633},[84,10054,10055,10057,10059],{"class":86,"line":3441},[84,10056,1747],{"class":633},[84,10058,3661],{"class":793},[84,10060,821],{"class":633},[84,10062,10063,10065,10067],{"class":86,"line":3452},[84,10064,1756],{"class":633},[84,10066,818],{"class":793},[84,10068,821],{"class":633},[84,10070,10071,10073,10075],{"class":86,"line":3457},[84,10072,1676],{"class":633},[84,10074,3698],{"class":793},[84,10076,821],{"class":633},[84,10078,10079,10081],{"class":86,"line":3463},[84,10080,1696],{"class":633},[84,10082,9498],{"class":793},[84,10084,10085,10087,10089],{"class":86,"line":3477},[84,10086,9503],{"class":90},[84,10088,847],{"class":633},[84,10090,9638],{"class":94},[84,10092,10093,10095,10097,10099],{"class":86,"line":3482},[84,10094,9513],{"class":90},[84,10096,847],{"class":633},[84,10098,3941],{"class":94},[84,10100,3849],{"class":633},[84,10102,10103,10105,10107],{"class":86,"line":3487},[84,10104,1696],{"class":633},[84,10106,830],{"class":793},[84,10108,821],{"class":633},[84,10110,10111,10113],{"class":86,"line":3492},[84,10112,1709],{"class":633},[84,10114,9663],{"class":793},[84,10116,10117,10119,10121,10123],{"class":86,"line":3501},[84,10118,9668],{"class":90},[84,10120,847],{"class":633},[84,10122,10009],{"class":94},[84,10124,3849],{"class":633},[84,10126,10127,10129,10131],{"class":86,"line":7198},[84,10128,1747],{"class":633},[84,10130,830],{"class":793},[84,10132,821],{"class":633},[84,10134,10135,10137,10139],{"class":86,"line":7213},[84,10136,1756],{"class":633},[84,10138,3698],{"class":793},[84,10140,821],{"class":633},[84,10142,10143,10145,10147],{"class":86,"line":7222},[84,10144,1765],{"class":633},[84,10146,806],{"class":793},[84,10148,821],{"class":633},[84,10150,10151,10153],{"class":86,"line":7231},[84,10152,3821],{"class":633},[84,10154,10155],{"class":793},"joint\n",[84,10157,10158,10160,10162],{"class":86,"line":7236},[84,10159,9477],{"class":90},[84,10161,847],{"class":633},[84,10163,10164],{"class":94},"\"joint1\"\n",[84,10166,10167,10170,10172,10175],{"class":86,"line":7258},[84,10168,10169],{"class":90},"    type",[84,10171,847],{"class":633},[84,10173,10174],{"class":94},"\"revolute\"",[84,10176,821],{"class":633},[84,10178,10179,10181],{"class":86,"line":7273},[84,10180,1676],{"class":633},[84,10182,9498],{"class":793},[84,10184,10185,10188,10190],{"class":86,"line":7288},[84,10186,10187],{"class":90},"      xyz",[84,10189,847],{"class":633},[84,10191,10192],{"class":94},"\"-0.081947 -0.039447 0.11191\"\n",[84,10194,10195,10198,10200,10203],{"class":86,"line":7293},[84,10196,10197],{"class":90},"      rpy",[84,10199,847],{"class":633},[84,10201,10202],{"class":94},"\"0.40394 -1.5708 0\"",[84,10204,3849],{"class":633},[84,10206,10207,10209],{"class":86,"line":7315},[84,10208,1676],{"class":633},[84,10210,10211],{"class":793},"parent\n",[84,10213,10214,10217,10219,10221],{"class":86,"line":7330},[84,10215,10216],{"class":90},"      link",[84,10218,847],{"class":633},[84,10220,1685],{"class":94},[84,10222,3849],{"class":633},[84,10224,10225,10227],{"class":86,"line":7339},[84,10226,1676],{"class":633},[84,10228,10229],{"class":793},"child\n",[84,10231,10232,10234,10236,10238],{"class":86,"line":7344},[84,10233,10216],{"class":90},[84,10235,847],{"class":633},[84,10237,9832],{"class":94},[84,10239,3849],{"class":633},[84,10241,10242,10244],{"class":86,"line":7360},[84,10243,1676],{"class":633},[84,10245,10246],{"class":793},"axis\n",[84,10248,10249,10251,10253,10256],{"class":86,"line":7369},[84,10250,10187],{"class":90},[84,10252,847],{"class":633},[84,10254,10255],{"class":94},"\"1 0 0\"",[84,10257,3849],{"class":633},[84,10259,10260,10262],{"class":86,"line":7378},[84,10261,1676],{"class":633},[84,10263,10264],{"class":793},"limit\n",[84,10266,10267,10270,10272],{"class":86,"line":7399},[84,10268,10269],{"class":90},"      lower",[84,10271,847],{"class":633},[84,10273,10274],{"class":94},"\"-3.14\"\n",[84,10276,10277,10280,10282],{"class":86,"line":7408},[84,10278,10279],{"class":90},"      upper",[84,10281,847],{"class":633},[84,10283,10284],{"class":94},"\"3.14\"\n",[84,10286,10287,10290,10292],{"class":86,"line":7429},[84,10288,10289],{"class":90},"      effort",[84,10291,847],{"class":633},[84,10293,10294],{"class":94},"\"100\"\n",[84,10296,10297,10300,10302,10305],{"class":86,"line":7444},[84,10298,10299],{"class":90},"      velocity",[84,10301,847],{"class":633},[84,10303,10304],{"class":94},"\"1\"",[84,10306,3849],{"class":633},[84,10308,10309,10311,10313],{"class":86,"line":7453},[84,10310,1765],{"class":633},[84,10312,4651],{"class":793},[84,10314,821],{"class":633},[84,10316,10317,10319],{"class":86,"line":7462},[84,10318,3821],{"class":633},[84,10320,9472],{"class":793},[84,10322,10323,10325,10327,10330],{"class":86,"line":7467},[84,10324,9477],{"class":90},[84,10326,847],{"class":633},[84,10328,10329],{"class":94},"\"link2\"",[84,10331,821],{"class":633},[84,10333,10334,10336,10338],{"class":86,"line":7489},[84,10335,1676],{"class":633},[84,10337,3733],{"class":793},[84,10339,821],{"class":633},[84,10341,10342,10344],{"class":86,"line":7504},[84,10343,1696],{"class":633},[84,10345,9498],{"class":793},[84,10347,10348,10350,10352],{"class":86,"line":7519},[84,10349,9503],{"class":90},[84,10351,847],{"class":633},[84,10353,10354],{"class":94},"\"0.00711598521454873 0.430460941882332 -0.181074256126024\"\n",[84,10356,10357,10359,10361,10363],{"class":86,"line":7524},[84,10358,9513],{"class":90},[84,10360,847],{"class":633},[84,10362,3941],{"class":94},[84,10364,3849],{"class":633},[84,10366,10367,10369],{"class":86,"line":7546},[84,10368,1696],{"class":633},[84,10370,9526],{"class":793},[84,10372,10373,10375,10377,10380],{"class":86,"line":7561},[84,10374,9531],{"class":90},[84,10376,847],{"class":633},[84,10378,10379],{"class":94},"\"30.6115349647897\"",[84,10381,3849],{"class":633},[84,10383,10384,10386],{"class":86,"line":7570},[84,10385,1696],{"class":633},[84,10387,9545],{"class":793},[84,10389,10390,10392,10394],{"class":86,"line":7575},[84,10391,9550],{"class":90},[84,10393,847],{"class":633},[84,10395,10396],{"class":94},"\"2.84056101478768\"\n",[84,10398,10400,10402,10404],{"class":86,"line":10399},112,[84,10401,9560],{"class":90},[84,10403,847],{"class":633},[84,10405,10406],{"class":94},"\"0.00176700425270318\"\n",[84,10408,10410,10412,10414],{"class":86,"line":10409},113,[84,10411,9570],{"class":90},[84,10413,847],{"class":633},[84,10415,10416],{"class":94},"\"-0.000605507690039326\"\n",[84,10418,10420,10422,10424],{"class":86,"line":10419},114,[84,10421,9580],{"class":90},[84,10423,847],{"class":633},[84,10425,10426],{"class":94},"\"0.803420593303961\"\n",[84,10428,10430,10432,10434],{"class":86,"line":10429},115,[84,10431,9590],{"class":90},[84,10433,847],{"class":633},[84,10435,10436],{"class":94},"\"0.881921487314161\"\n",[84,10438,10440,10442,10444,10447],{"class":86,"line":10439},116,[84,10441,9600],{"class":90},[84,10443,847],{"class":633},[84,10445,10446],{"class":94},"\"2.25142021571439\"",[84,10448,3849],{"class":633},[84,10450,10452,10454,10456],{"class":86,"line":10451},117,[84,10453,1756],{"class":633},[84,10455,3733],{"class":793},[84,10457,821],{"class":633},[84,10459,10461,10463,10465],{"class":86,"line":10460},118,[84,10462,1676],{"class":633},[84,10464,818],{"class":793},[84,10466,821],{"class":633},[84,10468,10470,10472],{"class":86,"line":10469},119,[84,10471,1696],{"class":633},[84,10473,9498],{"class":793},[84,10475,10477,10479,10481],{"class":86,"line":10476},120,[84,10478,9503],{"class":90},[84,10480,847],{"class":633},[84,10482,9638],{"class":94},[84,10484,10486,10488,10490,10492],{"class":86,"line":10485},121,[84,10487,9513],{"class":90},[84,10489,847],{"class":633},[84,10491,3941],{"class":94},[84,10493,3849],{"class":633},[84,10495,10497,10499,10501],{"class":86,"line":10496},122,[84,10498,1696],{"class":633},[84,10500,830],{"class":793},[84,10502,821],{"class":633},[84,10504,10506,10508],{"class":86,"line":10505},123,[84,10507,1709],{"class":633},[84,10509,9663],{"class":793},[84,10511,10513,10515,10517,10520],{"class":86,"line":10512},124,[84,10514,9668],{"class":90},[84,10516,847],{"class":633},[84,10518,10519],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink2.STL\"",[84,10521,3849],{"class":633},[84,10523,10525,10527,10529],{"class":86,"line":10524},125,[84,10526,1747],{"class":633},[84,10528,830],{"class":793},[84,10530,821],{"class":633},[84,10532,10534,10536],{"class":86,"line":10533},126,[84,10535,1696],{"class":633},[84,10537,9690],{"class":793},[84,10539,10541,10543,10545,10547],{"class":86,"line":10540},127,[84,10542,9695],{"class":90},[84,10544,847],{"class":633},[84,10546,9700],{"class":94},[84,10548,821],{"class":633},[84,10550,10552,10554],{"class":86,"line":10551},128,[84,10553,1709],{"class":633},[84,10555,9709],{"class":793},[84,10557,10559,10561,10563,10565],{"class":86,"line":10558},129,[84,10560,9714],{"class":90},[84,10562,847],{"class":633},[84,10564,9719],{"class":94},[84,10566,3849],{"class":633},[84,10568,10570,10572,10574],{"class":86,"line":10569},130,[84,10571,1747],{"class":633},[84,10573,3661],{"class":793},[84,10575,821],{"class":633},[84,10577,10579,10581,10583],{"class":86,"line":10578},131,[84,10580,1756],{"class":633},[84,10582,818],{"class":793},[84,10584,821],{"class":633},[84,10586,10588,10590,10592],{"class":86,"line":10587},132,[84,10589,1676],{"class":633},[84,10591,3698],{"class":793},[84,10593,821],{"class":633},[84,10595,10597,10599],{"class":86,"line":10596},133,[84,10598,1696],{"class":633},[84,10600,9498],{"class":793},[84,10602,10604,10606,10608],{"class":86,"line":10603},134,[84,10605,9503],{"class":90},[84,10607,847],{"class":633},[84,10609,9638],{"class":94},[84,10611,10613,10615,10617,10619],{"class":86,"line":10612},135,[84,10614,9513],{"class":90},[84,10616,847],{"class":633},[84,10618,3941],{"class":94},[84,10620,3849],{"class":633},[84,10622,10624,10626,10628],{"class":86,"line":10623},136,[84,10625,1696],{"class":633},[84,10627,830],{"class":793},[84,10629,821],{"class":633},[84,10631,10633,10635],{"class":86,"line":10632},137,[84,10634,1709],{"class":633},[84,10636,9663],{"class":793},[84,10638,10640,10642,10644,10646],{"class":86,"line":10639},138,[84,10641,9668],{"class":90},[84,10643,847],{"class":633},[84,10645,10519],{"class":94},[84,10647,3849],{"class":633},[84,10649,10651,10653,10655],{"class":86,"line":10650},139,[84,10652,1747],{"class":633},[84,10654,830],{"class":793},[84,10656,821],{"class":633},[84,10658,10660,10662,10664],{"class":86,"line":10659},140,[84,10661,1756],{"class":633},[84,10663,3698],{"class":793},[84,10665,821],{"class":633},[84,10667,10669,10671,10673],{"class":86,"line":10668},141,[84,10670,1765],{"class":633},[84,10672,806],{"class":793},[84,10674,821],{"class":633},[84,10676,10678,10680],{"class":86,"line":10677},142,[84,10679,3821],{"class":633},[84,10681,10155],{"class":793},[84,10683,10685,10687,10689],{"class":86,"line":10684},143,[84,10686,9477],{"class":90},[84,10688,847],{"class":633},[84,10690,10691],{"class":94},"\"joint2\"\n",[84,10693,10695,10697,10699,10701],{"class":86,"line":10694},144,[84,10696,10169],{"class":90},[84,10698,847],{"class":633},[84,10700,10174],{"class":94},[84,10702,821],{"class":633},[84,10704,10706,10708],{"class":86,"line":10705},145,[84,10707,1676],{"class":633},[84,10709,9498],{"class":793},[84,10711,10713,10715,10717],{"class":86,"line":10712},146,[84,10714,10187],{"class":90},[84,10716,847],{"class":633},[84,10718,10719],{"class":94},"\"0.35141 -0.28119 0.13918\"\n",[84,10721,10723,10725,10727,10730],{"class":86,"line":10722},147,[84,10724,10197],{"class":90},[84,10726,847],{"class":633},[84,10728,10729],{"class":94},"\"-2.0566 1.1982 1.5708\"",[84,10731,3849],{"class":633},[84,10733,10735,10737],{"class":86,"line":10734},148,[84,10736,1676],{"class":633},[84,10738,10211],{"class":793},[84,10740,10742,10744,10746,10748],{"class":86,"line":10741},149,[84,10743,10216],{"class":90},[84,10745,847],{"class":633},[84,10747,9832],{"class":94},[84,10749,3849],{"class":633},[84,10751,10753,10755],{"class":86,"line":10752},150,[84,10754,1676],{"class":633},[84,10756,10229],{"class":793},[84,10758,10760,10762,10764,10766],{"class":86,"line":10759},151,[84,10761,10216],{"class":90},[84,10763,847],{"class":633},[84,10765,10329],{"class":94},[84,10767,3849],{"class":633},[84,10769,10771,10773],{"class":86,"line":10770},152,[84,10772,1676],{"class":633},[84,10774,10246],{"class":793},[84,10776,10778,10780,10782,10785],{"class":86,"line":10777},153,[84,10779,10187],{"class":90},[84,10781,847],{"class":633},[84,10783,10784],{"class":94},"\"-1 0 0\"",[84,10786,3849],{"class":633},[84,10788,10790,10792],{"class":86,"line":10789},154,[84,10791,1676],{"class":633},[84,10793,10264],{"class":793},[84,10795,10797,10799,10801],{"class":86,"line":10796},155,[84,10798,10269],{"class":90},[84,10800,847],{"class":633},[84,10802,10274],{"class":94},[84,10804,10806,10808,10810],{"class":86,"line":10805},156,[84,10807,10279],{"class":90},[84,10809,847],{"class":633},[84,10811,10284],{"class":94},[84,10813,10815,10817,10819],{"class":86,"line":10814},157,[84,10816,10289],{"class":90},[84,10818,847],{"class":633},[84,10820,10294],{"class":94},[84,10822,10824,10826,10828,10830],{"class":86,"line":10823},158,[84,10825,10299],{"class":90},[84,10827,847],{"class":633},[84,10829,10304],{"class":94},[84,10831,3849],{"class":633},[84,10833,10835,10837,10839],{"class":86,"line":10834},159,[84,10836,1765],{"class":633},[84,10838,4651],{"class":793},[84,10840,821],{"class":633},[84,10842,10844,10846],{"class":86,"line":10843},160,[84,10845,3821],{"class":633},[84,10847,9472],{"class":793},[84,10849,10851,10853,10855,10858],{"class":86,"line":10850},161,[84,10852,9477],{"class":90},[84,10854,847],{"class":633},[84,10856,10857],{"class":94},"\"link3\"",[84,10859,821],{"class":633},[84,10861,10863,10865,10867],{"class":86,"line":10862},162,[84,10864,1676],{"class":633},[84,10866,3733],{"class":793},[84,10868,821],{"class":633},[84,10870,10872,10874],{"class":86,"line":10871},163,[84,10873,1696],{"class":633},[84,10875,9498],{"class":793},[84,10877,10879,10881,10883],{"class":86,"line":10878},164,[84,10880,9503],{"class":90},[84,10882,847],{"class":633},[84,10884,10885],{"class":94},"\"0.00112887115421612 0.0366346915274407 0.31720330934553\"\n",[84,10887,10889,10891,10893,10895],{"class":86,"line":10888},165,[84,10890,9513],{"class":90},[84,10892,847],{"class":633},[84,10894,3941],{"class":94},[84,10896,3849],{"class":633},[84,10898,10900,10902],{"class":86,"line":10899},166,[84,10901,1696],{"class":633},[84,10903,9526],{"class":793},[84,10905,10907,10909,10911,10914],{"class":86,"line":10906},167,[84,10908,9531],{"class":90},[84,10910,847],{"class":633},[84,10912,10913],{"class":94},"\"32.192726667578\"",[84,10915,3849],{"class":633},[84,10917,10919,10921],{"class":86,"line":10918},168,[84,10920,1696],{"class":633},[84,10922,9545],{"class":793},[84,10924,10926,10928,10930],{"class":86,"line":10925},169,[84,10927,9550],{"class":90},[84,10929,847],{"class":633},[84,10931,10932],{"class":94},"\"4.01515983126431\"\n",[84,10934,10936,10938,10940],{"class":86,"line":10935},170,[84,10937,9560],{"class":90},[84,10939,847],{"class":633},[84,10941,10942],{"class":94},"\"0.0013193752174692\"\n",[84,10944,10946,10948,10950],{"class":86,"line":10945},171,[84,10947,9570],{"class":90},[84,10949,847],{"class":633},[84,10951,10952],{"class":94},"\"0.0113529938102155\"\n",[84,10954,10956,10958,10960],{"class":86,"line":10955},172,[84,10957,9580],{"class":90},[84,10959,847],{"class":633},[84,10961,10962],{"class":94},"\"3.86196311673823\"\n",[84,10964,10966,10968,10970],{"class":86,"line":10965},173,[84,10967,9590],{"class":90},[84,10969,847],{"class":633},[84,10971,10972],{"class":94},"\"-0.336440022491883\"\n",[84,10974,10976,10978,10980,10983],{"class":86,"line":10975},174,[84,10977,9600],{"class":90},[84,10979,847],{"class":633},[84,10981,10982],{"class":94},"\"0.399977905540088\"",[84,10984,3849],{"class":633},[84,10986,10988,10990,10992],{"class":86,"line":10987},175,[84,10989,1756],{"class":633},[84,10991,3733],{"class":793},[84,10993,821],{"class":633},[84,10995,10997,10999,11001],{"class":86,"line":10996},176,[84,10998,1676],{"class":633},[84,11000,818],{"class":793},[84,11002,821],{"class":633},[84,11004,11006,11008],{"class":86,"line":11005},177,[84,11007,1696],{"class":633},[84,11009,9498],{"class":793},[84,11011,11013,11015,11017],{"class":86,"line":11012},178,[84,11014,9503],{"class":90},[84,11016,847],{"class":633},[84,11018,9638],{"class":94},[84,11020,11022,11024,11026,11028],{"class":86,"line":11021},179,[84,11023,9513],{"class":90},[84,11025,847],{"class":633},[84,11027,3941],{"class":94},[84,11029,3849],{"class":633},[84,11031,11033,11035,11037],{"class":86,"line":11032},180,[84,11034,1696],{"class":633},[84,11036,830],{"class":793},[84,11038,821],{"class":633},[84,11040,11042,11044],{"class":86,"line":11041},181,[84,11043,1709],{"class":633},[84,11045,9663],{"class":793},[84,11047,11049,11051,11053,11056],{"class":86,"line":11048},182,[84,11050,9668],{"class":90},[84,11052,847],{"class":633},[84,11054,11055],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink3.STL\"",[84,11057,3849],{"class":633},[84,11059,11061,11063,11065],{"class":86,"line":11060},183,[84,11062,1747],{"class":633},[84,11064,830],{"class":793},[84,11066,821],{"class":633},[84,11068,11070,11072],{"class":86,"line":11069},184,[84,11071,1696],{"class":633},[84,11073,9690],{"class":793},[84,11075,11077,11079,11081,11083],{"class":86,"line":11076},185,[84,11078,9695],{"class":90},[84,11080,847],{"class":633},[84,11082,9700],{"class":94},[84,11084,821],{"class":633},[84,11086,11088,11090],{"class":86,"line":11087},186,[84,11089,1709],{"class":633},[84,11091,9709],{"class":793},[84,11093,11095,11097,11099,11101],{"class":86,"line":11094},187,[84,11096,9714],{"class":90},[84,11098,847],{"class":633},[84,11100,9719],{"class":94},[84,11102,3849],{"class":633},[84,11104,11106,11108,11110],{"class":86,"line":11105},188,[84,11107,1747],{"class":633},[84,11109,3661],{"class":793},[84,11111,821],{"class":633},[84,11113,11115,11117,11119],{"class":86,"line":11114},189,[84,11116,1756],{"class":633},[84,11118,818],{"class":793},[84,11120,821],{"class":633},[84,11122,11124,11126,11128],{"class":86,"line":11123},190,[84,11125,1676],{"class":633},[84,11127,3698],{"class":793},[84,11129,821],{"class":633},[84,11131,11133,11135],{"class":86,"line":11132},191,[84,11134,1696],{"class":633},[84,11136,9498],{"class":793},[84,11138,11140,11142,11144],{"class":86,"line":11139},192,[84,11141,9503],{"class":90},[84,11143,847],{"class":633},[84,11145,9638],{"class":94},[84,11147,11149,11151,11153,11155],{"class":86,"line":11148},193,[84,11150,9513],{"class":90},[84,11152,847],{"class":633},[84,11154,3941],{"class":94},[84,11156,3849],{"class":633},[84,11158,11160,11162,11164],{"class":86,"line":11159},194,[84,11161,1696],{"class":633},[84,11163,830],{"class":793},[84,11165,821],{"class":633},[84,11167,11169,11171],{"class":86,"line":11168},195,[84,11170,1709],{"class":633},[84,11172,9663],{"class":793},[84,11174,11176,11178,11180,11182],{"class":86,"line":11175},196,[84,11177,9668],{"class":90},[84,11179,847],{"class":633},[84,11181,11055],{"class":94},[84,11183,3849],{"class":633},[84,11185,11187,11189,11191],{"class":86,"line":11186},197,[84,11188,1747],{"class":633},[84,11190,830],{"class":793},[84,11192,821],{"class":633},[84,11194,11196,11198,11200],{"class":86,"line":11195},198,[84,11197,1756],{"class":633},[84,11199,3698],{"class":793},[84,11201,821],{"class":633},[84,11203,11205,11207,11209],{"class":86,"line":11204},199,[84,11206,1765],{"class":633},[84,11208,806],{"class":793},[84,11210,821],{"class":633},[84,11212,11214,11216],{"class":86,"line":11213},200,[84,11215,3821],{"class":633},[84,11217,10155],{"class":793},[84,11219,11221,11223,11225],{"class":86,"line":11220},201,[84,11222,9477],{"class":90},[84,11224,847],{"class":633},[84,11226,11227],{"class":94},"\"joint3\"\n",[84,11229,11231,11233,11235,11237],{"class":86,"line":11230},202,[84,11232,10169],{"class":90},[84,11234,847],{"class":633},[84,11236,10174],{"class":94},[84,11238,821],{"class":633},[84,11240,11242,11244],{"class":86,"line":11241},203,[84,11243,1676],{"class":633},[84,11245,9498],{"class":793},[84,11247,11249,11251,11253],{"class":86,"line":11248},204,[84,11250,10187],{"class":90},[84,11252,847],{"class":633},[84,11254,11255],{"class":94},"\"0.3765 0.82481 -0.49591\"\n",[84,11257,11259,11261,11263,11266],{"class":86,"line":11258},205,[84,11260,10197],{"class":90},[84,11262,847],{"class":633},[84,11264,11265],{"class":94},"\"2.5802 0 0\"",[84,11267,3849],{"class":633},[84,11269,11271,11273],{"class":86,"line":11270},206,[84,11272,1676],{"class":633},[84,11274,10211],{"class":793},[84,11276,11278,11280,11282,11284],{"class":86,"line":11277},207,[84,11279,10216],{"class":90},[84,11281,847],{"class":633},[84,11283,10329],{"class":94},[84,11285,3849],{"class":633},[84,11287,11289,11291],{"class":86,"line":11288},208,[84,11290,1676],{"class":633},[84,11292,10229],{"class":793},[84,11294,11296,11298,11300,11302],{"class":86,"line":11295},209,[84,11297,10216],{"class":90},[84,11299,847],{"class":633},[84,11301,10857],{"class":94},[84,11303,3849],{"class":633},[84,11305,11307,11309],{"class":86,"line":11306},210,[84,11308,1676],{"class":633},[84,11310,10246],{"class":793},[84,11312,11314,11316,11318,11320],{"class":86,"line":11313},211,[84,11315,10187],{"class":90},[84,11317,847],{"class":633},[84,11319,10255],{"class":94},[84,11321,3849],{"class":633},[84,11323,11325,11327],{"class":86,"line":11324},212,[84,11326,1676],{"class":633},[84,11328,10264],{"class":793},[84,11330,11332,11334,11336],{"class":86,"line":11331},213,[84,11333,10269],{"class":90},[84,11335,847],{"class":633},[84,11337,10274],{"class":94},[84,11339,11341,11343,11345],{"class":86,"line":11340},214,[84,11342,10279],{"class":90},[84,11344,847],{"class":633},[84,11346,10284],{"class":94},[84,11348,11350,11352,11354],{"class":86,"line":11349},215,[84,11351,10289],{"class":90},[84,11353,847],{"class":633},[84,11355,10294],{"class":94},[84,11357,11359,11361,11363,11365],{"class":86,"line":11358},216,[84,11360,10299],{"class":90},[84,11362,847],{"class":633},[84,11364,10304],{"class":94},[84,11366,3849],{"class":633},[84,11368,11370,11372,11374],{"class":86,"line":11369},217,[84,11371,1765],{"class":633},[84,11373,4651],{"class":793},[84,11375,821],{"class":633},[84,11377,11379,11381],{"class":86,"line":11378},218,[84,11380,3821],{"class":633},[84,11382,9472],{"class":793},[84,11384,11386,11388,11390,11393],{"class":86,"line":11385},219,[84,11387,9477],{"class":90},[84,11389,847],{"class":633},[84,11391,11392],{"class":94},"\"link4\"",[84,11394,821],{"class":633},[84,11396,11398,11400,11402],{"class":86,"line":11397},220,[84,11399,1676],{"class":633},[84,11401,3733],{"class":793},[84,11403,821],{"class":633},[84,11405,11407,11409],{"class":86,"line":11406},221,[84,11408,1696],{"class":633},[84,11410,9498],{"class":793},[84,11412,11414,11416,11418],{"class":86,"line":11413},222,[84,11415,9503],{"class":90},[84,11417,847],{"class":633},[84,11419,11420],{"class":94},"\"0.162516620557178 -0.213844847423599 3.38133504529381E-07\"\n",[84,11422,11424,11426,11428,11430],{"class":86,"line":11423},223,[84,11425,9513],{"class":90},[84,11427,847],{"class":633},[84,11429,3941],{"class":94},[84,11431,3849],{"class":633},[84,11433,11435,11437],{"class":86,"line":11434},224,[84,11436,1696],{"class":633},[84,11438,9526],{"class":793},[84,11440,11442,11444,11446,11449],{"class":86,"line":11441},225,[84,11443,9531],{"class":90},[84,11445,847],{"class":633},[84,11447,11448],{"class":94},"\"12.1646007734167\"",[84,11450,3849],{"class":633},[84,11452,11454,11456],{"class":86,"line":11453},226,[84,11455,1696],{"class":633},[84,11457,9545],{"class":793},[84,11459,11461,11463,11465],{"class":86,"line":11460},227,[84,11462,9550],{"class":90},[84,11464,847],{"class":633},[84,11466,11467],{"class":94},"\"0.288208127188405\"\n",[84,11469,11471,11473,11475],{"class":86,"line":11470},228,[84,11472,9560],{"class":90},[84,11474,847],{"class":633},[84,11476,11477],{"class":94},"\"0.00080326659836716\"\n",[84,11479,11481,11483,11485],{"class":86,"line":11480},229,[84,11482,9570],{"class":90},[84,11484,847],{"class":633},[84,11486,11487],{"class":94},"\"8.72489392803044E-07\"\n",[84,11489,11491,11493,11495],{"class":86,"line":11490},230,[84,11492,9580],{"class":90},[84,11494,847],{"class":633},[84,11496,11497],{"class":94},"\"0.107000706575729\"\n",[84,11499,11501,11503,11505],{"class":86,"line":11500},231,[84,11502,9590],{"class":90},[84,11504,847],{"class":633},[84,11506,11507],{"class":94},"\"-1.48935044230573E-07\"\n",[84,11509,11511,11513,11515,11518],{"class":86,"line":11510},232,[84,11512,9600],{"class":90},[84,11514,847],{"class":633},[84,11516,11517],{"class":94},"\"0.295147863994059\"",[84,11519,3849],{"class":633},[84,11521,11523,11525,11527],{"class":86,"line":11522},233,[84,11524,1756],{"class":633},[84,11526,3733],{"class":793},[84,11528,821],{"class":633},[84,11530,11532,11534,11536],{"class":86,"line":11531},234,[84,11533,1676],{"class":633},[84,11535,818],{"class":793},[84,11537,821],{"class":633},[84,11539,11541,11543],{"class":86,"line":11540},235,[84,11542,1696],{"class":633},[84,11544,9498],{"class":793},[84,11546,11548,11550,11552],{"class":86,"line":11547},236,[84,11549,9503],{"class":90},[84,11551,847],{"class":633},[84,11553,9638],{"class":94},[84,11555,11557,11559,11561,11563],{"class":86,"line":11556},237,[84,11558,9513],{"class":90},[84,11560,847],{"class":633},[84,11562,3941],{"class":94},[84,11564,3849],{"class":633},[84,11566,11568,11570,11572],{"class":86,"line":11567},238,[84,11569,1696],{"class":633},[84,11571,830],{"class":793},[84,11573,821],{"class":633},[84,11575,11577,11579],{"class":86,"line":11576},239,[84,11578,1709],{"class":633},[84,11580,9663],{"class":793},[84,11582,11584,11586,11588,11591],{"class":86,"line":11583},240,[84,11585,9668],{"class":90},[84,11587,847],{"class":633},[84,11589,11590],{"class":94},"\"package:\u002F\u002Fcpp01_urdf\u002Fmeshes\u002Flink4.STL\"",[84,11592,3849],{"class":633},[84,11594,11596,11598,11600],{"class":86,"line":11595},241,[84,11597,1747],{"class":633},[84,11599,830],{"class":793},[84,11601,821],{"class":633},[84,11603,11605,11607],{"class":86,"line":11604},242,[84,11606,1696],{"class":633},[84,11608,9690],{"class":793},[84,11610,11612,11614,11616,11618],{"class":86,"line":11611},243,[84,11613,9695],{"class":90},[84,11615,847],{"class":633},[84,11617,9700],{"class":94},[84,11619,821],{"class":633},[84,11621,11623,11625],{"class":86,"line":11622},244,[84,11624,1709],{"class":633},[84,11626,9709],{"class":793},[84,11628,11630,11632,11634,11636],{"class":86,"line":11629},245,[84,11631,9714],{"class":90},[84,11633,847],{"class":633},[84,11635,9719],{"class":94},[84,11637,3849],{"class":633},[84,11639,11641,11643,11645],{"class":86,"line":11640},246,[84,11642,1747],{"class":633},[84,11644,3661],{"class":793},[84,11646,821],{"class":633},[84,11648,11650,11652,11654],{"class":86,"line":11649},247,[84,11651,1756],{"class":633},[84,11653,818],{"class":793},[84,11655,821],{"class":633},[84,11657,11659,11661,11663],{"class":86,"line":11658},248,[84,11660,1676],{"class":633},[84,11662,3698],{"class":793},[84,11664,821],{"class":633},[84,11666,11668,11670],{"class":86,"line":11667},249,[84,11669,1696],{"class":633},[84,11671,9498],{"class":793},[84,11673,11675,11677,11679],{"class":86,"line":11674},250,[84,11676,9503],{"class":90},[84,11678,847],{"class":633},[84,11680,9638],{"class":94},[84,11682,11684,11686,11688,11690],{"class":86,"line":11683},251,[84,11685,9513],{"class":90},[84,11687,847],{"class":633},[84,11689,3941],{"class":94},[84,11691,3849],{"class":633},[84,11693,11695,11697,11699],{"class":86,"line":11694},252,[84,11696,1696],{"class":633},[84,11698,830],{"class":793},[84,11700,821],{"class":633},[84,11702,11704,11706],{"class":86,"line":11703},253,[84,11705,1709],{"class":633},[84,11707,9663],{"class":793},[84,11709,11711,11713,11715,11717],{"class":86,"line":11710},254,[84,11712,9668],{"class":90},[84,11714,847],{"class":633},[84,11716,11590],{"class":94},[84,11718,3849],{"class":633},[84,11720,11722,11724,11726],{"class":86,"line":11721},255,[84,11723,1747],{"class":633},[84,11725,830],{"class":793},[84,11727,821],{"class":633},[84,11729,11731,11733,11735],{"class":86,"line":11730},256,[84,11732,1756],{"class":633},[84,11734,3698],{"class":793},[84,11736,821],{"class":633},[84,11738,11740,11742,11744],{"class":86,"line":11739},257,[84,11741,1765],{"class":633},[84,11743,806],{"class":793},[84,11745,821],{"class":633},[84,11747,11749,11751],{"class":86,"line":11748},258,[84,11750,3821],{"class":633},[84,11752,10155],{"class":793},[84,11754,11756,11758,11760],{"class":86,"line":11755},259,[84,11757,9477],{"class":90},[84,11759,847],{"class":633},[84,11761,11762],{"class":94},"\"joint4\"\n",[84,11764,11766,11768,11770,11772],{"class":86,"line":11765},260,[84,11767,10169],{"class":90},[84,11769,847],{"class":633},[84,11771,10174],{"class":94},[84,11773,821],{"class":633},[84,11775,11777,11779],{"class":86,"line":11776},261,[84,11778,1676],{"class":633},[84,11780,9498],{"class":793},[84,11782,11784,11786,11788],{"class":86,"line":11783},262,[84,11785,10187],{"class":90},[84,11787,847],{"class":633},[84,11789,11790],{"class":94},"\"0 0.070837 0.99728\"\n",[84,11792,11794,11796,11798,11801],{"class":86,"line":11793},263,[84,11795,10197],{"class":90},[84,11797,847],{"class":633},[84,11799,11800],{"class":94},"\"0.82315 -1.5708 0\"",[84,11802,3849],{"class":633},[84,11804,11806,11808],{"class":86,"line":11805},264,[84,11807,1676],{"class":633},[84,11809,10211],{"class":793},[84,11811,11813,11815,11817,11819],{"class":86,"line":11812},265,[84,11814,10216],{"class":90},[84,11816,847],{"class":633},[84,11818,10857],{"class":94},[84,11820,3849],{"class":633},[84,11822,11824,11826],{"class":86,"line":11823},266,[84,11825,1676],{"class":633},[84,11827,10229],{"class":793},[84,11829,11831,11833,11835,11837],{"class":86,"line":11830},267,[84,11832,10216],{"class":90},[84,11834,847],{"class":633},[84,11836,11392],{"class":94},[84,11838,3849],{"class":633},[84,11840,11842,11844],{"class":86,"line":11841},268,[84,11843,1676],{"class":633},[84,11845,10246],{"class":793},[84,11847,11849,11851,11853,11855],{"class":86,"line":11848},269,[84,11850,10187],{"class":90},[84,11852,847],{"class":633},[84,11854,10255],{"class":94},[84,11856,3849],{"class":633},[84,11858,11860,11862],{"class":86,"line":11859},270,[84,11861,1676],{"class":633},[84,11863,10264],{"class":793},[84,11865,11867,11869,11871],{"class":86,"line":11866},271,[84,11868,10269],{"class":90},[84,11870,847],{"class":633},[84,11872,10274],{"class":94},[84,11874,11876,11878,11880],{"class":86,"line":11875},272,[84,11877,10279],{"class":90},[84,11879,847],{"class":633},[84,11881,10284],{"class":94},[84,11883,11885,11887,11889],{"class":86,"line":11884},273,[84,11886,10289],{"class":90},[84,11888,847],{"class":633},[84,11890,10294],{"class":94},[84,11892,11894,11896,11898,11900],{"class":86,"line":11893},274,[84,11895,10299],{"class":90},[84,11897,847],{"class":633},[84,11899,10304],{"class":94},[84,11901,3849],{"class":633},[84,11903,11905,11907,11909],{"class":86,"line":11904},275,[84,11906,1765],{"class":633},[84,11908,4651],{"class":793},[84,11910,821],{"class":633},[84,11912,11914,11916,11918],{"class":86,"line":11913},276,[84,11915,3989],{"class":633},[84,11917,794],{"class":793},[84,11919,821],{"class":633},[139,11921,11922],{"start":866},[142,11923,11924],{},"编译",[76,11926,11928],{"className":78,"code":11927,"language":80,"meta":19,"style":19},"colcon build --packages-select cpp01_urdf\n",[71,11929,11930],{"__ignoreMap":19},[84,11931,11932,11934,11936,11938],{"class":86,"line":87},[84,11933,1492],{"class":90},[84,11935,1495],{"class":94},[84,11937,1498],{"class":736},[84,11939,11940],{"class":94}," cpp01_urdf\n",[14,11942,11943],{},[17,11944],{"alt":19,"src":11945},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1596.webp",[14,11947,11948],{},[17,11949],{"alt":19,"src":11950},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1597.webp",[139,11952,11953],{"start":876},[142,11954,11955],{},"更新终端环境",[76,11957,11959],{"className":78,"code":11958,"language":80,"meta":19,"style":19},"source install\u002Fsetup.bash\n",[71,11960,11961],{"__ignoreMap":19},[84,11962,11963,11965],{"class":86,"line":87},[84,11964,1516],{"class":736},[84,11966,1519],{"class":94},[14,11968,11969],{},[17,11970],{"alt":19,"src":11971},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1598.webp",[139,11973,11974],{"start":886},[142,11975,11976],{},"运行Launch",[76,11978,11980],{"className":78,"code":11979,"language":80,"meta":19,"style":19},"ros2 launch cpp01_urdf display.launch.py\n",[71,11981,11982],{"__ignoreMap":19},[84,11983,11984,11986,11988,11990],{"class":86,"line":87},[84,11985,724],{"class":90},[84,11987,1526],{"class":94},[84,11989,8146],{"class":94},[84,11991,1531],{"class":94},[14,11993,11994],{},[17,11995],{"alt":19,"src":11996},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1599.webp",[14,11998,11999],{},[17,12000],{"alt":19,"src":12001},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1600.webp",[139,12003,12004],{"start":1018},[142,12005,12006],{},"在Rviz2中添加插件以及基本配置",[14,12008,12009],{},[17,12010],{"alt":19,"src":12011},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1601.webp",[139,12013,12014],{"start":1023},[142,12015,12016],{},"使用joint_state_publisher_gui可以调关节的角度",[14,12018,12019,12022],{},[17,12020],{"alt":19,"src":12021},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1602.webp",[17,12023],{"alt":19,"src":12024},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1603.webp",[139,12026,12027],{"start":1040},[142,12028,12029],{},"保存rviz2的配置到rviz文件夹中",[14,12031,12032],{},"首先点击rviz2的菜单栏上的File，然后选择Save Config as",[14,12034,12035],{},[17,12036],{"alt":19,"src":12037},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1604.webp",[14,12039,12040],{},"可以去本节简介看效果视频",[653,12042,12044],{"id":12043},"注意事项仅供参考chatgpt的解决方案","注意事项（仅供参考，ChatGPT的解决方案）",[3547,12046,12047],{"id":12047},"坐标系1",[14,12049,12050],{},"轮子要用continuous的关节，并且尽量自己选坐标系，要求从后面看车的话，左是Y，前是X，上是Z。所有的坐标系都要求。",[14,12052,12053],{},"可以先让他帮你自动生成一个，你再去修改坐标系，要简单一些。",[14,12055,12056],{},[17,12057],{"alt":19,"src":12058},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1605.webp",[14,12060,12061],{},[17,12062],{"alt":19,"src":12063},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1606.webp",[14,12065,12066],{},[17,12067],{"alt":19,"src":12068},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1607.webp",[3547,12070,12071],{"id":12071},"坐标系让车躺着",[14,12073,12074],{},"如果你的车在rviz2里是侧着睡觉的，那么：",[14,12076,12077,12078,12081],{},"哈哈，没错，这种“整车侧着躺尸”的情况 ",[105,12079,12080],{},"90%就是 STL 的坐标轴方向搞错了"," 。很多 CAD 工具导出的 STL 模型默认是：",[163,12083,12084,12087],{},[142,12085,12086],{},"Z 轴朝前（例如 SolidWorks：Z朝前，Y朝上，用右手坐标系推X坐标系位置，从车屁股后面看是朝左。）",[142,12088,12089],{},"或者 Y 轴朝上（例如 Blender）",[14,12091,12092],{},"而 ROS\u002FURDF 的坐标系统是：",[163,12094,12095,12098,12101],{},[142,12096,12097],{},"X 向前（前进方向）",[142,12099,12100],{},"Y 向左（平移方向）",[142,12102,12103],{},"Z 向上（重力方向）",[3547,12105,12107],{"id":12106},"车直走变旋转旋转变直走","车直走变旋转，旋转变直走",[14,12109,12110],{},"那说明你的转轴有问题。",[14,12112,12113],{},"如果向前走成了左转，那么说明左轮的转轴错了，少了个符号，加上就行了。",[14,12115,12116],{},"比如这个010,你应该改成0-10",[14,12118,12119],{},[17,12120],{"alt":19,"src":12121},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1608.webp",[10,12123,12124],{"id":12124},"xacro",[653,12126,12128],{"id":12127},"场景作用与概念","场景、作用与概念",[14,12130,12131],{},[105,12132,12133],{},"场景",[14,12135,12136],{},"前面 URDF 文件构建机器人模型的过程中，存在若干问题。",[12138,12139,12140,12143,12146],"blockquote",{},[14,12141,12142],{},"问题1：在设计关节的位置时，需要按照一定的规则计算，规则是固定的，但是在 URDF 中依赖于人工计算，存在不便，容易计算失误，且当某些参数发生改变时，还需要重新计算。",[14,12144,12145],{},"问题2：URDF中的部分内容是高度重复的，比如车轮的设计实现，不同轮子只是部分参数不同，形状、颜色、翻转量都是一致的，在实际应用中，构建复杂的机器人模型时，更是易于出现高度重复的设计，按照一般的编程思想涉及到重复代码应该考虑封装、复用，但是在之前的URDF文件中并没有相关操作。",[14,12147,12148],{},"......",[14,12150,12151,12152,12155],{},"如果在一般编程语言中遇到类似问题，我们可以通过变量结合函数解决。对应的，在 ROS 中也给出了类似编程的优化方案，该方案称之为： ",[105,12153,12154],{},"Xacro（可以理解为urdf2.0）"," 。",[14,12157,12158],{},[105,12159,12160],{},"概念",[14,12162,12163],{},"Xacro 是 XML Macros 的缩写，Xacro 是一种 XML 宏语言，是可编程的 XML。",[14,12165,12166],{},"Xacro 可以声明变量，可以通过数学运算求解；可以使用流程控制控制执行顺序；还可以通过宏封装(可以想成函数)、复用功能，从而提高代码复用率以及程序的安全性。",[14,12168,12169],{},[105,12170,12171],{},"作用",[14,12173,12174],{},"较之于纯粹的 URDF 实现，可以编写更安全、精简、易读性更强的机器人模型文件，且可以提高编写效率。",[653,12176,12177],{"id":12177},"快速体验",[14,12179,12180],{},"先安装xacro",[76,12182,12184],{"className":78,"code":12183,"language":80,"meta":19,"style":19},"#humble版本\nsudo apt install ros-humble-xacro\n#jazzy版本\nsudo apt install ros-jazzy-xacro\n",[71,12185,12186,12191,12201,12206],{"__ignoreMap":19},[84,12187,12188],{"class":86,"line":87},[84,12189,12190],{"class":1003},"#humble版本\n",[84,12192,12193,12195,12197,12199],{"class":86,"line":644},[84,12194,91],{"class":90},[84,12196,95],{"class":94},[84,12198,98],{"class":94},[84,12200,1836],{"class":94},[84,12202,12203],{"class":86,"line":800},[84,12204,12205],{"class":1003},"#jazzy版本\n",[84,12207,12208,12210,12212,12214],{"class":86,"line":812},[84,12209,91],{"class":90},[84,12211,95],{"class":94},[84,12213,98],{"class":94},[84,12215,12216],{"class":94}," ros-jazzy-xacro\n",[14,12218,12219],{},"1.需求",[14,12221,12222,12223,12226],{},"使用xacro优化 ",[105,12224,12225],{},"6.4.4 URDF练习"," 中的小车底盘实现，需要使用变量封装车辆参数，并使用 xacro 宏封装轮子重复的代码并调用宏创建四个轮子(注意: 在此，演示 xacro 的基本使用，不必要生成合法的 URDF )。",[14,12228,12229],{},"2.实现",[14,12231,12232],{},"功能包cpp06_urdf的urdf\u002Fxacro目录下，新建xacro文件demo01_helloworld.urdf.xacro，并编辑文件，输入如下内容：",[76,12234,12236],{"className":775,"code":12235,"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,12237,12238,12261,12265,12288,12309,12331,12335,12360,12375,12383,12392,12415,12424,12428,12449,12453,12468,12483,12491,12500,12508,12516,12533,12548,12563,12578],{"__ignoreMap":19},[84,12239,12240,12242,12244,12246,12248,12251,12254,12256,12259],{"class":86,"line":87},[84,12241,1375],{"class":633},[84,12243,794],{"class":793},[84,12245,1659],{"class":90},[84,12247,847],{"class":633},[84,12249,12250],{"class":94},"\"mycar\"",[84,12252,12253],{"class":90}," xmlns:xacro",[84,12255,847],{"class":633},[84,12257,12258],{"class":94},"\"http:\u002F\u002Fwiki.ros.org\u002Fxacro\"",[84,12260,821],{"class":633},[84,12262,12263],{"class":86,"line":644},[84,12264,785],{"emptyLinePlaceholder":784},[84,12266,12267,12269,12272,12274,12276,12279,12282,12284,12286],{"class":86,"line":800},[84,12268,1676],{"class":633},[84,12270,12271],{"class":793},"xacro:property",[84,12273,1659],{"class":90},[84,12275,847],{"class":633},[84,12277,12278],{"class":94},"\"wheel_radius\"",[84,12280,12281],{"class":90}," value",[84,12283,847],{"class":633},[84,12285,6729],{"class":94},[84,12287,3849],{"class":633},[84,12289,12290,12292,12294,12296,12298,12301,12303,12305,12307],{"class":86,"line":812},[84,12291,1676],{"class":633},[84,12293,12271],{"class":793},[84,12295,1659],{"class":90},[84,12297,847],{"class":633},[84,12299,12300],{"class":94},"\"wheel_length\"",[84,12302,12281],{"class":90},[84,12304,847],{"class":633},[84,12306,6737],{"class":94},[84,12308,3849],{"class":633},[84,12310,12311,12313,12315,12317,12319,12322,12324,12326,12329],{"class":86,"line":824},[84,12312,1676],{"class":633},[84,12314,12271],{"class":793},[84,12316,1659],{"class":90},[84,12318,847],{"class":633},[84,12320,12321],{"class":94},"\"PI\"",[84,12323,12281],{"class":90},[84,12325,847],{"class":633},[84,12327,12328],{"class":94},"\"3.1415927\"",[84,12330,3849],{"class":633},[84,12332,12333],{"class":86,"line":835},[84,12334,785],{"emptyLinePlaceholder":784},[84,12336,12337,12339,12342,12344,12346,12349,12352,12354,12357],{"class":86,"line":856},[84,12338,1676],{"class":633},[84,12340,12341],{"class":793},"xacro:macro",[84,12343,1659],{"class":90},[84,12345,847],{"class":633},[84,12347,12348],{"class":94},"\"wheel_func\"",[84,12350,12351],{"class":90}," params",[84,12353,847],{"class":633},[84,12355,12356],{"class":94},"\"wheel_name\"",[84,12358,12359],{"class":633}," >\n",[84,12361,12362,12364,12366,12368,12370,12373],{"class":86,"line":866},[84,12363,1709],{"class":633},[84,12365,806],{"class":793},[84,12367,1659],{"class":90},[84,12369,847],{"class":633},[84,12371,12372],{"class":94},"\"${wheel_name}_wheel\"",[84,12374,821],{"class":633},[84,12376,12377,12379,12381],{"class":86,"line":876},[84,12378,3900],{"class":633},[84,12380,818],{"class":793},[84,12382,821],{"class":633},[84,12384,12385,12388,12390],{"class":86,"line":886},[84,12386,12387],{"class":633},"                \u003C",[84,12389,830],{"class":793},[84,12391,821],{"class":633},[84,12393,12394,12397,12399,12401,12403,12406,12408,12410,12413],{"class":86,"line":1018},[84,12395,12396],{"class":633},"                    \u003C",[84,12398,3607],{"class":793},[84,12400,5572],{"class":90},[84,12402,847],{"class":633},[84,12404,12405],{"class":94},"\"${wheel_radius}\"",[84,12407,6732],{"class":90},[84,12409,847],{"class":633},[84,12411,12412],{"class":94},"\"${wheel_length}\"",[84,12414,3849],{"class":633},[84,12416,12417,12420,12422],{"class":86,"line":1023},[84,12418,12419],{"class":633},"                \u003C\u002F",[84,12421,830],{"class":793},[84,12423,821],{"class":633},[84,12425,12426],{"class":86,"line":1040},[84,12427,785],{"emptyLinePlaceholder":784},[84,12429,12430,12432,12434,12436,12438,12440,12442,12444,12447],{"class":86,"line":1062},[84,12431,12387],{"class":633},[84,12433,3639],{"class":793},[84,12435,3936],{"class":90},[84,12437,847],{"class":633},[84,12439,3941],{"class":94},[84,12441,3944],{"class":90},[84,12443,847],{"class":633},[84,12445,12446],{"class":94},"\"${PI \u002F 2} 0 0\"",[84,12448,3849],{"class":633},[84,12450,12451],{"class":86,"line":1082},[84,12452,785],{"emptyLinePlaceholder":784},[84,12454,12455,12457,12459,12461,12463,12466],{"class":86,"line":1113},[84,12456,12387],{"class":633},[84,12458,3661],{"class":793},[84,12460,1659],{"class":90},[84,12462,847],{"class":633},[84,12464,12465],{"class":94},"\"wheel_color\"",[84,12467,821],{"class":633},[84,12469,12470,12472,12474,12476,12478,12481],{"class":86,"line":1118},[84,12471,12396],{"class":633},[84,12473,3676],{"class":793},[84,12475,3841],{"class":90},[84,12477,847],{"class":633},[84,12479,12480],{"class":94},"\"0 0 0 0.3\"",[84,12482,3849],{"class":633},[84,12484,12485,12487,12489],{"class":86,"line":1124},[84,12486,12419],{"class":633},[84,12488,3661],{"class":793},[84,12490,821],{"class":633},[84,12492,12493,12496,12498],{"class":86,"line":1129},[84,12494,12495],{"class":633},"            \u003C\u002F",[84,12497,818],{"class":793},[84,12499,821],{"class":633},[84,12501,12502,12504,12506],{"class":86,"line":1135},[84,12503,1738],{"class":633},[84,12505,806],{"class":793},[84,12507,821],{"class":633},[84,12509,12510,12512,12514],{"class":86,"line":1157},[84,12511,1756],{"class":633},[84,12513,12341],{"class":793},[84,12515,821],{"class":633},[84,12517,12518,12520,12523,12526,12528,12531],{"class":86,"line":1168},[84,12519,1676],{"class":633},[84,12521,12522],{"class":793},"xacro:wheel_func",[84,12524,12525],{"class":90}," wheel_name",[84,12527,847],{"class":633},[84,12529,12530],{"class":94},"\"left_front\"",[84,12532,853],{"class":633},[84,12534,12535,12537,12539,12541,12543,12546],{"class":86,"line":1182},[84,12536,1676],{"class":633},[84,12538,12522],{"class":793},[84,12540,12525],{"class":90},[84,12542,847],{"class":633},[84,12544,12545],{"class":94},"\"left_back\"",[84,12547,853],{"class":633},[84,12549,12550,12552,12554,12556,12558,12561],{"class":86,"line":1194},[84,12551,1676],{"class":633},[84,12553,12522],{"class":793},[84,12555,12525],{"class":90},[84,12557,847],{"class":633},[84,12559,12560],{"class":94},"\"right_front\"",[84,12562,853],{"class":633},[84,12564,12565,12567,12569,12571,12573,12576],{"class":86,"line":1211},[84,12566,1676],{"class":633},[84,12568,12522],{"class":793},[84,12570,12525],{"class":90},[84,12572,847],{"class":633},[84,12574,12575],{"class":94},"\"right_back\"",[84,12577,853],{"class":633},[84,12579,12580,12582,12584],{"class":86,"line":1217},[84,12581,3989],{"class":633},[84,12583,794],{"class":793},[84,12585,821],{"class":633},[14,12587,12588],{},[17,12589],{"alt":19,"src":12590},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1609.webp",[14,12592,12593],{},"宏类似函数",[14,12595,12596],{},"params类似入口参数",[14,12598,12599],{},"子标签类似函数体",[14,12601,12602],{},"终端下进入当前文件所述目录，输入如下指令：",[76,12604,12606],{"className":78,"code":12605,"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,12607,12608,12615,12622,12627],{"__ignoreMap":19},[84,12609,12610,12612],{"class":86,"line":87},[84,12611,8118],{"class":736},[84,12613,12614],{"class":94}," src\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002F\n",[84,12616,12617,12619],{"class":86,"line":644},[84,12618,12124],{"class":90},[84,12620,12621],{"class":94}," demo01_helloworld.urdf.xacro\n",[84,12623,12624],{"class":86,"line":800},[84,12625,12626],{"class":1003},"#或者\n",[84,12628,12629,12631,12633,12636,12638],{"class":86,"line":812},[84,12630,724],{"class":90},[84,12632,2421],{"class":94},[84,12634,12635],{"class":94}," xacro",[84,12637,12635],{"class":94},[84,12639,12621],{"class":94},[14,12641,12642],{},"终端将会输出如下内容（以下内容是纯urdf）：",[76,12644,12646],{"className":775,"code":12645,"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,12647,12648,12663,12667,12681,12696,12704,12712,12732,12740,12761,12775,12789,12797,12805,12813,12828,12836,12844,12864,12872,12892,12906,12920,12928,12936,12944,12959,12967,12975,12995,13003,13023,13037,13051,13059,13067,13075,13090,13098,13106,13126,13134,13154,13168,13182,13190,13198,13206],{"__ignoreMap":19},[84,12649,12650,12652,12654,12656,12658,12660],{"class":86,"line":87},[84,12651,8563],{"class":633},[84,12653,777],{"class":793},[84,12655,8568],{"class":90},[84,12657,847],{"class":633},[84,12659,8573],{"class":94},[84,12661,12662],{"class":633}," ?>\n",[84,12664,12665],{"class":86,"line":644},[84,12666,785],{"emptyLinePlaceholder":784},[84,12668,12669,12671,12673,12675,12677,12679],{"class":86,"line":800},[84,12670,1375],{"class":633},[84,12672,794],{"class":793},[84,12674,1659],{"class":90},[84,12676,847],{"class":633},[84,12678,12250],{"class":94},[84,12680,821],{"class":633},[84,12682,12683,12685,12687,12689,12691,12694],{"class":86,"line":812},[84,12684,3821],{"class":633},[84,12686,806],{"class":793},[84,12688,1659],{"class":90},[84,12690,847],{"class":633},[84,12692,12693],{"class":94},"\"left_front_wheel\"",[84,12695,821],{"class":633},[84,12697,12698,12700,12702],{"class":86,"line":824},[84,12699,1676],{"class":633},[84,12701,818],{"class":793},[84,12703,821],{"class":633},[84,12705,12706,12708,12710],{"class":86,"line":835},[84,12707,1696],{"class":633},[84,12709,830],{"class":793},[84,12711,821],{"class":633},[84,12713,12714,12716,12718,12720,12722,12724,12726,12728,12730],{"class":86,"line":856},[84,12715,1709],{"class":633},[84,12717,3607],{"class":793},[84,12719,6732],{"class":90},[84,12721,847],{"class":633},[84,12723,6737],{"class":94},[84,12725,5572],{"class":90},[84,12727,847],{"class":633},[84,12729,6729],{"class":94},[84,12731,853],{"class":633},[84,12733,12734,12736,12738],{"class":86,"line":866},[84,12735,1747],{"class":633},[84,12737,830],{"class":793},[84,12739,821],{"class":633},[84,12741,12742,12744,12746,12748,12750,12753,12755,12757,12759],{"class":86,"line":876},[84,12743,1696],{"class":633},[84,12745,3639],{"class":793},[84,12747,3944],{"class":90},[84,12749,847],{"class":633},[84,12751,12752],{"class":94},"\"1.57079635 0 0\"",[84,12754,3936],{"class":90},[84,12756,847],{"class":633},[84,12758,3941],{"class":94},[84,12760,853],{"class":633},[84,12762,12763,12765,12767,12769,12771,12773],{"class":86,"line":886},[84,12764,1696],{"class":633},[84,12766,3661],{"class":793},[84,12768,1659],{"class":90},[84,12770,847],{"class":633},[84,12772,12465],{"class":94},[84,12774,821],{"class":633},[84,12776,12777,12779,12781,12783,12785,12787],{"class":86,"line":1018},[84,12778,1709],{"class":633},[84,12780,3676],{"class":793},[84,12782,3841],{"class":90},[84,12784,847],{"class":633},[84,12786,12480],{"class":94},[84,12788,853],{"class":633},[84,12790,12791,12793,12795],{"class":86,"line":1023},[84,12792,1747],{"class":633},[84,12794,3661],{"class":793},[84,12796,821],{"class":633},[84,12798,12799,12801,12803],{"class":86,"line":1040},[84,12800,1756],{"class":633},[84,12802,818],{"class":793},[84,12804,821],{"class":633},[84,12806,12807,12809,12811],{"class":86,"line":1062},[84,12808,1765],{"class":633},[84,12810,806],{"class":793},[84,12812,821],{"class":633},[84,12814,12815,12817,12819,12821,12823,12826],{"class":86,"line":1082},[84,12816,3821],{"class":633},[84,12818,806],{"class":793},[84,12820,1659],{"class":90},[84,12822,847],{"class":633},[84,12824,12825],{"class":94},"\"left_back_wheel\"",[84,12827,821],{"class":633},[84,12829,12830,12832,12834],{"class":86,"line":1113},[84,12831,1676],{"class":633},[84,12833,818],{"class":793},[84,12835,821],{"class":633},[84,12837,12838,12840,12842],{"class":86,"line":1118},[84,12839,1696],{"class":633},[84,12841,830],{"class":793},[84,12843,821],{"class":633},[84,12845,12846,12848,12850,12852,12854,12856,12858,12860,12862],{"class":86,"line":1124},[84,12847,1709],{"class":633},[84,12849,3607],{"class":793},[84,12851,6732],{"class":90},[84,12853,847],{"class":633},[84,12855,6737],{"class":94},[84,12857,5572],{"class":90},[84,12859,847],{"class":633},[84,12861,6729],{"class":94},[84,12863,853],{"class":633},[84,12865,12866,12868,12870],{"class":86,"line":1129},[84,12867,1747],{"class":633},[84,12869,830],{"class":793},[84,12871,821],{"class":633},[84,12873,12874,12876,12878,12880,12882,12884,12886,12888,12890],{"class":86,"line":1135},[84,12875,1696],{"class":633},[84,12877,3639],{"class":793},[84,12879,3944],{"class":90},[84,12881,847],{"class":633},[84,12883,12752],{"class":94},[84,12885,3936],{"class":90},[84,12887,847],{"class":633},[84,12889,3941],{"class":94},[84,12891,853],{"class":633},[84,12893,12894,12896,12898,12900,12902,12904],{"class":86,"line":1157},[84,12895,1696],{"class":633},[84,12897,3661],{"class":793},[84,12899,1659],{"class":90},[84,12901,847],{"class":633},[84,12903,12465],{"class":94},[84,12905,821],{"class":633},[84,12907,12908,12910,12912,12914,12916,12918],{"class":86,"line":1168},[84,12909,1709],{"class":633},[84,12911,3676],{"class":793},[84,12913,3841],{"class":90},[84,12915,847],{"class":633},[84,12917,12480],{"class":94},[84,12919,853],{"class":633},[84,12921,12922,12924,12926],{"class":86,"line":1182},[84,12923,1747],{"class":633},[84,12925,3661],{"class":793},[84,12927,821],{"class":633},[84,12929,12930,12932,12934],{"class":86,"line":1194},[84,12931,1756],{"class":633},[84,12933,818],{"class":793},[84,12935,821],{"class":633},[84,12937,12938,12940,12942],{"class":86,"line":1211},[84,12939,1765],{"class":633},[84,12941,806],{"class":793},[84,12943,821],{"class":633},[84,12945,12946,12948,12950,12952,12954,12957],{"class":86,"line":1217},[84,12947,3821],{"class":633},[84,12949,806],{"class":793},[84,12951,1659],{"class":90},[84,12953,847],{"class":633},[84,12955,12956],{"class":94},"\"right_front_wheel\"",[84,12958,821],{"class":633},[84,12960,12961,12963,12965],{"class":86,"line":1222},[84,12962,1676],{"class":633},[84,12964,818],{"class":793},[84,12966,821],{"class":633},[84,12968,12969,12971,12973],{"class":86,"line":1228},[84,12970,1696],{"class":633},[84,12972,830],{"class":793},[84,12974,821],{"class":633},[84,12976,12977,12979,12981,12983,12985,12987,12989,12991,12993],{"class":86,"line":1238},[84,12978,1709],{"class":633},[84,12980,3607],{"class":793},[84,12982,6732],{"class":90},[84,12984,847],{"class":633},[84,12986,6737],{"class":94},[84,12988,5572],{"class":90},[84,12990,847],{"class":633},[84,12992,6729],{"class":94},[84,12994,853],{"class":633},[84,12996,12997,12999,13001],{"class":86,"line":1250},[84,12998,1747],{"class":633},[84,13000,830],{"class":793},[84,13002,821],{"class":633},[84,13004,13005,13007,13009,13011,13013,13015,13017,13019,13021],{"class":86,"line":1260},[84,13006,1696],{"class":633},[84,13008,3639],{"class":793},[84,13010,3944],{"class":90},[84,13012,847],{"class":633},[84,13014,12752],{"class":94},[84,13016,3936],{"class":90},[84,13018,847],{"class":633},[84,13020,3941],{"class":94},[84,13022,853],{"class":633},[84,13024,13025,13027,13029,13031,13033,13035],{"class":86,"line":1265},[84,13026,1696],{"class":633},[84,13028,3661],{"class":793},[84,13030,1659],{"class":90},[84,13032,847],{"class":633},[84,13034,12465],{"class":94},[84,13036,821],{"class":633},[84,13038,13039,13041,13043,13045,13047,13049],{"class":86,"line":1270},[84,13040,1709],{"class":633},[84,13042,3676],{"class":793},[84,13044,3841],{"class":90},[84,13046,847],{"class":633},[84,13048,12480],{"class":94},[84,13050,853],{"class":633},[84,13052,13053,13055,13057],{"class":86,"line":1276},[84,13054,1747],{"class":633},[84,13056,3661],{"class":793},[84,13058,821],{"class":633},[84,13060,13061,13063,13065],{"class":86,"line":1286},[84,13062,1756],{"class":633},[84,13064,818],{"class":793},[84,13066,821],{"class":633},[84,13068,13069,13071,13073],{"class":86,"line":1298},[84,13070,1765],{"class":633},[84,13072,806],{"class":793},[84,13074,821],{"class":633},[84,13076,13077,13079,13081,13083,13085,13088],{"class":86,"line":1308},[84,13078,3821],{"class":633},[84,13080,806],{"class":793},[84,13082,1659],{"class":90},[84,13084,847],{"class":633},[84,13086,13087],{"class":94},"\"right_back_wheel\"",[84,13089,821],{"class":633},[84,13091,13092,13094,13096],{"class":86,"line":1313},[84,13093,1676],{"class":633},[84,13095,818],{"class":793},[84,13097,821],{"class":633},[84,13099,13100,13102,13104],{"class":86,"line":1319},[84,13101,1696],{"class":633},[84,13103,830],{"class":793},[84,13105,821],{"class":633},[84,13107,13108,13110,13112,13114,13116,13118,13120,13122,13124],{"class":86,"line":1324},[84,13109,1709],{"class":633},[84,13111,3607],{"class":793},[84,13113,6732],{"class":90},[84,13115,847],{"class":633},[84,13117,6737],{"class":94},[84,13119,5572],{"class":90},[84,13121,847],{"class":633},[84,13123,6729],{"class":94},[84,13125,853],{"class":633},[84,13127,13128,13130,13132],{"class":86,"line":1333},[84,13129,1747],{"class":633},[84,13131,830],{"class":793},[84,13133,821],{"class":633},[84,13135,13136,13138,13140,13142,13144,13146,13148,13150,13152],{"class":86,"line":1339},[84,13137,1696],{"class":633},[84,13139,3639],{"class":793},[84,13141,3944],{"class":90},[84,13143,847],{"class":633},[84,13145,12752],{"class":94},[84,13147,3936],{"class":90},[84,13149,847],{"class":633},[84,13151,3941],{"class":94},[84,13153,853],{"class":633},[84,13155,13156,13158,13160,13162,13164,13166],{"class":86,"line":1345},[84,13157,1696],{"class":633},[84,13159,3661],{"class":793},[84,13161,1659],{"class":90},[84,13163,847],{"class":633},[84,13165,12465],{"class":94},[84,13167,821],{"class":633},[84,13169,13170,13172,13174,13176,13178,13180],{"class":86,"line":1351},[84,13171,1709],{"class":633},[84,13173,3676],{"class":793},[84,13175,3841],{"class":90},[84,13177,847],{"class":633},[84,13179,12480],{"class":94},[84,13181,853],{"class":633},[84,13183,13184,13186,13188],{"class":86,"line":1357},[84,13185,1747],{"class":633},[84,13187,3661],{"class":793},[84,13189,821],{"class":633},[84,13191,13192,13194,13196],{"class":86,"line":2242},[84,13193,1756],{"class":633},[84,13195,818],{"class":793},[84,13197,821],{"class":633},[84,13199,13200,13202,13204],{"class":86,"line":2247},[84,13201,1765],{"class":633},[84,13203,806],{"class":793},[84,13205,821],{"class":633},[84,13207,13208,13210,13212],{"class":86,"line":2257},[84,13209,3989],{"class":633},[84,13211,794],{"class":793},[84,13213,821],{"class":633},[14,13215,13216],{},"显然的，通过xacro我们方便的实现了代码复用。",[14,13218,13219],{},[17,13220],{"alt":19,"src":13221},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1610.webp",[3547,13223,13224],{"id":13224},"语法",[76,13226,13231],{"className":13227,"code":13229,"language":13230},[13228],"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,13232,13229],{"__ignoreMap":19},[14,13234,13235],{},"机器人由多部件组成，不同部件可能封装为单独的 xacro 文件，最后再将不同的文件集成，组合为完整机器人，可以使用文件包含实现。",[14,13237,13238],{},"语法格式：",[76,13240,13242],{"className":775,"code":13241,"language":777,"meta":19,"style":19},"\u003Cxacro:include filename=\"其他xacro文件\" \u002F>\n",[71,13243,13244],{"__ignoreMap":19},[84,13245,13246,13248,13251,13254,13256,13259],{"class":86,"line":87},[84,13247,1375],{"class":633},[84,13249,13250],{"class":793},"xacro:include",[84,13252,13253],{"class":90}," filename",[84,13255,847],{"class":633},[84,13257,13258],{"class":94},"\"其他xacro文件\"",[84,13260,3849],{"class":633},[14,13262,13263],{},"示例：",[76,13265,13267],{"className":775,"code":13266,"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,13268,13269,13290,13305,13320,13335],{"__ignoreMap":19},[84,13270,13271,13273,13275,13277,13279,13282,13284,13286,13288],{"class":86,"line":87},[84,13272,1375],{"class":633},[84,13274,794],{"class":793},[84,13276,1659],{"class":90},[84,13278,847],{"class":633},[84,13280,13281],{"class":94},"\"car\"",[84,13283,12253],{"class":90},[84,13285,847],{"class":633},[84,13287,12258],{"class":94},[84,13289,821],{"class":633},[84,13291,13292,13294,13296,13298,13300,13303],{"class":86,"line":644},[84,13293,1696],{"class":633},[84,13295,13250],{"class":793},[84,13297,13253],{"class":90},[84,13299,847],{"class":633},[84,13301,13302],{"class":94},"\"car_base.xacro\"",[84,13304,3849],{"class":633},[84,13306,13307,13309,13311,13313,13315,13318],{"class":86,"line":800},[84,13308,1696],{"class":633},[84,13310,13250],{"class":793},[84,13312,13253],{"class":90},[84,13314,847],{"class":633},[84,13316,13317],{"class":94},"\"car_camera.xacro\"",[84,13319,3849],{"class":633},[84,13321,13322,13324,13326,13328,13330,13333],{"class":86,"line":812},[84,13323,1696],{"class":633},[84,13325,13250],{"class":793},[84,13327,13253],{"class":90},[84,13329,847],{"class":633},[84,13331,13332],{"class":94},"\"car_laser.xacro\"",[84,13334,3849],{"class":633},[84,13336,13337,13339,13341],{"class":86,"line":824},[84,13338,3989],{"class":633},[84,13340,794],{"class":793},[84,13342,821],{"class":633},[76,13344,13346],{"className":775,"code":13345,"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,13347,13348,13370,13385,13400],{"__ignoreMap":19},[84,13349,13350,13352,13354,13356,13358,13361,13363,13365,13368],{"class":86,"line":87},[84,13351,1375],{"class":633},[84,13353,794],{"class":793},[84,13355,12253],{"class":90},[84,13357,847],{"class":633},[84,13359,13360],{"class":94},"\"http:\u002F\u002Fwww.ros.org\u002Fwiki\u002Fxacro\"",[84,13362,1659],{"class":90},[84,13364,847],{"class":633},[84,13366,13367],{"class":94},"\"demo4_include\"",[84,13369,821],{"class":633},[84,13371,13372,13374,13376,13378,13380,13383],{"class":86,"line":644},[84,13373,1676],{"class":633},[84,13375,13250],{"class":793},[84,13377,13253],{"class":90},[84,13379,847],{"class":633},[84,13381,13382],{"class":94},"\"demo02_base_pro.urdf.xacro\"",[84,13384,853],{"class":633},[84,13386,13387,13389,13391,13393,13395,13398],{"class":86,"line":800},[84,13388,1676],{"class":633},[84,13390,13250],{"class":793},[84,13392,13253],{"class":90},[84,13394,847],{"class":633},[84,13396,13397],{"class":94},"\"demo03_base_func.urdf.xacro\"",[84,13399,853],{"class":633},[84,13401,13402,13404,13406],{"class":86,"line":812},[84,13403,3989],{"class":633},[84,13405,794],{"class":793},[84,13407,821],{"class":633},[14,13409,13410],{},[17,13411],{"alt":19,"src":13412},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1614.webp",[14,13414,13415],{},[4642,13416,13417],{},"但不建议这样，建议父级xacro和子级xacro使用同样的name。",[653,13419,4766],{"id":13420},"练习-2",[3547,13422,13423],{"id":13423},"框架",[14,13425,12219],{},[14,13427,13428,13429,13431],{},"使用xacro创建一个四轮机器人模型，该模型底盘可以参考 ",[105,13430,12225],{}," 中的实现，并且在底盘之上添加了相机与激光雷达。相机与激光雷达的尺寸参数、安装位置可自定义。",[14,13433,13434],{},[17,13435],{"alt":19,"src":13436},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1615.webp",[14,13438,13439],{},"2.实现分析",[14,13441,13442],{},"需求中的机器人模型是由底盘、摄像头和雷达三部分组成的，那么可以将每一部分都封装进一个xacro文件，最后再通过xacro文件包含组织成一个完整的机器人模型。",[14,13444,13445],{},"3.实现",[14,13447,13448],{},"功能包cpp06_urdf的urdf\u002Fxacro目录下，新建多个xacro文件，分别为：",[163,13450,13451,13454,13457,13460],{},[142,13452,13453],{},"car.urdf.xacro：用于包含不同机器人部件对应的xacro文件；",[142,13455,13456],{},"car_base.urdf.xacro：描述机器人底盘的xacro文件；",[142,13458,13459],{},"car_camera.urdf.xacro：描述摄像头的xacro文件；",[142,13461,13462],{},"car_laser.urdf.xacro：描述雷达的xacro文件。",[14,13464,13465],{},"编辑car.urdf.xacro文件，输入如下内容：",[76,13467,13469],{"className":775,"code":13468,"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,13470,13471,13491,13506,13521,13536],{"__ignoreMap":19},[84,13472,13473,13475,13477,13479,13481,13483,13485,13487,13489],{"class":86,"line":87},[84,13474,1375],{"class":633},[84,13476,794],{"class":793},[84,13478,1659],{"class":90},[84,13480,847],{"class":633},[84,13482,13281],{"class":94},[84,13484,12253],{"class":90},[84,13486,847],{"class":633},[84,13488,12258],{"class":94},[84,13490,821],{"class":633},[84,13492,13493,13495,13497,13499,13501,13504],{"class":86,"line":644},[84,13494,1676],{"class":633},[84,13496,13250],{"class":793},[84,13498,13253],{"class":90},[84,13500,847],{"class":633},[84,13502,13503],{"class":94},"\"car_base.urdf.xacro\"",[84,13505,853],{"class":633},[84,13507,13508,13510,13512,13514,13516,13519],{"class":86,"line":800},[84,13509,1676],{"class":633},[84,13511,13250],{"class":793},[84,13513,13253],{"class":90},[84,13515,847],{"class":633},[84,13517,13518],{"class":94},"\"car_camera.urdf.xacro\"",[84,13520,853],{"class":633},[84,13522,13523,13525,13527,13529,13531,13534],{"class":86,"line":812},[84,13524,1676],{"class":633},[84,13526,13250],{"class":793},[84,13528,13253],{"class":90},[84,13530,847],{"class":633},[84,13532,13533],{"class":94},"\"car_laser.urdf.xacro\"",[84,13535,853],{"class":633},[84,13537,13538,13540,13542],{"class":86,"line":824},[84,13539,3989],{"class":633},[84,13541,794],{"class":793},[84,13543,821],{"class":633},[3547,13545,13546],{"id":13546},"车体",[14,13548,13549],{},"编辑car_base.urdf.xacro文件，输入如下内容：",[76,13551,13553],{"className":775,"code":13552,"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,13554,13555,13569,13573,13594,13598,13620,13642,13664,13668,13690,13694,13714,13734,13738,13752,13766,13774,13788,13802,13810,13824,13839,13847,13851,13865,13873,13881,13895,13903,13911,13919,13923,13937,13945,13949,13957,13972,13980,14000,14014,14022,14030,14050,14064,14078,14093,14101,14105,14126,14140,14148,14156,14176,14184,14204,14218,14226,14234,14255,14270,14284,14305,14319,14327,14335,14339,14367,14394,14420,14446],{"__ignoreMap":19},[84,13556,13557,13559,13561,13563,13565,13567],{"class":86,"line":87},[84,13558,1375],{"class":633},[84,13560,794],{"class":793},[84,13562,12253],{"class":90},[84,13564,847],{"class":633},[84,13566,12258],{"class":94},[84,13568,821],{"class":633},[84,13570,13571],{"class":86,"line":644},[84,13572,785],{"emptyLinePlaceholder":784},[84,13574,13575,13577,13579,13581,13583,13585,13587,13589,13592],{"class":86,"line":800},[84,13576,1676],{"class":633},[84,13578,12271],{"class":793},[84,13580,1659],{"class":90},[84,13582,847],{"class":633},[84,13584,12321],{"class":94},[84,13586,12281],{"class":90},[84,13588,847],{"class":633},[84,13590,13591],{"class":94},"\"3.1416\"",[84,13593,853],{"class":633},[84,13595,13596],{"class":86,"line":812},[84,13597,785],{"emptyLinePlaceholder":784},[84,13599,13600,13602,13604,13606,13608,13611,13613,13615,13618],{"class":86,"line":824},[84,13601,1676],{"class":633},[84,13603,12271],{"class":793},[84,13605,1659],{"class":90},[84,13607,847],{"class":633},[84,13609,13610],{"class":94},"\"base_link_x\"",[84,13612,12281],{"class":90},[84,13614,847],{"class":633},[84,13616,13617],{"class":94},"\"0.2\"",[84,13619,853],{"class":633},[84,13621,13622,13624,13626,13628,13630,13633,13635,13637,13640],{"class":86,"line":835},[84,13623,1676],{"class":633},[84,13625,12271],{"class":793},[84,13627,1659],{"class":90},[84,13629,847],{"class":633},[84,13631,13632],{"class":94},"\"base_link_y\"",[84,13634,12281],{"class":90},[84,13636,847],{"class":633},[84,13638,13639],{"class":94},"\"0.12\"",[84,13641,853],{"class":633},[84,13643,13644,13646,13648,13650,13652,13655,13657,13659,13662],{"class":86,"line":856},[84,13645,1676],{"class":633},[84,13647,12271],{"class":793},[84,13649,1659],{"class":90},[84,13651,847],{"class":633},[84,13653,13654],{"class":94},"\"base_link_z\"",[84,13656,12281],{"class":90},[84,13658,847],{"class":633},[84,13660,13661],{"class":94},"\"0.07\"",[84,13663,853],{"class":633},[84,13665,13666],{"class":86,"line":866},[84,13667,785],{"emptyLinePlaceholder":784},[84,13669,13670,13672,13674,13676,13678,13681,13683,13685,13688],{"class":86,"line":876},[84,13671,1676],{"class":633},[84,13673,12271],{"class":793},[84,13675,1659],{"class":90},[84,13677,847],{"class":633},[84,13679,13680],{"class":94},"\"distance\"",[84,13682,12281],{"class":90},[84,13684,847],{"class":633},[84,13686,13687],{"class":94},"\"0.015\"",[84,13689,853],{"class":633},[84,13691,13692],{"class":86,"line":886},[84,13693,785],{"emptyLinePlaceholder":784},[84,13695,13696,13698,13700,13702,13704,13706,13708,13710,13712],{"class":86,"line":1018},[84,13697,1676],{"class":633},[84,13699,12271],{"class":793},[84,13701,1659],{"class":90},[84,13703,847],{"class":633},[84,13705,12278],{"class":94},[84,13707,12281],{"class":90},[84,13709,847],{"class":633},[84,13711,6729],{"class":94},[84,13713,853],{"class":633},[84,13715,13716,13718,13720,13722,13724,13726,13728,13730,13732],{"class":86,"line":1023},[84,13717,1676],{"class":633},[84,13719,12271],{"class":793},[84,13721,1659],{"class":90},[84,13723,847],{"class":633},[84,13725,12300],{"class":94},[84,13727,12281],{"class":90},[84,13729,847],{"class":633},[84,13731,6737],{"class":94},[84,13733,853],{"class":633},[84,13735,13736],{"class":86,"line":1040},[84,13737,785],{"emptyLinePlaceholder":784},[84,13739,13740,13742,13744,13746,13748,13750],{"class":86,"line":1062},[84,13741,1676],{"class":633},[84,13743,3661],{"class":793},[84,13745,1659],{"class":90},[84,13747,847],{"class":633},[84,13749,3830],{"class":94},[84,13751,821],{"class":633},[84,13753,13754,13756,13758,13760,13762,13764],{"class":86,"line":1082},[84,13755,1709],{"class":633},[84,13757,3676],{"class":793},[84,13759,3841],{"class":90},[84,13761,847],{"class":633},[84,13763,3846],{"class":94},[84,13765,3849],{"class":633},[84,13767,13768,13770,13772],{"class":86,"line":1113},[84,13769,1756],{"class":633},[84,13771,3661],{"class":793},[84,13773,821],{"class":633},[84,13775,13776,13778,13780,13782,13784,13786],{"class":86,"line":1118},[84,13777,1676],{"class":633},[84,13779,3661],{"class":793},[84,13781,1659],{"class":90},[84,13783,847],{"class":633},[84,13785,5098],{"class":94},[84,13787,821],{"class":633},[84,13789,13790,13792,13794,13796,13798,13800],{"class":86,"line":1124},[84,13791,1709],{"class":633},[84,13793,3676],{"class":793},[84,13795,3841],{"class":90},[84,13797,847],{"class":633},[84,13799,5113],{"class":94},[84,13801,3849],{"class":633},[84,13803,13804,13806,13808],{"class":86,"line":1129},[84,13805,1756],{"class":633},[84,13807,3661],{"class":793},[84,13809,821],{"class":633},[84,13811,13812,13814,13816,13818,13820,13822],{"class":86,"line":1135},[84,13813,1676],{"class":633},[84,13815,3661],{"class":793},[84,13817,1659],{"class":90},[84,13819,847],{"class":633},[84,13821,6399],{"class":94},[84,13823,821],{"class":633},[84,13825,13826,13828,13830,13832,13834,13837],{"class":86,"line":1157},[84,13827,1709],{"class":633},[84,13829,3676],{"class":793},[84,13831,3841],{"class":90},[84,13833,847],{"class":633},[84,13835,13836],{"class":94},"\"0.2 0.2 0.2 0.95\"",[84,13838,3849],{"class":633},[84,13840,13841,13843,13845],{"class":86,"line":1168},[84,13842,1747],{"class":633},[84,13844,3661],{"class":793},[84,13846,821],{"class":633},[84,13848,13849],{"class":86,"line":1182},[84,13850,785],{"emptyLinePlaceholder":784},[84,13852,13853,13855,13857,13859,13861,13863],{"class":86,"line":1194},[84,13854,1676],{"class":633},[84,13856,806],{"class":793},[84,13858,1659],{"class":90},[84,13860,847],{"class":633},[84,13862,5545],{"class":94},[84,13864,821],{"class":633},[84,13866,13867,13869,13871],{"class":86,"line":1211},[84,13868,1709],{"class":633},[84,13870,818],{"class":793},[84,13872,821],{"class":633},[84,13874,13875,13877,13879],{"class":86,"line":1217},[84,13876,3900],{"class":633},[84,13878,830],{"class":793},[84,13880,821],{"class":633},[84,13882,13883,13885,13887,13889,13891,13893],{"class":86,"line":1222},[84,13884,12387],{"class":633},[84,13886,3615],{"class":793},[84,13888,5572],{"class":90},[84,13890,847],{"class":633},[84,13892,5577],{"class":94},[84,13894,853],{"class":633},[84,13896,13897,13899,13901],{"class":86,"line":1228},[84,13898,12495],{"class":633},[84,13900,830],{"class":793},[84,13902,821],{"class":633},[84,13904,13905,13907,13909],{"class":86,"line":1238},[84,13906,1738],{"class":633},[84,13908,818],{"class":793},[84,13910,821],{"class":633},[84,13912,13913,13915,13917],{"class":86,"line":1250},[84,13914,1756],{"class":633},[84,13916,806],{"class":793},[84,13918,821],{"class":633},[84,13920,13921],{"class":86,"line":1260},[84,13922,785],{"emptyLinePlaceholder":784},[84,13924,13925,13927,13929,13931,13933,13935],{"class":86,"line":1265},[84,13926,1676],{"class":633},[84,13928,806],{"class":793},[84,13930,1659],{"class":90},[84,13932,847],{"class":633},[84,13934,1685],{"class":94},[84,13936,821],{"class":633},[84,13938,13939,13941,13943],{"class":86,"line":1270},[84,13940,1709],{"class":633},[84,13942,818],{"class":793},[84,13944,821],{"class":633},[84,13946,13947],{"class":86,"line":1276},[84,13948,785],{"emptyLinePlaceholder":784},[84,13950,13951,13953,13955],{"class":86,"line":1286},[84,13952,3900],{"class":633},[84,13954,830],{"class":793},[84,13956,821],{"class":633},[84,13958,13959,13961,13963,13965,13967,13970],{"class":86,"line":1298},[84,13960,12387],{"class":633},[84,13962,841],{"class":793},[84,13964,844],{"class":90},[84,13966,847],{"class":633},[84,13968,13969],{"class":94},"\"${base_link_x} ${base_link_y} ${base_link_z}\"",[84,13971,3849],{"class":633},[84,13973,13974,13976,13978],{"class":86,"line":1308},[84,13975,12495],{"class":633},[84,13977,830],{"class":793},[84,13979,821],{"class":633},[84,13981,13982,13984,13986,13988,13990,13992,13994,13996,13998],{"class":86,"line":1313},[84,13983,3900],{"class":633},[84,13985,3639],{"class":793},[84,13987,3936],{"class":90},[84,13989,847],{"class":633},[84,13991,3941],{"class":94},[84,13993,3944],{"class":90},[84,13995,847],{"class":633},[84,13997,3941],{"class":94},[84,13999,3849],{"class":633},[84,14001,14002,14004,14006,14008,14010,14012],{"class":86,"line":1319},[84,14003,3900],{"class":633},[84,14005,3661],{"class":793},[84,14007,1659],{"class":90},[84,14009,847],{"class":633},[84,14011,3830],{"class":94},[84,14013,853],{"class":633},[84,14015,14016,14018,14020],{"class":86,"line":1324},[84,14017,1738],{"class":633},[84,14019,818],{"class":793},[84,14021,821],{"class":633},[84,14023,14024,14026,14028],{"class":86,"line":1333},[84,14025,1756],{"class":633},[84,14027,806],{"class":793},[84,14029,821],{"class":633},[84,14031,14032,14034,14036,14038,14040,14042,14044,14046,14048],{"class":86,"line":1339},[84,14033,1676],{"class":633},[84,14035,4651],{"class":793},[84,14037,1659],{"class":90},[84,14039,847],{"class":633},[84,14041,5621],{"class":94},[84,14043,5357],{"class":90},[84,14045,847],{"class":633},[84,14047,5628],{"class":94},[84,14049,821],{"class":633},[84,14051,14052,14054,14056,14058,14060,14062],{"class":86,"line":1345},[84,14053,1709],{"class":633},[84,14055,4498],{"class":793},[84,14057,5373],{"class":90},[84,14059,847],{"class":633},[84,14061,5545],{"class":94},[84,14063,853],{"class":633},[84,14065,14066,14068,14070,14072,14074,14076],{"class":86,"line":1351},[84,14067,1709],{"class":633},[84,14069,4513],{"class":793},[84,14071,5373],{"class":90},[84,14073,847],{"class":633},[84,14075,1685],{"class":94},[84,14077,853],{"class":633},[84,14079,14080,14082,14084,14086,14088,14091],{"class":86,"line":1357},[84,14081,1709],{"class":633},[84,14083,3639],{"class":793},[84,14085,3936],{"class":90},[84,14087,847],{"class":633},[84,14089,14090],{"class":94},"\"0.0 0.0 ${distance + base_link_z \u002F 2}\"",[84,14092,853],{"class":633},[84,14094,14095,14097,14099],{"class":86,"line":2242},[84,14096,1756],{"class":633},[84,14098,4651],{"class":793},[84,14100,821],{"class":633},[84,14102,14103],{"class":86,"line":2247},[84,14104,785],{"emptyLinePlaceholder":784},[84,14106,14107,14109,14111,14113,14115,14117,14119,14121,14124],{"class":86,"line":2257},[84,14108,1676],{"class":633},[84,14110,12341],{"class":793},[84,14112,1659],{"class":90},[84,14114,847],{"class":633},[84,14116,12348],{"class":94},[84,14118,12351],{"class":90},[84,14120,847],{"class":633},[84,14122,14123],{"class":94},"\"wheel_name is_front is_left\"",[84,14125,12359],{"class":633},[84,14127,14128,14130,14132,14134,14136,14138],{"class":86,"line":2268},[84,14129,1709],{"class":633},[84,14131,806],{"class":793},[84,14133,1659],{"class":90},[84,14135,847],{"class":633},[84,14137,12372],{"class":94},[84,14139,821],{"class":633},[84,14141,14142,14144,14146],{"class":86,"line":2277},[84,14143,3900],{"class":633},[84,14145,818],{"class":793},[84,14147,821],{"class":633},[84,14149,14150,14152,14154],{"class":86,"line":2282},[84,14151,12387],{"class":633},[84,14153,830],{"class":793},[84,14155,821],{"class":633},[84,14157,14158,14160,14162,14164,14166,14168,14170,14172,14174],{"class":86,"line":2287},[84,14159,12396],{"class":633},[84,14161,3607],{"class":793},[84,14163,5572],{"class":90},[84,14165,847],{"class":633},[84,14167,12405],{"class":94},[84,14169,6732],{"class":90},[84,14171,847],{"class":633},[84,14173,12412],{"class":94},[84,14175,3849],{"class":633},[84,14177,14178,14180,14182],{"class":86,"line":2296},[84,14179,12419],{"class":633},[84,14181,830],{"class":793},[84,14183,821],{"class":633},[84,14185,14186,14188,14190,14192,14194,14196,14198,14200,14202],{"class":86,"line":2904},[84,14187,12387],{"class":633},[84,14189,3639],{"class":793},[84,14191,3936],{"class":90},[84,14193,847],{"class":633},[84,14195,3941],{"class":94},[84,14197,3944],{"class":90},[84,14199,847],{"class":633},[84,14201,12446],{"class":94},[84,14203,3849],{"class":633},[84,14205,14206,14208,14210,14212,14214,14216],{"class":86,"line":2915},[84,14207,12387],{"class":633},[84,14209,3661],{"class":793},[84,14211,1659],{"class":90},[84,14213,847],{"class":633},[84,14215,6399],{"class":94},[84,14217,853],{"class":633},[84,14219,14220,14222,14224],{"class":86,"line":2943},[84,14221,12495],{"class":633},[84,14223,818],{"class":793},[84,14225,821],{"class":633},[84,14227,14228,14230,14232],{"class":86,"line":2948},[84,14229,1738],{"class":633},[84,14231,806],{"class":793},[84,14233,821],{"class":633},[84,14235,14236,14238,14240,14242,14244,14247,14249,14251,14253],{"class":86,"line":2953},[84,14237,1709],{"class":633},[84,14239,4651],{"class":793},[84,14241,1659],{"class":90},[84,14243,847],{"class":633},[84,14245,14246],{"class":94},"\"${wheel_name}2baselink\"",[84,14248,5357],{"class":90},[84,14250,847],{"class":633},[84,14252,5362],{"class":94},[84,14254,821],{"class":633},[84,14256,14257,14259,14261,14263,14265,14267],{"class":86,"line":2962},[84,14258,3900],{"class":633},[84,14260,4498],{"class":793},[84,14262,5373],{"class":90},[84,14264,847],{"class":633},[84,14266,1685],{"class":94},[84,14268,14269],{"class":633},"  \u002F>\n",[84,14271,14272,14274,14276,14278,14280,14282],{"class":86,"line":3352},[84,14273,3900],{"class":633},[84,14275,4513],{"class":793},[84,14277,5373],{"class":90},[84,14279,847],{"class":633},[84,14281,12372],{"class":94},[84,14283,3849],{"class":633},[84,14285,14286,14288,14290,14292,14294,14297,14299,14301,14303],{"class":86,"line":3358},[84,14287,3900],{"class":633},[84,14289,3639],{"class":793},[84,14291,3936],{"class":90},[84,14293,847],{"class":633},[84,14295,14296],{"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,14298,3944],{"class":90},[84,14300,847],{"class":633},[84,14302,3941],{"class":94},[84,14304,3849],{"class":633},[84,14306,14307,14309,14311,14313,14315,14317],{"class":86,"line":3363},[84,14308,3900],{"class":633},[84,14310,5425],{"class":793},[84,14312,3936],{"class":90},[84,14314,847],{"class":633},[84,14316,6889],{"class":94},[84,14318,3849],{"class":633},[84,14320,14321,14323,14325],{"class":86,"line":3369},[84,14322,1738],{"class":633},[84,14324,4651],{"class":793},[84,14326,821],{"class":633},[84,14328,14329,14331,14333],{"class":86,"line":3374},[84,14330,1756],{"class":633},[84,14332,12341],{"class":793},[84,14334,821],{"class":633},[84,14336,14337],{"class":86,"line":3380},[84,14338,785],{"emptyLinePlaceholder":784},[84,14340,14341,14343,14345,14347,14349,14351,14354,14356,14358,14361,14363,14365],{"class":86,"line":3389},[84,14342,1676],{"class":633},[84,14344,12522],{"class":793},[84,14346,12525],{"class":90},[84,14348,847],{"class":633},[84,14350,12530],{"class":94},[84,14352,14353],{"class":90}," is_front",[84,14355,847],{"class":633},[84,14357,10304],{"class":94},[84,14359,14360],{"class":90}," is_left",[84,14362,847],{"class":633},[84,14364,10304],{"class":94},[84,14366,3849],{"class":633},[84,14368,14369,14371,14373,14375,14377,14379,14381,14383,14386,14388,14390,14392],{"class":86,"line":3401},[84,14370,1676],{"class":633},[84,14372,12522],{"class":793},[84,14374,12525],{"class":90},[84,14376,847],{"class":633},[84,14378,12545],{"class":94},[84,14380,14353],{"class":90},[84,14382,847],{"class":633},[84,14384,14385],{"class":94},"\"-1\"",[84,14387,14360],{"class":90},[84,14389,847],{"class":633},[84,14391,10304],{"class":94},[84,14393,3849],{"class":633},[84,14395,14396,14398,14400,14402,14404,14406,14408,14410,14412,14414,14416,14418],{"class":86,"line":3411},[84,14397,1676],{"class":633},[84,14399,12522],{"class":793},[84,14401,12525],{"class":90},[84,14403,847],{"class":633},[84,14405,12560],{"class":94},[84,14407,14353],{"class":90},[84,14409,847],{"class":633},[84,14411,10304],{"class":94},[84,14413,14360],{"class":90},[84,14415,847],{"class":633},[84,14417,14385],{"class":94},[84,14419,3849],{"class":633},[84,14421,14422,14424,14426,14428,14430,14432,14434,14436,14438,14440,14442,14444],{"class":86,"line":3416},[84,14423,1676],{"class":633},[84,14425,12522],{"class":793},[84,14427,12525],{"class":90},[84,14429,847],{"class":633},[84,14431,12575],{"class":94},[84,14433,14353],{"class":90},[84,14435,847],{"class":633},[84,14437,14385],{"class":94},[84,14439,14360],{"class":90},[84,14441,847],{"class":633},[84,14443,14385],{"class":94},[84,14445,3849],{"class":633},[84,14447,14448,14450,14452],{"class":86,"line":3421},[84,14449,3989],{"class":633},[84,14451,794],{"class":793},[84,14453,821],{"class":633},[3547,14455,14456],{"id":14456},"添加摄像头",[14,14458,14459],{},"编辑car_camera.urdf.xacro文件，输入如下内容：",[76,14461,14463],{"className":775,"code":14462,"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,14464,14465,14469,14483,14487,14510,14532,14554,14576,14598,14620,14624,14638,14646,14654,14669,14677,14698,14712,14720,14728,14732,14752,14766,14780,14795,14803],{"__ignoreMap":19},[84,14466,14467],{"class":86,"line":87},[84,14468,785],{"emptyLinePlaceholder":784},[84,14470,14471,14473,14475,14477,14479,14481],{"class":86,"line":644},[84,14472,1375],{"class":633},[84,14474,794],{"class":793},[84,14476,12253],{"class":90},[84,14478,847],{"class":633},[84,14480,12258],{"class":94},[84,14482,821],{"class":633},[84,14484,14485],{"class":86,"line":800},[84,14486,785],{"emptyLinePlaceholder":784},[84,14488,14489,14491,14493,14495,14497,14500,14502,14504,14507],{"class":86,"line":812},[84,14490,1676],{"class":633},[84,14492,12271],{"class":793},[84,14494,1659],{"class":90},[84,14496,847],{"class":633},[84,14498,14499],{"class":94},"\"camera_x\"",[84,14501,12281],{"class":90},[84,14503,847],{"class":633},[84,14505,14506],{"class":94},"\"0.012\"",[84,14508,14509],{"class":633}," \u002F> \n",[84,14511,14512,14514,14516,14518,14520,14523,14525,14527,14530],{"class":86,"line":824},[84,14513,1676],{"class":633},[84,14515,12271],{"class":793},[84,14517,1659],{"class":90},[84,14519,847],{"class":633},[84,14521,14522],{"class":94},"\"camera_y\"",[84,14524,12281],{"class":90},[84,14526,847],{"class":633},[84,14528,14529],{"class":94},"\"0.05\"",[84,14531,14509],{"class":633},[84,14533,14534,14536,14538,14540,14542,14545,14547,14549,14552],{"class":86,"line":835},[84,14535,1676],{"class":633},[84,14537,12271],{"class":793},[84,14539,1659],{"class":90},[84,14541,847],{"class":633},[84,14543,14544],{"class":94},"\"camera_z\"",[84,14546,12281],{"class":90},[84,14548,847],{"class":633},[84,14550,14551],{"class":94},"\"0.01\"",[84,14553,14509],{"class":633},[84,14555,14556,14558,14560,14562,14564,14567,14569,14571,14574],{"class":86,"line":856},[84,14557,1676],{"class":633},[84,14559,12271],{"class":793},[84,14561,1659],{"class":90},[84,14563,847],{"class":633},[84,14565,14566],{"class":94},"\"camera_joint_x\"",[84,14568,12281],{"class":90},[84,14570,847],{"class":633},[84,14572,14573],{"class":94},"\"${base_link_x \u002F 2 - camera_x \u002F 2}\"",[84,14575,14509],{"class":633},[84,14577,14578,14580,14582,14584,14586,14589,14591,14593,14596],{"class":86,"line":866},[84,14579,1676],{"class":633},[84,14581,12271],{"class":793},[84,14583,1659],{"class":90},[84,14585,847],{"class":633},[84,14587,14588],{"class":94},"\"camera_joint_y\"",[84,14590,12281],{"class":90},[84,14592,847],{"class":633},[84,14594,14595],{"class":94},"\"0.0\"",[84,14597,14509],{"class":633},[84,14599,14600,14602,14604,14606,14608,14611,14613,14615,14618],{"class":86,"line":876},[84,14601,1676],{"class":633},[84,14603,12271],{"class":793},[84,14605,1659],{"class":90},[84,14607,847],{"class":633},[84,14609,14610],{"class":94},"\"camera_joint_z\"",[84,14612,12281],{"class":90},[84,14614,847],{"class":633},[84,14616,14617],{"class":94},"\"${base_link_z \u002F 2 + camera_z \u002F 2}\"",[84,14619,14509],{"class":633},[84,14621,14622],{"class":86,"line":886},[84,14623,785],{"emptyLinePlaceholder":784},[84,14625,14626,14628,14630,14632,14634,14636],{"class":86,"line":1018},[84,14627,1676],{"class":633},[84,14629,806],{"class":793},[84,14631,1659],{"class":90},[84,14633,847],{"class":633},[84,14635,5246],{"class":94},[84,14637,821],{"class":633},[84,14639,14640,14642,14644],{"class":86,"line":1023},[84,14641,1709],{"class":633},[84,14643,818],{"class":793},[84,14645,821],{"class":633},[84,14647,14648,14650,14652],{"class":86,"line":1040},[84,14649,3900],{"class":633},[84,14651,830],{"class":793},[84,14653,821],{"class":633},[84,14655,14656,14658,14660,14662,14664,14667],{"class":86,"line":1062},[84,14657,12387],{"class":633},[84,14659,841],{"class":793},[84,14661,844],{"class":90},[84,14663,847],{"class":633},[84,14665,14666],{"class":94},"\"${camera_x} ${camera_y} ${camera_z}\"",[84,14668,3849],{"class":633},[84,14670,14671,14673,14675],{"class":86,"line":1082},[84,14672,12495],{"class":633},[84,14674,830],{"class":793},[84,14676,821],{"class":633},[84,14678,14679,14681,14683,14685,14687,14690,14692,14694,14696],{"class":86,"line":1113},[84,14680,3900],{"class":633},[84,14682,3639],{"class":793},[84,14684,3936],{"class":90},[84,14686,847],{"class":633},[84,14688,14689],{"class":94},"\"0.0 0.0 0.0\"",[84,14691,3944],{"class":90},[84,14693,847],{"class":633},[84,14695,14689],{"class":94},[84,14697,3849],{"class":633},[84,14699,14700,14702,14704,14706,14708,14710],{"class":86,"line":1118},[84,14701,3900],{"class":633},[84,14703,3661],{"class":793},[84,14705,1659],{"class":90},[84,14707,847],{"class":633},[84,14709,5098],{"class":94},[84,14711,3849],{"class":633},[84,14713,14714,14716,14718],{"class":86,"line":1124},[84,14715,1738],{"class":633},[84,14717,818],{"class":793},[84,14719,821],{"class":633},[84,14721,14722,14724,14726],{"class":86,"line":1129},[84,14723,1756],{"class":633},[84,14725,806],{"class":793},[84,14727,821],{"class":633},[84,14729,14730],{"class":86,"line":1135},[84,14731,785],{"emptyLinePlaceholder":784},[84,14733,14734,14736,14738,14740,14742,14744,14746,14748,14750],{"class":86,"line":1157},[84,14735,1676],{"class":633},[84,14737,4651],{"class":793},[84,14739,1659],{"class":90},[84,14741,847],{"class":633},[84,14743,5354],{"class":94},[84,14745,5357],{"class":90},[84,14747,847],{"class":633},[84,14749,5628],{"class":94},[84,14751,821],{"class":633},[84,14753,14754,14756,14758,14760,14762,14764],{"class":86,"line":1168},[84,14755,1709],{"class":633},[84,14757,4498],{"class":793},[84,14759,5373],{"class":90},[84,14761,847],{"class":633},[84,14763,1685],{"class":94},[84,14765,3849],{"class":633},[84,14767,14768,14770,14772,14774,14776,14778],{"class":86,"line":1182},[84,14769,1709],{"class":633},[84,14771,4513],{"class":793},[84,14773,5373],{"class":90},[84,14775,847],{"class":633},[84,14777,5246],{"class":94},[84,14779,3849],{"class":633},[84,14781,14782,14784,14786,14788,14790,14793],{"class":86,"line":1194},[84,14783,1709],{"class":633},[84,14785,3639],{"class":793},[84,14787,3936],{"class":90},[84,14789,847],{"class":633},[84,14791,14792],{"class":94},"\"${camera_joint_x} ${camera_joint_y} ${camera_joint_z}\"",[84,14794,3849],{"class":633},[84,14796,14797,14799,14801],{"class":86,"line":1211},[84,14798,1756],{"class":633},[84,14800,4651],{"class":793},[84,14802,821],{"class":633},[84,14804,14805,14807,14809],{"class":86,"line":1217},[84,14806,3989],{"class":633},[84,14808,794],{"class":793},[84,14810,821],{"class":633},[3547,14812,14813],{"id":14813},"添加雷达",[14,14815,14816],{},"编辑car_laser.urdf.xacro文件，输入如下内容：",[76,14818,14820],{"className":775,"code":14819,"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,14821,14822,14826,14840,14844,14859,14874,14882,14886,14908,14929,14950,14971,14993,14997,15012,15020,15028,15050,15058,15078,15092,15100,15108,15112,15133,15147,15161,15176,15184],{"__ignoreMap":19},[84,14823,14824],{"class":86,"line":87},[84,14825,785],{"emptyLinePlaceholder":784},[84,14827,14828,14830,14832,14834,14836,14838],{"class":86,"line":644},[84,14829,1375],{"class":633},[84,14831,794],{"class":793},[84,14833,12253],{"class":90},[84,14835,847],{"class":633},[84,14837,12258],{"class":94},[84,14839,821],{"class":633},[84,14841,14842],{"class":86,"line":800},[84,14843,785],{"emptyLinePlaceholder":784},[84,14845,14846,14848,14850,14852,14854,14857],{"class":86,"line":812},[84,14847,1676],{"class":633},[84,14849,3661],{"class":793},[84,14851,1659],{"class":90},[84,14853,847],{"class":633},[84,14855,14856],{"class":94},"\"blue\"",[84,14858,821],{"class":633},[84,14860,14861,14863,14865,14867,14869,14872],{"class":86,"line":824},[84,14862,1709],{"class":633},[84,14864,3676],{"class":793},[84,14866,3841],{"class":90},[84,14868,847],{"class":633},[84,14870,14871],{"class":94},"\"0.0 0.0 0.4 0.95\"",[84,14873,3849],{"class":633},[84,14875,14876,14878,14880],{"class":86,"line":835},[84,14877,1756],{"class":633},[84,14879,3661],{"class":793},[84,14881,821],{"class":633},[84,14883,14884],{"class":86,"line":856},[84,14885,785],{"emptyLinePlaceholder":784},[84,14887,14888,14890,14892,14894,14896,14899,14901,14903,14906],{"class":86,"line":866},[84,14889,1676],{"class":633},[84,14891,12271],{"class":793},[84,14893,1659],{"class":90},[84,14895,847],{"class":633},[84,14897,14898],{"class":94},"\"laser_length\"",[84,14900,12281],{"class":90},[84,14902,847],{"class":633},[84,14904,14905],{"class":94},"\"0.03\"",[84,14907,14509],{"class":633},[84,14909,14910,14912,14914,14916,14918,14921,14923,14925,14927],{"class":86,"line":876},[84,14911,1676],{"class":633},[84,14913,12271],{"class":793},[84,14915,1659],{"class":90},[84,14917,847],{"class":633},[84,14919,14920],{"class":94},"\"laser_radius\"",[84,14922,12281],{"class":90},[84,14924,847],{"class":633},[84,14926,14905],{"class":94},[84,14928,14509],{"class":633},[84,14930,14931,14933,14935,14937,14939,14942,14944,14946,14948],{"class":86,"line":886},[84,14932,1676],{"class":633},[84,14934,12271],{"class":793},[84,14936,1659],{"class":90},[84,14938,847],{"class":633},[84,14940,14941],{"class":94},"\"laser_joint_x\"",[84,14943,12281],{"class":90},[84,14945,847],{"class":633},[84,14947,14595],{"class":94},[84,14949,14509],{"class":633},[84,14951,14952,14954,14956,14958,14960,14963,14965,14967,14969],{"class":86,"line":1018},[84,14953,1676],{"class":633},[84,14955,12271],{"class":793},[84,14957,1659],{"class":90},[84,14959,847],{"class":633},[84,14961,14962],{"class":94},"\"laser_joint_y\"",[84,14964,12281],{"class":90},[84,14966,847],{"class":633},[84,14968,14595],{"class":94},[84,14970,14509],{"class":633},[84,14972,14973,14975,14977,14979,14981,14984,14986,14988,14991],{"class":86,"line":1023},[84,14974,1676],{"class":633},[84,14976,12271],{"class":793},[84,14978,1659],{"class":90},[84,14980,847],{"class":633},[84,14982,14983],{"class":94},"\"laser_joint_z\"",[84,14985,12281],{"class":90},[84,14987,847],{"class":633},[84,14989,14990],{"class":94},"\"${base_link_z \u002F 2 + laser_length \u002F 2}\"",[84,14992,14509],{"class":633},[84,14994,14995],{"class":86,"line":1040},[84,14996,785],{"emptyLinePlaceholder":784},[84,14998,14999,15001,15003,15005,15007,15010],{"class":86,"line":1062},[84,15000,1676],{"class":633},[84,15002,806],{"class":793},[84,15004,1659],{"class":90},[84,15006,847],{"class":633},[84,15008,15009],{"class":94},"\"laser\"",[84,15011,821],{"class":633},[84,15013,15014,15016,15018],{"class":86,"line":1082},[84,15015,1709],{"class":633},[84,15017,818],{"class":793},[84,15019,821],{"class":633},[84,15021,15022,15024,15026],{"class":86,"line":1113},[84,15023,3900],{"class":633},[84,15025,830],{"class":793},[84,15027,821],{"class":633},[84,15029,15030,15032,15034,15036,15038,15041,15043,15045,15048],{"class":86,"line":1118},[84,15031,12387],{"class":633},[84,15033,3607],{"class":793},[84,15035,5572],{"class":90},[84,15037,847],{"class":633},[84,15039,15040],{"class":94},"\"${laser_radius}\"",[84,15042,6732],{"class":90},[84,15044,847],{"class":633},[84,15046,15047],{"class":94},"\"${laser_length}\"",[84,15049,3849],{"class":633},[84,15051,15052,15054,15056],{"class":86,"line":1124},[84,15053,12495],{"class":633},[84,15055,830],{"class":793},[84,15057,821],{"class":633},[84,15059,15060,15062,15064,15066,15068,15070,15072,15074,15076],{"class":86,"line":1129},[84,15061,3900],{"class":633},[84,15063,3639],{"class":793},[84,15065,3936],{"class":90},[84,15067,847],{"class":633},[84,15069,14689],{"class":94},[84,15071,3944],{"class":90},[84,15073,847],{"class":633},[84,15075,14689],{"class":94},[84,15077,3849],{"class":633},[84,15079,15080,15082,15084,15086,15088,15090],{"class":86,"line":1135},[84,15081,3900],{"class":633},[84,15083,3661],{"class":793},[84,15085,1659],{"class":90},[84,15087,847],{"class":633},[84,15089,14856],{"class":94},[84,15091,3849],{"class":633},[84,15093,15094,15096,15098],{"class":86,"line":1157},[84,15095,1738],{"class":633},[84,15097,818],{"class":793},[84,15099,821],{"class":633},[84,15101,15102,15104,15106],{"class":86,"line":1168},[84,15103,1756],{"class":633},[84,15105,806],{"class":793},[84,15107,821],{"class":633},[84,15109,15110],{"class":86,"line":1182},[84,15111,785],{"emptyLinePlaceholder":784},[84,15113,15114,15116,15118,15120,15122,15125,15127,15129,15131],{"class":86,"line":1194},[84,15115,1676],{"class":633},[84,15117,4651],{"class":793},[84,15119,1659],{"class":90},[84,15121,847],{"class":633},[84,15123,15124],{"class":94},"\"laser2baselink\"",[84,15126,5357],{"class":90},[84,15128,847],{"class":633},[84,15130,5628],{"class":94},[84,15132,821],{"class":633},[84,15134,15135,15137,15139,15141,15143,15145],{"class":86,"line":1211},[84,15136,1709],{"class":633},[84,15138,4498],{"class":793},[84,15140,5373],{"class":90},[84,15142,847],{"class":633},[84,15144,1685],{"class":94},[84,15146,3849],{"class":633},[84,15148,15149,15151,15153,15155,15157,15159],{"class":86,"line":1217},[84,15150,1709],{"class":633},[84,15152,4513],{"class":793},[84,15154,5373],{"class":90},[84,15156,847],{"class":633},[84,15158,15009],{"class":94},[84,15160,3849],{"class":633},[84,15162,15163,15165,15167,15169,15171,15174],{"class":86,"line":1222},[84,15164,1709],{"class":633},[84,15166,3639],{"class":793},[84,15168,3936],{"class":90},[84,15170,847],{"class":633},[84,15172,15173],{"class":94},"\"${laser_joint_x} ${laser_joint_y} ${laser_joint_z}\"",[84,15175,3849],{"class":633},[84,15177,15178,15180,15182],{"class":86,"line":1228},[84,15179,1756],{"class":633},[84,15181,4651],{"class":793},[84,15183,821],{"class":633},[84,15185,15186,15188,15190],{"class":86,"line":1238},[84,15187,3989],{"class":633},[84,15189,794],{"class":793},[84,15191,821],{"class":633},[3547,15193,15194],{"id":15194},"执行",[14,15196,15197],{},"编译后，工作空间终端下调用如下命令执行：",[76,15199,15201],{"className":78,"code":15200,"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,15202,15203,15207,15212,15234,15239,15245,15251,15284],{"__ignoreMap":19},[84,15204,15205],{"class":86,"line":87},[84,15206,785],{"emptyLinePlaceholder":784},[84,15208,15209],{"class":86,"line":644},[84,15210,15211],{"class":1003},"# ROS Humble\n",[84,15213,15214,15216,15218,15220,15222,15225,15227,15229,15231],{"class":86,"line":800},[84,15215,724],{"class":90},[84,15217,1526],{"class":94},[84,15219,733],{"class":94},[84,15221,2518],{"class":94},[84,15223,15224],{"class":94}," model:=ros2",[84,15226,727],{"class":94},[84,15228,2496],{"class":94},[84,15230,2499],{"class":736},[84,15232,15233],{"class":94}," cpp06_urdf\u002Furdf\u002Fxacro\u002Fcar.urdf.xacro\n",[84,15235,15236],{"class":86,"line":812},[84,15237,15238],{"class":1003},"#ROS Jazzy\n",[84,15240,15241,15243],{"class":86,"line":824},[84,15242,1492],{"class":90},[84,15244,8128],{"class":94},[84,15246,15247,15249],{"class":86,"line":835},[84,15248,1516],{"class":736},[84,15250,1519],{"class":94},[84,15252,15253,15255,15257,15259,15261,15264,15266,15268,15270,15272,15275,15278,15281],{"class":86,"line":856},[84,15254,724],{"class":90},[84,15256,2421],{"class":94},[84,15258,12635],{"class":94},[84,15260,12635],{"class":94},[84,15262,15263],{"class":633}," $(",[84,15265,724],{"class":90},[84,15267,727],{"class":94},[84,15269,2496],{"class":94},[84,15271,733],{"class":94},[84,15273,15274],{"class":633},")",[84,15276,15277],{"class":94},"\u002Fshare\u002Fcpp06_urdf\u002Furdf\u002Fxacro\u002Fcar.urdf.xacro",[84,15279,15280],{"class":736}," -o",[84,15282,15283],{"class":94}," .\u002Fsrc\u002Fcpp06_urdf\u002Furdf\u002Furdf\u002Fcar.urdf\n",[84,15285,15286,15288,15290,15292,15294],{"class":86,"line":866},[84,15287,724],{"class":90},[84,15289,1526],{"class":94},[84,15291,733],{"class":94},[84,15293,2518],{"class":94},[84,15295,15296],{"class":94}," model:=.\u002Fsrc\u002Fcpp06_urdf\u002Furdf\u002Furdf\u002Fcar.urdf\n",[14,15298,15299],{},"命令执行后，rviz2 中可以显示与需求类似的机器人模型。",[14,15301,15302],{},[17,15303],{"alt":19,"src":15304},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1616.webp",[10,15306,15307],{"id":15307},"小结",[14,15309,15310],{},[17,15311],{"alt":19,"src":15312},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1617.webp",[14,15314,15315],{},"目前只是空壳，激光雷达和摄像头以及轮子还都是空壳，到进阶联系中，才可以实现作用。",[15317,15318,15319],"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":15321},[15322,15323,15324,15325,15326,15327,15328,15329],{"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":7620,"depth":800,"text":7621},{"id":7783,"depth":800,"text":7784},{"id":12124,"depth":800,"text":12124},{"id":15307,"depth":800,"text":15307},9000000,"2023-12-30","2023-12-30-ros2-tutorial","\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md",false,{},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan",{"title":5,"description":19},"wiki\u002F2023-12-30-ros2-tutorial\u002Fch9-可视化平台RVIZ2与URDF建模语言","J4fMtVXrZssLK83pBjvIc6g44jh-92lSS4N4B1B9cV0",[15343,15348,15353,15359,15365,15371,15377,15382,15387,15392,15397,15402,15407,15412,15417,15422,15427,15432,15437,15442,15447,15452,15457,15462,15463],{"path":15344,"stem":15345,"title":15346,"date":15331,"chapter":317,"chapterSort":15347,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch1-ros2-jie-shao","wiki\u002F2023-12-30-ros2-tutorial\u002Fch1-ROS2介绍","ROS2介绍",1000000,{"path":15349,"stem":15350,"title":15351,"date":15331,"chapter":441,"chapterSort":15352,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch10-stage-ros2-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch10-Stage_Ros2仿真平台","Stage_Ros2仿真平台",10000000,{"path":15354,"stem":15355,"title":15356,"date":15331,"chapter":15357,"chapterSort":15358,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-1-gazeboclassic","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":15360,"stem":15361,"title":15362,"date":15331,"chapter":15363,"chapterSort":15364,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-2-ignitiongazebo","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-2-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","11.2",11020000,{"path":15366,"stem":15367,"title":15368,"date":15331,"chapter":15369,"chapterSort":15370,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-3-gazebosim","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-3-GazeboSim","Gz Sim（Gazebo Harmonic）","11.3",11030000,{"path":15372,"stem":15373,"title":15374,"date":15331,"chapter":15375,"chapterSort":15376,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-4-igngz2gzsim","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-4-Igngz2gzsim","将Ign Gazebo迁移至Gz Sim","11.4",11040000,{"path":15378,"stem":15379,"title":15380,"date":15331,"chapter":455,"chapterSort":15381,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-gezebo-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-Gezebo仿真平台","Gezebo仿真平台",11000000,{"path":15383,"stem":15384,"title":15385,"date":15331,"chapter":469,"chapterSort":15386,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch12-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","wiki\u002F2023-12-30-ros2-tutorial\u002Fch12-机器人导航Navigation2(仿真篇)","机器人导航Navigation2(仿真篇)",12000000,{"path":15388,"stem":15389,"title":15390,"date":15331,"chapter":483,"chapterSort":15391,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch13-ros2serial","wiki\u002F2023-12-30-ros2-tutorial\u002Fch13-ROS2Serial","ROS2 Serial",13000000,{"path":15393,"stem":15394,"title":15395,"date":15331,"chapter":497,"chapterSort":15396,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch14-ji-qi-ren-ying-jian","wiki\u002F2023-12-30-ros2-tutorial\u002Fch14-机器人硬件","机器人硬件",14000000,{"path":15398,"stem":15399,"title":15400,"date":15331,"chapter":511,"chapterSort":15401,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch15-ros2-control","wiki\u002F2023-12-30-ros2-tutorial\u002Fch15-ROS2_Control","ROS2_Control",15000000,{"path":15403,"stem":15404,"title":15405,"date":15331,"chapter":525,"chapterSort":15406,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","wiki\u002F2023-12-30-ros2-tutorial\u002Fch16-Moveit2工业机器人机械臂","Moveit2工业机器人机械臂",16000000,{"path":15408,"stem":15409,"title":15410,"date":15331,"chapter":539,"chapterSort":15411,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch17-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","wiki\u002F2023-12-30-ros2-tutorial\u002Fch17-机器人导航Navigation2(实体篇)","机器人导航Navigation2(实体篇)",17000000,{"path":15413,"stem":15414,"title":15415,"date":15331,"chapter":553,"chapterSort":15416,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch18-microros","wiki\u002F2023-12-30-ros2-tutorial\u002Fch18-MicroROS","MicroROS",18000000,{"path":15418,"stem":15419,"title":15420,"date":15331,"chapter":566,"chapterSort":15421,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch19-webots-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch19-Webots仿真平台","Webots仿真平台",19000000,{"path":15423,"stem":15424,"title":15425,"date":15331,"chapter":330,"chapterSort":15426,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch2-ru-men-cao-zuo","wiki\u002F2023-12-30-ros2-tutorial\u002Fch2-入门操作","入门操作",2000000,{"path":15428,"stem":15429,"title":15430,"date":15331,"chapter":579,"chapterSort":15431,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch20-opencv","wiki\u002F2023-12-30-ros2-tutorial\u002Fch20-OpenCV","OpenCV",20000000,{"path":15433,"stem":15434,"title":15435,"date":15331,"chapter":344,"chapterSort":15436,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch3-gong-zuo-kong-jian-yu-gong-neng-bao","wiki\u002F2023-12-30-ros2-tutorial\u002Fch3-工作空间与功能包","工作空间与功能包",3000000,{"path":15438,"stem":15439,"title":15440,"date":15331,"chapter":357,"chapterSort":15441,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch4-si-da-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002Fch4-四大通信","四大通信",4000000,{"path":15443,"stem":15444,"title":15445,"date":15331,"chapter":371,"chapterSort":15446,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch5-ros2-qi-ta-tong-xin-ji-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002Fch5-ROS2其他通信机制","ROS2其他通信机制",5000000,{"path":15448,"stem":15449,"title":15450,"date":15331,"chapter":385,"chapterSort":15451,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch6-launch","wiki\u002F2023-12-30-ros2-tutorial\u002Fch6-Launch","Launch",6000000,{"path":15453,"stem":15454,"title":15455,"date":15331,"chapter":399,"chapterSort":15456,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch7-hui-su-rosbag2","wiki\u002F2023-12-30-ros2-tutorial\u002Fch7-回溯rosbag2","回溯rosbag2",7000000,{"path":15458,"stem":15459,"title":15460,"date":15331,"chapter":413,"chapterSort":15461,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch8-zuo-biao-bian-huan-tf","wiki\u002F2023-12-30-ros2-tutorial\u002Fch8-坐标变换TF","坐标变换TF",8000000,{"path":15338,"stem":15340,"title":5,"date":15331,"chapter":427,"chapterSort":15330,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":15336},{"path":15333,"stem":15464,"title":15465,"date":15331,"chapter":15466,"chapterSort":15467,"docKey":15332,"docRoot":15333,"docTitle":15334,"isWikiDoc":784,"isWikiIndex":784},"wiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2机器人操作系统教程",null,0,1778666544549]