【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--路径跟随

C# 在人工智能领域的优势与实践案例分析 尽管 Python 以其庞大的机器学习生态系统成为 AI 开发的首选语言,但 C# 作为一门强类型、面向对象的编程语言,凭借其在企业级应用开发中的广泛应用,逐渐展现出在人工智能领域的独特优势。C# 在人工智能领域的优势不仅体现在其强大的性能和开发工具链上,还在于它能够与多种流行的机器学习框架和工具进行深度集成。C# 的优势在于其广泛的企业应用场景、优异的性能和良好的开发生态。如果你是一名 C# 开发者,并希望在人工智能项目中发挥所长,那么掌握 C# 在 AI 中的应用将为你打开新的发展机遇。 阅读详情

增加Steering的派生类

----SteeringForFollowPath类    路径跟随行为类

路径跟随行为类解读:

行为准备:

①记录全部路径点,统计路径点数。

②获取下一个路径点,并获取当前是几号路径点。(用来标志是否为终点)

准备是否到达目标点的条件:

①与路径点的距离小于某个值,判断为已经到达路点  arriveDistance   sqrArriveDistance

 

通过判断是否到达进行切换下一个路径点

通过判断是否是否到达最终点来判断是否执行靠近行为或抵达行为

 

产生疑问:

Vector3.magnitude  与 Vector3.sqrMagnitude 的运算速度问题

在官方文档说用SqrMagnitude比较速度会比较快.

可是我在Unity中测试这两个方法,花费时间还是相同的。

(没空测试,这里留白,一切还是按官方文档的)

测试代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
using System;

public class TestSqr : MonoBehaviour {
    public Vector3 v3 = new Vector3(1, 2, 3);
	// Use this for initialization
	void Start () {
        Stopwatch sw = new Stopwatch();
        sw.Start();
        //for(int i = 0; i < 1000000000; i++)
        //{
        //    float sqr = v3.sqrMagnitude;
        //}
        sw.Stop();
        TimeSpan time2 = sw.Elapsed;
        print(time2);

        Stopwatch sw2 = new Stopwatch();
        sw2.Start();
        //for (int i = 0; i < 1000000000; i++)
        //{
        //    float v = v3.magnitude;
        //}
        sw2.Stop();
        TimeSpan time3 = sw.Elapsed;
        print(time3);
    }
}

 

案例代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SteeringForFollowPath : Steering {
    //节点数组来表示路径
    public GameObject[] waypoints;
    //目标点
    private Transform target;
    //当前路点
    private int currentNode;
    //与路点的距离小于这个值时,认为已经到达,可以向下一个路点触发
    private float arriveDistance;
    private float sqrArriveDistance;
    //路点的数量
    private int numberOfNodes;
    //操控力
    private Vector3 force;
    //预期速度
    private Vector3 desiredVelocity;
    private Vehicle m_vehicle;
    private float maxSpeed;
    private bool isPlanar;
    //当与目标小于这个距离时,开始减速
    public float slowDownDistance;


    // Use this for initialization
	void Start () {
        numberOfNodes = waypoints.Length;
        m_vehicle = GetComponent<Vehicle>();
        maxSpeed = m_vehicle.maxSpeed;
        isPlanar = m_vehicle.isPlanar;
        //设置当前路点为第0个路点
        currentNode = 0;
        //设置当前路点为目标点
        target = waypoints[currentNode].transform;
        arriveDistance = 1.0f;
        sqrArriveDistance = arriveDistance * arriveDistance;
	}
	
	public override Vector3 Force()
    {
        force = new Vector3(0, 0, 0);
        Vector3 dist = target.position - transform.position;
        if (isPlanar)
            dist.y = 0;
        //如果当前路点已经是最后一个路点了
        if (currentNode == numberOfNodes - 1)
        {
            //如果与当前路点的距离大于减速距离
            if (dist.magnitude > slowDownDistance)
            {
                //求出预期速度
                desiredVelocity = dist.normalized * maxSpeed;
                //计算操控向量
                force = desiredVelocity - m_vehicle.velocity;

            }
            else
            {
                //与当前路点距离小于减速距离,开始减速,计算操控向量
                desiredVelocity = dist - m_vehicle.velocity;
                force = desiredVelocity - m_vehicle.velocity;

            }
        }
        else
        {
            //不是最后一个路点
            if (dist.sqrMagnitude < sqrArriveDistance)
            {
                //如果与当前路点距离的平方小于到达距离的平方
                //可以开始靠近下一个路点,将下一个路点设置为目标点
                currentNode++;
                target = waypoints[currentNode].transform;
            }
            //计算预期速度和操控向量
            desiredVelocity = dist.normalized * maxSpeed;
            force = desiredVelocity - m_vehicle.velocity;
        }
        return force;
    }
}

 

参考书籍:《unity3d人工智能编程精粹》 王洪源等著

