用全志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

相关推荐
AI进化营-智能译站12 小时前
ROS2 C++开发系列17-多线程驱动多传感器|chrono高精度计时实现机器人同步控制
java·c++·ai·机器人
2601_9579648715 小时前
375V锂电池完整设计方案要求(工业级高压动力系统解决方案)【浩博电池】
机器人
xmdy586616 小时前
Flutter+开源鸿蒙实战|智联邻里Day9 系统权限适配+应用全局分享+缓存深度优化+版本更新弹窗
flutter·开源·harmonyos
feasibility.17 小时前
SpaceMind论文解读:太空具身智能的范式跃迁 —— 中科院发布首个自进化太空机器人智能体框架
人工智能·科技·机器人·具身智能·skills·太空·进化
mit6.82418 小时前
人类数据 | 行为克隆 | 机器人学习的未来
人工智能·机器人
fthux19 小时前
用了 GitZip 这么多年,我动手做了一个「Pro」版
人工智能·开源·github
X54先生(人文科技)19 小时前
《元创力》纪实录·心田记釉下新声:当《纪·念》成为可聆听的星轨
人工智能·开源·ai写作·开源协议
FeelTouch Labs1 天前
开源安全治理体系建设
安全·开源
05候补工程师1 天前
深度解构 ROS 2:如何手动调通 Nav2 A* 路径规划引擎
linux·人工智能·经验分享·算法·机器人