疫情期间,居家隔离,时间不多,只能简单的就S速度曲线的来说,建模,写代码,然后编译,再用MATLAB来查看位置曲线、速度曲线和加速度曲线,以及加加速度曲线。
确当S型速度曲线的速度、加速度和位移公式应该从加加速度开始,这里设定在整个的运动过程中,加加速度aa都是固定值(在不同的时间段只有正负之分,但是绝对值是相同的)。
(论文:CNC系统S型曲线加减速算法的设计与实现)
上图为S型加减速的各种曲线,第一行为位移图与时间的关系,第二行为速度与时间的关系,第三行为加速度与时间的关系,第四行为加加速度的关系,时间段分为7个:t1(加加速段),t2(匀加速段),t3(加减速段),t4(匀速段),t5(减加速度段),t6(匀减速段),t7(减减速段)。
要使用加加速度的时间积分来求加速度,使用加速度的时间积分来求速度,使用速度的时间积分来求位置,其公式在程序中实现,大家可以自行推演。
鉴于S型加速度的复杂性,先只设定以上七个 时间段的时间段均相等。(在程序中的设定时间为10s)
关于具体的公式可以参看我的实现来具体的进行推演,因为我的都是在草稿纸上进行的,所以不在本文中具体说明。
实现代码如下:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <math.h>
int _tmain(int argc, _TCHAR* argv[])
{
AllocConsole();
ofstream out(".\\test.txt",ios_base::ate);
double temp_time=0;
int times=0;
double temp_aa; //临时加加速度
double aa=100; //加加速度
double a=0; //加速度
double temp_vel=0;
double temp_pos=0;
//每段只有10S,每10s分1000段。
while (TRUE)
{
if(temp_time>=0&&temp_time<=10) //加加速度段
{
temp_aa=aa;
a=aa

本文详细介绍了一种基于S型曲线的加减速算法设计与实现,该算法在疫情期间居家隔离时开发,通过设定固定的加加速度值,在不同时间段内实现了速度、加速度和位移的精确控制。文章提供了算法的数学模型、C++代码实现及MATLAB分析结果,展示了位置、速度、加速度和加加速度随时间变化的曲线。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



