当前位置:首页>python>小白也能懂!Python+AI加持,怎么用ROS2让机器人认路?

小白也能懂!Python+AI加持,怎么用ROS2让机器人认路?

  • 2026-03-26 09:17:01
小白也能懂!Python+AI加持,怎么用ROS2让机器人认路?

前言

文档定位与目标读者

大家好,我是AI小怪兽。

最近有粉丝问:“小怪兽,ROS2建图导航怎么从零开始?有没有一套完整能跑的方案?”今天我就把压箱底的实战经验分享出来!

我的建议:别再东拼西凑看零散教程了!这套教程专门面向具备一定ROS基础、但希望真正落地生产级系统的机器人工程师,基于米尔RK3576开发板,从零到一搭建完整的自主移动机器人。

🔥 你将学到什么

✅ 环境搭建:ROS2 Humble开发环境一键配置,告别各种报错✅ 机器人建模:URDF建模,让机器人拥有“身体”✅ SLAM建图:SLAM Toolbox实战,构建精准地图✅ 自主导航:Nav2全流程部署,实现自主路径规划与避障✅ 生产级优化:系统排错与性能调优,让你的机器人“跑得稳、不翻车”

我实验后得出的结论:这套方案已经过多次实战验证,从开发板到完整机器人系统,每一步都有详细说明。无论是做科研还是落地项目,都能直接上手!

为什么选择SLAM Toolbox + Nav2?

在ROS2生态中,SLAM(同时定位与建图)与导航(Navigation)是机器人自主移动的核心技术。SLAM Toolbox由Steve Macenski主导开发,是基于成熟Karto SLAM的改进版本,相比传统的Gmapping、Hector SLAM或Cartographer,它具有以下显著优势:

  • 图优化框架:采用基于图优化的后端,而非简单的滤波器,在大场景下地图一致性更好。
  • 生命周期管理:支持终身地图(LifeLong Mapping),即可以在已有地图基础上继续优化或更新,甚至能够移除动态物体留下的痕迹。
  • 多种运行模式:同步/异步建图、纯定位模式(可作为AMCL的高精度替代品)、地图序列化与反序列化。
  • RViz交互插件:提供丰富的RViz工具,支持手动修正地图、操作图节点。
  • 性能卓越:经过优化,能够在数十万平方英尺的场景中实时运行。

而Nav2作为ROS2的官方导航框架,继承了ROS1 Navigation Stack的优点并进行了完全的重构,支持行为树、更灵活的插件化架构和更好的实时性保障。将SLAM Toolbox与Nav2结合,我们可以基于RK3576开发板构建一套从建图到定位导航的无缝衔接系统,甚至可以在导航过程中边建图边导航(Navigation while Mapping)。

核心技术栈概览

  • 操作系统:Ubuntu 22.04 LTS (Jammy)
  • ROS发行版:ROS2 Humble Hawksbill (长期支持版)
  • 仿真环境:Gazebo Classic 11 (与ROS2 Humble官方集成)
  • 机器人建模:URDF / Xacro
  • SLAM库:slam_toolbox (版本 ≥ 2.6.10)
  • 导航栈:Nav2 (navigation2, nav2_bringup)
  • 可视化与调试:Rviz2, tf2_tools, rqt_graph

第一章:环境搭建与准备工作

1.1 操作系统与ROS2 Humble安装

我们选择Ubuntu 22.04作为基础操作系统。请确保你的系统已更新至最新状态。

# 设置localesudo apt update && sudo apt install localessudo locale-gen en_US en_US.UTF-8sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8export LANG=en_US.UTF-8# 添加ROS2 apt仓库sudo apt install software-properties-commonsudo add-apt-repository universesudo apt update && sudo apt install curl -ysudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null# 安装ROS2 Humble Desktop(包含核心库、rqt、rviz2等)sudo apt updatesudo apt install ros-humble-desktop# 安装开发工具和依赖sudo apt install python3-colcon-common-extensions python3-rosdep python3-argcomplete python3-vcstool git

安装完成后,配置环境变量以便每次打开终端时自动加载ROS2环境:

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrcsource ~/.bashrc

注意:如果你管理多个工作空间,建议在工作空间的install目录下使用local_setup.bash,而非全局覆盖。后续我们会在项目工作空间中具体说明。

1.2 安装仿真环境(Gazebo)与机器人模型

