以前做的一种特殊的平衡车----三轮球上平衡车

2023-05-16

这个项目做了很长的时间,核心算法就是PID,目标就是让一个三轮车(轮子为全向轮)站到足球上并可以进行平移旋转等平面运动。

机械部分

使用三个橡胶全向轮,通过联轴器连接减速电机,斜向下45°连接于车身,车身上承载多层台面,下层放置电路板及电池,上层作为承物平台,选用摩擦力大的5号橡胶足球作为摩擦球,如图1所示:


板与电机的连接部分采用3D打印方案,3D打印精度可达0.1mm,完全满足需要,3D模型如图2:



电路部分

如图3所示,通过433MHz的无线串口透传模块,将控制指令传送至单片机,单片机通过IIC接口获取当前姿态信息,通过自定义的并口获取当前速度信息。在控制器中完成角度闭环和速度闭环。通过PWM将给电机的指令信号传给FPGA,FPGA对每个电机分别做速度闭环,同时将速度信息回传至MCU。

控制系统模型建立

两个方向的独立控制方程可以看作两个一维倒立摆,倒立摆模型如图4:

采用动力学分析建模,最终经过线性化和拉普拉斯变换后的两个传递函数分别如下所示:

 

  

 

式中各符号的含义如下:

Ib、Ip

惯性力矩

mp

机器人主体质量

mb

球体质量

r

球体直径

h

摆杆质心到球心的长度

θ

摆杆倾角

ψ

摆杆与球的相对角度

M

作用在球上的力矩

g

重力加速度

 

单球轮平衡机器人的控制问题本质上是对三个全向轮的控制问题,将机器人模型分为三个坐标系x、y、z,如图5所示。

通过在x轴、y轴上安装的加速度计和陀螺仪来检测两个轴上的角度和加速度变化,进而计算出等效的两个虚拟轮上的速度vx         、vy  , vx、vy  由相应的加速度ax  、ay  积分求得,ax  、ay  分别如下式所示:



由虚拟轮的速度 vx、 vy最终推导出三个全向轮的转速vs2  、vs2  、vs3  分别如下式所示:







控制方案

对于控制器来说,需要同时进行角度闭环和速度闭环,来增加小车稳定时的状态同时增加阻尼。为了使后端的功放环节更像一个线性的放大环节,减少非线性,我们加入FPGA使后端电机驱动部分自成一个速度闭环,使单片机可以获得更为准确的速度反馈。

单片机从传感器同时获得角度和角速度,通过增量式PID进行角度反馈,输出PWM,同时读入FPGA返回的速度值,控制小车不发生较为严重的振荡。

如图7为控制框图:


单片机工作流程





如图8,单片机上电之后先进行系统初始化,并读取参数,然后从测量元件获得测量数据,通过其中加速度计和陀螺仪的数据,输入融合算法可确定小车的姿态,结合由编码器得到的FPGA速度值以及期望数值计算得到小车的速度输出。值得再次说明的是,此系统中的速度闭环是由控制器(单片机)实现的,而FPGA中速度反馈的功能是提高电机的线性度。



FPGA工作流程:


三路PWM速度信号由单片机输入FPGA,FPGA由编码器的速度反馈信号及输入的期望速度进行PID控制算法后将控制信号以PWM的形式输入电机驱动,并将得到的速度反馈值传给单片机。


控制芯片的选择

控制器的硬件电路的设计,必须首先决定主控制器采用的芯片,然后将控制算法编制成相应的控制程序,实现对被控对象的控制。究竟选择哪一种单片机,取决于系统对速度的要求和该应用系统的复杂性,在本设计中选用通用数字单片机,其它器件的选择遵循控制系统的精度要求,同时满足体积小、耗电少、可靠性高的要求,因此尽可能选用功耗小,性能稳定的集成电路芯片。

在众多单片机产品中,我们选择了Atmel公司的AVR单片机,该单片机具有编程简单,算法库和驱动库众多,方便快速开发,同时该单片机为8位单片机,主时钟16MHz,运算速度不算太快,但可以满足50Hz-100Hz的系统控制频率,该单片机具有片上8通道10位ADC,6个硬件PWM,一路I2C,一路串口,一路SPI接口,接口齐全,能满足各类传感器的需求。是一款通用性极佳,开发极容易的单片机。如图10为单片机最小系统电路。




