【项目】Q-ROBOT移动机器人设计与开发

news2024/11/29 5:36:58

本文主要记录Q-ROBOT移动机器人的开发流程~

github:  GitHub - Qsx567/SLAMCarProject

(持续更新中~希望各位铁子走过路过给个小小的star!灰常感谢!)


本项目为我设计的移动SLAM机器人,命名为: Q-Robot

  • 机器人底盘控制器:STM32F103RCT6
  • 上层控制器:树莓派4B
  • 传感器:
    • 思岚A1激光雷达
    • Orbbec Astra Pro RGB-D相机
    • 高精度9轴惯导模块N100
    • PS2遥控器
  • 软件:
    • STM32CubeMX 6.7.0
    • Keil 5.29.0
    • 立创EDA
    • CAD迷你画图

一、机器人底盘(亚克力板图纸)

  • 总共包括两个文件(plate->plate1.dwg/plate2.dwg)
    • 第一层亚克力板图纸(可放置520电机、锂电池、思岚A1激光雷达/串口板)
    • 第二层亚克力板图纸(可放置Orbbec Astra Pro RGB-D相机、树莓派4B、STM32控制板、PS2遥控器接收器、7寸的显示屏)

第一层亚克力板图纸

第二层亚克力板图纸

二、机器人底盘控制器原理图

 基于SMT32F103RCT6的控制器原理图

三、机器人底盘控制器PCB图

基于SMT32F103RCT6的控制器PCB图

四、机器人底盘控制器--> STM32

  • 电机控制(motor):TIM5/TIM8
    • Motor1:TIM8_CH1/TIM8_CH2
    • Motor2:TIM5_CH3/TIM5_CH4
    • Motor3:TIM8_CH3/TIM8_CH4
    • Motor4:TIM5_CH1/TIM8_CH2
  • 编码器(Encoder):TIM1/TIM2/TIM3/TIM4
    • Encoder1:TIM1
    • Encoder2:TIM2
    • Encoder3:TIM3
    • Encoder4:TIM4
  • PS2遥控器
    • PC0 ->Input PS2_DAT
    • PC1 ->Output PS2_COM
    • PC2 ->Output PS2_ATT
    • PC3 ->OutPut PS2_CLK
  • 串口(UART5)
    • PD2 --> U5_RX
    • PC12 --> U5_TX
  • MPU6050(IIC)
    • MPU6050_SDA:PC4
    • MPU6050_SCL:PC5

五、ROS相关教程

  • 1.使用思岚A1激光雷达
    • 链接: ROS下使用激光雷达
  • 2.使用Wheeltec N100惯性模块
    • 链接: ROS下使用N100模块
  • 3.使用乐视深度相机LeTMC-520
    • 链接: ROS下使用乐视深度相机LeTMC-520

已完成情况:

  •  添加电机控制(PWM)相关代码
  •  添加编码器数据的采集以及转化为速度m/s
  •  添加机器人运动模型(四轮模型)运动学逆解
  •  添加PID控制算法(增量式)
  •  添加PS2遥控器相关代码
  •  添加MPU6050驱动代码,可获取加速度原始值和角速度原始值
  •  添加将底层控制数据通过串口发送给ROS端
  •  新增FreeRTOS功能,后续只修改维护QRobot_FreeRTOS,基本功能和无OS版本一致,不同之处只是一些逻辑方面
  •  增加思岚A1激光雷达驱动代码
  •  增加N100惯性导航模块驱动代码
  •  增加乐视深度相机LeTMC-520驱动代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python Dash】零基础也能轻松掌握的学习路线与参考资料

Python Dash是一个可视化框架,可以帮助开发者快速构建交互式仪表板和应用程序。它基于Plotly.js库建立,提供了一种易于使用的Python界面,用户可以通过简单的Python代码创建仪表板和应用程序。本篇文章将介绍Python Dash的学习路线&#xff0c…

【学习日记2023.5.30】之 订单处理 订单状态定时处理_来单提醒_用户催单

文章目录 10. 订单处理10.1 Spring Task10.1.1 介绍10.1.2 cron表达式10.1.3 入门案例10.1.3.1 Spring Task使用步骤10.1.3.2 代码开发10.1.3.3 功能测试 10.1.4提交代码 10.2 订单状态定时处理10.2.1 需求分析10.2.2 代码开发10.2.3 功能测试 10.3 WebSocket10.3.1 介绍10.3.2…

互联网产品岗

文章目录 产品岗分类工具类社交类内容类平台类 职级划分工作流程refer: 产品岗分类 注:产品岗的分类并不绝对,因为大部分的产品都有符合属性,这里的分类主要便于理解(越写越觉得很多东西没得分) 工具类 定义&#x…

MySQL查询当前数据和上一行数据比较、业务数据的趋势分析、数据变动的监控和报警

标题: 使用MySQL查询当前数据和上一行数据比较的场景 在MySQL中,我们经常需要对数据进行比较和分析。其中一种常见的需求是查询数据列表并与前一行的数据进行比较。这种场景可以通过使用窗口函数或连接来实现。本文将介绍使用MySQL查询比较数据和上一行数据的场景&a…

【Unity Shader】Plane实现风格化水

写在前面 长文警告!!!!! 很久没更新博客了,,这次是要做一个风格化水效果,是基于Plane着色实现水面效果。 项目:Unity 2017.4.40f1 Build-in,因此实现过程会…

