振动信号分析----振动加速度信号acc两次积分成位移信号pos

1. 对于工业机器人而言,由于柔性的存在,在某个路径和速度下,会发生共振,此时可能会在TCP端产生肉眼可见的抖动。为了量化工业机器人TCP端的抖动,一般是在TCP端通过加速度计或者陀螺仪来采集机器人的加速度信号。这里主要介绍用双重积分的方法来处理加速度信号。这里介绍一个机器人走矩形路径时的加速度信号处理方法。2. 加速度信号双重积分的步骤:1) 对于采集到的加速度信号,创建一个参考信号,去除矩形路径换向时产生的高频信号。有效信号=原始信号-参考信号2) 运用高通滤波去除路径噪声,运用低通滤波去除
摘要由CSDN通过智能技术生成

1. 对于工业机器人而言,由于柔性的存在,在某个路径和速度下,会发生共振,此时可能会在TCP端产生肉眼可见的抖动。为了量化工业机器人TCP端的抖动,一般是在TCP端通过加速度计或者陀螺仪来采集机器人的加速度信号。这里主要介绍用双重积分的方法来处理加速度信号。这里介绍一个机器人走矩形路径时的加速度信号处理方法。

2. 加速度信号双重积分的步骤:

1) 对于采集到的加速度信号,创建一个参考信号,去除矩形路径换向时产生的高频信号。有效信号=原始信号-参考信号

2) 运用高通滤波去除路径噪声,运用低通滤波去除噪声。

3) 将滤波后的加速度信号积分成速度信号

4) 将速度信号积分成位置信号,运用高通滤波去除漂移。

5)将三维的位置信号进行矢量求和。

3. 举例说明:

a) 原始加速度信号

创建参考信号(主要是去除换向信号)

有效加速度信号=原始信号-参考信号

b) 使用高通滤波和低通滤波分别去除路径漂移和噪声信号

  • 7
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是基于S-curve算法的步进电机控制的C语言实现: ```c #include <stdio.h> #define MAX_ACC 500 /* 最大加速度 */ #define MAX_VEL 1000 /* 最大速度 */ #define MAX_POS 1000 /* 最大位置 */ #define SAMPLING_TIME 10 /* 采样时间 */ /* S-curve加速度控制函数 */ double scurve_acceleration(double t, double acc, double vel) { double a = acc * t; double b = vel * t * t / 2; double c = acc * vel * vel / (2 * acc + vel); if (t <= vel / acc) return a; else if (t <= (acc * vel + vel * vel) / (2 * acc)) return c - a + acc * (t - vel / acc); else if (t <= (vel + vel * vel / (2 * acc))) return c + a - acc * (t - (vel + vel * vel / (2 * acc))); else return -a; } /* 步进电机控制函数 */ void step_motor_control(double pos, double vel, double acc) { double t = 0; double current_pos = 0, current_vel = 0; double current_acc = 0, current_jerk = 0; while (current_pos < pos) { /* 计算加速度和速度 */ current_acc = scurve_acceleration(t, acc, vel); current_vel += current_acc * SAMPLING_TIME / 1000; if (current_vel > vel) current_vel = vel; /* 计算位移 */ current_pos += current_vel * SAMPLING_TIME / 1000; if (current_pos > pos) current_pos = pos; /* 输出当前状态 */ printf("time:%f, pos:%f, vel:%f, acc:%f, jerk:%f\n", t, current_pos, current_vel, current_acc, current_jerk); /* 更新时间 */ t += SAMPLING_TIME; } } int main() { /* 测试步进电机控制函数 */ step_motor_control(MAX_POS, MAX_VEL, MAX_ACC); return 0; } ``` 这段代码实现了基于S-curve算法的步进电机控制。其中,scurve_acceleration函数用于计算S-curve的加速度,step_motor_control函数用于控制步进电机的运动。在每个采样时间内,计算当前的加速度和速度,并根据当前的速度计算位移。最后,输出当前的状态并更新时间。通过调整MAX_ACC、MAX_VEL和MAX_POS等参数,可以实现不同的步进电机控制需求。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值