为了实现3路电机的各自速度闭环,单片机没有足够的资源可以使用,而且速度不够,我们选用了Xlinx公司的Spartan6系列的FPGA XC6SLX9,用来做并行的3路闭环辅助处理器,单片机通过6路PWM将信号传给FPGA,每个电机用两路PWM来区别转向,同时FPGA每个电机另外产生两路PWM来驱动电机,同时FPGA捕获每个电机编码器的的两路正交信号进行速度反馈。


陀螺仪与加速度计

我们需要测得小车精确的角度变化量,及时修正来保证小车的相对稳定性。常见的测量角度的仪器有陀螺仪和加速度计。

陀螺仪可以测量角速度,具有高动态特性,但是它是一个间接测量器件,它测量的是角度的导数,即角速度,显然我们要将角速度对时间积分才能得到角度。积分会存在积分误差,积分误差的来源主要有两个:一个是积分时间。积分时间Dt越小,输出角度越准;一个是器件本身的误差,假设陀螺仪固定不动,理想角速度值是0dps(degreeper second),但是如果有一个偏置0.1dps加在上面,测量出来则是0.1dps,积分一秒之后,得到的角度是0.1度,1分钟之后是6度,一小时之后是360度,转了一圈。所以说陀螺仪在短时间内有很大的参考价值。

加速度计可以测量加速度,包括重力加速度。但是加速度传感器不会区分重力加速度与外力加速度,所以当系统在三维空间做变速运动时,它的输出就不正确了或者说它的输出不能表明物体的姿态和运动状态。在静止或匀速运动(匀速直线运动)的时候,加速度计仅仅测量的是重力加速度,而重力加速度与绝对坐标系是固连的,通过这种关系,可以得到加速度计所在平面与地面的角度关系也就是横滚角和俯仰角,计算公示如下:

俯仰角ρ=-arctan(AY/AZ)

横滚角ψ=arctan(AX/AZ)

综合考虑,加速度计是极易受外部干扰的传感器,但是测量值随时间的变化相对较小。陀螺仪可以积分得到角度关系,动态性能好,受外部干扰小,但测量值随时间变化比较大。可以看出,它们优缺点互补,结合起来才能有好的效果。我们可以设计算法在短时间尺度内增加陀螺仪的权值,在更长时间尺度内增加加速度权值,这样系统输出角度就更真实了。

选择MPU6050传感器,该芯片集成3轴陀螺仪和3轴加速度计,陀螺仪量程可选择±250,±500,±1000,±2000°/s,加速度计量程可选择±2g, ±4g,±8g, ±16g。且输出增加低通滤波,解决温度漂移问题,更有利于单片机信号采集。该传感器的ADC分辨率均为16位,对单片机的数据接口为I2C,工作频率最高为400kHz。

我们将传感器配置在±250°/s,±2g,即可满足我们的要求,同时可以达到较高精度。因为系统在稳定的时候晃动不超过5°,晃动频率不超过1Hz,所以选用最低量程完全满足我们的要求,且量程越低精度越高。控制频率在50Hz-100Hz,传感器灵敏度可以满足我们的需求。在控制器内,我们以400kHz的频率获取原始数据,进行卡尔曼滤波数据融合获取3轴角度,该数据和3轴角速度以控制频率频率被控制器使用。另外为了减轻处理器负担,我们可以使用MPU6050内部的DMP运算内核,该内核基于DSP,内部固化官方的滤波算法,可以在芯片内FIFO中直接读取四元数,角速度等值,同时DMP内核具有一定的抑制零漂算法。

在使用时为了抑制零漂,我们采用在设备上加装水平尺的方式,每次上电前十秒采用人工校正来保证在本次工作中系统传感器的数据真实度。

如图为MPU6050部分原理图:


磁强计

采用磁强计让小车工作时可以得知自己的绝对朝向,同时方便陀螺仪进行Z轴校准,以此获得系统相对于地球的绝对方位角,传感器精度要求不高,采用HMC5883传感器。该传感器的特点和优点如下:

特点

优点

三轴磁阻传感器和ASIC都被封装在3.0×3.0×0.9mmLCC表面装配中

