立创EDA开源项目:球员训练机器人“逐日”1.0全向底盘与摩擦发射机构设计详解

📅 发布时间:2026/7/17 17:18:42 👁️ 浏览次数:
立创EDA开源项目:球员训练机器人“逐日”1.0全向底盘与摩擦发射机构设计详解
立创EDA开源项目球员训练机器人“逐日”1.0全向底盘与摩擦发射机构设计详解最近在B站上看到一个挺酷的开源机器人项目——“逐日”球员训练机器人它能自动移动、取球、发射用来辅助乒乓球或者网球训练特别合适。很多朋友看了视频后对它的全向移动底盘和稳定的摩擦发射机构很感兴趣想知道背后的原理和怎么实现的。作为一个做过类似项目的嵌入式工程师我决定结合这个开源项目给大家掰开揉碎了讲讲从运动学算法到嵌入式控制手把手带你理解怎么造出这样一个灵活的机器人。这篇文章咱们就聚焦在机器人的两个最核心、技术含量最高的部分全向轮底盘和摩擦轮/摩擦带发射机构。我会用最直白的话把复杂的数学公式和嵌入式代码讲明白目标是让你看完后不仅能看懂“逐日”的设计还能自己动手尝试搭建和编程。1. 认识“逐日”机器人一个能跑能射的“教练”在深入技术细节前咱们先看看“逐日”机器人长啥样整体是怎么构成的。这有助于理解后面要讲的控制系统是为哪些“手脚”服务的。从项目资料里的图片和视频可以看到“逐日”机器人主要由四大机构组成移动机构底盘负责机器人的全向移动是机器人的“脚”。取球机构负责从储球装置中抓取球是机器人的“手”。下发射机构一个基础的摩擦轮发射装置。上发射机构一个更高级的摩擦带发射装置也是本文重点。它的整体设计思路很清晰底盘带着机器人跑到指定位置取球机构抓球然后通过上或下的发射机构将球以设定的速度和角度发射出去模拟真人发球。作为开源项目作者把所有工程文件、图纸、代码都分享了出来链接在B站视频简介里这种分享精神非常值得点赞也为我们学习提供了绝佳的材料。2. 核心一让底盘“丝滑”全向移动的奥秘“逐日”的底盘用了四个“麦克纳姆轮”也叫全向轮这种轮子侧面有一圈斜向的小辊子让它不仅能向前后滚动还能向左右“平移”。四个轮子配合就能让机器人实现平面内任意方向的移动和原地旋转非常灵活。2.1 全向移动不是“乱动”运动学解算但灵活的背后是复杂的控制。你可能会想想让机器人往右前方45度走是不是让四个轮子都往那个方向转就行了当然不是。每个轮子因为安装角度不同对整体运动的贡献也不同。这就需要一套数学公式来解算专业上叫“运动学逆解”。简单来说就是我们告诉机器人一个整体的运动指令比如以速度V向X方向移动同时以角速度ω旋转然后通过一套公式计算出每个轮子应该转多快。“逐日”项目的资料里给出了详细的推导过程。咱们不用被那一堆矢量图吓到我用人话给你解释一下核心思想分解运动机器人的任何平面运动都可以分解为沿X轴的平移、沿Y轴的平移和绕自身中心的旋转这三种基本运动的叠加。轮子贡献对于底盘上的每一个轮子上述三种运动都会对它产生一个速度要求。比如机器人单纯向右平移时左前轮可能需要向前转右前轮可能需要向后转。速度合成把同一个轮子因三种基本运动所需的速度有大小和方向用矢量加法加起来就得到了这个轮子最终应该具有的合成速度矢量。提取转速这个合成速度矢量在轮子平面方向即轮子能提供动力的方向的分量才是真正需要电机提供的转速。通过几何关系可以算出这个转速值。项目文档中针对机器人运动到不同象限右上方、左上方等的情况都做了推导最终可以总结成一个通用的矩阵公式。对于使用STM32等微控制器的我们来说不需要每次都重新推导只需要把这个公式写成代码。一个简化的理解模型是控制四个轮子的速度就像四个人一起抬一个桌子。想让桌子往某个方向平移或者旋转每个人用力的方向和大小都得精确配合。运动学解算就是计算出每个人该出多大力。2.2 从理论到实践仿真与代码实现理论推导完了直接上真车调试那可能会手忙脚乱。一个好的习惯是先做仿真。“逐日”的作者就用了CoppeliaSim原名V-REP这款机器人仿真软件。提示CoppeliaSim非常适合做移动机器人、机械臂的算法验证它支持Lua、Python、C/C等多种语言编写控制脚本并且能和MATLAB/Simulink联合仿真。在仿真里你可以搭建一个和实物尺寸一样的机器人模型赋予它物理属性质量、摩擦等然后用写好的运动学算法控制它跑一跑。看看它是不是真的能按指令移动有没有打滑、跑偏。这个过程能极大降低实物调试的风险和成本。仿真验证通过后就可以着手写嵌入式的实际控制代码了。“逐日”项目使用的是STM32微控制器和Keil开发环境。硬件连接简化来看是这样的STM32作为主控大脑。四个M3508无刷电机驱动四个全向轮每个电机自带一个C620电调电子调速器。STM32通过CAN总线与四个C620电调通信发送控制指令目标转速。遥控器信号通过接收机传给STM32STM32解算出底盘运动指令再通过运动学公式算出每个轮子的目标转速最后通过CAN总线发给电调。核心的代码逻辑片段可能如下基于原始文档中的框图理解// 伪代码展示逻辑流程 int main(void) { // 初始化时钟、CAN、GPIO、定时器等 BSP_Init(); CAN_Init(); Motor_Init(); // 初始化M3508电机控制相关参数 while(1) { // 1. 获取遥控器输入通道值 get_remote_control_data(chassis_rc); // 2. 将遥控器输入解算为底盘的目标速度Vx, Vy和旋转角速度ω chassis_kinematics_remote_ctrl(chassis_rc, target_vx, target_vy, target_omega); // 3. 运动学逆解根据目标Vx, Vy, ω计算四个轮子的目标转速 calculate_wheel_speed(target_vx, target_vy, target_omega, wheel_speed); // 4. 通过CAN总线将四个轮子的目标转速发送给对应的C620电调 CAN_Send_Motor_Command(CAN_ID_MOTOR1, wheel_speed[0]); CAN_Send_Motor_Command(CAN_ID_MOTOR2, wheel_speed[1]); CAN_Send_Motor_Command(CAN_ID_MOTOR3, wheel_speed[2]); CAN_Send_Motor_Command(CAN_ID_MOTOR4, wheel_speed[3]); // 延时或等待定时中断 delay_ms(2); } }实际调试时你可能需要调整电机转向、转速比例系数等让机器人的实际移动和遥控器指令完全吻合。这个过程需要耐心但一旦调通看着机器人精准地全向移动成就感十足。3. 核心二让球“指哪打哪”的摩擦发射机构发球机构是另一个技术难点。要求很简单射速稳定、弹道直。这样才能实现精确的训练。“逐日”机器人探索了多种摩擦发射方案非常有参考价值。3.1 摩擦发射的基本原理摩擦发射的核心是利用两个高速反向旋转的轮子或带夹住球通过摩擦力将球加速并抛射出去。就像老式的擀面杖面团从中间过去就被压扁推出去了。一个稳定的摩擦发射机构需要考虑以下几个关键因素摩擦材料早期常用硅胶轮但高速下易膨胀、脱落。现在主流是用聚氨酯PU轮。它通过“胶辊工艺”紧密包覆在金属轮毂上耐磨、耐撕裂寿命和稳定性都好很多。电机与驱动电机需要有足够的扭矩和转速稳定性。“逐日”的上发射机构使用了MN5212电机配合Odrive这款开源高性能电调。Odrive的特点是控制精度高内置FOC磁场定向控制算法能非常精准地控制无刷电机的转速和扭矩这对于保持射速恒定至关重要。结构形式这是“逐日”项目重点探索的部分。除了经典的双摩擦轮他们还研究了单摩擦轮长摩擦道延长加速距离保证加速效果。四摩擦轮实现多级加速或全方位加速。摩擦带这是“逐日”1.0上发射机构最终采用的方案也是其亮点。3.2 为什么选择“摩擦带”—— “逐日”的2代发射机构“逐日”1.0的上发射机构可以看作是其“2代发射机构”理念的实践。它最大的特点是将摩擦轮换成了摩擦带。摩擦带相比摩擦轮的优势加速路径更长球与摩擦带的接触区域是一个较长的面而不是摩擦轮的两个点。这意味着球被加速的时间更长加速过程更平缓有利于获得更稳定、可控的出口速度。对中性更好摩擦带结构更容易引导球沿中心线运动减少发射偏斜。可调性通过调节张紧轮可以方便地调整摩擦带与球的压紧力从而微调发射速度。从项目图片看这个摩擦带机构由主动轮、从动轮、张紧轮和环形的聚氨酯摩擦带组成。电机MN5212驱动主动轮带动整个摩擦带高速运转。控制上使用Odrive驱动MN5212电机STM32可以通过UART、I2C或CAN与Odrive通信发送速度或位置指令。Odrive会负责闭环控制确保电机转速严格跟随指令不受负载发射球时波动的影响这是弹道稳定的关键。// 伪代码控制Odrive设置电机转速 void set_odrive_speed(int motor_number, float speed_rps) { char cmd[50]; // Odrive通常通过串口发送ASCII命令例如设置轴0的目标转速为100转/秒 // 实际命令格式需参考Odrive官方文档 sprintf(cmd, “v %d %f\n”, motor_number, speed_rps); uart_send_string(ODRIVE_UART_PORT, cmd); // 通过串口发送命令给Odrive }3.3 俯仰调节机构为了让球能以不同角度射出打出上旋、下旋或平击球发射机构还需要一个俯仰调节机构。“逐日”采用了一个电机图中看可能是M3508或类似舵机通过连杆或齿轮带动整个发射模块上下摆动。STM32控制这个电机的角度就能精确设定发射仰角。4. 总结与动手建议好了关于“逐日”机器人全向底盘和摩擦发射机构的核心技术咱们就聊到这里。总结一下关键点全向底盘核心在于运动学逆解算法。先仿真CoppeliaSim验证再用STM32实现通过CAN总线控制M3508C620驱动轮子。摩擦发射追求稳定弹道。聚氨酯材料和高性能闭环驱动如Odrive是基础。摩擦带结构是一种能提供更长、更稳定加速路径的优秀方案。如果你也想自己动手做一个类似的机器人我建议的路线是先学基础掌握STM32的基本外设GPIO、定时器、UART、CAN理解PID控制原理。从仿真开始在CoppeliaSim里搭建一个简单的四轮小车模型用Lua或Python写一个运动学控制脚本感受算法如何控制运动。硬件选型参考“逐日”的清单M3508、C620、STM32F4/F7系列主控采购硬件。分模块调试先调通一个电机的CAN通信和控制再扩展到四个电机实现底盘运动。发射机构可以先单独调试Odrive和电机让它稳定空转。整合与优化将所有模块整合调试遥控、运动、发射的联动。不断优化参数比如底盘运动PID、发射电机转速等。机器人开发是个系统工程会涉及机械、电路、嵌入式软件、算法多个领域。遇到问题很正常多查资料“逐日”的开源资料就是很好的参考、多动手调试、多在社区交流。最重要的是保持兴趣和耐心当你看到自己做的机器人稳稳地跑起来、把球精准地打出去时那种快乐是无与伦比的。希望这篇教程能帮你迈出第一步