ROS2机器人少年创客营:Python第二课

ROS2机器人少年创客营:Python第二课

课程名称

聪明的机器人------流程控制与逻辑

课程目标
  • 掌握布尔逻辑:理解"真"与"假"是计算机判断的基础。
  • 学会条件判断 :使用ifelifelse让机器人根据环境做出不同反应。
  • 理解循环结构 :使用whilefor让机器人不知疲倦地重复工作。
  • 培养逻辑思维:能够画出简单的流程图,并将其转化为代码。
核心内容

机器人的智慧:布尔值

  • 概念:计算机的世界只有两个状态------开和关,真和假。
  • 数据类型bool(布尔型)。
    • True(真/是/1):比如"电量充足"。
    • False(假/否/0):比如"碰到墙壁"。
  • 比较运算符
    • ==(等于)、!=(不等于)、>(大于)、<(小于)。
    • 注意=是赋值(把东西放进盒子),==是判断(比较两个盒子里的东西是否一样)。

条件判断:如果...就...

  • 语法结构

    python 复制代码
    if 条件:
        做这件事
    else:
        做那件事
  • 缩进(Indentation)

    • 比喻:这是Python的"家族族谱"。缩进(通常是4个空格或1个Tab)表示"属于"。
    • 规则if下面的代码必须缩进,表示"只有在满足条件时,才执行这些代码"。
  • 多路分支(elif)

    • 就像红绿灯:如果是红灯->停;如果是绿灯->行;如果是黄灯->等待。

循环:不知疲倦的仆人

  • while循环(当...的时候)
    • 比喻:只要(While)电池没电,就一直(循环)工作。
    • 死循环 :如果条件永远为真(比如while True),程序就会一直跑下去。这在机器人主程序中很常见(主循环)。
  • for循环(数数循环)
    • 比喻:我要走5步。数1, 2, 3, 4, 5,每数一个数走一步。
    • 场景:遍历列表(比如:依次经过A点、B点、C点)。
实践环节

任务:编写"智能避障与巡逻"程序

  • 场景描述

    • 你的机器人在一条走廊里巡逻。
    • 它有一个传感器(变量distance)。
    • 如果前方无障碍(距离>10),它就继续前进。
    • 如果前方有障碍(距离<=10),它就停下来并发出警报。
    • 这个过程需要一直重复(循环)。
  • 代码实现

    python 复制代码
    # 模拟传感器数据
    distance = 50
    
    print("机器人巡逻系统启动...")
    
    # 模拟一直运行的主循环
    # 在实际操作中,我们通常用 while True 让机器人一直工作
    running = True
    
    while running:
        print(f"当前距离障碍物: {distance} cm")
    
        if distance > 10:
            print(">> 前方畅通,继续前进...")
            # 模拟距离变近
            distance = distance - 10
        elif distance <= 10 and distance > 0:
            print(">> 警告!距离过近,减速...")
            distance = distance - 2
        else:
            print(">> 危险!已接触障碍物,停止并报警!")
            running = False # 停止循环
    
    print("巡逻结束。")
  • 进阶挑战

    • 修改代码,让机器人在遇到障碍物时,不是停止,而是"后退5cm,然后左转90度"(用打印文字模拟动作)。
课后总结

今天我们赋予了机器人"思考"的能力。if让它学会了选择,while让它学会了坚持(重复)。没有逻辑的代码只是一堆字符,加上逻辑,它们就变成了智能。

课后思考

如果我写了一个while True:(死循环),但是忘记在循环里写让它停止的条件,或者忘记给它休息的时间,计算机会发生什么?(引导思考:死循环会导致程序卡死,CPU占用率飙升,就像机器人发疯了一样不停转圈)。

相关推荐
智算菩萨2 小时前
【Tkinter】10 Tkinter Listbox 列表框控件深度解析:多选模式、滚动条联动与双向选择器实战
python·ai编程
蓝之静云2 小时前
mapper执行sql报空指针,需要传入参数
数据库·python·sql
山栀shanzhi2 小时前
FFmpeg 实战:RGB 裸流编码成 MP4,全流程详解(含源码
c++·ffmpeg
Yupureki2 小时前
《Linux系统编程》20.常见程序设计模式
linux·服务器·c语言·c++·单例模式·建造者模式·责任链模式
maxmaxma2 小时前
ROS2 机器人 少年创客营:Day 8
机器人·ros2
薛定猫AI2 小时前
【深度解析】Anthropic Epitaxi 泄露:从聊天机器人到统一智能体系统的产品跃迁
人工智能·机器人
wggmrlee2 小时前
Mac安装Anaconda
python·fastapi
YuanDaima20482 小时前
解决Conda环境下RTX 50系列显卡PyTorch+Transformers+PEFT微调报错
人工智能·pytorch·笔记·python·深度学习·机器学习·conda
誰能久伴不乏2 小时前
给开发板装上嘴巴与耳朵:i.MX6ULL 裸机串口 (UART) 驱动终极指南
arm开发·c++·单片机·嵌入式硬件·arm