体积小高集成产品。只需添加一个微处理器接口,外加两个外部SMT电容。专为大批量、成本敏感的OEM生产而设计,易于装配并与高速SMT装备件兼容。

12-bit ADC与低干扰AMR传感器,能在±8高斯的磁场中实现5毫高斯分辨率。

能让罗盘航向精度精确到1°~2°。

内置自检功能。

产品组装后能进行低成本功能性测试。

低电压工作(2.16V—3.6V)和超低功耗(100uA)。

适用于电池供电的应用场合。

内置驱动电路。

带置位/复位和偏置驱动器用于消磁、自测和偏移补偿。

I2C数字接口

适用于消费类电子设备应用中通用双线串行数据接口

无引线封装结构

符合RoHS标准

磁场范围广(+/-80e)

传感器能在强磁场环境中罗盘航向精度达到1°~2°。

有相应软件及算法支持

可获得罗盘航向、硬磁、软磁以及自动校准库。

最大输出频率可达160Hz

能应用于个人导航系统和LBS

 

该传感器使用简单的I2C数字接口,内置12位ADC。最大输出频率为160Hz,高于控制频率,比较合适。在PCB布线安装的时候要远离电机,防止被电机磁场干扰。回流焊要求温度不能高于260℃,否则会损伤芯片内部结构,这一点要特别注意。如图为HMC5883部分原理图:


光电编码器

采用光电编码器,该编码器与电机一体,做在了一个轴上,电机本身减速比64:1,码盘为12CPR,则测角精度为360/(12*64)=0.468°,同时该光电编码器为AB相输出。编码器要注意供电问题,小心烧掉光电管,如图13,电源加入保护电阻,输出增加上拉电阻。


电机选型方案

电机

类型

参数

特点

1

Faulhaber2342L012空心杯减速电机带编码器

输出功率:17W

扭矩:大扭矩(1.72Nm)

空载电流:75mA

堵转电流:1400mA

减速箱型号:日本定制(全金属精密行星减速箱)

减速比:64:1

编码器:光电式

输出路数:AB双路输出

每圈脉冲:12CPR(脉冲每圈)工作电压: 12V

空载转速:8100RPM(转每分钟)

减速后速:120RPM(转每分钟)

 

减速组

自带编码器,有虚位

力矩大

2

42步进电机

重量:0.4kg

步距角:1.8±5%度/步

电压:12V

电流:1.2A/phase的

阻力位:10.0±10%Ω/相

电感值:20±20%MH/相位

铅风格:AWG26 UL1007

配备4引线

保持转矩:48N.cm敏

制动扭矩:2.6N.cm最大

转子的力矩:68g.cm2

便宜,力矩大,无需速度闭环,没有虚位

3

无刷电机+电调

1400kv 30A

力矩大,无需做闭环




















最终我们选择了Faulhaber2342L012空心杯减速电机带编码器,看中其功率大,驱动简单,自带较高精度编码器减少机械设计难度,如图14:


电机驱动的选择

电机最大功率17W,最大工作电压15V,可以估算出每个电机的工作电流不超过2A,选择L298N芯片作为电机驱动。该芯片可以驱动两路电机,最高工作电压35V,稳态工作电流2A,峰值工作电流3A,可以满足功率需要。输入信号为两路PWM,可控制电机的正反转,PWM信号频率约为40kHz。该芯片在使用时要特别注意散热,芯片发热量很大,并且板上布线线宽至少40mil,远离数字芯片。如图15为驱动电路的原理图:



轮胎的选择

图16轮胎采用双层橡胶全向轮,3个轮呈120度排布,同时向下倾斜45度,以便与球面全面贴合。我们最终选择了如图全向轮,直径7cm,六方形联轴器。


球的选择

采用5号橡胶足球,与橡胶轮胎的摩擦较大,球与轮胎摩擦系数约为0.5。原则上尽量增加摩擦力。同时保证轮子可以全部与球接触

电源的选择

每个电机耗电峰值达到2A,整个系统考虑峰值要留出冗余,确定放电能力6.5A,电机工作电压在14V左右,电压越高,电机工作特性越好,故采用3000mah,14.8V,4s,35C放电能力的锂电池,估算最大放电电流可达9A,用来保证电机的供电。

