无一可期 2023-11-14 16:35 采纳率: 0%
浏览 37
已结题

“Twincat3外部位置发生器”实时跟踪路径规划

具体问题为:使用相机对目标进行识别并反馈位置偏差至下位机,下位机控制电机使偏差为0,最终实现执行器实时跟踪。
目前遇到的困难有:我使用的twincat3功能块为外部位置发生器进行实时跟踪,但是由于此功能块中的setpos要为每周期(2ms)走到的位置,所以需要对反馈过来的位置进行路径规划,速度规划,加速度规划(即规划每2ms的位移,速度,加速度),否则电机要不就是不动,且容易报错,要不就只能以恒定速度走(但是非常非常慢)。
目前找了一些路径规划的算法,比如贝赛尔、B样条,但是这个问题的难点就在于控制点无规则且无终点,控制点是会一直给的,所以把后面的点加入规划的时候会影响之前几个控制点规划出来的曲线。
想请问各位该如何处理这个问题!项目急需!谢谢大家了!

  • 写回答

18条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-11-14 16:35
    关注
    获得0.45元问题酬金

    引自强大而免费的微信小程序:皆我百晓生

    在实时跟踪路径规划的问题中,您想要使用Twincat3的外部位置发生器功能块进行控制。然而,由于该功能块要求每个周期(2ms)设置位置,您需要对从相机反馈的位置进行路径规划、速度规划和加速度规划,以便每个周期都能规划出正确的位移、速度和加速度。考虑到控制点是无规则且无终点的,您需要找到一种方法来处理后续控制点对先前控制点规划曲线的影响。

    下面我将给出一个详细的解决方案,以帮助您解决这个问题。

    步骤1:获取相机反馈的位置偏差
    首先,您需要通过相机来获取目标的位置偏差。这可以通过图像处理算法实现,例如目标识别和特征匹配。

    步骤2:路径规划
    对于路径规划,您可以考虑使用Bezier曲线或B样条。这两种方法都可以对控制点进行插值,生成平滑的曲线。不过,由于控制点是无规则的,并且新的控制点会对先前的曲线产生影响,因此您可能需要采用一种动态规划的方法来处理这个问题。

    下面我将讲解一种基于动态规划的路径规划算法,来解决这个问题。

    步骤2.1:初始化
    首先,在路径规划的开始,您需要做一些初始化工作。这包括设置起点和终点,初始化速度和加速度等。您可以根据具体情况进行设置。

    步骤2.2:动态规划
    接下来,我们使用动态规划来规划路径。我们将问题划分为小的子问题,从而逐步构建出整个路径。

    首先,我们需要将每个周期分为若干个子周期,例如将2ms周期划分为10个子周期。然后,我们对每个子周期进行路径规划。

    对于每个子周期,我们通过以下步骤来规划路径:

    1. 计算当前子周期内的目标位置偏差。例如,计算相机反馈位置偏差在当前子周期内的平均值。

    2. 根据当前子周期内的目标位置偏差,使用Bezier曲线或B样条来生成子周期内的路径。这可以通过插值控制点得到。

    3. 根据生成的路径,计算出每个子周期内的位移、速度和加速度,使得电机在该周期内能够实时跟踪路径。这可以通过计算路径的导数得到。

    4. 将生成的路径信息(位移、速度和加速度)反馈给下位机,以控制电机的运动。

    5. 重复上述步骤,直到完成整个路径的规划。

    步骤3:实时跟踪
    在路径规划完成后,下位机可以根据接收到的路径信息实时跟踪路径。下位机应该根据路径信息来控制电机的运动,使得电机的位置偏差为0。

    这就是解决您问题的一个可能的解决方案。希望这对您有所帮助!如果您需要更详细的代码实现或其他帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 请详细说明问题背景 12月14日
  • 系统已结题 11月22日
  • 创建了问题 11月14日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价