回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

行空板无人驾驶系列课程 第7课:智能物流配送机器人 简单

头像 zoey不种土豆 2025.08.12 11 0

本系列课程资料文件: https://pan.baidu.com/s/1-yP8YTW3WImn8mxLpOb3eA?pwd=mq9p

 

现代物流行业中,提升配送效率和降低运营成本是核心竞争力。传统的人工配送模式存在人力成本高、效率低和错误率高等问题,无法满足日益增长的物流需求。

为了解决这些问题,智能物流配送机器人应运而生。本项目以行空板为主控,结合行空板maxbot小车,制作了一款的智能物流配送机器人,旨在实现高效、精准的物流配送。

第13课 智能物流配送机器人192.png

 

任务目标

用户通过行空板界面选择配送点后,机器人将沿预设路线巡线,到达指定配送点时自动停止并卸货。

第13课 智能物流配送机器人271.png

 

知识点

1. 强化用户界面设计方法 

2. 掌握处理多个任务的并发执行

3. 掌握多线程的使用方法

 

材料清单

硬件准备:

baaa3a1f7a763f0a8d0a3627eb628c36.png

软件使用:Mind+编程软件 

下载地址:https://mindplus.cc/

第13课 智能物流配送机器人482.png

 

课前准备 

环境设置:在开始正式学习之前,我们需要对行空板进行一些基础准备,确保系统和环境设置都正确。

具体步骤,请参考:行空板无人驾驶系列课程 第一课 课前准备 部分内容。

 

动手实践

在本项目中,将设计并实现一个智能物流配送机器。可以通过行空板上的用户界面选择配送点,并沿着地图进行巡线。当检测到指定的配送点时,自动停止并卸下货物。本项目将通过以下三个任务实现。

任务一:UI界面设计

在行空板上设计用户界面,让用户可以通过界面上的按钮,控制夹持器的打开和关闭,并进行配送点的选择。

任务二:启动识别系统

当用户选择好配送地点后,开启摄像头进行配送点(区域卡纸)的识别。

任务三:货物配送系统

小车沿着地图巡线,在巡线的过程中,识别到用户选择的配送点后,停止巡线并放下货物。
 

任务一:UI界面设计

1.硬件连接

硬件连接默认为已经组装完成的小车,小车详细的组装步骤见第1课。需要注意的是,要将夹持器的舵机连接在电机驱动板的P0口。连接图如下:

第13课 智能物流配送机器人880.png

2.软件准备

(1)打开Mind+:按照下面的图示完成软件准备工作。

第13课 智能物流配送机器人939.png

(2)添加“舵机”库:在“pinpong”库中,找到“舵机”并完成添加。

第13课 智能物流配送机器人1002.png

 

3.编写程序

(1)货物放置界面及程序

使用“对象名 显示图片 在X Y ”指令,将图片库中的“图片1.png”显示在行空板上。并通过“更新对象名 的数字参数宽为 ”指令,将背景图片设置为适应行空板屏幕的宽度240。

第13课 智能物流配送机器人1135.png

货物放置区域通过两个按钮控制夹持器的打开和关闭。使用“对象名 增加按钮 在X Y 宽 高 点击回调函数 ”与“当点击回调函数 被触发”指令,在货物放置区域,添加两个按钮。

第13课 智能物流配送机器人1250.png

要通过按钮,控制夹持器打开和关闭。需要在“Python主程序开始”下,使用“pinpong初始化 版型 端口”与“pin初始化 引脚号 模式”指令,初始化连接舵机的P0口,引脚模式为“模拟输出”。同样,舵机也需要使用“舵机初始化引脚 ”指令,进行引脚初始化,还需要使用“舵机 转动到 度”指令,设置初始化角度为90度(夹持器关闭)。

第13课 智能物流配送机器人1446.png

最后,在“当点击回调函数button_click1被触发”指令下,使用“舵机 转动到 度”指令,设置舵机角度为30度(夹持器打开)。同样在“当点击回调函数button_click2被触发”指令下,使用“舵机 转动到 度”指令,设置舵机角度为90度(夹持器关闭)。

第13课 智能物流配送机器人1607.png

(2)区域选择界面及程序

在区域选择界面同样有两个按钮,用于选择要送货的地点。使用“对象名 增加按钮 在X Y 宽 高 点击回调函数 ”与“当点击回调函数 被触发”指令,在区域选择区域,添加“M区”和“T区”按钮。并使用“更新按钮对象为 禁用”指令,将这两个按钮设为禁用模式。

第13课 智能物流配送机器人1772.png

这两个按钮仅在货物放置完成后(关闭夹持器按钮触发时)才启用。因此在当“点击回调函数button_click2被触发”指令下,使用“更新按钮对象为 禁用”指令,将“button_click3”、“button_click4”这两个按钮,设为“启用”状态。

第13课 智能物流配送机器人1928.png

最后,新建“变量M_flag”,“变量F_flag”,当M区的按钮被按下,在“当点击回调函数button_click3被触发”指令下,将“变量M_flag”的值设置为1。同样的,当T区的按钮被按下后,在“当点击回调函数button_click4被触发”指令下,将“变量M_flag”的值设置为1。

注意:需要在“Python主程序开始”指令下,初始化这两个变量的值为0,然后在“当点击回调函数被触发”指令下,分别声明这两个变量为“全局变量”。

第13课 智能物流配送机器人2179.png

完整程序如下:

第13课 智能物流配送机器人2216.png

 

4.程序运行

远程连接192.168.1.80,连接成功后,点击运行。程序运行成功后,行空板屏幕上显示设计好的UI界面,区域选择区的M区按钮,T区按钮,为禁用状态。当点击“打开夹持器”按钮后,打开夹持器;点击“关闭夹持器”按钮后,关闭夹持器,M区和T区按钮变为启用状态。

