广东省工科赛—智能终端配送机器人:创作心路历程,踩过的坑和解决方案

  • 前言
    • 1、配送小车的成品图
    • 2、作品视频演示
  • 一、控制方案
    • 1、器件选择
    • 2、总体创作历程
  • 二、SMT32下位机控制程序和逻辑分析
    • 1、电机驱动
    • 2、速度环PID
      • (1)、编码器
      • (2)、增量式PID算法
      • (3)、野火上位机PID参数整定
    • 3、HWT101CT单轴陀螺仪
    • 4、SYN-6288语音模块
    • 5、舵机
  • 三、Jetson nano上位机程序和可视化界面
    • 0、遇到的问题和解决方案
      • (1)、Serial
      • (2)、端口号问题
      • (3)、调节摄像头曝光度问题
    • 1、扫码模块
    • 2、可视化界面
      • (1)、视觉调试界面
      • (2)、配送小车主界面
    • 3、颜色识别
      • (1)、区块识别
      • (2)、红绿灯识别
  • 四、电路设计

前言

最近在准备广东省工科赛的智能配送组赛项,在这里记录一下我和队友的创作心路历程和踩过的坑。配送小车的运行流程及赛道如下所示:

  1. 配送小车在黄色出发区等待出发。小车扫描二维码,根据二维码信息打开对应仓门,同时语音播报,放入物料后关闭仓门,配送小车出发。
  2. 配送小车出发前往紫色等待区,识别即将进入紫色等待区时配送小车减速,识别到即将离开紫色等待区时停车,确保精准停车。
  3. 在紫色等待区配送小车抬头识别红绿灯,当绿灯亮起时小车出发,并根据二维码信息左右平移至目标收货区(棕色)。
  4. 配送小车到达指定收货地点,停车并语音播报,扫描二维码,打开对应仓门并语音播报,拿取物料侯关闭仓门,小车自转180°。
  5. 配送小车平移至回到等待区前方,停车并向前出发,直到识别到黄色出发区,减速并控制黄色出发区在视角内居中。
  6. 配送小车回到出发区,配送任务完成。

1、配送小车的成品图

2、作品视频演示

Jetson nano智能物流配送小车

一、控制方案

1、器件选择

小车构成 名称
上位机 Jetson nano
下位机 STM32F103 STM32F407
舵机 DS3120数字舵机
底盘 四麦克纳姆轮移动底盘
电机 1:30减速比 带编码器减速电机
电机驱动 双路直流电机驱动
摄像头 USB工业摄像头
陀螺仪 JY901S九轴陀螺仪 HWT101CT航向角陀螺仪
语音模块 SYN-6288语音模块
扫码模块 Scanner V3.0嵌入式扫码模块

2、总体创作历程

既然是小车,那自然是从底盘开始干起,一开始我们采用的是STM32F103最小系统板作为底盘控制板,然后在实验室找了一块电源板,准备开始测试电机驱动。我们使用的电机是1:30减速比减速电机,电机驱动是韦恩斯塔克科技的双路直流电机驱动。
于是有了下面这张我们小车的雏形:

浅浅地落地试了一下,效果还不错。测试完毕后,我开始着手设计我的上位机UI界面,并编写我的上位机程序。我采用Jetson nano作为上位机,与单片机进行通信,控制单片机完成各种动作。测试上下位机通信正常后,我再加入了颜色识别和扫码模块的程序,而后搭载于车上,进行了测试。可能由于配重问题或场地不平稳问题,导致小车无法正常直行和平移,东倒西歪,于是我加上了PID算法,使得小车能够稳定行驶,这个时候整块STM32F103系统板引脚基本都被插满了,看着也很乱,于是我换成了STM32F407作为底盘控制板使用。

测试后发现小车虽然能够正常直行,但是平移的时候还是会有些许问题。经过反复测试后,发现是因场地不平稳导致麦轮悬空,从而走歪,于是我加了陀螺仪对小车进行矫正,一开始使用的是九轴陀螺仪JY901S,但是实际上路时发现效果不是很好,会有-3°至3°的误差。而且最难受的是,当你开始怀疑陀螺仪不精准是不是受到了磁场影响,于是你去掉了可能存在的磁场干扰。但是当你做完这些后准备重新校准时,你就麻烦大了,你需要将整辆车抬起来,绕两个方向旋转360°。我的这辆小车还是挺重的,转个一两次直接裂开。于是后面换了HWT101CT单轴陀螺仪解决了这个问题。后面又继续调试了一些视觉方面的程序,修改了一些bug后,也算是基本完成了。

