基于STM32F4单片机实现ROS机器人主板

embedded/2024/12/23 15:40:00/

STM32_ROS_V2(9.5更新):

(1)增加4颗ws2812B RGB灯,焊接在背部,PB15_SPI2引脚输入,采用SPI与DMA控制,实现呼吸灯,跑马灯等功能,见附录代码

(2)增加一路ADC电路电阻(分压测量电路,PA4_ADC1采集),测量12V航模电池电压

  加上四颗ws2812B后小车灯光效果:

STM32_ROS_V2(9.2更新):

(1)拿到嘉立创PCB后,焊接完毕效果图,测试功能无问题:

(2)STM32程序优化(STM32源程序已更新)

   1.Data_transition()函数放进control 5ms控制中断运行

   2.利用1ms定时器  引出10ms定时器变量  在主函数while(1)中10ms运行USART3_SEND();发送数据函数

   3.经测试在这种控制模式下整个系统没有任何延时  

(3)串口调试软件设置(用于模拟ROS端串口数据发送,控制小车运动以及校准里程计)

1.其中发送9帧,右边勾选16进制发送,自动循环发送,1ms(千万不要勾选发送新行,否则结尾发送\r\n,程序无法读出正确数据)

2.发送9帧中,第一帧和最后一帧为帧头帧尾,第8帧为(1-7)帧相加校验位,具体可查看usart3.c文件

STM32F407VET6核心板(8. 2 8更新):

(1)更新STM32F407VET6核心板PCB与原理图,将整个核心板模块化(查看工程文档)

(2)更新STM32_ROS_V2中USART3接口为XH2.54*5PIN形式接口,采用下图的CH340驱动

淘宝链接:6.0微yDVQXMS3wd5微 https://m.tb.cn/h.fYZoODG  USB转TTL CH340模块STC单片机下载线刷机板USB转串口 XH-5P接口

STM32_ROS_V2(8.26更新):

(1)为了保持电路整洁性,重新位置PCB布局,让主控板螺丝孔位与jetson nano孔位保持一致

(2)陀螺仪MPU9250-->ICM20602(模拟SPI采集,实现1ms采集不卡顿  见附录代码)

(3)删除 一路舵机接口  一路步进电机接口  红外接口

(4)JTAG下载接口改为JINK OB下载器(该下载器为四线   节省PCB布局位置,使用方法与普通Jlink一致,需安装Jlink驱动)

(5)电容电阻改为0603封装

(6)增加两路串口  一路为UART4连接NRF转串口模块,用于山外上位机发送波形数据调试    第二路为UART5  闲置备用

(7)电路2D模型

STM32_ROS_V1:

(1)打板焊接以后效果图:

(2)编写程序,测试所有外设:

(3)无问题!组装小车,测试蓝牙控制小车移动:

(4)在树莓派上装好带ROS的ubuntu系统,编写程序,测试导航:

(5)整车底板与框架3D建模:

采用Solidworks 2020建模,将底板转为CAD图档,发给淘宝店家亚克力板定制,2块200x300cm(5cm厚度)价格20元左右:

Solidworks建模文件见附件,需平级或高版本打开。

(6)拿到定制亚克力板后,组装整车

(ROS方案已改为Jetson Nano主控,因为树莓派WIFI连接信号较差,且无法使用CVbridge)

整车配置:

1. 供电方式:航模动力电池(12V)

2. 结构形式:全向运动模型(麦克纳姆轮)

3. 控制方式:PC 端上位机控制、蓝牙/手柄控制、无人驾驶模式

4. 行驶电机:直流有刷电机*4,电压 6-24V、带AB双向增量霍尔编码器,额定转矩 3.4N*m

5. 视    觉:Logi C505e USB摄像头 800万像素160度广角摄像头

6. 惯    导:MPU9250 : 9轴姿态:3轴加速度、3轴陀螺仪、3轴磁力计,IIC/SPI 通信协议

7. 激光雷达:思岚RPLIDAR A1,10米测距、配套完整 USB 串口、SDK 开源工具

8. 电源模块:12V->5V 4A DC-DC直流转换模块(Jetson Nano供电)

9. 交互系统:TJC 7英寸HMI电阻式串口屏、2W喇叭

10. 控 制 器:STM32 复合驱动板、Jetson NANO 控制器

(1)STM32复合驱动板参数:

处理器:STM32F407VGT6