控制器,传感器的供电电压为5V和3.3V,FPGA部分供电为3.3V和1.2V,控制部分功率较小,采用7805三端稳压芯片将电池电压降至5V,后接1117-3.3将其降压至3.3V,后接1117-1.2,将其降压至1.2V。由于7805压降较大,发热量较大,需要增加散热片以确保稳压芯片的正常工作。电源部分原理图如图17所示:


主控部分代码可参照:https://github.com/BG2CRW/ballBalacne



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以前做的一种特殊的平衡车----三轮球上平衡车 的相关文章

  • MarkDown基本语法学习

    标题 span class token comment 一级标题 span span class token comment 二级标题 span span class token comment 三级标题 span span class t
  • ssh免密登录远程服务器

    公钥生成 此命令 xff0c 一路向西即可生成 ssh keygen 生成的公钥文件目录一般默认在 xff1a C Users 用户名 ssh 中的 id rsa pub 文件 Windows登录 个人账户下ssh的公钥内容需要保存至远程服
  • esp8266(MQTT固件)通过at指令连接阿里云平台

    使用记录 esp8266模组固件烧录工具准备串口调试助手阿里云账户及物联网设备申请开启MQTT通信方式一 阿里云直接获取连接参数方式二 阿里云三元组计算连接参数 严重注意 实验 xff1a esp8266 连接阿里云 准备工作 xff1a
  • Python爬虫实战:抓取并保存百度云资源(附代码)

    專 欄 王雨城 xff0c Python中文社区专栏作者 博客 xff1a http www jianshu com u 88ff70818bd1 寻找并分析百度云的转存api 首先你得有一个百度云盘的账号 xff0c 然后登录 xff0c
  • UAV-5--链接飞控以及配置SITL以及ardupilot环境

    linux系统链接飞控以及配置SITL以及ardupilot环境 先更改本机host到对象的ip 再进行ssh的链接 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img meuTGFrN 1651933771950
  • python面向对象实现布谷鸟算法(CS)

    以最小化一个m维变量的目标函数min f X 为例 xff0c 描述CS算法的实现步骤 step1 定义目标函数f X xff0c xff0c 问题维数m xff0c 寄生巢规模Popsize 61 N xff0c 淘汰概率Pa xff0c
  • Linux环境下创建并运行shell脚本(.sh文件)

    1 在指定位置新建 sh文件 在Linux环境下 xff0c 通过 ls ls l ls a 命令查看当前目录下的内容 xff0c 通过 cd 命令进入想新建 sh文件的文件夹后 xff0c 通过 pwd 命令查看所在目录的地址 通过如下命
  • nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver 原因及避坑解决方案

    由于断电 xff0c 服务器重启了 xff0c 当我再次跑实验时 xff0c 发现cuda不可用 xff0c 于是输入 nvidia smi 才发现了一个错误 xff0c 如下 xff1a NVIDIA SMI has failed bec
  • CAN ack slot应用

    需求描述 某车厂对CAN初始化完成的时间T xff0c 要求 lt 45ms 解决办法 将MCU CAN控制器切换为可收发模式的代码往前放 测试方法 1 采用CANoe监测总线报文 xff0c 测量从 总线第一次出现错误帧到总线第一次出现C
  • 如何在ubuntu18.04系统中切换python版本

    在ubuntu18 04系统中如何切换python版本呢 xff1f 本文给出详细说明 1 查看python所在目录 whereis python 2 添加python list update alternatives install us
  • 深入理解计算机系统:网络编程 上

    一直以来对计算机网络比较感兴趣 xff0c 但是无奈大学计算机网络的学习非常表面 xff0c 已经忘得差不多了 毕业后读了一些网络方面的书 xff0c 对网络知识的冰山一角有了一些感悟 随着网络方面的书越读越多 xff0c 不懂的地方也越来
  • K8s解析<2>--Service与K8s中的网络通信架构简述

    Service介绍 Service可以看作是一组提供相同服务的Pod对外的访问接口 借助Service xff0c 应用可以方便地实现服务发现和负载均衡 Service也是K8s里的最核心的资源对象之一 xff0c K8s里的每个Servi
  • ROS 多线程以及OOP编程注意项(1)

    环境配置 Ubuntu20 04ROS Noetic 问题描述 按照往常使用类中回调函数并通过CallbackQueue开启多个Queue时出现回调函数没响应的情况 代码如下 namespace KINE class kine privat
  • 百度 2014 校园招聘 软件研发工程师 笔试题(天津站)

    2013 9 28笔试 xff08 此为回忆版 xff09 一 简答题 xff08 30分 xff09 1 动态链接和静态链接的优缺点 xff08 10分 xff09 2 轮询任务调度和抢占式任务调度的区别 xff08 10分 xff09
  • 【免费送书】说说哪本书曾经让你爱不释手

    编程狗在线 自由的编程学习平台 一本好书带给人的不止于知识收获 xff0c 还会对你的成长有所帮助 xff0c 与你的每次经历产生共鸣 每天读一点 xff0c 坚持不懈 xff0c 你就能成为专业高手 如果你能每两个月读一本好的编程书 xf
  • MySQL 5.6 源码目录结构

    基于MySQL 5 6 26源码 源码目录 xff1a BUILD 构建工程的脚本 client 客户端 cmake cmd line utils 命令行工具 dbug 调试库 Docs 文档 extra 一些相对独立的次要工具 inclu
  • 计算机I/O原理

    cpu通过IO命令控制设备 xff0c cpu对设备的控制仅仅可以到达设备控制器 xff0c 无法直接控制设备 设备无法直接和cpu通信 xff0c 设备控制器通过中断机制向cpu反馈信息 即这个一个模型 CPU IO指令 gt 设备控制器
  • 计算机的I/O端口地址表

    PC的I O端口地址表 xff08 I O端口地址表 xff09 http tieba baidu com f kz 61 16042340 I O端口地址表 PC只用了10位地址线 A0 A9 进行译码 xff0c 其寻址的范围为0H 3
  • 利用pthread进行数组求和

    POSIX thread 简称为pthread xff0c Posix线程是一个 POSIX 标准线程 利用多线程可以提高运算速度 利用pthread进行数组求和的程序如下 xff1a include lt stdio h gt inclu