到这里你可能会觉得总体思路挺顺畅的,其实在实现的过程中还有很多奇奇怪怪的问题和一些值得一提的坑,我会在下文一一道来。

二、SMT32下位机控制程序和逻辑分析

我的STM32下位机控制采用的是STM32F407ZGT6最小系统板,基于HAL库编写了减速电机、编码器、陀螺仪、语音模块灯模块的驱动程序,以及PID速度环的闭环系统。

1、电机驱动

首先放上一些简单的电机驱动程序,包括电机PWM设置和电机的使能设置。

/*---------------------------- 设置电机PWM ----------------------------*/
void Motor1_pwm_Set(int motor1_n)   // 电机1设置PWM
{HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_1);Motor_PWM_sConfigOC.Pulse = motor1_n;HAL_TIM_PWM_ConfigChannel(&htim1, &Motor_PWM_sConfigOC, TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);//Motor1_pwm_num = (motor1_n / (float)1000)*100;
}/*---------------------------- 电机使能 ----------------------------*/
void Motor1_up_enable(void)         // 电机1正转使能
{HAL_GPIO_WritePin(Motor_INA_GPIOx, Motor1_IN_GPIO, GPIO_PIN_RESET);HAL_GPIO_WritePin(Motor_INB_GPIOx, Motor1_IN_GPIO, GPIO_PIN_SET);
}
void Motor1_lost_enable(void)           // 电机1反转使能
{HAL_GPIO_WritePin(Motor_INA_GPIOx, Motor1_IN_GPIO, GPIO_PIN_SET);HAL_GPIO_WritePin(Motor_INB_GPIOx, Motor1_IN_GPIO, GPIO_PIN_RESET);
}
void Motor1_disable(void)           // 电机1失能
{HAL_GPIO_WritePin(Motor_INA_GPIOx, Motor1_IN_GPIO, GPIO_PIN_RESET);HAL_GPIO_WritePin(Motor_INB_GPIOx, Motor1_IN_GPIO, GPIO_PIN_RESET);
}

2、速度环PID

如上总体创作历程所述,为了解决配送小车行走偏移的问题,我先采用的是增量式PID算法,利用编码器实现配送小车4轮的速度闭环。

(1)、编码器

我们选购的编码器为AB双向增量式磁性霍尔编码器,其会将电机运转时的位移信息转变成一段连续的脉冲信号,利用脉冲个数可算得位移量。
在开始上手之前需要注意的事项

1、首先第一步还是要把传感器搞定,确保单位时间内获取的编码器脉冲值是正确的。
2、我们购买的编码器是霍尔编码器,即为磁电转换的编码器,而且我在装车前就已经将编码器外壳拆卸掉了,因此需要确保编码器不会受到外界磁场过强的干扰。
3、给编码器供电的电源板切记要和单片机共地,我就是因为没有和单片机共地导致信号不稳定,耗费了很长时间。
4、注意好CubeMx配置的几倍频。

下面是我做的一些编码器的笔记,记录下以后方便查阅,就是字有点小丑

