📖 Smart Car 工具使用说明
本说明只介绍网页工具的操作方法,不包含算法教程或完整比赛答案。
🗺️ 页面区域概览
页面分为 5 个主要区域:
- 左栏 - 2D 仿真画面:显示赛道俯视图和摄像头二值画面。赛道视图显示车辆位置和轨迹;摄像头视图显示 80×60 像素的前视摄像头画面(带透视畸变)。可切换上下/左右/悬浮三种布局。
- 左栏 - 运行控制按钮:包含运行、停止、急停、重置、编译等按钮。编译检查语法,运行执行代码,急停立即停车,重置回到起点。
- 右栏 - C 代码编辑器:编写和编辑 C 代码。支持多文件管理、全屏编辑、搜索替换、导入导出。工具栏有函数库、教程、使用说明入口。
- 右栏 - 状态面板:实时显示电机 PWM、编码器、陀螺仪、摄像头等运行时状态。运行代码后自动更新。
- 底部 - 代码输出/系统日志:代码输出显示 printf 结果;系统日志显示编译错误、运行诊断等信息。
▶️ 运行流程
典型操作流程:
- 编写代码:在编辑器中编写 C 代码,必须包含
setup() 和 loop() 函数。
- 编译:点击"编译"按钮检查语法并生成本次运行程序。如果代码有错误,会在编辑器中高亮错误行,底部显示错误列表;代码修改后需要重新编译才能运行。
- 运行:点击"▶ 运行"按钮执行代码。代码会在仿真环境中运行,车辆会根据你的控制逻辑移动。
- 观察:观察 2D 仿真画面和状态面板,查看车辆行为和传感器数据。
- 停止/急停:点击"⏹ 停止"正常停止;点击"🛑 急停"立即停车(用于紧急情况)。
- 重置:点击"↺ 重置"将车辆重置到起点位置,可以重新开始。
⚠ 注意:修改代码后需要重新运行才能生效。运行中的修改会显示黄色警告提示。
📝 编辑器使用
编辑器功能:
- 多文件管理:点击"+ 新建"添加 .c 或 .h 文件;"✏ 重命名"修改文件名;"⭐ 主文件"设置运行入口;"🗑 删除"移除文件。切换文件只改变编辑目标,不改变运行入口。
- 全屏模式:点击"⛶ 全屏"或按 F11 进入全屏编辑。全屏模式左侧有文件列表和工具按钮。按 Esc 退出全屏。
- 搜索替换:点击"🔍 搜索"或按 Ctrl+H 打开搜索栏。支持区分大小写和全字匹配。
- 导入导出:"📥 导入"从本地加载 .c/.h 文件;"📤 导出"保存当前文件;"📦 导出zip"打包整个项目。
- 重新开始:编辑器“文件”菜单可重置当前默认文件,或恢复整个默认项目。恢复整个项目会覆盖浏览器中自动保存的文件。
- 代码提示:输入时自动显示函数和变量提示,按 Tab 或 Enter 插入。
📚 函数库参考
点击工具栏"📚 函数库"按钮打开平台 API 参考:
- 分类导航:左侧按功能分类(运行结构、PWM/GPIO、电机/舵机、编码器、摄像头、LED、陀螺仪、常量等)。
- 搜索:顶部搜索框可按函数名或关键词快速查找。
- 函数说明:每个函数包含名称、参数、返回值和使用示例。
- 常用函数:
pwm_set_duty() 设置 PWM;gpio_set_level() 控制 GPIO;encoder_get_delta() 读编码器;camera_get_pixel() 读摄像头。
💡 函数库只列出平台支持的 API,不包含完整算法实现。
🐛 调试功能
调试工具帮助你排查代码问题:
- 断点设置:在编辑器行号左侧点击可设置断点(红色圆点)。程序运行到断点时会暂停。
- 单步执行:暂停后可使用"⤵ 步入"(进入函数内部)、"⤴ 步过"(执行当前行)、"↗ 步出"(跳出当前函数)。
- 变量查看:暂停时右侧面板显示全局变量和局部变量的当前值。
- 调用栈:显示当前函数调用链,帮助理解执行流程。
- 调试控制:可"▶ 继续"运行到下一个断点,或"✕ 清除断点"移除所有断点。
💡 调试功能在代码运行时自动启用,无需特殊配置。
🏁 赛道工具
赛道编辑器用于自定义仿真赛道:
- 打开方式:点击控制栏"🏁 赛道编辑"按钮。
- 添加模块:左侧选择模块类型(直线、弯道、交叉等),调整参数后点击"+ 添加模块"。
- 管理模块:右侧显示当前赛道的模块列表,可"⌫ 删除末尾"或"🗑 清空"。
- 应用赛道:点击"✓ 应用赛道"将编辑结果应用到仿真环境。
- 恢复默认:点击"↺ 恢复默认赛道"回到初始赛道。
- 导入导出:可"📷 导出图片"(带参数标注)、"📄 导出JSON"(保存配置)、"📥 导入JSON"(加载配置)。
🔬 仿真与现实差异
2D 仿真环境与真实智能车硬件有以下关键差异:
- 摄像头:仿真使用理想化的 80×60 二值画面;真实摄像头有噪声、光照变化、透视畸变。
- 电机响应:仿真电机立即响应;真实电机有惯性、延迟和机械误差。
- 传感器精度:仿真编码器和陀螺仪数据精确;真实传感器有噪声和漂移。
- 赛道差异:仿真赛道是理想化的几何图形;真实赛道有材质变化、反光、阴影。
- 调试方式:仿真可直接 printf 输出;真实硬件需要串口通信或 LED 指示。
⚠ 仿真适合学习 API 和调试逻辑;真实比赛需要在硬件上验证和调参。
🔒 项目状态隔离
普通练习页与教程页的项目状态完全隔离:
- 练习页代码保存在
smartcar_project,教程页保存在 smartcar_tutorial_project。
- 在教程页操作(重置、加载骨架等)不会影响练习页的代码。
- 在练习页编辑代码不会影响教程页的项目。
- 教程页运行入口固定为
main.c,切换文件只改变编辑目标。
本说明只介绍工具操作,不包含算法教程或完整比赛答案。如需学习智能车算法,请参考相关课程资料。