控制器特点:2组舵机接口、4路驱动电机接口、2个按钮模块、LED灯、JLINK接口、OLED 显示屏、内置开关、PS2 接口、HC05蓝牙接口、HMI串口屏接口、IMU 接口、TYPEC供电接口

(2)Jetson Nano 控制器参数:

CPU: 四核 ARM Cortex-A57 MPCore处理器

GPU: NVIDIA Maxwell w / 128 NVIDIA CUDA核心

内存: 4 GB 64 位 LPDDR4

显卡: HDMI 和 DisplayPort 输出

USB: 4 个USB 3端口

I / O: I2C,SPI,UART 以及与Raspberry Pi兼容的GPIO接头

11. 通信系统: WIFI 通信、UART TTL、USB 串口、SOCKET、RosMsg

12. 操作系统: Ubuntu 18.04 LTS、ROS-melodic、Windows

13. 编程语言: C/C++/Python3

14. 使用软件: Keil5、Kdevelop、VS2015、Pycharm、Solidworks

15. 匹配环境: OpenCV3.4.12、Pychtorch、Pip3、Rviz、Gazebo

(7)机器人建图导航定位实验

7.1网络控制图传小车(利用键盘控制小车移动,并将图像信息显示于Rviz)

7.2 cartographer算法实现建图

7.3 Dijsktra算法实现的全局路径规划与自主导航

原理图(1 / 3)

PCB


http://www.ppmy.cn/embedded/148106.html

相关文章

第十四届蓝桥杯Scratch国赛真题—转动的车轮

转动的车轮 编程实现: 转动的车轮(车轮使用画笔绘制,画面中不能出现其他角色,否则0分)。 注:角色、背景非源素材。 具体要求: 1). 点击绿旗,背景如图所示; 2). 等待1…

linux 安装 ffmpeg 视频转换

下载地址 通过网盘分享的文件:ffmpeg-release-amd64-static.tar.xz 链接: https://pan.baidu.com/s/1cgezDsDVOqK0AAnT3JA9fQ?pwd0012 提取码: 0012 查看版本 ffmpeg -version cd /usr/local/ 解压 xz -d ffmpeg-release-amd64-static.tar.xz tar -xf ffmpeg-re…

c++--------c++概念

定义与起源 C是一种高级编程语言,它是C语言的扩展。C由Bjarne Stroustrup在20世纪80年代初开发,最初被称为“C with Classes”。其设计目的是在保持C语言高效性的同时,增加面向对象编程(OOP)的特性。例如,…

python 中执行from elasticsearch import Elasticsearch,AsyncElasticsearch 报错

在 Python 中执行 from elasticsearch import Elasticsearch, AsyncElasticsearch 时,如果提示 AsyncElasticsearch 不存在,可能是因为以下几个原因: 1. 安装的 elasticsearch 库版本不匹配 AsyncElasticsearch 是在 elasticsearch 库的较新版本中引入的。如果你安装的版本…

智能体实战(需求分析助手)二、需求分析助手第一版实现(支持需求提取、整理、痛点分析、需求分类、优先级分析、需求文档生成等功能)

基于提供的调用 qwen-plus 大模型的实战代码,我将对需求分析助手的第一迭代功能目标进行实现设计。以下是基于该示例代码的第一迭代功能实现细化方案: 功能 1:用户与需求分析助手交互界面(文本交互) 实现步骤&#xf…

git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表

好的,git branch -r 这个命令用于列出远程分支。让我详细解释一下: 命令: git branch -rdgqdgqdeMac-mini ProductAuthentication % git branch -rorigin/main作用: 这个命令会显示你本地仓库知道的所有 远程分支 的列表。它不…

网络基础(二)

目录 1. 跨网段通信1.1 IP 地址1.2 通信流程1.3 IP vs Mac1.4. 数据包封装和分用 2. 端口号3. TPC && UDP4. 网络字节序 网络基础(一) 上一篇文章中,我们介绍了网络协议的基本概念和分层结构。协议是确保不同主机间顺利通信的约定&am…

ChatGPT之父:奥尔特曼

奥尔特曼 阿尔特曼一般指萨姆奥尔特曼,他是OpenAI的联合创始人兼首席执行官,被称为“ChatGPT之父”.以下是其具体介绍: 个人经历 1985年4月22日出生于美国芝加哥,8岁学会编程,9岁拥有电脑,对信息技术和互联网产生兴趣.高中就读于约翰巴勒斯中学,后进入斯坦福大学主修计…