编写程序,模拟送餐机器人导航,输入目标桌号,输出从取餐区到餐桌的最优路线,如取餐区到A区到3号桌,并提示已到达。

33 阅读5分钟

我将为你设计一个模拟送餐机器人导航的程序,结合智能机器人导论的地图建模与路径规划知识,实现模块化、易扩展的导航系统。

核心代码实现

-- coding: utf-8 --

""" 送餐机器人导航模拟程序 v1.0 基于智能机器人导论的地图建模与路径规划原理 支持目标桌号输入、最优路线生成、到达提示功能 """

import logging from typing import List, Dict, Optional

配置日志

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(name)

class RestaurantMap: """餐厅地图建模模块:定义区域、桌号及空间关系"""

def __init__(self):
    # 餐厅区域-桌号映射(实际场景可扩展为网格坐标)
    self.area_tables: Dict[str, List[str]] = {
        "A区": ["1号桌", "2号桌", "3号桌", "4号桌"],
        "B区": ["5号桌", "6号桌", "7号桌"],
        "C区": ["8号桌", "9号桌", "10号桌", "11号桌"],
        "D区": ["12号桌", "13号桌"]
    }
    self.pickup_area = "取餐区"  # 机器人起始位置

def find_table_area(self, table_number: str) -> Optional[str]:
    """查找目标桌号所属区域"""
    for area, tables in self.area_tables.items():
        if table_number in tables:
            return area
    return None

def get_all_tables(self) -> List[str]:
    """获取所有有效桌号列表"""
    all_tables = []
    for tables in self.area_tables.values():
        all_tables.extend(tables)
    return all_tables

class PathPlanner: """路径规划模块:基于地图模型生成最优路线"""

def __init__(self, map_data: RestaurantMap):
    self.map = map_data

def plan_route(self, target_table: str) -> Optional[List[str]]:
    """
    规划从取餐区到目标桌号的最优路线
    简化策略:取餐区 → 目标区域 → 目标桌号(适用于分区明确的餐厅)
    """
    # 校验目标桌号有效性
    if target_table not in self.map.get_all_tables():
        logger.error(f"无效桌号: {target_table},请检查输入")
        return None
    
    # 查找目标区域
    target_area = self.map.find_table_area(target_table)
    if not target_area:
        logger.error(f"未找到桌号 {target_table} 所属区域")
        return None
    
    # 生成路线(取餐区→区域→桌号)
    route = [self.map.pickup_area, target_area, target_table]
    logger.info(f"规划路线成功: {' → '.join(route)}")
    return route

class DeliveryRobot: """送餐机器人模拟模块:执行导航与状态反馈"""

def __init__(self, map_data: RestaurantMap):
    self.map = map_data
    self.planner = PathPlanner(map_data)
    self.current_position: Optional[str] = None

def navigate(self, target_table: str) -> bool:
    """执行导航流程"""
    # 规划路线
    route = self.planner.plan_route(target_table)
    if not route:
        return False
    
    # 模拟移动并反馈状态
    print("\n===== 送餐导航开始 =====")
    for i, position in enumerate(route):
        self.current_position = position
        if i == 0:
            print(f"🤖 机器人已从【{position}】出发")
        else:
            prev_pos = route[i-1]
            print(f"➡️ 移动至【{position}】(来自{prev_pos})")
    
    # 到达提示
    print(f"\n✅ 已到达目标【{target_table}】!导航结束")
    print("===== 导航完成 =====\n")
    return True

def main(): """主程序:交互式导航入口""" # 初始化地图与机器人 restaurant_map = RestaurantMap() robot = DeliveryRobot(restaurant_map)

# 用户输入目标桌号
print("欢迎使用送餐机器人导航系统!")
print(f"可用桌号: {', '.join(restaurant_map.get_all_tables())}")
target_table = input("\n请输入目标桌号(如'3号桌'): ").strip()

# 执行导航
success = robot.navigate(target_table)
if not success:
    print("导航失败,请检查桌号是否正确")

if name == "main": main()

README文件

送餐机器人导航模拟程序

项目简介

基于智能机器人导论的地图建模与路径规划原理,模拟餐厅送餐机器人的导航过程。输入目标桌号,自动生成从取餐区到餐桌的最优路线,并实时反馈移动状态与到达提示。

核心功能

  • 🗺️ 餐厅地图建模(区域-桌号空间关系)
  • 🧭 最优路线规划(取餐区→目标区域→目标桌号)
  • 📢 实时导航状态反馈(移动轨迹可视化)
  • ✅ 到达目标点自动提示
  • ⚙️ 模块化设计(地图/规划/执行分离)

安装指南

  • 环境要求:Python 3.8+
  • 依赖安装:无需额外依赖(使用标准库)
  • 运行命令python delivery_robot_navigator.py

目录结构

delivery_robot_navigator/

├── delivery_robot_navigator.py # 主程序(含所有模块)

├── README.md # 项目说明

└── 使用说明.txt # 快速上手指南

使用说明

  1. 运行程序后,查看控制台输出的「可用桌号」列表
  2. 输入目标桌号(如"3号桌"、"8号桌")
  3. 观察导航过程:机器人从取餐区出发→移动至目标区域→到达目标桌号
  4. 导航结束后,根据提示确认结果

核心知识点卡片

🗺️ 机器人地图建模

  • 知识点:用数据结构抽象物理空间(区域-桌号映射)
  • 应用:将餐厅转化为机器可理解的拓扑地图
  • 创新点:简化复杂环境为分层结构(取餐区→区域→桌号)

🧭 最优路径规划

  • 知识点:基于目标位置的层级路径生成(启发式简化算法)
  • 应用:取餐区→目标区域→桌号的线性最优路线
  • 扩展方向:可升级为A*算法(考虑障碍物与距离权重)

⚙️ 模块化机器人系统

  • 知识点:分离地图管理、路径规划、执行控制三大模块
  • 优势:单模块故障不影响整体,支持独立升级(如更换路径算法)
  • 工程思维:符合机器人系统"感知-决策-执行"三层架构

📊 状态反馈机制

  • 知识点:实时更新机器人位置并输出人机交互信息
  • 价值:提升导航透明度,便于人工监控与异常处理
  • 新媒体关联:可扩展为顾客端实时位置查询功能

🎯 目标导向交互设计

  • 知识点:通过用户输入触发导航流程,输出结构化结果
  • 体验优化:明确可用桌号提示,减少无效输入
  • 商业应用:对接餐厅POS系统实现订单自动派送

该程序通过简化的路径规划模型,直观展示了智能机器人导论中的核心思想——用抽象模型解决实际问题。你可以通过扩展地图复杂度(如添加障碍物坐标)或升级路径算法(如Dijkstra算法)进一步提升真实性。 关注我,有更多实用程序等着你!