C#语言的人工智能 C#语言在人工智能的应用中展现了强大的能力和灵活性。随着技术的持续演进和工具的不断完善,C#将在人工智能领域发挥越来越重要的作用。开发者可以利用C#的丰富生态系统和强大的工具支持,快速构建和部署各种人工智能解决方案。未来,在C#的帮助下,我们将能够更高效、更智能地应对各种实际问题,推动科技与社会的发展。 阅读详情

相关推荐

人工智能 (AI) 基本概念 入门篇【C#】版

人工智能(Artificial Intelligence, AI)是指计算机系统能够执行通常需要人类智能的任务,如视觉识别、语音识别、决策和语言翻译等。AI的核心是通过算法和数据进行学习和推理,以实现智能行为。

Hellc007的博客 1192

C#开发学习人工智能的第一步

前言 作为一个软件开发者,我们除了要学会复制,黏贴,还要学会调用API和优秀的开源类库。 也许,有人说C#做不了人工智能,如果你相信了,那只能说明你的思想还是狭隘的。 做不了人工智能的不是C#这种语言,而是你,我这种普通的程序员。 做人工智能需要一定的学历背景,一定的数学基础和公司专项的资源供给;而这种机缘小之又小,你我既然是普通的程序员,就必然与此无缘。 但在人工智能如日中天...

weixin_30533797的博客 901

C#调用ML.NET(机器学习、人工智能预测)

我使用的VS2019版本,具体安装过程就不赘述了 这边我已经安装完了,就不演示了,安装过程可以自行。 后面我来展示下如何引用C#ML.NET 1创建项目 首先创建C#控制台项目 点击下一步就完成了,初始项目的创建 这个是建立完之后的初始项目 2数据准备 在使用ML.NET的时候需要准备好数据(数据可以从文件/数据库中获取) 我这边演示从文件中建立好,本次预测的销售额度 前期个人学习比较推荐使用EXCEL文件存入标本数据(需要转CSV文件)...

qq_21569035的博客 3452

Unity 物联网 智慧工厂 机械数字化 测试

XDreamer 机械模块 让美术设计人员快速构建机械虚拟仿真交互,真正的无代码开发工具

coke_326的博客 3572

C# 在人工智能项目中的工程化实践与挑战

通过本篇文章的介绍,希望读者能够全面理解 C# 在 AI 项目中的应用场景、实践经验与面临的挑战,帮助大家在未来的 AI 项目中取得更加出色的成果。在大规模的 AI 项目中,将 AI 模型集成到现有的企业系统中,或在多个系统之间进行数据流通、模型共享等,可能面临集成和部署的挑战。本文将从工程化的角度,深入探讨 C# 在人工智能项目中的实践经验、面临的挑战以及应对策略,帮助读者全面了解如何在 AI 项目的开发中使用 C#,以及在实际应用中可能遇到的难点和解决方案。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1759

C#版五子棋,人工智能

用c#编写的一个简单的五子棋程序.人工智能采用贪心算法和极大极小值算法。程序中的注释很详尽

【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--徘徊

增加Steering的派生类 ----SteeringForWander类    徘徊行为类 解读: ①初始化过程,通过半径确定圆周上的一个点。(案例中通过确定一个X=Y的点(x,y)). 通过圆心公式: 圆心为(0,0)半径为r 又因为X=Y 我们可以算出关系式      所以初始化点的坐标为  Vector3(,0,)     A) 案例生成随机点的公式,通过随机值以及...

Terrell21的博客 1359

Floyd算法在社交网络中的应用:如何找到六度人脉的最短路径?

本文探讨了Floyd算法在社交网络分析中的核心应用,特别是如何利用该算法高效计算任意两人之间的最短路径,从而量化“六度人脉”理论。文章通过构建微型社交网络模型,详细拆解了Floyd算法的动态规划原理与代码实现,并展示了如何从计算出的最短路径距离矩阵中挖掘节点中心性、识别社群等关键洞察,为社交推荐、影响力分析等场景提供技术支撑。

blockchain9miner的博客 1002

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用学习。 TensorFlow简单介绍 TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow的表现比第一代的DistBelief快了2倍。 TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用TensorFlow。任何基于梯度的机器学...

weixin_34253126的博客 939

阿里平头哥与华为芯片的比较

阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。

shao.bing的专栏 3972

用python将dycom .dcm格式图像转换为nifti .nii

因为发现目前搜索到的多数中文教程并不能正确将FMRI图像正确转换,例如很多用simpleITk的seriesreader的,所以写了一下自己正确转换的方法。因为FMRI是一个4D数据,有时间轴,所以用seriesreader读写出来的图像把时间轴维度给降维了。当然你用SPM12工具的dycom import也是能正确转换的,但是我还是喜欢python这样的,代码直接简单。

qq_41103479的博客 3609

人工智能 (AI) 进阶【C#】版

使用C#和ML.NET进行图像分类任务。这个示例将展示如何加载图像数据、构建和训练模型,以及进行预测。

Hellc007的博客 1059

高温环境下RS485通信故障分析与MOS管解决方案

