递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 130|回复: 2
打印 上一主题 下一主题

[视窗] 求助python代码转火山

[复制链接]

6

主题

18

帖子

122

积分

注册会员

Rank: 2

积分
122
跳转到指定楼层
楼主
发表于 昨天 16:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
mport numpy as np
import numpy.typing as npt


class Predictor:
    ALPHA_VEL = 0.15
    ALPHA_ACC = 0.15

    def __init__(self):
        self.smoothed_vel = np.zeros(2)
        self.smoothed_acc = np.zeros(2)
        self.prev_vel = np.zeros(2)

    def predict(
        self,
        curr_e: npt.NDArray[np.float64],
        prev_e: npt.NDArray[np.float64],
        prev_m: npt.NDArray[np.float64],
        dt: float,
    ):
        vel_raw = ((curr_e - prev_e) + prev_m) / dt

        for axis in range(2):
            if np.sign(vel_raw[axis]) != np.sign(curr_e[axis]):
                vel_raw[axis] = 0.0

        self.prev_vel = self.smoothed_vel.copy()
        self.smoothed_vel = (
            self.ALPHA_VEL * vel_raw + (1 - self.ALPHA_VEL) * self.smoothed_vel
        )

        acc_raw = (self.smoothed_vel - self.prev_vel) / dt

        for axis in range(2):
            if np.sign(acc_raw[axis]) != np.sign(curr_e[axis]):
                acc_raw[axis] = 0.0

        self.smoothed_acc = (
            self.ALPHA_ACC * acc_raw + (1 - self.ALPHA_ACC) * self.smoothed_acc
        )

        pred_vel = self.smoothed_vel * dt
        pred_acc = 0.5 * self.smoothed_acc * (dt**2)

        return pred_vel + pred_acc

    def reset(self):
        self.smoothed_vel.fill(0)
        self.smoothed_acc.fill(0)
        self.prev_vel.fill(0)
用于物体轨迹追踪

回复

使用道具 举报

3

主题

56

帖子

614

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
614
沙发
发表于 昨天 18:21 | 只看该作者

这样的吗
回复

使用道具 举报

65

主题

298

帖子

1491

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1491
板凳
发表于 昨天 19:11 | 只看该作者
用卡尔曼预测
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-12-19 07:29 , Processed in 0.091478 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表