第13课 智能物流配送机器人2379.png

 

任务二:启动识别系统

1.硬件连接

使用type-c转A数据线,将USB音频模块与行空板连接,然后再使用type-c转A线将摄像头连接在音频模块上。

第13课 智能物流配送机器人2481.png

2.软件准备

(1)添加官方库:点击“扩展”,在“官方库”中,选择“行空板”与“Opencv”。

(2)添加用户库:选择“maxbot神经网络”、“opencv_maxbot”。

第13课 智能物流配送机器人2592.png

3.编写程序

任务二基于任务一开发,在完成送货区域选择后启动摄像头进行区域识别。

摄像头的初始化,需要放在“Python主程序开始”下,并且要等配送区域选择完成后。因此,使用“等待直到”指令,直到“变量T_flag”或者“变量M_flag”的值等于1时,才说明配送区域选择完成。

第13课 智能物流配送机器人2759.png

货物配送区域选择完成后,就初始化摄像头,导入模型。这一系列的操作完成后,新建“变量flag”,初始化值为0,然后在“创建窗口 并设置全屏”指令下,设置该变量的值为1(说明模型导入成功,摄像头初始化完成)。

注意:本课使用第5课训练好的识别模型,如果没有训练过区域识别模型,请先按照第5课的内容,进行模型训练。

第13课 智能物流配送机器人2945.png

在“循环执行”中,增加等待指令,等待变量flag的值为1(摄像头初始化和导入模型库完成),就可以进行区域卡纸识别了。

第13课 智能物流配送机器人3033.png

 

完整程序如下:

第13课 智能物流配送机器人3070.png

 

4.程序运行

远程连接192.168.1.80,连接成功后,点击运行。程序运行成功后,先打开夹持器放置物体,然后关闭夹持器,选择要配送的区域。然后小车启动识别系统,识别到区域卡纸时,在Mind+终端下打印识别结果。

第13课 智能物流配送机器人3343.png

 

任务三:货物配送系统

1.硬件连接

只要小车的巡线传感器是按照之前安装教程和课程连接好的,这里的硬件连接就可以不用管。这个任务中,只使用到了三合一巡线传感器,因此将这三个巡线传感器分别连接P10、P11、P13这三个引脚。左侧巡线传感器—P10、中间巡线传感器—P11、右侧巡线传感器—P13。

第13课 智能物流配送机器人3519.png

 

2.软件准备

在任务二的基础上,添加用户库“Maxbot行空板小车电机驱动”。

第13课 智能物流配送机器人3586.png

3.编写程序

在任务二的程序基础上,新建“线程”,并在“Python主程序开始”下,启用线程,“线程启动”指令,需要放到摄像头启动完成程序的下面。这个线程的作用是用于小车巡线,并在巡线过程中识别到选择的区域后(识别并确认配送点),放置货物。

第13课 智能物流配送机器人3734.png

(1)巡线程序

首先,需要在“Python主程序开始”下,使用“初始化 引脚号 模式数字输入”指令,对连接到P10、P11、P13引脚的巡线传感器,进行初始化。

第13课 智能物流配送机器人3841.png

 

新建“line_track函数”,并在线程的“循环执行”指令中,调用line_track函数。

第13课 智能物流配送机器人3918.png

 

(2)确认配送点

当识别结果与选择配送点一致时,那就说明货物配送成功。例如,选择的配送点为M(flag_M=1),识别结果为M变量(predict_result=“M”)。

第13课 智能物流配送机器人4031.png

为避免误识别导致配送错误,新建“变量count_M”并初始化变量值为0,当配送地点和识别结果一致时,变量count_M+1。

第13课 智能物流配送机器人4123.png

配送点T的判断方式与上面一样,新建“变量count_T”,当选择的配送点为T(flag_T=1),识别结果为T变量(predict_result=“T”)时,变量count_T+1。

第13课 智能物流配送机器人4244.png

这两个配送点的识别判断程序,放到“Python主程序开始”的识别结果指令下。

第13课 智能物流配送机器人4312.png

 

(3)放置货物

为了防止误识别,新建了识别计数“变量count_M”、“变量count_T”。以选择配送区域M为例,小车在巡线过程中,识别到了区域卡纸M,当变量count_M的值大于5时(重复识别了5次配送点,防止误识别),就说明到达了配送点。

0c3386780d6941a327db41690319be34.png

小车到达配送点M后,停止巡线,并将货物放下(夹持器打开),并等待100秒。

269008c4c7f549134f9a841ad715935b.png

同样的,小车到达配送点T后,停止巡线,并将货物放下(夹持器打开),并等待100秒。

3d62a09ca840ecd9908e5cd0b68c7aef.png

 

完整程序如下:

第13课 智能物流配送机器人4636.png

 

4.程序运行

远程连接192.168.1.80,连接成功后,点击运行。程序运行成功后,先打开夹持器放置物体,然后关闭夹持器,选择要配送的区域。然后小车启动识别系统,识别到选择的配送点后,打开夹持器放置货物。

注意:摄像头画面显示需启动时间,建议将小车置于地图直线段再选择配送点,避免启动时冲出地图。

2a397bc412ef878ac8cba582e0359910.png

 

挑战自我

大家可以思考一下,我们分别有卡纸M、T、S,这课中我们只用了M、T这两个配送点。如果想要将S配送点的功能也添加上,需要修改那些地方呢?可以将需要修改的地方记录下来哦!

d435def9b99cc796db62e96de12d710f.png

 

评论

user-avatar