为了在不依赖实体硬件的情况下进行算法验证,我们需要安装Gazebo仿真环境以及经典的TurtleBot3机器人模型,尽量在x86 虚拟机安装仿真,arm64架构turtlebot3支持不足。

# 安装Gazebo与ROS2接口包sudo apt install ros-humble-gazebo-ros-pkgs ros-humble-gazebo-ros2-control# 安装TurtleBot3相关包sudo apt install ros-humble-turtlebot3* ros-humble-teleop-twist-keyboard

1.3 安装核心算法包:SLAM Toolbox与Nav2

# 安装SLAM Toolboxsudo apt install ros-humble-slam-toolbox# 安装Nav2导航栈及其启动文件sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup# 安装其他实用工具(用于后续调试)sudo apt install ros-humble-tf2-tools ros-humble-rqt-tf-tree

验证安装是否成功:

ros2 pkg list | grep slam_toolboxros2 pkg list | grep nav2_bringup

1.4 创建工作空间与测试安装

mkdir -p ~/ros2_ws/srccd ~/ros2_wscolcon build --symlink-installecho "source ~/ros2_ws/install/setup.bash" >> ~/.bashrcsource ~/.bashrc

测试仿真环境:打开新终端,运行Gazebo仿真世界和TurtleBot3机器人:

export TURTLEBOT3_MODEL=waffleros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

图1:Gazebo中TurtleBot3仿真环境

键盘遥控:

# 新终端export TURTLEBOT3_MODEL=waffleros2 run teleop_twist_keyboard teleop_twist_keyboard

第二章:机器人建模与仿真集成

2.1 URDF/Xacro基础与传感器配置

URDF (Unified Robot Description Format) 是ROS中描述机器人几何、惯性、关节关系的XML格式。Xacro则是URDF的宏语言,允许我们使用变量、数学运算和模块化包含。

一个典型的差分驱动机器人模型的核心部分:linkjointtransmissiongazebo插件

下面是一个简化的差分驱动+激光雷达的Xacro示例结构(部分):

<?xml version="1.0"?><robotxmlns:xacro="http://www.ros.org/wiki/xacro"name="my_robot">    <!-- 定义颜色、尺寸等常量 -->    <xacro:propertyname="base_length"value="0.3" />    <xacro:propertyname="base_radius"value="0.1" />    <!-- 底盘 link -->    <linkname="base_link">        <visual>            <geometry><cylinderlength="${base_length}"radius="${base_radius}"/></geometry>            <materialname="blue"/>        </visual>        <collision>            <geometry><cylinderlength="${base_length}"radius="${base_radius}"/></geometry>        </collision>        <inertial>            <massvalue="2.0"/>            <inertiaixx="0.01"ixy="0.0"ixz="0.0"iyy="0.01"iyz="0.0"izz="0.01"/>        </inertial>    </link>    <!-- 左轮关节 -->    <jointname="left_wheel_joint"type="continuous">        <parentlink="base_link"/>        <childlink="left_wheel"/>        <originxyz="0 ${base_radius+wheel_width/2} 0"rpy="-1.5708 0 0"/>        <axisxyz="0 0 1"/>    </joint>    <!-- Gazebo 差分驱动插件 -->    <gazebo>        <pluginname="gazebo_ros_diff_drive"filename="libgazebo_ros_diff_drive.so">            <ros><namespace>/</namespace></ros>            <update_rate>50</update_rate>            <left_joint>left_wheel_joint</left_joint>            <right_joint>right_wheel_joint</right_joint>            <wheel_separation>${base_radius*2 + wheel_width}</wheel_separation>            <wheel_diameter>${wheel_radius*2}</wheel_diameter>            <command_topic>cmd_vel</command_topic>            <odometry_topic>odom</odometry_topic>            <odometry_frame>odom</odometry_frame>            <robot_base_frame>base_footprint</robot_base_frame>        </plugin>    </gazebo></robot>

2.2 坐标系变换(TF)树详解:map -> odom -> base_link -> sensor_link

关键坐标系:

  • map:世界固定坐标系。
  • odom:里程计坐标系,连续但不稳定。
  • base_link:机器人基座坐标系。
  • laser_link等:传感器坐标系

变换关系:base_link->sensor_link(静态),odom->base_link(里程计发布),map->odom(定位系统发布)。

验证TF树:

ros2 run tf2_tools view_frames   # 生成frames.pdf

2.3 自定义机器人描述文件与启动

标准包结构:

