- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一款游戏,在游戏循环的每次更新中,AI 都会运行。在此更新期间,我有机会转动 AI 控制的实体和/或使其朝它所面对的方向加速。我希望它到达最终位置(在合理范围内)并且在该位置具有特定的速度和方向(同样不需要精确)也就是说,给定电流:
选择一个立即:
使这些最小化:
可以在游戏循环的每次迭代中重新计算参数。一张图片说 1000 个单词,所以例如给定蓝色家伙的当前状态,在尽可能短的时间内达到大约红色家伙的状态(箭头是速度):
假设 Δt 的 α 和 τ 为常数(对于理想解,Δt → 0)并将位置/速度拆分为多个分量,这给出(我认为,我的数学可能不对):
(编辑:最后一个应该是 θ = θ0 + τΔt)
那么,我如何选择直接的 α 和 τ(请记住,游戏循环的每次迭代都会重新计算这些值,通常 > 100 fps)?我能想到的最简单、最幼稚的方法是:
它可能快速且简单,但是,这有一些明显的问题:
请注意,虽然算法可以(并且可能应该)在迭代之间保存状态,但是 Pf、Vf 和 θf 可以改变每次迭代(即如果实体试图跟随/将自己定位在另一个附近),因此算法需要能够适应不断变化的条件。
有什么想法吗?我缺少一个简单的解决方案吗?
谢谢,罗伯特
最佳答案
听起来你想要一个 PD Controller 。基本上从当前位置到目标画一条线。然后以弧度为单位取线方向,这就是你的目标弧度。当前弧度误差是当前标题 - 行标题。就叫诶(航向错误)然后你说当前转弯率将是 KpEh+d/dt EhKd。每一步都换行。
那是标题
加速度是“加速直到我达到最大速度,否则我将无法及时停止”。你扔了一堆积分,所以我相信你会没问题的。
如果您想知道,是的,我之前已经解决了这个问题,PD Controller 可以工作。不要理会 PID,在这种情况下不需要它。 matlab中的原型(prototype)。我遗漏了一件事,你需要有一个触发器,比如“我现在真的很接近了”所以我应该开始转向进入目标。我刚刚阅读了您关于“仅在我们前进的方向上加速”的说明。这改变了一些但不会太多。这意味着需要“从后面”接近目标,这意味着线目标必须在真实目标的后面,当你接近后面的目标时,沿着一条新线引导你到达真实目标。您还需要遵循这些行,而不是仅仅选择一个标题并尝试坚持下去。所以不要每帧都更新线,只要说误差等于与当前目标线的有符号距离。 PD 会给你一个转弯率,加速度是微不足道的,所以你已经准备好了。您需要手动调整 Kd 和 Kp,这就是我首先说 matlab 的原因。 ( Octave 也不错)
祝你好运,希望这能为你指明正确的方向 ;)
双关语。
编辑:我刚读到...很多东西,写得很快。这是针对您的问题的解决方案,如果您想将此解决方案作为解决问题的基础,只需谷歌跟踪此答案即可。
关于algorithm - 人工智能 : selecting immediate acceleration/rotation to get to a final point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2219484/
上一篇:《人工智能模型训练中的数据之美——探索TFRecord》 序言:自然语言处理(NLP)是人工智能中的一种技术,专注于理解基于人类语言的内容。它包含了编程技术,用于创建可以理解语言、分类内
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
这一年来,AI领域层出不穷的技术和应用,真的有点让人疲于奔命。其中AIGC领域的diffusion model 和 NLP领域的 ChatGBT 引领了这一轮风潮。AI取代越来越多脑力工作者的趋势已
人工智能,有多能? "AI"二字,相信大家并不陌生。但是,全力发展人工智能,真的合适吗? 六年前,小米发布了小爱同学。这大概是离大家最近的人工智能
我正在使用 Flash 中的 Box2D 实现一个简单的 Volley 游戏。我需要为 CPU 播放器实现一些 AI。我们就叫他 jack 吧。因此,Jack 需要预测球被人类球员 John 击中后会
我正在尝试查找有关尝试创建可以理解英语单词、语法和上下文的基本 AI 工具的信息(希望是 C# 源代码)。 想法是通过使用尽可能多的书面文档来训练 AI,然后基于这些文档,让 AI 用对人类有意义的正
我正在编写一个个人项目,该项目旨在拥有一个可以进化的类或对象,我们称之为“机器人”。机器人需要能够在给定命令的情况下创建类、字段和函数,并能够将逻辑写入这些对象以进行操作(但通常都是这样做的)。 为了
我正在做一个项目,其中有一系列要拍卖的卡片;出价最高的人将赢得拍卖中值(value)最高的卡片。 当 AI 玩家轮到时,他需要评估数组并确定他的出价估值。 忽略与验证或规则有关的任何事情;因为我已经对
假设我有 20 名玩家 [姓名 A .. T] 参加锦标赛。锦标赛的规则规定每个玩家与其他玩家对战两次 [A 对 B、B 对 A、A 对 C .. 等等]。有 20 名玩家,总共有 380 场比赛。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在开发一个应该像异或运算符一样工作的程序。 为了调整权重,我使用反向传播。 我还包括了深度学习(它几乎按其应有的方式工作,这里同样的斗争)但这不应该是出于重要性。 (当有像 这样的 if 子句时
是否有围绕 AI 的标准规则引擎/算法来预测用户对特定类型产品(如衣服)的品味。我知道这是所有电子商务网站都会为之扼杀的一件事。但我正在寻找在那里定义的理论模式,这将有助于以更好的方式做出预测,即使不
所以这是一项大学作业,除了 AI 不知道如何“取胜”之外,一切都已经完成,而且它在开始时的 Action 并不像我希望的那样随机走到顶角,然后往下走。该任务只需要 AI 的两条规则,即它可以“获胜”或
我认为 Online-Depth-Search Algorithm 存在一些问题,因为我没有看到任何递归调用。 这是来自 peter Norvig 的代码。 如果正确或错误,请帮助我理解这一点。 fu
这是 C 语言中的玩家与 AI 井字棋游戏。如果 AI 滚到一个被占用的位置,我该如何让它再次滚到一个未被占用的位置? char boardchar[3][3] = { {'1', '2', '3'}
我正在尝试为我的 connect 4 java 程序设计一个 AI,需要有不同级别的难度,我已经为简单级别创建了一个算法,但现在我需要另一个针对困难级别的算法。 有人可以推荐或给我一些伪代码来实现人工
我一直在尝试一些框架和算法,但我找不到一个可以做我想做的事情——根据值对数据列进行分类。 我尝试使用贝叶斯算法,但它不是很精确,因为我不能期望正在搜索的数据在训练集中 - 但我可以期望模式在训练中。
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我有两个类,人类和怪物。 两者都有一个名为 MoveBehavior 的属性 Human有HumanMoveBehavior,Monster有MonsterMoveBehavior 我希望 Human
我是一名优秀的程序员,十分优秀!