核桃编程 L16-4 | 超人厂长

模块31:颜色识别 | 模块32:智能物流车

第一部分:编程单词卡

点击下面的单词可以听到发音,学习这些编程中常用的单词吧!

color
颜色
record
记录
detect
检测
goods
货物
state
状态
factory
工厂

单词拼写练习

学习了单词后,试着输入你记住的单词吧!

请拼写单词:color

第二部分:颜色识别与智能物流车

今天我们来学习如何用编程让智能物流车识别颜色,完成工厂的货物分拣任务!

智能物流工厂演示

帮助智能物流车记录颜色、识别货物并完成分拣任务!

状态: 空
取货点
红色卸货区
蓝色卸货区
智能物流系统
等待指令...

颜色识别核心函数

recordColor()

记录货物颜色

recordColor('红') # 记录红色货物
recordColor('蓝') # 记录蓝色货物
recordColor('绿') # 记录绿色货物

功能:将颜色名称记录到视觉模块中,用于后续识别。

detectColor()

检测货物颜色

goods = detectColor() # 检测颜色
# 返回颜色名称或'无'

if goods == '红':
  print("检测到红色货物")
elif goods == '蓝':
  print("检测到蓝色货物")

功能:检测画面中是否有记录过的颜色,返回颜色名称或'无'。

getColor()

识别地图颜色

color = getColor() - 1 # 识别地图颜色
# 返回地图颜色编号

if color == '红':
  print("到达红色区域")

功能:识别智能车当前所处的地图颜色,用于判断卸货区域。

状态变量

记录智能车状态

state = '空' # 初始状态为空

if state == '空':
  enter() # 进入取货点

setClaw(1) # 夹取货物
state = '满' # 状态变为满

功能:使用变量记录智能车是否已取货,避免重复进入取货点。

完整智能物流车代码示例

# 初始化智能物流车
initAI('后') # 使用后面的屏幕
setMode('颜色识别') # 设置为颜色识别模式
state = '空' # 初始状态为空

# 主循环
while True:
  # 循线行驶
  followLine()

  # 按需取货
  if state == '空': # 如果状态为空
    if isAllBlack(): # 检测到黑线
      enter() # 进入取货点

      # 检测货物颜色
      goods = detectColor()
      if goods == '红' or goods == '蓝':
        setClaw(1) # 夹起货物
        state = '满' # 状态变为满

  # 放下货物
  if state == '满': # 如果状态为满
    color = getColor() - 1 # 识别地图颜色
    if color == goods: # 如果地图颜色和货物颜色相同
      enter() # 进入卸货点
      setClaw(0) # 放下货物
      state = '空' # 状态恢复为空

第三部分:小试牛刀

学习了颜色识别和智能物流车,现在来挑战一下这个问题吧!

练习题:智能物流车程序逻辑

超人厂长需要编写一个智能物流车程序,需要实现以下功能:

  1. 初始化视觉模块,使用后面的屏幕,设置为颜色识别模式
  2. 设置状态变量state,初始值为'空'
  3. 智能车循线行驶,当状态为'空'时,如果检测到黑线就进入取货点
  4. 在取货点检测货物颜色,如果是红色或蓝色就夹起货物,并将状态改为'满'
  5. 当状态为'满'时,识别地图颜色,如果地图颜色和货物颜色相同就进入卸货点放下货物,并将状态恢复为'空'

以下哪个代码段能够正确实现上述功能?

A
initAI('后')
setMode('颜色识别')
state = '空'

while True:
  followLine()
  if state == '空':
    if isAllBlack():
      enter()
      goods = detectColor()
      if goods == '红' or goods == '蓝':
        setClaw(1)
        state = '满'
  if state == '满':
    color = getColor() - 1
    if color == goods:
      enter()
      setClaw(0)
      state = '空'
B
initAI()
setMode('人脸识别')
state = 0

while True:
  followLine()
  if state == 0:
    if isAllBlack():
      enter()
      goods = detectColor()
      if goods == '红':
        setClaw(1)
        state = 1
  if state == 1:
    color = getColor()
    if color == goods:
      enter()
      setClaw(0)
      state = 0
C
initAI('后')
setMode('颜色识别')
state = '空'

while True:
  followLine()
  if state == '空':
    if isAllBlack():
      enter()
      goods = detectColor()
      if goods == '红' or goods == '蓝':
        setClaw(1)
        state = '满'
  if state == '满':
    color = getColor()
    if color == goods:
      setClaw(0)
      state = '空'

解析

Powered by 快链
[免费发布] →