my_robot_description/├── CMakeLists.txt├── package.xml├── urdf/   ├── my_robot.urdf.xacro   └── materials.xacro├── meshes/└── launch/    ├── display.launch.py    └── spawn_robot.launch.py

display.launch.py 示例:

import osfrom launch import LaunchDescriptionfrom launch_ros.actions import Nodefrom xacro import process_filedef generate_launch_description():    pkg_share = os.path.join(get_package_share_directory('my_robot_description'))    urdf_path = os.path.join(pkg_share, 'urdf''my_robot.urdf.xacro')    robot_description = process_file(urdf_path).toxml()    return LaunchDescription([        Node(package='robot_state_publisher', executable='robot_state_publisher',             parameters=[{'robot_description': robot_description}]),        Node(package='joint_state_publisher_gui', executable='joint_state_publisher_gui'),        Node(package='rviz2', executable='rviz2'),    ])

第三章:SLAM Toolbox深度实践与建图

3.1 SLAM Toolbox的两种核心模式:同步与异步

online_async_launch.py(异步,常用)和 online_sync_launch.py(同步)。

3.2 配置文件详解:mapper_params_online_async.yaml

# mapper_params_online_async.yamlslam_toolbox:  ros__parameters:    odom_frame: odom    map_frame: map    base_frame: base_footprint    scan_topic: /scan    mode: mapping    minimum_range0.2    maximum_range10.0    minimum_travel_distance0.1    minimum_travel_heading0.2    do_loop_closing: true    loop_search_space8.0    map_update_interval5.0    enable_interactive_mode: true    # ... 其他参数

注意: 1.机器人与传感器参数:odom_frame、base_frame必须与你的TF树完全一致。scan_topic确保订阅正确的数据。2.节点添加策略:minimum_travel_distance和minimum_travel_heading决定了地图的稠密程度。值越小,节点越多,地图细节越丰富,但计算量也越大。对于大场景,可以适当增大。3.闭环检测:loop_search_space是闭环检测的搜索半径。如果你的环境有很多相似的结构(如长走廊),需要适当减小这个值以避免错误的闭环;反之,如果传感器噪声大或里程计漂移严重,需要增大搜索空间。

3.3 手动建图流程与保存地图

终端1:仿真

export TURTLEBOT3_MODEL=waffleros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

终端2:SLAM Toolbox

ros2 launch slam_toolbox online_async_launch.py \  slam_params_file:=./src/my_robot_navigation/config/mapper_params_online_async.yaml \  use_sim_time:=true

终端3:RViz(添加Map和LaserScan)

图3:Rviz2中可视化激光扫描和建图过程

终端4:键盘遥控

ros2 run teleop_twist_keyboard teleop_twist_keyboard

保存地图:

ros2 run nav2_map_server map_saver_cli -f ~/maps/my_mapros2 service call /slam_toolbox/serialize_map slam_toolbox/srv/SerializePoseGraph \  "{filename: '/home/your_user/maps/my_pose_graph'}"

图4:实体机器人建图现场

3.4 高级话题:终身地图与位姿图序列化

启用终身地图:mode: mapping + enable_life_long_mapping: true。序列化文件(.posegraph)可保存图节点信息,用于后续继续建图或定位模式。


第四章:Nav2导航系统构建与配置

4.1 Nav2架构与核心组件

  • 地图服务器、AMCL、代价地图(全局/局部)、规划器(Planner)、控制器(DWB)、行为树导航器(BT Navigator)。

4.2 Nav2参数配置实战(nav2_params.yaml节选)

bt_navigator:  ros__parameters:    default_nav_to_pose_bt_xml: /opt/ros/humble/share/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning.xmlcontroller_server:  ros__parameters:    controller_frequency20.0    FollowPath:      plugin"dwb_core::DWBLocalPlanner"      max_vel_x0.22      max_vel_theta1.0      path_distance_bias32.0      goal_distance_bias24.0local_costmap:  local_costmap:    ros__parameters:      global_frame: odom      rolling_window: true      width3      plugins: ["voxel_layer", "inflation_layer"]global_costmap:  global_costmap:    ros__parameters:      global_frame: map      plugins: ["static_layer", "obstacle_layer", "inflation_layer"]amcl:  ros__parameters:    global_frame_id: map    odom_frame_id: odom    laser_model_type: likelihood_field    min_particles500    max_particles2000

4.3 启动Nav2:基于已有地图的导航

终端1:仿真

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

终端2:Nav2 bringup