随机推荐

  • 字符串的全排列程序

    include lt iostream gt include lt cstring gt using namespace std void swap char str int i int j char tmp 61 str i str i
  • Google面试总结

    分享 Google面试总结 来源 xff1a 王冠中的日志 终于把Google的面试给搞完了 xff0c 感觉可以算是Tech Interview的顶峰了 这里主要写一下大概流程和内容 xff0c 给大家以后interview一个参考 G的
  • 【硬件在环Hil联调问题记录1】

    硬件在环Hil联调问题记录1 simulink中 quadprog 函数代码生成解决方案 Carsim加载不同版本Matlab的操作 仿真时各模块的作用 xff1a Simulink xff08 2019b xff09 控制算法 Carsi
  • C++ boost和C++ stl的区别和联系

    C C 43 43 语言的一大特点是其标准库可以用语言自身实现 C 标准库的 strlen strcpy strcmp 系列函数是教学与练习的好题材 xff0c C 43 43 标准库的 complex string vector 则是类
  • 最新(2023.3.17)配置llvm、clang、clangd、clang-tidy方法,极其简单,轻松上手

    Linux 1 我的Linux是Ubuntu22 04 xff0c 首先把软件下载源改成国内的aliyun xff0c 很简单 xff0c 按照我的这个来做就行 点开这个图标 xff0c 然后点击下面这个 在download from那里把
  • Ubuntu 网线直连(开机自动配置ip地址、启动vnc),vnc远程桌面

    sudo ifconfig enp4s0 upsudo ifconfig enp4s0 192 168 1 20 xff08 要和pc机保证在相同网段 xff09 vncserver 2以下为开机启动配置和启动操作如果需要开机自行配制 启动
  • iftop 较全

    iftop nBNP nbsp i nbsp enp2s0 nbsp f dst port 6379 可以使用iftop命令的 f选项来过滤指定的端口 该选项允许您指定BPF过滤器规则 用于仅显示符合规则的流量 例如 以下命令将仅显示目标端
  • 随机生成slam 真值和里程计值的 g2o 文件(python实现)

    生成了slam 里程计的真值和里程计的值 并保存顶点和边为 g2o文件 nbsp 随机生成slam 真值和里程计值的 g2o 文 件 gen test data py import numpy as np import matplotlib
  • 滑膜+pid+上层设计下层平均分配 优化分配 动态载荷分配

    滑膜 43 pid 43 上层设计下层平均分配 优化分配 动态载荷分配 xff0c 分布式电动汽车操稳控制 本研究在matlab simulink建立七自由度轮毂电机驱动汽车模型 xff0c 使用滑膜联合控制以及pid控制实现转向过程中质心
  • 12本Python书籍推荐

    Python是用于各种任务和领域的优秀编程语言之一 Python的用户友好性 xff0c 高级特性以及对简单性和增强代码可读性的强调使其成为全球许多开发人员的理想选择 诸如此类的功能使应用程序开发 xff0c 数据科学 xff0c 人工智能
  • Ubuntu 屏幕翻转90度怎么恢复

    笔记本电脑的 ubuntu 屏幕有时候会无意中90度翻转 xff0c 这时候你只能侧着脸看 xff0c 靠鼠标操作想要恢复是极其尴尬的一件事 xff0c 最快捷的方法就用命令是删除 iio sensor proxy 程序 第一步 Ctrl
  • 使用Python+Opencv从摄像头逐帧读取图片保存在本地

    今天测试的时候 xff0c 遇到了一个问题 xff0c 测试需求是 xff0c 需要把摄像头拍摄的实时视频逐帧率保存下来 经过查阅资料以及网友帮助 xff0c 目前已经完成 记录下来希望可以帮助有需要的朋友 1 思路 使用Python 43
  • vscode 运行C++

    本文先介绍了windows下 VSCODE运行C 43 43 前 xff0c 搭建C 43 43 运行环境的必要步骤 后介绍了tasks json launch json的作用 xff0c 并给出了自己使用的配置方案 最后给出了常见问题的解
  • 在执行launch文件时,如果显示不存在这个package

    在执行launch文件时 xff0c 如果显示不存在这个package xff0c 则应注意可能是下述情况导致 xff1a catmake编译完 xff0c 再用rosrun或roslaunch命令找不到package时 xff0c 这时需
  • 迷一样的穿越机飞控电容的作用

    穿越机电源上要并个大电容 xff0c 今天终于碰到一位真神说明白了 xff1a 电容两个作用 xff0c 一个是在你插电的一瞬间 xff0c 因为里面有降压设备大部分都是线圈类的东西 xff0c 产生电磁效应会有高于电池特别高的电压 xff
  • 一、机械小白学单片机之初认识ESP8266

    前言 本人刚接触单片机开发 xff0c 原专业为机械自动化 xff0c 因为传统机械行业的不景气 xff0c 想要转为从事电子行业 之前有一点C语言基础 xff0c 还学过一点点C xff0c 但是也就一点点 可谓小白学习之路 希望能够给大
  • VB.net写一个简易串口RS485调试助手

    最近在调试带rs485串口通讯的设备 xff0c 项目上主要是用PLC和串口通讯 xff0c 因为PLC有集成好的串口块 xff0c 使用起来比较容易 xff0c 为了方便测试 xff0c 就想着用上位机写一个简易的串口通讯程序 xff0c
  • 使用python加PyQt5,利用QMediaPlayer写一个简易的音乐播放器(进度条拖动,音量改变,播放停止切换,歌曲列表))

    当你学习了python之后 总想着利用它去做些什么 无论是制作小工具还是小游戏 都是一种锻炼 那么 利用python加上PyQt5写一个简单的音乐播放器 可能会是一个有趣的体验 下面我会分享一下如何编写简易的音乐播放器 其中参考了网络上的很
  • <Python>PyQt5自己编写一个音乐播放器(优化版)

    Python音乐播放器 更新日志 xff1a 20221031 xff1a 添加独立播放列表 20221107 xff1a 添加 上一首 下一首 功能 展示图片 xff1a 202211071308更新 xff1a 添加上一首 下一首功能
  • 以前做的一种特殊的平衡车----三轮球上平衡车

    这个项目做了很长的时间 xff0c 核心算法就是PID xff0c 目标就是让一个三轮车 xff08 轮子为全向轮 xff09 站到足球上并可以进行平移旋转等平面运动 机械部分 使用三个橡胶全向轮 xff0c 通过联轴器连接减速电机 xff