广东省工科赛 智能终端配送机器人:创作心路历程,踩过的坑和解决方案相关推荐

  1. 不眠者-泽队:广东省工科赛—全地形越障排爆组(开源7天)

    目录 前言: 作品视频展示: 赛道命题要求: 赛题分析与方案设计: 材料清单: 设计实施方案: 越障以及循迹方案: 代码部分: 循迹部分: 竞赛心得: 工程获取 前言: 泽:我是一名大二学生,大二才开 ...

  2. 小师弟:2022广东省工科赛分享(越障排爆省一,完整项目)

    目录 日常·唠嗑 前言 一.实验效果 二.赛题分析及方案 1.赛题内容: 初赛: 决赛: 2.实施方案: 三.材料选择 四.程序设计 程序思路 PID: 越障部分: 颜色识别部分: 五.竞赛心得 六. ...

  3. 【创作纪念日】我的两周年创作心路历程

    前言 今天一打开私信,就看到了这条信息,内心很是欣慰,转眼之间,在csdn上创作已经有两年的时间了,这两年里,从一开始的无从下笔,到现在的写作已成为习惯,离不开社区以及各位小伙伴的支持,简单回一下这两 ...

  4. 2022年RoboCom机器人开发者大赛CAIR广东省赛本科组第一的心路历程(不定期更新)

    一.赛事简介 2022RoboCom机器人开发者大赛广东省赛于8月10日在广东科贸职业学院顺利举行.本次竞赛在工业和信息化部人才交流中心的指导下,由RoboCom国际公开赛组委会主办,广东科贸职业学院 ...

  5. 16岁成为全栈开发者:我从开发游戏到写加密货币投资机器人的心路历程

    选自Medium 作者:Nuno Martins 机器之心编译 参与:Luo Sainan.一鸣 全栈开发者听起来是个很高大上的程序员岗位,似乎没有几年工作经验是 Hold 不住的.但是,有个葡萄牙少 ...

  6. 无人智能配送机器人现状

    随着人口老龄化来袭,劳动人口数量下降,人口红利将逐渐消失,利用机器人替代人工的需求将越来越强烈,尤其在智能配送行业.2020年初疫情的爆发及新基建政策的推进,让无人智能配送机器人行业迎来新的发展机遇. ...

  7. 机器人“快递小哥”上岗了!京东配送机器人编队长沙亮相

    11 月 22 日上午,京东物流配送机器人智能配送站启用仪式在长沙举行,随着载有用户订单的配送机器人编队从站内依次发出,全球首个由机器人完成配送任务的智能配送站正式投入使用. 首个京东配送机器人智能配 ...

  8. 我是京东智能配送机器人,已抵达您的楼下

    安妮 发自 后厂村 量子位 出品 | 公众号 QbitAI 今年的618,忙的不止快递员们,还有京东的智能配送机器人. 今天一早的北京市海淀区,20多台京东配送机器人整装待发.随着调度平台发出命令,首 ...

  9. 光伏机器人最前线_送水、送药、送餐!哈市这些地方率先用上AI配送机器人(视频)...

    "303床患者,您的物品在第一层,请您取走,为避免交叉感染,请勿触碰机器人." 2月17日,两台高智能配送机器人组装调试完毕,分别在哈尔滨新区平房片区的人民医院和集中隔离宾馆率先投 ...

  10. 赛格威机器人待遇_赛格威配送机器人:年内做到10天无故障 3年10万台

    7月25日,美团发布无人配送开放平台,将自动驾驶技术运用到外卖配送,以应对不断上涨的快递员成本.据了解到,为其提供无人自动驾驶机器人的公司之一是赛格威机器人(Segway Robotics).这家公司 ...

最新文章

  1. 曝!BAT大厂NLP学习进阶之法~
  2. 百度地图-矩形编辑的模拟实现
  3. SSIM(structural similarity index),结构相似性
  4. 【DFS】NYOJ-325-zb的生日
  5. mysql 集中join的区别
  6. 去过印度的人评价印度_印度的学生如何开始使用开源
  7. QT 在最新版mac下无法显示变量的问题处理
  8. 软考信息系统项目管理师2021_信息化与信息系统_项目管理阶段_方法_网络协议---软考高级之信息系统项目管理师003
  9. PHP 判断客户端请求是 Android 还是 IOS
  10. 当神经网络遇上量子计算:谷歌证明量子神经网络可训练图像分类
  11. ArrayList 与 LinkedList 插入、查询效率测试
  12. 43次课(限定某个目录禁止解析php、限制user_agent、 php相关配置)
  13. 微信公众号平台开发各种错误返回码一览表
  14. new一个对象的完整过程
  15. powerdesigner16 license key
  16. RK3568 Android11 去除长按power键弹框的emergency按键
  17. 三星Galaxy之父×××网秦,网秦安全能否脱胎换骨?
  18. R 散点图,添加标签
  19. 电脑端微信总是自动接收文件,怎么办
  20. xp支持python最高版本是多少_哪些版本的Python可以在Windows XP中运行?(What versions of Python will work in Windows XP?)...

热门文章

  1. linux 有道笔记,Linux笔记:manjaro_折腾笔记
  2. 移动终端安全问题分析与解决方案研究
  3. Python中的嵌套循环
  4. 易游网络验证好不好?如何正确的使用易游验证
  5. Unity微信Android端第三方登陆
  6. 荣耀8微信总是无法连接服务器,微信无法登陆想要登陆的王者荣耀账号,怎么办?...
  7. (2022年6月)注册ArcGIS Online(Learn ArcGIS) 21天免费账号笔记
  8. 火线精英正在维护服务器吗,火线精英1月20日23:00更新维护公告
  9. dft中X(K)的k的含义
  10. 【2019-2020春学期】数据库实验大作业