阿里云网站开发,网站接入服务提供商,沁水网站建设,wordpress 图片库本博客概述了为维护开发的AI驱动增强现实#xff08;AR#xff09;知识检索系统的开发过程#xff0c;该系统集成了Unity用于AR、Python服务器用于后端处理#xff0c;以及ChatGPT用于自然语言处理。该系统允许维护工人通过AR设备#xff08;如HoloLens 2#xff09;查询…本博客概述了为维护开发的AI驱动增强现实AR知识检索系统的开发过程该系统集成了Unity用于AR、Python服务器用于后端处理以及ChatGPT用于自然语言处理。该系统允许维护工人通过AR设备如HoloLens 2查询特定任务的知识例如故障排除步骤并以全息图形式显示上下文感知的响应。
Unity账户注册
中文账户注册比较困难。它需要额外的验证码验证步骤有时即使验证成功也不会重定向。如果可能的话建议使用Google账户注册美国账户体验会更加流畅。
Unity AR界面设置
Windows设置
安装Unity Hub 从unity.com下载。安装Unity Hub并打开。 安装Unity编辑器 在Unity Hub中点击Installs Add。选择2021.3 LTS或更高版本。添加模块**Universal Windows Platform (UWP)**用于HoloLensAndroid Build SupportiOS Build Support。 安装工具 Visual Studio 2022从visualstudio.microsoft.com下载。包含UWP和Unity工作负载。HoloLens模拟器通过Visual Studio Installer安装可选。Git从git-scm.com下载。 项目设置 在Unity Hub中创建新的3D项目。通过Package Manager安装包 Mixed Reality Toolkit (MRTK)添加Git URL com.microsoft.mixedreality.toolkit.unity。TextMeshPro启用内置包。AR Foundation用于移动AR可选。 在Build Settings中选择UWP将Architecture设置为ARM64用于HoloLens。
macOS设置
安装Unity Hub 从unity.com下载macOS版本。安装并打开Unity Hub。 安装Unity编辑器 通过Unity Hub添加2021.3 LTS。包含iOS Build SupportAndroid Build SupportUWP最终构建需要Windows。 安装工具 Xcode从Mac App Store下载约15GB。Android Studio从developer.android.com下载。Visual Studio for Mac从visualstudio.microsoft.com下载。Git通过Homebrew安装安装Homebrew后运行brew install git。 项目设置 创建3D项目。如上所述安装MRTK、TextMeshPro和AR Foundation。在macOS上为HoloLens开发但传输到Windows进行UWP构建。
Unity场景和脚本 场景设置 通过Mixed Reality Toolkit Add to Scene and Configure添加MRTK。使用HoloLens 2配置文件启用Spatial Awareness和Input System。添加World Space Canvas包含用于AI响应的TextMeshProUGUI。为3D模型叠加创建空的GameObject。向画布添加TMP_InputField用于文本输入。在输入字段旁边添加Button用于提交查询。 语音输入脚本VoiceQuery.cs using UnityEngine;
using Microsoft.MixedReality.Toolkit.Input;public class VoiceQuery : MonoBehaviour
{public BackendConnector backend;public void OnSpeechKeywordRecognized(SpeechEventData eventData){backend.SendQuery(eventData.Command.Keyword, Pump XYZ); // 模拟上下文}
}文本输入脚本TextQuery.cs using UnityEngine;
using TMPro;
using UnityEngine.UI;public class TextQuery : MonoBehaviour
{public BackendConnector backend;public TMP_InputField inputField;public Button submitButton;public string context Pump XYZ; // 模拟上下文private void Start(){// 为按钮点击添加监听器submitButton.onClick.AddListener(SubmitQuery);// 为回车键添加监听器inputField.onSubmit.AddListener(_ SubmitQuery());}private void SubmitQuery(){if (!string.IsNullOrEmpty(inputField.text)){backend.SendQuery(inputField.text, context);inputField.text ; // 发送后清除输入}}private void OnDestroy(){// 清理监听器submitButton.onClick.RemoveListener(SubmitQuery);inputField.onSubmit.RemoveListener(_ SubmitQuery());}
}AR显示脚本ARDisplay.cs using UnityEngine;
using TMPro;public class ARDisplay : MonoBehaviour
{public TextMeshProUGUI responseText;public GameObject modelPrefab;public void UpdateDisplay(string aiResponse, Vector3 position){responseText.text aiResponse;Instantiate(modelPrefab, position, Quaternion.identity);}
}后端连接器脚本BackendConnector.cs using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
using TMPro;public class BackendConnector : MonoBehaviour
{public TextMeshProUGUI responseText;private string apiEndpoint http://your-backend-url/api/query;public void SendQuery(string query, string context){StartCoroutine(SendQueryCoroutine(query, context));}private IEnumerator SendQueryCoroutine(string query, string context){// 创建请求体var requestBody new{query query,context context};string jsonBody JsonUtility.ToJson(requestBody);// 创建请求using (UnityWebRequest request new UnityWebRequest(apiEndpoint, POST)){byte[] bodyRaw System.Text.Encoding.UTF8.GetBytes(jsonBody);request.uploadHandler new UploadHandlerRaw(bodyRaw);request.downloadHandler new DownloadHandlerBuffer();request.SetRequestHeader(Content-Type, application/json);// 发送请求yield return request.SendWebRequest();if (request.result UnityWebRequest.Result.Success){// 解析并显示响应var response JsonUtility.FromJsonQueryResponse(request.downloadHandler.text);responseText.text response.answer;}else{responseText.text 错误: request.error;}}}
}[System.Serializable]
public class QueryResponse
{public string answer;
}场景层次结构设置
- MixedRealitySceneContent|- MRTK|- WorldSpaceCanvas|- ResponseText (TextMeshProUGUI)|- InputPanel|- QueryInputField (TMP_InputField)|- SubmitButton (Button)|- ModelContainer (Empty GameObject)组件配置 TextQuery组件 附加到InputPanel GameObject分配BackendConnector引用分配TMP_InputField引用分配SubmitButton引用 VoiceQuery组件 附加到MixedRealitySceneContent分配BackendConnector引用 BackendConnector组件 附加到专用的GameObject分配ResponseText引用配置apiEndpoint URL
此设置为查询AI系统提供了语音和文本输入选项具有适当的错误处理和响应显示。
后端Python服务器
Python服务器处理来自Unity的查询与ChatGPT接口并返回响应。
设置
安装Python 从python.org下载Python 3.9。确保安装了pip。 安装依赖项pip install flask openai服务器代码server.py
from flask import Flask, request, jsonify
import openaiapp Flask(__name__)
openai.api_key your-openai-api-key# 模拟知识库
knowledge_base {Pump XYZ: {E101: 检查阀门对齐并润滑轴承。}
}app.route(/api/query, methods[POST])
def handle_query():data request.jsonquery data.get(query, )context data.get(context, )# 首先检查知识库response knowledge_base.get(context, {}).get(query, None)if not response:# 回退到ChatGPTtry:chat_response openai.Completion.create(modelgpt-4,promptf为{context}提供维护解决方案{query},max_tokens100)response chat_response.choices[0].text.strip()except Exception as e:response f错误{str(e)}return jsonify(response)if __name__ __main__:app.run(host0.0.0.0, port5000)运行服务器python server.py确保服务器在localhost:5000或您的网络IP上运行以便Unity访问。
ChatGPT集成
Python服务器使用OpenAI的GPT-4 API进行自然语言处理。
设置
获取API密钥 在openai.com注册创建API密钥。将密钥添加到server.pyopenai.api_key。 查询逻辑 服务器首先检查本地知识库例如类似JSON的字典。如果没有匹配项它会使用上下文例如“Pump XYZ”和查询例如“E101”查询GPT-4。示例提示“为Pump XYZ提供维护解决方案E101”。 响应处理 GPT-4返回简洁的响应例如“检查阀门对齐并润滑轴承”。服务器格式化为JSON并发送到Unity。
注意事项
成本GPT-4 API使用会产生费用通过OpenAI仪表板监控。替代方案使用开源模型例如Hugging Face进行免费测试。延迟通过在知识库中缓存频繁查询来优化。
测试系统
运行Python服务器 在localhost:5000上启动server.py。 测试Unity 在Unity编辑器中使用MRTK输入模拟触发语音查询。验证AR显示随服务器响应更新。为HoloLensWindows或iOS/AndroidmacOS构建。 可用性 使用示例查询进行测试例如“修复Pump XYZ E101”。检查响应准确性和AR叠加定位。
挑战和解决方案
延迟使用边缘计算或本地模型获得更快的AI响应。HoloLens构建macOS需要Windows进行UWP使用VM或双启动。知识库预填充综合手册以减少API调用。
参考文献
Xu, F., et al. (2024). Augmented reality for maintenance tasks with ChatGPT for automated text-to-action. Journal of Construction Engineering and Management.Nagy, A., et al. (2023). AI-powered interfaces for extended reality to support remote maintenance. IEEE/ACM CCGridW.
该系统结合了Unity的AR功能、Python后端和ChatGPT的AI以增强工业维护为知识检索提供了可扩展的原型。