ChatGPT vs Google:谁是答案之王?微软揭示未来搜索的样子

已经习惯了网购的你,有没有想过一旦电子商务行业遭受重创,会对我们的日常生活造成什么影响呢? 我们已经习惯了在生活中碰到什么不懂的事情就 Google 一下或者百度一下,甚至许多人的职业都跟 Google 密切相关,比如自媒…

从外包到转岗华为正式员工月薪17K,这一百多天的心酸谁能懂.....

本人毕业于某普通二本院校非计算机专业,跨专业入行测试,至今有近 5年工作经验。 第一份测试工作是在华为做了两年外包。总体感受就是 这份工作缺乏归属感,心里总有一种落差,进步空间不大, 接触不到核心技术&#xf…

跨端框架+小程序容器:一种让App开发提高效率的思路

WePY(微信小程序开发框架)是一个基于组件化开发思想的微信小程序开发框架。它类似于Vue.js框架,通过封装小程序原生的API,提供了更加简洁、高效的开发方式。 WePY的主要特点包括: 组件化开发:WePY将页面拆…

matplotlib常用功能汇总

文章目录 1.IDE里的1.1 显示模式(plt.ion()和plt.ioff())1.2 backend说明 2 jupyter里的3 通用的3.1 cmap3.2 subplot()相关3.3 绘制动态图(Animation类)3.4 matplotlib利用rcParams配置样式参数 4. 与opencv连用可能遭遇的问题1.…

MySQL_8 相当牛逼的索引机制

目录 一、索引机制的引入 1.索引机制🐂B在哪里? 2.索引机制提高查询速度的原理 : 二、索引的创建 1.索引分类 : 2.使用格式 : 3.代码演示 : 三、索引的删除 1.格式 : 2.演示 : 四、索引的查询 1.格式 : 2.演示 : 五、索引的使用规则 一、索…

Linux---强制停止、退出登出、history、yum

1. ctrl c 强制停止 Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl c: [shaonianlocalhost ~]$ tail ^C [shaonianlocalhost ~]$ 命令输入错误,也可以通过快捷键ctrl c,退出当前输入,重…

如何在 Alpine Linux 上启用或禁用防火墙?

防火墙是计算机网络安全的重要组成部分,它用于保护计算机和网络免受未经授权的访问和恶意攻击。Alpine Linux 是一种轻量级的 Linux 发行版,常用于构建容器化应用和嵌入式系统。本文将详细介绍如何在 Alpine Linux 上启用或禁用防火墙。步骤 1&#xff1…

MySQL复习

文章目录 1、操作数据库1.1、操作数据库1.2、数据库的数据类型1.3、数据库的字段属性1.4、创建数据表1.5、MyISAM和InnoDB1.6、修改删除表 2、MySQL数据管理2.1、外键2.2、DML语言(全部记住)2.3、添加2.4、修改2.5、删除 3、DQL查询数据3.1、DQL3.2、查询…

EMPIRE: LUPINONE实战演练

文章目录 EMPIRE: LUPINONE实战演练一、前期准备1、相关信息 二、信息收集1、端口扫描2、访问网站3、查看源码4、dirsearch扫描目录5、访问robots文件6、访问myfiles文件7、模糊测试8、访问秘密文件9、查找秘钥10、查看秘钥11、解码12、解密13、远程连接 三、提权1、查找flag2、…

Unity---委托与事件

目录 1.委托和事件在使用上的区别是什么? 2. delegate委托 2.1示意图 2.2 DelegetTest.cs 2.3 Deleget_A.cs 2.4 Deleget_B.cs 2.5 运行unity. 点击按键 A 2.6 点击按键 B 3.Event 事件 3.1单个通知 3.1.1示意图 3.1.2 Event_Test.cs 3.1.3 Event_A.cs 3…

专家警告AI可能会导致人类灭绝

人工智能可能导致人类灭绝,包括 OpenAI 和 Google Deepmind 负责人在内的专家警告说 数十人支持在人工智能安全中心 的网页上发表的声明。 它写道:“减轻人工智能灭绝的风险应该与其他社会规模的风险(如流行病和核战争)一起成为全…

Spring(二)获取bean和依赖注入

一、获取bean的三种方式: 1.根据bean的id获取: Student studentOne (Student) ioc.getBean("studentOne"); 2.获取bean所需要的类型的class对象: Student student ioc.getBean(Student.class); 我们运行之后如下所示&#xff1…

为kong网关添加限流插件

限流用于控制发送到上游服务的请求速率。 它可用于防止 DoS 攻击、限制网络抓取和其他形式的过度使用。 如果没有速率限制,客户可以无限制地访问您的上游服务,这可能会对可用性产生负面影响。 一、全局范围内的限流 1、启用限流 [rootmin ~]# curl -i…

AI落地:儿童节贺卡

昨天有个朋友Lisa找到我,她是幼儿园的老师,看到我最近搞了个爱落地星球,在研究各行各业AI落地的事情,问我能不能用AI帮她写一百多张贺卡。 说起来写贺卡,我只会写“节日快乐”。现在有了ChatGPT,那就大不一…

十六、多线程(中)

文章目录 一、线程互斥(一)四个概念1.临界资源2.临界区3.互斥特性4.线程互斥5.原子性 二、互斥(一)在执行语句的任何地方,线程可能被切换走(二)切换会保存上下文(三)抢票…