[{"data":1,"prerenderedAt":1028},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin":3,"wiki-doc-items-2023-12-30-ros2-tutorial":608,"wiki:author-members":1016},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":162,"chapterOrder":595,"date":596,"description":155,"docKey":597,"docRoot":598,"docTitle":599,"extension":600,"isWikiDoc":601,"isWikiIndex":602,"meta":603,"navigation":601,"path":604,"seo":605,"stem":606,"wikiDepth":162,"__hash__":607},"wiki\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信.md","CAN通信",[7],"董佳辉",{"type":9,"value":10,"toc":581},"minimark",[11,16,20,23,26,48,51,56,59,62,65,141,149,166,169,183,187,190,201,204,318,321,397,400,403,411,414,436,439,445,448,454,458,461,467,470,476,479,483,488,494,497,500,506,512,516,519,522,525,531,534,537,540,577],[12,13,15],"h2",{"id":14},"linux-can-通信","Linux CAN 通信",[17,18,19],"p",{},"CAN 通信是机器人、车辆、工业控制和电机驱动中非常常见的总线通信方式。",[17,21,22],{},"相比串口通信，CAN 更适合多个设备挂在同一条总线上进行通信。例如一个机器人底盘中，可能有多个电机驱动器、底盘控制板、传感器节点共同连接在 CAN 总线上。",[17,24,25],{},"在实际项目中，CAN 通信常见于：",[27,28,29,33,36,39,42,45],"ul",{},[30,31,32],"li",{},"控制电机驱动器",[30,34,35],{},"读取电机编码器反馈",[30,37,38],{},"连接底盘控制板",[30,40,41],{},"多个控制节点之间通信",[30,43,44],{},"车辆总线通信",[30,46,47],{},"工业设备和运动控制系统",[17,49,50],{},"对于移动机器人底盘、电机控制、自动驾驶线控系统等方向来说，CAN 是非常重要的一类通信方式。",[52,53,55],"h3",{"id":54},"can-通信是什么","CAN 通信是什么",[17,57,58],{},"CAN，全称 Controller Area Network，是一种多主机总线通信协议。",[17,60,61],{},"和串口点对点通信不同，CAN 总线上可以挂多个节点。每个节点都可以发送消息，其他节点根据 CAN ID 判断是否需要处理这条消息。",[17,63,64],{},"CAN 通信中常见概念包括：",[66,67,68,81],"table",{},[69,70,71],"thead",{},[72,73,74,78],"tr",{},[75,76,77],"th",{},"概念",[75,79,80],{},"说明",[82,83,84,93,101,109,117,125,133],"tbody",{},[72,85,86,90],{},[87,88,89],"td",{},"CAN ID",[87,91,92],{},"用来标识一帧 CAN 消息的含义或来源",[72,94,95,98],{},[87,96,97],{},"标准帧",[87,99,100],{},"11 位 CAN ID",[72,102,103,106],{},[87,104,105],{},"扩展帧",[87,107,108],{},"29 位 CAN ID",[72,110,111,114],{},[87,112,113],{},"数据区",[87,115,116],{},"经典 CAN 一帧最多 8 字节数据",[72,118,119,122],{},[87,120,121],{},"CAN FD",[87,123,124],{},"CAN 的扩展版本，支持更长数据区和更高数据速率",[72,126,127,130],{},[87,128,129],{},"波特率",[87,131,132],{},"常见有 250K、500K、1M",[72,134,135,138],{},[87,136,137],{},"终端电阻",[87,139,140],{},"CAN 总线两端通常需要 120Ω 终端电阻",[17,142,143,144,148],{},"在 Linux 中，CAN 设备通常不是 ",[145,146,147],"code",{},"\u002Fdev\u002FttyUSB0"," 这种设备文件，而是被抽象成网络接口，例如：",[150,151,156],"pre",{"className":152,"code":153,"language":154,"meta":155,"style":155},"language-bash shiki shiki-themes github-light github-dark","can0\n","bash","",[145,157,158],{"__ignoreMap":155},[159,160,163],"span",{"class":161,"line":162},"line",1,[159,164,153],{"class":165},"sScJk",[17,167,168],{},"可以使用下面的命令查看：",[150,170,172],{"className":152,"code":171,"language":154,"meta":155,"style":155},"ip link\n",[145,173,174],{"__ignoreMap":155},[159,175,176,179],{"class":161,"line":162},[159,177,178],{"class":165},"ip",[159,180,182],{"class":181},"sZZnC"," link\n",[52,184,186],{"id":185},"linux-下常见-can-工具和库","Linux 下常见 CAN 工具和库",[17,188,189],{},"Linux 下 CAN 通信的核心是 SocketCAN。",[17,191,192,193,196,197,200],{},"SocketCAN 是 Linux 内核提供的 CAN 通信框架，它把 CAN 设备抽象成类似网络接口的形式，例如 ",[145,194,195],{},"can0","、",[145,198,199],{},"can1","。",[17,202,203],{},"常见工具和库包括：",[66,205,206,222],{},[69,207,208],{},[72,209,210,213,216,219],{},[75,211,212],{},"方案",[75,214,215],{},"类型",[75,217,218],{},"特点",[75,220,221],{},"适合场景",[82,223,224,238,262,276,290,304],{},[72,225,226,229,232,235],{},[87,227,228],{},"SocketCAN",[87,230,231],{},"Linux 原生 CAN 接口",[87,233,234],{},"Linux 标准方案，通用、稳定、工程常用",[87,236,237],{},"推荐作为主线学习",[72,239,240,243,246,259],{},[87,241,242],{},"can-utils",[87,244,245],{},"SocketCAN 命令行工具集",[87,247,248,249,196,252,196,255,258],{},"提供 ",[145,250,251],{},"candump",[145,253,254],{},"cansend",[145,256,257],{},"cangen"," 等工具",[87,260,261],{},"调试 CAN 总线",[72,263,264,267,270,273],{},[87,265,266],{},"libsocketcan",[87,268,269],{},"SocketCAN 辅助库",[87,271,272],{},"便于配置和管理 CAN 接口",[87,274,275],{},"需要程序内配置 CAN 参数时使用",[72,277,278,281,284,287],{},[87,279,280],{},"ros2_socketcan",[87,282,283],{},"ROS 2 封装库",[87,285,286],{},"将 SocketCAN 封装进 ROS 2 生态",[87,288,289],{},"纯 ROS 2 项目或参考实现",[72,291,292,295,298,301],{},[87,293,294],{},"ros2_canopen",[87,296,297],{},"ROS 2 CANopen 协议栈",[87,299,300],{},"适合 CANopen 设备",[87,302,303],{},"电机驱动器使用 CANopen 协议时",[72,305,306,309,312,315],{},[87,307,308],{},"厂商 SDK",[87,310,311],{},"厂商提供的驱动库",[87,313,314],{},"和具体硬件绑定",[87,316,317],{},"使用特定 USB-CAN、PCIe-CAN 设备时",[52,319,320],{"id":320},"各方案对比",[66,322,323,335],{},[69,324,325],{},[72,326,327,329,332],{},[75,328,212],{},[75,330,331],{},"优点",[75,333,334],{},"缺点",[82,336,337,347,357,367,377,387],{},[72,338,339,341,344],{},[87,340,228],{},[87,342,343],{},"Linux 原生、通用、稳定、适合长期学习",[87,345,346],{},"需要理解 socket 编程和 CAN 帧结构",[72,348,349,351,354],{},[87,350,242],{},[87,352,353],{},"调试方便，命令简单",[87,355,356],{},"主要用于命令行测试，不是完整工程封装",[72,358,359,361,364],{},[87,360,266],{},[87,362,363],{},"配置 CAN 接口方便",[87,365,366],{},"不是主要的数据收发方案",[72,368,369,371,374],{},[87,370,280],{},[87,372,373],{},"和 ROS 2 生态结合方便",[87,375,376],{},"离开 ROS 2 后复用性较差",[72,378,379,381,384],{},[87,380,294],{},[87,382,383],{},"适合 CANopen 设备，协议栈完整",[87,385,386],{},"只适合 CANopen 场景，学习成本较高",[72,388,389,391,394],{},[87,390,308],{},[87,392,393],{},"对特定硬件支持好",[87,395,396],{},"通用性较差，容易绑定厂商",[52,398,399],{"id":399},"本教程建议选择",[17,401,402],{},"本教程建议优先选择：",[150,404,409],{"className":405,"code":407,"language":408,"meta":155},[406],"language-text","SocketCAN + can-utils\n","text",[145,410,407],{"__ignoreMap":155},[17,412,413],{},"原因是：",[27,415,416,419,422,427,430],{},[30,417,418],{},"SocketCAN 是 Linux 下 CAN 通信的标准方案",[30,420,421],{},"不依赖 ROS 2，适合普通 C++、OpenCV、Qt、嵌入式 Linux 项目",[30,423,424,426],{},[145,425,242],{}," 非常适合调试和验证 CAN 设备",[30,428,429],{},"后续可以封装成普通 C++ driver",[30,431,432,433],{},"可以自然接入 ",[145,434,435],{},"ros2_control hardware_interface",[17,437,438],{},"推荐的学习顺序是：",[150,440,443],{"className":441,"code":442,"language":408,"meta":155},[406],"1. 使用 ip link 配置 can0\n2. 使用 candump 接收 CAN 帧\n3. 使用 cansend 发送 CAN 帧\n4. 理解 struct can_frame\n5. 使用 C++ SocketCAN 进行收发\n6. 封装自己的 CanDriver 类\n7. 接入 ROS 2 或 ros2_control\n",[145,444,442],{"__ignoreMap":155},[17,446,447],{},"推荐的工程结构是：",[150,449,452],{"className":450,"code":451,"language":408,"meta":155},[406],"上层项目：ROS 2 \u002F OpenCV \u002F Qt \u002F 普通 C++ 程序\n        ↓\n自己封装的 CanDriver 类\n        ↓\nSocketCAN\n        ↓\ncan0\n        ↓\n电机驱动器 \u002F STM32 \u002F 底盘控制板\n",[145,453,451],{"__ignoreMap":155},[52,455,457],{"id":456},"与-ros-2-的关系","与 ROS 2 的关系",[17,459,460],{},"学习 SocketCAN，并不代表不用 ROS 2。",[17,462,463,464,466],{},"在 ROS 2 项目中，可以将 CAN 通信封装成一个普通 C++ 类，然后在 ROS 2 节点或 ",[145,465,435],{}," 中调用。",[17,468,469],{},"例如：",[150,471,474],{"className":472,"code":473,"language":408,"meta":155},[406],"ros2_control controller\n        ↓\nhardware_interface\n        ↓\n自己封装的 CanDriver\n        ↓\nSocketCAN\n        ↓\ncan0\n        ↓\n电机驱动器\n",[145,475,473],{"__ignoreMap":155},[17,477,478],{},"这样做的好处是，CAN 通信代码不会和 ROS 2 强绑定。以后即使写普通 C++ 项目、Qt 上位机或者 OpenCV 控制程序，也可以继续复用同一套 CAN driver。",[52,480,482],{"id":481},"什么时候使用-ros2_socketcan","什么时候使用 ros2_socketcan",[17,484,485,487],{},[145,486,280],{}," 并不是不能用。",[17,489,490,491,493],{},"如果项目本身就是纯 ROS 2 架构，并且希望快速把 CAN 帧转换成 ROS 2 topic，那么 ",[145,492,280],{}," 是一个可以考虑的方案。",[17,495,496],{},"但是对于底层驱动学习和长期工程复用来说，仍然建议先掌握 SocketCAN。",[17,498,499],{},"可以这样理解：",[150,501,504],{"className":502,"code":503,"language":408,"meta":155},[406],"SocketCAN：底层能力\nros2_socketcan：ROS 2 封装\n",[145,505,503],{"__ignoreMap":155},[17,507,508,509,511],{},"先学 SocketCAN，再看 ",[145,510,280],{}," 会更容易理解。",[52,513,515],{"id":514},"什么时候使用-ros2_canopen","什么时候使用 ros2_canopen",[17,517,518],{},"如果你的电机驱动器或工业设备使用的是 CANopen 协议，那么就不能只把它当作普通 CAN 帧通信来看待。",[17,520,521],{},"CANopen 是建立在 CAN 之上的高层协议，涉及对象字典、PDO、SDO、NMT 等概念。",[17,523,524],{},"这种情况下，可以考虑学习：",[150,526,529],{"className":527,"code":528,"language":408,"meta":155},[406],"ros2_canopen\n",[145,530,528],{"__ignoreMap":155},[17,532,533],{},"但如果你的设备只是自定义 CAN 协议，例如自己规定 CAN ID 和数据格式，那么优先学习 SocketCAN 就足够了。",[52,535,536],{"id":536},"本章学习目标",[17,538,539],{},"学习完本章后，应该能够掌握：",[27,541,542,545,551,558,565,568,571,574],{},[30,543,544],{},"CAN 通信的基本概念",[30,546,547,548,550],{},"Linux 下 ",[145,549,195],{}," 设备的使用方式",[30,552,553,554,557],{},"使用 ",[145,555,556],{},"ip link"," 配置 CAN 波特率",[30,559,553,560,196,562,564],{},[145,561,251],{},[145,563,254],{}," 调试 CAN 总线",[30,566,567],{},"理解 CAN ID、标准帧、扩展帧、数据区等概念",[30,569,570],{},"使用 C++ SocketCAN 进行 CAN 帧收发",[30,572,573],{},"将 CAN 通信封装成可复用的 C++ 类",[30,575,576],{},"为后续接入 ROS 2、ros2_control、电机驱动器控制打基础",[578,579,580],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":155,"searchDepth":582,"depth":582,"links":583},2,[584],{"id":14,"depth":582,"text":15,"children":585},[586,588,589,590,591,592,593,594],{"id":54,"depth":587,"text":55},3,{"id":185,"depth":587,"text":186},{"id":320,"depth":587,"text":320},{"id":399,"depth":587,"text":399},{"id":456,"depth":587,"text":457},{"id":481,"depth":587,"text":482},{"id":514,"depth":587,"text":515},{"id":536,"depth":587,"text":536},"1300-0200","2023-12-30","2023-12-30-ros2-tutorial","\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md",true,false,{},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin",{"title":5,"description":155},"wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","-Flc7KWoeUGJydKJRe4_FFvQ0YW4Tp7vQmwFS-tV5Hw",[609,616,622,628,634,640,646,652,658,664,670,676,682,688,694,700,706,712,718,724,730,736,742,748,754,760,766,772,778,784,790,796,801,807,809,814,820,825,831,837,843,849,855,861,867,873,879,885,891,897,903,909,915,921,927,933,939,945,951,957,963,969,975,981,987,993,999,1005,1011],{"path":610,"stem":611,"title":612,"authors":613,"date":596,"chapterOrder":614,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","wiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","ROS2介绍",[7],"0100",0,{"path":617,"stem":618,"title":619,"authors":620,"date":596,"chapterOrder":621,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","wiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","入门操作",[7],"0200",{"path":623,"stem":624,"title":625,"authors":626,"date":596,"chapterOrder":627,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","wiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","工作空间与功能包",[7],"0300",{"path":629,"stem":630,"title":631,"authors":632,"date":596,"chapterOrder":633,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","四大通信",[7],"0400",{"path":635,"stem":636,"title":637,"authors":638,"date":596,"chapterOrder":639,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2其他通信机制",[7],"0500",{"path":641,"stem":642,"title":643,"authors":644,"date":596,"chapterOrder":645,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","wiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch",[7],"0600",{"path":647,"stem":648,"title":649,"authors":650,"date":596,"chapterOrder":651,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","wiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","回溯rosbag2",[7],"0700",{"path":653,"stem":654,"title":655,"authors":656,"date":596,"chapterOrder":657,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","wiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","坐标变换TF",[7],"0800",{"path":659,"stem":660,"title":661,"authors":662,"date":596,"chapterOrder":663,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","wiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","可视化平台RVIZ2与URDF建模语言",[7],"0900",{"path":665,"stem":666,"title":667,"authors":668,"date":596,"chapterOrder":669,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2仿真平台",[7],"1000",{"path":671,"stem":672,"title":673,"authors":674,"date":596,"chapterOrder":675,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic",[7],"1100-0100",{"path":677,"stem":678,"title":679,"authors":680,"date":596,"chapterOrder":681,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）",[7],"1100-0200",{"path":683,"stem":684,"title":685,"authors":686,"date":596,"chapterOrder":687,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）",[7],"1100-0300",{"path":689,"stem":690,"title":691,"authors":692,"date":596,"chapterOrder":693,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","将Ign Gazebo迁移至Gz Sim",[7],"1100-0400",{"path":695,"stem":696,"title":697,"authors":698,"date":596,"chapterOrder":699,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gezebo仿真平台",[7],"1100",{"path":701,"stem":702,"title":703,"authors":704,"date":596,"chapterOrder":705,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble导航仿真",[7],"1200-0100",{"path":707,"stem":708,"title":709,"authors":710,"date":596,"chapterOrder":711,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy导航仿真",[7],"1200-0200",{"path":713,"stem":714,"title":715,"authors":716,"date":596,"chapterOrder":717,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Humble与Jazzy导航的差异",[7],"1200-0300",{"path":719,"stem":720,"title":721,"authors":722,"date":596,"chapterOrder":723,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0100-you-xian-zhuang-tai-ji-fsm","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0100-有限状态机FSM","有限状态机（Finite State Machine）",[7],"1200-0400-0100",{"path":725,"stem":726,"title":727,"authors":728,"date":596,"chapterOrder":729,"chapterDepth":587,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0100-ji-ben-gai-nian","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0100-基本概念","基本概念",[7],"1200-0400-0200-0100",{"path":731,"stem":732,"title":733,"authors":734,"date":596,"chapterOrder":735,"chapterDepth":587,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0200-kong-zhi-yu-zhuang-shi-gui-ze","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0200-控制与装饰规则","控制与装饰规则",[7],"1200-0400-0200-0200",{"path":737,"stem":738,"title":739,"authors":740,"date":596,"chapterOrder":741,"chapterDepth":587,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0300-di-yi-ge-wan-zheng-cheng-xu","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0300-第一个完整程序","第一个完整程序",[7],"1200-0400-0200-0300",{"path":743,"stem":744,"title":745,"authors":746,"date":596,"chapterOrder":747,"chapterDepth":587,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0400-jie-dian-zhi-jian-chuan-shu-ju","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0400-节点之间传数据","节点之间传数据",[7],"1200-0400-0200-0400",{"path":749,"stem":750,"title":751,"authors":752,"date":596,"chapterOrder":753,"chapterDepth":587,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0500-chi-xu-ren-wu-yu-zhong-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0500-持续任务与中止","持续任务与中止",[7],"1200-0400-0200-0500",{"path":755,"stem":756,"title":757,"authors":758,"date":596,"chapterOrder":759,"chapterDepth":587,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0600-zu-he-shi-ji-ren-wu","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0600-组合实际任务","组合实际任务",[7],"1200-0400-0200-0600",{"path":761,"stem":762,"title":763,"authors":764,"date":596,"chapterOrder":765,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-xing-wei-shu-bt","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-行为树BT","行为树（BehaviorTree.CPP）",[7],"1200-0400-0200",{"path":767,"stem":768,"title":769,"authors":770,"date":596,"chapterOrder":771,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-fsm-yu-bt","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-FSM与BT","有限状态机FSM与行为树BT",[7],"1200-0400",{"path":773,"stem":774,"title":775,"authors":776,"date":596,"chapterOrder":777,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","机器人导航Navigation2(仿真篇)",[7],"1200",{"path":779,"stem":780,"title":781,"authors":782,"date":596,"chapterOrder":783,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio库",[7],"1300-0100-0100",{"path":785,"stem":786,"title":787,"authors":788,"date":596,"chapterOrder":789,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver库",[7],"1300-0100-0200",{"path":791,"stem":792,"title":793,"authors":794,"date":596,"chapterOrder":795,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART串口通信",[7],"1300-0100",{"path":797,"stem":798,"title":228,"authors":799,"date":596,"chapterOrder":800,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan",[7],"1300-0200-0100",{"path":802,"stem":803,"title":804,"authors":805,"date":596,"chapterOrder":806,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN",[7],"1300-0200-0200",{"path":604,"stem":606,"title":5,"authors":808,"date":596,"chapterOrder":595,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},[7],{"path":810,"stem":811,"title":781,"authors":812,"date":596,"chapterOrder":813,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso",[7],"1300-0300-0100",{"path":815,"stem":816,"title":817,"authors":818,"date":596,"chapterOrder":819,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP通信",[7],"1300-0300",{"path":821,"stem":822,"title":781,"authors":823,"date":596,"chapterOrder":824,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso",[7],"1300-0400-0100",{"path":826,"stem":827,"title":828,"authors":829,"date":596,"chapterOrder":830,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP通信",[7],"1300-0400",{"path":832,"stem":833,"title":834,"authors":835,"date":596,"chapterOrder":836,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux硬件通信",[7],"1300",{"path":838,"stem":839,"title":840,"authors":841,"date":596,"chapterOrder":842,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","机器人组成",[7],"1400-0100",{"path":844,"stem":845,"title":846,"authors":847,"date":596,"chapterOrder":848,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","远程开发SSH",[7],"1400-0200-0100",{"path":850,"stem":851,"title":852,"authors":853,"date":596,"chapterOrder":854,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","远程访问桌面",[7],"1400-0200-0200",{"path":856,"stem":857,"title":858,"authors":859,"date":596,"chapterOrder":860,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","工控机之远程开发环境",[7],"1400-0200",{"path":862,"stem":863,"title":864,"authors":865,"date":596,"chapterOrder":866,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","工控机之外接USB设备",[7],"1400-0300",{"path":868,"stem":869,"title":870,"authors":871,"date":596,"chapterOrder":872,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","分布式搭建",[7],"1400-0400",{"path":874,"stem":875,"title":876,"authors":877,"date":596,"chapterOrder":878,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","优化日志",[7],"1400-0500",{"path":880,"stem":881,"title":882,"authors":883,"date":596,"chapterOrder":884,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","里程计Odom",[7],"1400-0600-0100",{"path":886,"stem":887,"title":888,"authors":889,"date":596,"chapterOrder":890,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","惯性计IMU",[7],"1400-0600-0200",{"path":892,"stem":893,"title":894,"authors":895,"date":596,"chapterOrder":896,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","激光雷达LiDAR",[7],"1400-0600-0300",{"path":898,"stem":899,"title":900,"authors":901,"date":596,"chapterOrder":902,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","相机Camera",[7],"1400-0600-0400",{"path":904,"stem":905,"title":906,"authors":907,"date":596,"chapterOrder":908,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","全球定位GNSS",[7],"1400-0600-0500",{"path":910,"stem":911,"title":912,"authors":913,"date":596,"chapterOrder":914,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","手柄JOY",[7],"1400-0600-0600",{"path":916,"stem":917,"title":918,"authors":919,"date":596,"chapterOrder":920,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","键盘控制节点",[7],"1400-0600-0700",{"path":922,"stem":923,"title":924,"authors":925,"date":596,"chapterOrder":926,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","硬件平台",[7],"1400-0600",{"path":928,"stem":929,"title":930,"authors":931,"date":596,"chapterOrder":932,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","坐标系与话题关系",[7],"1400-0700",{"path":934,"stem":935,"title":936,"authors":937,"date":596,"chapterOrder":938,"chapterDepth":587,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","轮式里程计标定",[7],"1400-0800-0100-0100",{"path":940,"stem":941,"title":942,"authors":943,"date":596,"chapterOrder":944,"chapterDepth":587,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","轮式里程计与IMU融合",[7],"1400-0800-0100-0200",{"path":946,"stem":947,"title":948,"authors":949,"date":596,"chapterOrder":950,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","轮式里程计标定与融合",[7],"1400-0800-0100",{"path":952,"stem":953,"title":954,"authors":955,"date":596,"chapterOrder":956,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","激光雷达工具",[7],"1400-0800-0200",{"path":958,"stem":959,"title":960,"authors":961,"date":596,"chapterOrder":962,"chapterDepth":582,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","相机使用进阶",[7],"1400-0800-0300",{"path":964,"stem":965,"title":966,"authors":967,"date":596,"chapterOrder":968,"chapterDepth":162,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","硬件平台进阶",[7],"1400-0800",{"path":970,"stem":971,"title":972,"authors":973,"date":596,"chapterOrder":974,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","机器人硬件",[7],"1400",{"path":976,"stem":977,"title":978,"authors":979,"date":596,"chapterOrder":980,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","wiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control",[7],"1500",{"path":982,"stem":983,"title":984,"authors":985,"date":596,"chapterOrder":986,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","wiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","Moveit2工业机器人机械臂",[7],"1600",{"path":988,"stem":989,"title":990,"authors":991,"date":596,"chapterOrder":992,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","wiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","机器人导航Navigation2(实体篇)",[7],"1700",{"path":994,"stem":995,"title":996,"authors":997,"date":596,"chapterOrder":998,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","wiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS",[7],"1800",{"path":1000,"stem":1001,"title":1002,"authors":1003,"date":596,"chapterOrder":1004,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots仿真平台",[7],"1900",{"path":1006,"stem":1007,"title":1008,"authors":1009,"date":596,"chapterOrder":1010,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":602},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","wiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV",[7],"2000",{"path":598,"stem":1012,"title":1013,"authors":1014,"date":596,"chapterOrder":1015,"chapterDepth":615,"docKey":597,"docRoot":598,"docTitle":599,"isWikiDoc":601,"isWikiIndex":601},"wiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2机器人操作系统教程",[7],null,[1017,1019,1022,1025],{"name":7,"image":1018},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":1020,"image":1021},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":1023,"image":1024},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":1026,"image":1027},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431903853]