当前位置:网站首页>【论文笔记】基于深度学习的移动机器人自主导航实验平台
【论文笔记】基于深度学习的移动机器人自主导航实验平台
2022-07-28 03:14:00 【见鹿本鹿(Python版)】
摘要
本文工作:
- 搭建了移动机器人实验平台;
- 设计了基于深度学习的自主导航方法 → \rightarrow → 输入RGB图像,直接输出控制信号,避免复杂的特征工程和规划策略;
关键词
- 移动机器人;
- 自主导航;
- 深度学习;
- 卷积神经网络
通常移动机器人系统通过传感器来感知周围环境,如激光传感器、超声波传感器、视觉传感器等,但由于携带传感器有限,大部分系统决策和控制能力不足。
硬件主要包括:树莓派4B上位机、STM32F103RC下位机、电机及其驱动、传感器
1 移动机器人平台
1.1 平台硬件系统
| 项目 | 内容 |
|---|---|
| 传感器(编码器) | 具有增量式输出的霍尔编码器 |
| 传感器(摄像头) | LETMC-520摄像头 |
| 底盘 | 麦克纳姆轮,其轮毂轴与辊子转轴成 45 ° 45\degree 45°角,可保证机器人全向运动 |
| 电机 | GB37520直流减速电机 |
| 电机驱动 | TB6612FNG |
| 电源 | 航模电池 |
| 上位机 | 树莓派4B → \rightarrow → 算法实现运行、采集传感器信息、下位机通信 |
| 通信 | USB2.0双向、 数据帧格式、USB-TTL模块 |
| 下位机 | STM32F103RC → \rightarrow → 数据采集、底盘控制、通信 |
1.2 平台软件系统
| 项目 | 内容 |
|---|---|
| OS | Ubuntu Mate 18.04 |
| 底盘控制节点 | 订阅/cmd_vel话题 → \rightarrow → 提取底盘目标线速度和角速度信息 → \rightarrow → 逆运动学 → \rightarrow → 电机的目标转速 → \rightarrow → 下位机 |
| 底盘控制节点 | 获取底盘运动状态数据,并发布相应话题 |
| 下位机 | C语言编程、FreeRTOS进行任务调度 |
| 电机控制算法 | PID |


2 基于深度学习的自主导航方法
2.1 深度学习模型

四个分别为 ( 128 , 64 , 64 , 16 ) (128,64,64,16) (128,64,64,16)的全连接层
每层同样采用ReLU函数进行激活
定义:
- s ( k ) s(k) s(k) → \rightarrow → 转向控制信号
- i ( k ) i(k) i(k) → \rightarrow → 模型输入RGB图像
- i ( k ) = f ( s ( k ) ) i(k) = f\big( s(k) \big) i(k)=f(s(k)) 训练好的模型用 f f f表示
- ω ∗ \omega^{\ast} ω∗ → \rightarrow → 移动机器人目标角速度
- 该反归一化信号经过一阶低通滤波处理得到移动机器人的目标角速度:
ω ∗ = α β s ( k ) + ( 1 − α ) ω ∗ ( k − 1 ) \omega^{\ast} = \alpha\beta s(k)+(1-\alpha)\omega^{\ast}(k-1) ω∗=αβs(k)+(1−α)ω∗(k−1)
α = 0.9 \alpha = 0.9 α=0.9且 β = 1.4 \beta = 1.4 β=1.4
2.2 模型训练
控制机器人 → \rightarrow →观察-动作对数据集
| 项目 | 内容 |
|---|---|
| 包 | Keras、Tensorflow |
| 归一化(图像) | 是, [ 0 , 1 ] [0,1] [0,1] |
| 归一化(转向控制信号) | 是, [ − 1 , 1 ] [-1,1] [−1,1] |
| 数据比(转角) | 0.1494 |
| 数据比(直道) | 0.6304 |
| 数据比(障碍物) | 0.2202 |
| 数据集大小 | 106623 |
| 数据集划分比 | 3:1:1 |
| 数据集内容 | 80% → \rightarrow → 无障碍物 + 噪声;20% → \rightarrow → 躲避障碍物 + 未注入噪声 |
| 训练过程监控指标 | 均方误差MSE、平均绝对误差MAE |
| 训练损失函数 | 均方根 |
| 训练优化器 | RMSProp |
| 转向控制信号阈值 | 0.1 |
测试集上的均方误差和平均绝对误差分别为0.039和0.102

3 自主导航实验
- 自主导航节点预先使用Keras、Tensorflow读取训练好的模型
- 订阅/camera/rgb/image_raw话题以固定周期获取摄像头的RGB图像
- RGB图像输入模型,输出的转向控制信号
- 反归一化与一阶低通滤波处理得到移动机器人的目标角速度;发布**/cmd_vel**话题
- ROS中的底盘控制节点订阅**/cmd_vel**话题以控制移动机器人运动。

泛化实验:避开突然出现的障碍物 → \rightarrow → 空水桶瓶子
4 结论
边栏推荐
猜你喜欢

Win11 how to rename an audio device

Redis implements distributed locks

max_ pool2d(): argument ‘input‘ (position 1) must be Tensor, not NoneType
![[download file] uniapp develops small programs, downloads files and saves them locally](/img/0f/4963178e44f58ad6e3097844bb6ffd.png)
[download file] uniapp develops small programs, downloads files and saves them locally

如何让外网访问内网IP(esp8266网页使用)

STM32 RT-Thread虚拟文件系统挂载操作

Shell writing specifications and variables

How to arrange PCB screen printing? Please check this manual!

Win11输入法的选字框不见了怎么办?

C -- switch case statement
随机推荐
QT official example: Fridge Magnets example
20220727 use the Bluetooth module hc-05 of Huicheng technology to pair mobile phones for Bluetooth serial port demonstration
Softek Barcode Reader 9.1.5
Tungsten Fabric SDN — BGP as a Service
4天Excel实战训练营,0.01元特惠仅三天,赠200套学习资料包
What are the fragments of MySQL
Redis持久化机制
Redis5种数据结构解析
Redis基本操作
C WinForm development: how to add pictures to project resources
LeetCode 第二十九天
Summary of static blog building tools
max_ pool2d(): argument ‘input‘ (position 1) must be Tensor, not NoneType
GNU 通用公共许可证 v2.0 GNU GENERAL PUBLIC LICENSE
After reading MySQL database advanced practice (SQL xiaoxuzhu)
ASEMI整流桥GBPC5010,GBPC5010参数,GBPC5010大小
如何卸载干净zabbix服务?(超详细)
QFileDevice、QFile、QSaveFile、QTemporaryFile
同时导出多个excel,并且一个excel中包含多个sheet
鼠标操作和响应