ros2 launch nav2_bringup bringup_launch.py \  use_sim_time:=true \  map:=/home/your_user/maps/my_map.yaml \  params_file:=./src/my_robot_navigation/config/nav2_params.yaml

终端3:RViz (Nav2默认视图)

rviz2 -/opt/ros/humble/share/nav2_bringup/rviz/nav2_default_view.rviz

图5:Nav2仿真导航界面

使用“2D Pose Estimate”初始化位姿,然后“2D Goal Pose”发送目标。

4.4 集成SLAM Toolbox定位模式替代AMCL

修改SLAM配置文件:

mode: localizationmap_file_name: "/home/your_user/maps/my_pose_graph"

启动SLAM Toolbox(定位模式):

ros2 launch slam_toolbox online_async_launch.py \  slam_params_file:=./config/mapper_params_localization.yaml use_sim_time:=true

启动Nav2(不含AMCL):

ros2 launch nav2_bringup navigation_launch.py use_sim_time:=true params_file:=./config/nav2_params.yaml
步骤1 :在地图上设置小车初始位置和方向;
步骤2:在地图上设置小车单点导航:

图6:实体机器人Nav2导航


第五章:高级整合与调试

5.1 边建图边导航(Navigation while Mapping)

启动仿真 + SLAM建图模式 + navigation_launch.py(不含map_server/amcl),然后通过RViz设定目标,机器人一边探索一边建图。

5.2 RViz插件:SLAM Toolbox图形化工具

Panels -> Add Panel -> SlamToolboxPlugin 可手动保存、清除节点、强制闭环。

5.3 性能分析与优化

  • 分析CPU/内存top -p `pgrep -d',' -f 'ros2|slam_toolbox|nav2'`
  • 检查话题频率ros2 topic hz /scan
  • SLAM优化:使用snap版slam-toolbox;增大map_update_interval;增大节点添加阈值。
  • Nav2优化:降低controller_frequency;增大局部代价地图分辨率;减少DWB采样。

5.4 常见错误排解指南


第六章:实体机器人部署指南

6.1 硬件抽象与驱动层

  • 激光雷达驱动:例如ros2 launch sllidar_ros2 view_sllidar_a1_launch.py
  • 里程计融合:使用robot_localizationekf_node融合编码器与IMU。

6.2 参数调整:从仿真到现实

  • 精确测量footprint
  • 降低最大速度/加速度
  • 增大inflation_radius (如0.5m)
  • 调大SLAM的minimum_travel_distanceloop_search_space

6.3 启动系统:Bringup的模块化设计

  • harware_bringup.launch.py:底层驱动 + robot_state_publisher
  • slam_bringup.launch,py:包含硬件 + SLAM Toolbox
  • nav_bringup.launch.py:包含硬件 + 定位 + Nav2核心

第七章:总结与展望

7.1 本文总结

从环境搭建、URDF建模、SLAM建图、Nav2导航到基于米尔RK3576开发板的实体部署,全面覆盖了ROS2 Humble下SLAM Toolbox的自主机器人系统构建过程。

7.2 下一步研究方向

  • 多机器人SLAM与地图合并
  • 语义导航(目标检测+导航)
  • 强化学习局部规划器
  • 3D导航(3D激光雷达+体素网格)

附录:常用命令速查表

米尔电子最新“明星产品”速报
 米尔电子 
领先的嵌入式处理器模组厂商

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 11:25:43 HTTP/2.0 GET : https://f.mffb.com.cn/a/482824.html
  2. 运行时间 : 0.145918s [ 吞吐率:6.85req/s ] 内存消耗:4,761.56kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1c7c0977ffaf4a7ba2452fa8cc31914b
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001134s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.002060s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000817s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000729s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001703s ]
  6. SELECT * FROM `set` [ RunTime:0.000732s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001972s ]
  8. SELECT * FROM `article` WHERE `id` = 482824 LIMIT 1 [ RunTime:0.004520s ]
  9. UPDATE `article` SET `lasttime` = 1774581943 WHERE `id` = 482824 [ RunTime:0.008743s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000761s ]
  11. SELECT * FROM `article` WHERE `id` < 482824 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001277s ]
  12. SELECT * FROM `article` WHERE `id` > 482824 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.003076s ]
  13. SELECT * FROM `article` WHERE `id` < 482824 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002638s ]
  14. SELECT * FROM `article` WHERE `id` < 482824 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010748s ]
  15. SELECT * FROM `article` WHERE `id` < 482824 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.015409s ]
0.151220s