用全志R128复刻自平衡赛车机器人,还实现了三种不同的操控方式

经常翻车的朋友们都知道,能在翻车后快速摆正车身的车才是好车。

就像动画《四驱兄弟》中展现的那样,在比赛中需要跟着赛车一起跑圈,而且赛车如果被撞翻还需要重新用手扶正,所浪费的时间非常影响比赛结果。

如果小豪和小烈可以拥有一款能通过发挥R128的WiFi&蓝牙特性的平衡小车,从而能通过WiFi或蓝牙连接的方式进行控制,既可以自平衡和转向,又可以远程操控,那冠军岂不是手到擒来。

它,就是可以自平衡的赛车机器人------B_ROBOT_100ASK

项目简介

本项目基于jjrobots的开源项目B-ROBOT EVO2进行复刻,与原开源项目不一样的地方是,作者将原本适配的的Arduino控制板移植为DShanMCU-R128s2-DevKit开发板,与此同时还添加了一些功能,比如自平衡功能、WiFi&蓝牙控制、App控制以及语音控制功能,让平衡小车的操控乐趣更上一层楼。

硬件设计

本项目中的自平衡赛车机器人的硬件设计结构非常简单,硬件部分主要由R128开发板和几个驱动模块组成。

  • 供电模块

    自平衡机器人采用锂电池供电的方式,并利用mini360航模电池降压模块来将较进行电压的转化工作,以满足小车设备对电压方面的需求

  • 电机驱动模块

自平衡机器人选用两个NEMA17步进电机,并选用DDRV8825步进电机驱动模块来负责与电机之间的控制信息传输。

DDRV8825步进电机驱动模块的体积小,驱动能力强,它只需要一个PWM波就能控制步进电机,同时基本上三个引脚就能完全控制步进电机。

通过该模块可以使小车快速反应R128下达的运动信息,驱动小车本身的轮子进行运动。

  • 平衡模块

MPU6050是一种6轴运动跟踪传感器,它包含3轴陀螺仪、3轴加速度计、运动处理器和温度传感器。它可以通过I2C总线接口与微控制器进行通信,并且可以通过辅助I2C总线与其他传感器设备通信。

MPU6050的主要作用是帮助机器人实现姿态感知和运动控制,提高机器人的自主性和灵活性。

遥控手柄UI控制(LVGL)

作者本人还利用R128开发板来移植了一个酷炫的LVGL遥控手柄UI,通过手柄上的菜单栏UI可以选择不同的机器人基础参数设置和进行机器人操控。

在自平衡机器人启动后,可以通过面包板上的两个手柄去遥控机器人的前进后退和转弯,并且在屏幕上还会实时返回机器人的倾斜角度、速度、电量等状态。

实现APP控制

在机器人竞速中,必须要在准确性和速度之间找到平衡。为了更好的反馈给自平衡机器人设置不同参数下的运动状态,作者针对自平衡机器人进行了控制App的适配。

App可以实时显示电池状态和机器人的倾斜角度,操作者只需要通过App中的几个可视化按钮和滑动栏来实时修改其PID,以实现对机器人速度和状态的远程控制。

自平衡机器人的一般行为由一组参数定义:

复制代码
// NORMAL MODE PARAMETERS  
 #define MAX_THROTTLE 550  MAXIMUM VELOCITY
 #define MAX_STEERING 140 MAXIMUM SPINNING VELOCITY
 #define MAX_TARGET_ANGLE 14 MAXIMUM ANGLE REACHED WHEN MOVING

// PRO MODE = MORE AGGRESSIVE (MAXIMUM SETTINGS)
 #define MAX_THROTTLE_PRO 860  MAXIMUM VELOCITY. PRO MODE
 #define MAX_STEERING_PRO 280 MAXIMUM SPINNING VELOCITY. PRO MODE
 #define MAX_TARGET_ANGLE_PRO 32  MAXIMUM ANGLE REACHED WHEN MOVING. PRO MODE

 #define KP 0.32 // 0.14
 #define KD 0.050 // 0.028
 #define KP_THROTTLE 0.075 //0.075
 #define KI_THROTTLE 0.1 // 0.1
 #define KP_POSITION 0.06 //0.055
 #define KD_POSITION 0.45 //0.5
 //#define KI_POSITION 0.02

比如:

  • 高MAX_THROTTLE_PRO值会使机器人更快,但如果不能顺利恢复垂直位置,稳定性会降低。

  • 高MAX_STEERING_PRO值会让机器人旋转得更快,但转弯时更难精确控制。

  • 高MAX_TARGET_ANGLE_PRO值将使机器人减小其相对于地板的角度,但这会使恢复和转弯变得更加困难。

UDP 网络通信控制

这个功能的实现比较简单,利用R128本身自带的WiFi&蓝牙特性,来实现两块R128开发板(机器人自身携带&手上的操控端)的UDP网络通信控制。

源码获取

Gitee源码获取链接:https://gitee.com/weidongshan/100ask_r128_demos

GitHub源码获取链接:https://github.com/100askTeam/100ask_r128_demos

相关推荐
a11177611 小时前
水体渲染系统(html开源)
前端·开源·threejs·水体渲染
冬奇Lab12 小时前
一天一个开源项目(第30篇):banana-slides - 基于 nano banana pro 的原生 AI PPT 生成应用
人工智能·开源·aigc
代码飞天15 小时前
Ghidra——一款开源的逆向的尚方宝剑
开源
田里的水稻19 小时前
LPC_激光点云定位(LSLAM)-正态分布变换(NDT)
人工智能·算法·数学建模·机器人·自动驾驶
a11177619 小时前
纸张生成器(html开源)
前端·开源·html
猫头虎19 小时前
OpenClaw 常用操作命令完整速查手册:终端 CLI 操作指令详解|聊天斜杠指令详情
运维·git·容器·开源·github·aigc·ai编程
诸葛务农20 小时前
Kinect Azure及其在人形机器人中的应用(下)
microsoft·机器人·azure
a11177620 小时前
网页魔方(html threeJS)
开源·html
weixin_4462608521 小时前
win11本地部署openclaw实操第2集-让小龙虾具有telegram机器人能力和搜索网站能力
机器人