X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
DigiKey得捷技术专区
[作品提交] 【2024 DigiKey创意大赛】基于Raspberry Pi 5的三全向轮自动导航小车
FFD8
2024-11-4 02:10
楼主
# 【2024 DigiKey创意大赛】基于Raspberry Pi 5的三全向轮自动导航小车 ## 一、作品简介
### 1.1 功能介绍: 利用Raspberry Pi 5、激光雷达等硬件,基于ROS系统,完成一款具有路径规划,自主导航的三轮小车。通过传感器技术和智能算法,实现室内外环境的自动导航和避障功能。 ------------ 本次项目计划通过软件仿真和实物设计两部分完成: **1、仿真部分:**在ubuntu搭建机器人系统仿真环境,仿真实现涉及的内容主要有: 1.1. 对机器人建模(URDF) 2.2. 创建仿真环境(Gazebo) 3.3. 感知环境(Rviz)等系统性实现。 **2、实物部分:**搭建机器人实物系统,构建环境地图,驱动小车按照既定路径运动。 ### 1.2 物料清单: 大赛经费购买部分:Raspberry Pi 5、BME280、BME680 自备物料部分:stm32、电机驱动、底盘车体等;导航激光:YDlidar X2L等 设计参考:http://www.autolabor.com.cn/book/ROSTutorials/ ## 二、系统框图 ### 2.1 软硬件设计:
### 2.2系统架构 机器人导航主要涉及: 1、全局地图 2、自身定位 3、路径规划 4、运动控制 5、环境感知
1. 全局地图 SLAM(simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。SLAM问题可以描述为: 机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,以绘制出外部环境的完全地图。 2. 自身定位 amcl(adaptiveMonteCarloLocalization)自适应的蒙特卡洛定位,是用于2D移动机器人的概率定位系统。它实现了自适应(或KLD采样)蒙特卡洛定位方法,该方法使用粒子过滤器根据已知地图跟踪机器人的姿态。 3. 路径规划 导航就是机器人从A点运动至B点的过程,在这一过程中,机器人需要根据目标位置计算全局运动路线,并且在运动过程中,还需要时时根据出现的一些动态障碍物调整运动路线,直至到达目标点,该过程就称之为路径规划。在 ROS 中提供了 move_base 包来实现路径规则,该功能包主要由两大规划器组成: 全局路径规划(gloable_planner):根据给定的目标点和全局地图实现总体的路径规划,使用 Dijkstra 或 A* 算法进行全局路径规划,计算最优路线,作为全局路线 本地时时规划(local_planner):在实际导航过程中,机器人可能无法按照给定的全局最优路线运行,比如:机器人在运行中,可能会随时出现一定的障碍物。本地规划的作用就是使用一定算法(Dynamic Window Approaches) 来实现障碍物的规避,并选取当前最优路径以尽量符合全局最优路径 全局路径规划与本地路径规划是相对的,全局路径规划侧重于全局、宏观实现,而本地路径规划侧重与当前、微观实现。 4. 运动控制 导航功能包集假定它可以通过话题“cmd_vel”发布geometry_msgs/Twist类型的消息,这个消息基于机器人的基座坐标系,它传递的是运动命令。这意味着必须有一个节点订阅“cmd_vel”话题, 将该话题上的速度命令转换为电机命令并发送。 5. 环境感知 感知周围环境信息,比如: 摄像头、激光雷达、编码器。摄像头、激光雷达可以用于感知外界环境的深度信息,编码器可以感知电机的转速信息,进而可以获取速度信息并生成里程计信息。 在导航功能包集中,环境感知也是一重要模块实现,它为其他模块提供了支持。其他模块诸如: SLAM、amcl、move_base 都需要依赖于环境感知。 ------------ ## 三、各部分功能说明 ### 3.1 仿真部分实现 该部分将在仿真环境,简易实现小车的模型设计,slam建图,导航控制等功能。 仿真环境搭建于ubuntu1404系统,用到的相关组件有:urdf,rvize,gazebo等。 **URDF:**是 Unified Robot Description Format 的首字母缩写,直译为统一(标准化)机器人描述格式,可以以一种 XML 的方式描述机器人的部分结构。 **rviz:** 是 ROS Visualization Tool 的首字母缩写,直译为ROS的三维可视化工具。它的主要目的是以三维方式显示ROS消息,可以将 数据进行可视化表达。 **gazebo:**是一款3D动态模拟器,用于显示机器人模型并创建仿真环境,能够在复杂的室内和室外环境中准确有效地模拟机器人。 机器人的系统仿真是一种集成实现,主要包含三部分: - 1、URDF 用于创建机器人模型 - 2、Gzebo 用于搭建仿真环境 - 3、Rviz 图形化的显示机器人各种传感器感知到的环境信息 ### 具体环境搭建步骤如下(详情参考下方视频): #### 1、虚拟机、ubuntu1404系统安装略; #### 2、安装ros-melotic:wget http://fishros.com/install -O fishros && . fishros
#### 3、安装功能包: 安装 gmapping 包(用于构建地图):sudo apt install ros-melodic-gmapping 安装地图服务包(用于保存与读取地图):sudo apt install ros-melodic-map-server 安装 navigation 包(用于定位以及路径规划):sudo apt install ros-melodic-navigation #### 4、编写launch文件(直接使用编写好的文件即可) #### 5、实现slam建图: 5.0:环境配置:source ./devel/setup.bash 5.1:启动gazebo仿真环境:roslaunch urdf_gazebo demo03_env.launch
5.2:启动地图绘制launch:roslaunch nav_demo nav_01_slam.launch
5.3:启动键盘控制节点:rosrun teleop_twist_keyboard teleop_twist_keyboard.py 5.4:通过键盘控制仿真机器人在模拟环境中运动,直到探索完整个地图 5.5:保存地图:roslaunch nav_demo nav_02_map_save.launch ,成功运行后会再本地生成pgm地图
#### 6、定位:roslaunch nav_demo test_amcl.launch
#### 7、导航:roslaunch nav_demo nav_06_test.launch **开始导航**
**导航中**
**完成导航**
### 3.2 实物部分实现 #### 3.2.1 树莓派串口通信 **1、修改配置文件,开启uart2,3,4,5:** sudo vim /boot/firmware/config.txt #(ubuntu是这个,raspiberrypi是/boot/config) 在文件最后增加: dtoverlay = uart2 dtoverlay = uart3 dtoverlay = uart4 dtoverlay = uart5
reboot重启后,dev中会增加相关设备名称:
**2、安装libmodbus库** 2.1 上传modbus.zip库文件到树莓派
202411111052149.zip
(244.03 KB)
(下载次数: 0, 4天前 上传)
2.2 解压缩源码压缩包:unzip modbus.zip
2.3 进入源码目录 cd libbodbus-master/
2.4 运行:./autogen.sh
2.5 新建install文件夹:mkdir install 2.6 运行: ```c ./configure --prefix=/home/ubuntu/libmodbus-master/install/ ```
2.7 编译:make 2.8 安装:make install
2.9 拷贝共享库
**3、编译测试程序** 3.1 上传测试程序modbus-test.zip到树莓派
2024111110522819.zip
(7.72 KB)
(下载次数: 0, 4天前 上传)
3.2 编译,生成可执行程序modus_test
3.3 树莓派引脚图如下:
各 UART 串口与 GPIO(对应的是BCM编码) 对应关系: UART0: GPIO14 = TXD0 -> ttyAMA0 GPIO15 = RXD0 -> ttyAMA0 UART2: GPIO0 = TXD2 -> ttyAMA1 GPIO1 = RXD2 -> ttyAMA1 UART3: GPIO4 = TXD3 -> ttyAMA2 GPIO5 = RXD3 -> ttyAMA2 UART4: GPIO8 = TXD4 -> ttyAMA3 GPIO9 = RXD4 -> ttyAMA3 UART5: GPIO12 = TXD5 -> ttyAMA4 GPIO13 = RXD5 -> ttyAMA4 **4、测试方法:** 4.1 程序包含了RTU协议的主机和从机模式,可以启动程序后自由选择 4.2 选择待测试的两个串口(UART2、UART5),用杜邦线连接,UART2的Rx,Tx连接UART5的Tx,Rx; 4.3 开两个终端,启动程序./modus_test 和./modus_test ttyAMA4,(程序后面带的参数是设备号) 4.4 程序启动后需要选择运行模式:主机、从机,一个程序选主机、另一个选从机
正常运行将如下打印:
#### 3.2.2 chassis_node节点 底盘控制节点与stm32通过串口,以modbus-rtu协议通信,实现各个电机的速度解算及反馈里程信息计算。
底盘全向轮安装示意图:
stm32接线定义:
#### 3.2.3 keycontrol_node节点 ros原本的键盘控制节点不太好用,根据实际情况重新写了键盘控制节点发布cmd_vel话题。 开启该节点后使用方法如下:
#### 3.2.4 ladir_node节点 参考官方使用手册,加载ros源码即可。
YDLidar-SDK-master.zip
(6.73 MB)
(下载次数: 0, 4天前 上传)
YDLIDAR X2 使用手册 V1.3(240124).pdf
(1.3 MB)
(下载次数: 0, 4天前 上传)
LidarViewer_V0.3.5-X2.zip
(17.79 MB)
(下载次数: 0, 4天前 上传)
ydlidar_ros_driver-master.zip
(633.34 KB)
(下载次数: 0, 4天前 上传)
#### 3.2.5 底盘控制功能 1、启动底盘节点:rosrun chassis_driver chassis_driver_node 2、启动键盘控制节点:rosrun chassis_driver keypad_control_node
通过按键发布速度指令,控制小车移动,同时在rvize中可以添加小车模型,查看odom数据。
底盘控制
#### 3.2.6 建图功能 1、启动gmapping建图:roslaunch mycar_description gmapping.launch 2、在rvize中查看实时扫描的地图 3、在环境中放置一个障碍物,控制小车运动,探索周围环境,开始建图。
gamapping建图
#### 3.2.6 保存地图功能 1、启动保存建图:roslaunch mycar_description map_save.launch 2、在map文件夹下查看建好的地图pgm文件。
保存地图
## 四、作品源码 ### 4.1 仿真部分:
ros_car.zip
(556.52 KB)
(下载次数: 0, 4天前 上传)
### 4.2 实物部分: stm32驱动:https://gitee.com/FFD8/STM32F100RBT_robot
STM32F100RBT_robot-main.zip
(19.83 MB)
(下载次数: 0, 2024-11-4 01:50 上传)
树莓派ros系统:
ubuntu_ros_car.zip
(1.45 MB)
(下载次数: 0, 4天前 上传)
## 五、作品功能演示视频 ### 仿真部分:
仿真部分
### 实物部分:
实物部分
## 六、项目总结 非常有幸能够参加此次创意大赛,这不仅是一次展示自己创意的机会,更是一个宝贵的学习平台。在比赛的过程中,我通过与其他参赛者的交流与合作,不仅增强了团队协作能力,还提升了解决实际问题的技巧。同时,我深入了解了相关领域的最新技术和创新思路,进一步拓宽了自己的知识面。 通过这次经历,我更加明确了自己未来的学习方向和创新潜力,也收获了宝贵的经验,期待未来能有更多的机会参与此类活动。 再次感谢DigiKey、EEworld对“2024 DigiKey 创意大赛”的大力支持,希望越办越好。 ------------ 其他相关帖: 【2024 DigiKey 创意大赛】-1、物料开箱帖:https://bbs.eeworld.com.cn/thread-1290219-1-1.html ## 七、其他
DigiKey_contest_2024_word.doc
(4.06 MB)
(下载次数: 0, 4天前 上传)
------------
本帖最后由 FFD8 于 2024-11-11 13:30 编辑
点赞
(1)
回复评论
暂无评论,赶紧抢沙发吧
最新活动
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
随便看看
MM32开发板颜值up up
430 urat带的IRDA功能 的电路?
月月有奖第30期来了,2018我们继续相伴前行!
DM642 BIOS中能设置外扩sdram的数据宽度吗?
长时间电脑,缓解眼睛疲劳的方法
消失了很久对不住大家。。。诶。。现在部分回归哈
有多个网口,请问用什么函数能得到这些网口IP地址,谢谢!
Linux下AM335X的GPIO控制
【嵌入式培训】凌阳爱普培训资料大放送之---Linux系统编程
晒WEBENCH设计的过程+光二极管调理电路
用于SDR(软件无线电)的芯片AD9627
弱弱的问一下
MCS-51 单片机实用子程序库
支持电子工程世界论坛
wince 5.0 编译问题
组合逻辑中的always后面的敏感事件表是高电平触发还是电平发生翻转的时候触发?
pcb全套技术资料
你发现F28027和F28027F的区别了吗?
无线传感器网络中TinyOS的研究
基于VxWorks的NAND FLASH驱动程序设计
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复