RS485通信作为工业控制领域的基础总线技术,其可靠性直接影响系统稳定性。在高温等恶劣环境下,传统三极管开关电路会因温度特性导致通信故障。通过分析三极管Ube电压随温度变化的特性,揭示了电路失效的物理原理。相比之下,MOS管作为电压控制型器件,具有温度稳定性好、功耗低等优势,更适合工业环境应用。本文通过一个发动机舱内RS485通信故障的实际案例,详细对比了三极管与MOS管在高温环境下的性能差异,并给出了具体的电路改进方案。该案例对工业通信接口设计具有普遍参考价值,特别适用于需要应对高温、振动等挑战性环境的硬

weixin_42612405的博客 405

C#机器学习(1)-Azure AI(1)

Azure 认知服务是基于云的人工智能 (AI) 服务,可帮助开发人员在不具备直接的 AI 或数据科学技能知识的情况下将认知智能内置于应用程序中。可采用常用开发语言通过 REST API 和客户端库 SDK 使用此类服务。借助 Azure 认知服务,开发人员可以通过能够看、听、说和分析的认知解决方案,轻松将认知功能添加到他们的应用程序中。认知服务类别影像语音语言决策Azure OpenAI 服务使用基于云的计算机视觉 API,开发人员可以访问用于处理图像并返回信息的高级算法。

The research on computer technolog 2239

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

qq_73523062的博客 2087

MT6826SGT-STD-R绝对值编码器深度解析:精准控制+灵活编程

本文详细介绍MT品牌的高性能绝对值编码器——MT6826SGT-STD-R。:区别于传统增量式编码器,绝对值输出无需掉电归零,开机即获准确位置数据。的核心优势,结合应用场景与选型指南,为工程师提供一站式解决方案参考。MT6826SGT-STD-R是一款专为工业级精密控制设计的。该设备广泛应用于伺服系统、机器人关节校准、自动化产线等领域。:15bit分辨率实现细腻的位置反馈;:通过专用编写器可自定义多项关键参数;:优化电路设计,适应复杂电磁环境。

2501_93066786的博客 676

C# 进行AI工程开发-基础篇

大局观一直以来,官方口径都是尽量不要碰 CSharp 里的 unsafe 部分,以至于在大部分其它语言的程序员眼里,甚至 CSharp 程序员的眼里,CSharp 就是一个 java,做做 CRUD,捣鼓捣鼓局限于 windows 平台的 Winform 和 WPF 就行了。我觉得这种观念是不对的,东西做出来就是让人用的。准确看待一件事情,需要有一个大局观和整体观,而大局观和整体观,就避免不了去触...

weixin_68436326的博客 869

Python爬虫抓取学术期刊数据(Springer、Elsevier)

本文详细介绍了如何使用Python爬虫抓取学术期刊网站(如Springer、Elsevier)上的文章信息,并进行数据清洗和存储。我们使用了requestsSeleniumpandas等技术,通过模拟浏览器行为来绕过反爬虫机制,并将数据保存为Excel文件,方便后续分析。未来,我们可以通过加入更多的期刊网站数据源,扩展爬虫的功能,抓取更多的学术数据。同时,结合自然语言处理(NLP)技术,可以对抓取的文章进行自动化的摘要提取和主题分类,为学术研究提供更多的支持。

2201_76125261的博客 1487

C#编写简单的人工智能课程的实验-猴子摘香蕉

1.实验内容 用C#,编写完成了使用者分别输入猴子、香蕉、箱子所在的位置,输出完整的猴子摘香蕉的过程。 2.大致逻辑 首先由使用者输入猴子、箱子和香蕉所在的位置,首先判断猴子和箱子是否在同一位置,若不在同一位置,则让猴子移动到箱子所在的位置,改变状态结构体中猴子位置的值。 在第一步实现的情况下,判断猴子、箱子和香蕉是否在同一位置上,若是,则猴子爬箱子摘香蕉,若不是,则让猴子将箱子推到香蕉的位置,此时改变状态结构中猴子和箱子位置的值。 ...

weixin_42749482的博客 1611

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C#调用Python脚本训练并生成AI模型(以Paddle框架为例)

Windows开发时用到AI模型部署,使用C#调用Python脚本训练并生成AI模型

m0_46339652的博客 6928

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

c# python 人工智能_如何优雅地使用C#打开人工智能的世界

各位朋友们,你们的柳猫终于诈尸了!!!今天我们讲一下如何用C#写一个Tensor Flow应用。TensorFlow简单介绍TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow的表现比第一代的DistBelief快了2倍。TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用TensorFlow。任何基于梯度的机...

weixin_42350554的博客 649

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用学习

TensorFlow简单介绍 TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow的表现比第一代的DistBelief快了2倍。 TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用TensorFlow。任何基于梯度的机器学习算法都能够受益于TensorFlow的自动分化(auto-differentiat...

AI--小智 3952
上一篇: 【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--徘徊
下一篇: 【Unity】【C#】A*寻路算法-学习心得
Terrell21
博客等级 码龄9年 39粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值