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

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

相关推荐
「QT(C++)开发工程师」2 小时前
STM32 | FreeRTOS 递归信号量
python·stm32·嵌入式硬件
芯眼3 小时前
ALIENTEK精英STM32F103开发板 实验0测试程序详解
开发语言·c++·stm32·单片机·嵌入式硬件·社交电子
百里东风3 小时前
STM32IIC协议基础及Cube配置
stm32·单片机·嵌入式硬件
2301_800399724 小时前
stm32 DMA
stm32·单片机·嵌入式硬件
热心市民R先生8 小时前
启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块
机器人
风暴智能8 小时前
获取相机图像(ROS2)
linux·机器人·无人机
一颗小树x8 小时前
【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示
机器人·零样本·具身导航·对象导航
一只川页8 小时前
arduino平台读取鼠标光电传感器
驱动开发·单片机·嵌入式硬件·计算机外设
qq_401700419 小时前
电容触摸按键PCB设计
stm32
爱学习的张哥10 小时前
UDP--DDR--SFP,FPGA实现之模块梳理及AXI读写DDR读写上板测试
单片机·fpga开发·udp·axi·ddr