四福来轮全向底盘运动功能的实现

AI助手已提取文章相关产品:

1. 运动功能说明

       本文示例采用R310a样机,是一款十字分布型四福来轮全向底盘。它可以实现各个方向的平移运动以及转向运动。

         全向福来轮底盘的一个特点是可以灵活的全向移动,四轮全向轮的全向移动需要四个轮的相互配合,运动方向和各个轮的转向关系如图所示(箭头方向表示轮或车的运动方向):

2. 电子硬件

    本实验中采用了以下硬件:

主控板

STM32主控板

扩展板

STM32扩展板

电池7.4V锂电池
其它步进电机

 电路连接:

我们先对机构的关键部件进行编号(见下图)。

接下来把步进电机线与扩展板进行连接(见下图)。

3. 运动功能实现

编程环境:keil5

功能:实现四轮全向底盘的前进、后退、转向、平移。

请编写程序并实现功能,下面给大家提供一个参考例程(USER\test.uvprojx),下面是main.c的代码:

/*------------------------------------------------------------------------------------

  版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

           Distributed under MIT license.See file LICENSE for detail or copy at

           https://opensource.org/licenses/MIT

           by 机器谱 2023-03-03 https://www.robotway.com/

  ------------------------------*/

#include "sys.h"

#include "led.h"

#include "a4988.h"

#include "pwm.h"

#include "math.h"


#define PI 3.14


void Put_Up(void);//落笔函数

void Put_Down(void);//抬笔函数

void draw_sexangle(void);//画正六边形函数

void drawLine(float x1, float y1);//直线插补函数


float Xmin = -60;                      //定义绘图范围

float Xmax = 60;

float Ymin = -60;

float Ymax = 60;


float Xpos = 0;

float Ypos = 0;

float l = 60;//边长

const int stepsPerRevolution = 3200;//步进电机步数

int step_test = 8000;

int step_test1 = 6000;



int main(void)

{

delay_init(168);//初始化延时,168为CPU运行频率

TIM4_PWM_Init(20000-1,84-1);//舵机初始化

Stepper_Motor_Init(0);//步进电机初始化

while(1)

{

All_stepper_move( step_test, -step_test,   step_test, -step_test);delay_ms(500);//前进

All_stepper_move(-step_test,   step_test, -step_test,   step_test);delay_ms(500);//后退


All_stepper_move(-step_test, -step_test, -step_test, -step_test);delay_ms(500);//左转

All_stepper_move( step_test,   step_test,   step_test,   step_test);delay_ms(500);//右转

All_stepper_move(-step_test, -step_test,   step_test,   step_test);delay_ms(500);//左平移

All_stepper_move( step_test,   step_test, -step_test, -step_test);delay_ms(500);//右平移

//move_test();

while(1){

}

}

}

4. 资料内容


​①例程源代码
​②样机3D文件
资料内容详见 
四福来轮全向底盘(十字)

您可能感兴趣的与本文相关内容

### 全向底盘解算方法 对于全向底盘而言,其能够实现在任意方向上的平移和旋转运动。为了实现这种复杂的运动模式,需要精确地计算每个子的速度分量,从而确保整体底盘可以按照预期的方向和平滑地移动。 #### 运动学建模基础 在建立全向底盘运动学模型时,通常采用的是基于欧拉角或者齐次变换矩阵的方式来描述机器人的姿态变化。具体来说,就是将全局坐标系下的期望速度转换成局部坐标系下各的实际转速。这一过程涉及到线性和角速度矢量之间的映射关系[^1]。 #### 底盘布局与速度分配 考虑到实际应用中的机械结构设计,假设机器人具有标准矩形构型,则可以通过如下方式来确定单个全向所需承担的任务: - **X轴方向**:负责前后直线行驶; - **Y轴方向**:处理横向位移需求; - **Z轴(绕竖直轴)**:提供原地自旋能力; 这些基本动作由不同位置安装的小滚珠或斜置胎共同完成,在理想情况下它们应该完全同步工作以达到最佳效果[^2]。 #### 数学表达式 设 \( V_x \),\( V_y \) 和 \( ω_z \) 分别代表沿 X 轴、Y 轴以及围绕 Z 轴的线性速度和角速度。那么针对每一个特定编号 i 的全向 (i ∈ {1, 2, 3, 4}) 所需施加给定驱动装置的具体指令可表示为: \[ v_i = R * (\alpha_{ix}V_x + α_{iy}V_y + β_iω_z )\] 其中, - \(R\) 是半径, - \(α_{ix}\), \(α_{iy}\) 表示该相对于车身中心的位置系数, - \(β_i\) 则取决于子本身的倾斜角度设置[^3]。 此公式允许我们根据不同类型的输入命令调整各个电机的工作状态,进而达成所希望的整体行为表现。 ```python def calculate_wheel_speed(Vx, Vy, omega_z, wheel_positions, tilt_angles, radius=0.1): """ 计算并返回全向的速度 参数: Vx : float - 沿X轴前进速度(m/s) Vy : float - 沿Y轴侧移速度(m/s) omega_z : float - 绕Z轴旋转速率(rad/s) wheel_positions : list of tuples - [(ax, ay)] 形式的列表,包含每一相对车体中心的距离参数 tilt_angles : list of floats - 对应于每一组子的角度偏移值(单位:radian) radius : float - 默认设定为0.1米作为所有子的一致直径 返回: tuple - 包含按顺序排列后的子各自应有的瞬时线速度(v1,v2,v3,v4)(m/s) """ speeds = [] for pos, angle in zip(wheel_positions, tilt_angles): alpha_x, alpha_y = pos beta = angle speed = radius * ((alpha_x*Vx)+(alpha_y*Vy)+beta*omega_z) speeds.append(speed) return tuple(speeds) # 示例调用 wheel_pos = [(-L/2,-W/2),( L/2,-W/2), (-L/2,W/2 ), (+L/2,+W/2)] tilt_angels=[pi/4]*4 # 假设所有的都呈45°布置 print(calculate_wheel_speed(.5,.2,radians(30),wheel_pos ,tilt_angels)) ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值