生成一个轮速脉冲虽车辆走过距离变化的数据

该代码实现了一个模拟车辆轮速脉冲变化的数据生成器,通过计算每个脉冲对应的车轮行走距离,并结合给定的速度函数,计算并输出在特定时间段内各轮胎的脉冲数和累计行驶距离。程序以20毫秒为一帧,持续25秒,车速由正弦函数表示,遵循速度函数的积分来更新距离。
摘要由CSDN通过智能技术生成

/*生成一个轮速脉冲虽车辆走过距离变化的数据*/
#include<stdio.h>
#include<math.h>
#define   r_d  0.023169//每一个脉冲车轮走的距离单位:m
int main(void)
{
    int fl = 123, fr = 456, rl = 0, rr = 1022; //起始四个轮胎的脉冲数
    int fl_count, fr_count, rl_count, rr_count;
    //int fl_count_m, fr_count_m, rl_count_m, rr_count_m;
    int i = 0,k, j = 0;
    
    double speed;//车速kph
    double speed_ms;//车速m/s
    double distance=0.0,distance_counter, distance_1=0.0,distance_m=0.0;//距离
    float t = 0;//时间

    speed = 10 * sin(2 * 3.14159 / 50 * t);//定义已速度函数
    printf("%f\n", r_d);

    for (i = 1; i < 25 / 0.02; i++)//每一帧按20ms,时间按25s
    {
        if (distance - distance_1 < r_d)//判断走的距离是否可以过几个轮速脉冲
            distance_1 = distance_m;
        else
        {
            k = floor((distance - distance_1) / r_d);
            j = j + floor((distance - distance_1)/r_d);//计算走过的脉冲数
            distance_m = j * r_d;//重新定义当前脉冲变化时刻对应的距离
            distance_1 = distance_m;//赋给判断距离
            if (fl + k > 1022)//轮速循环计数按[0,1022]
                fl = fl + k -1023;//大于1022重新计数
            else
                fl=fl+ k;
            if (fr + k > 1022)
                fr = fr + k - 1023;
            else
                fr = fr + k;
            if (rr + k > 1022)
                rr = rr + k - 1023;
            else
                rr = rr + k;
            if (rl + k > 1022)
                rl = rl + k - 1023;
            else
                rl = rl + k;
        }
        printf("%f     %f     %d       %d      %d     %d      %d\n ", i * 0.02, distance, fr, fl,rr,rl, j);//显示结果

        distance = 20 * 50 / 2 / 3.14159 - 20 * 50 / 2 / 3.14159 * cos(2 * 3.14159 / 50 * i*0.02);  //更新距离,按车速函数的积分来进行求解。  
    }
    
    return 0;
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值