Unity HoloLens2 MRTK 空间锚点 基础教程

news2024/11/15 2:08:24

Unity HoloLens2 MRTK 空间锚点 基础教程

  • Unity HoloLens2 空间锚点
    • MRTK 空间锚点 准备
      • Unity 工程创建设置
      • 切换 UWP 平台
      • UWP 平台设置
    • 下载并安装混合现实功能工具
      • 导入混合现实工具包和 OpenXR 包
    • Unity 编辑器 UWP 设置
      • Unity 2019.4.40 设置
      • Unity 2022.3.0 设置
      • Unity 2022.3.0 解决不兼容设置
      • MRTK Certificate(证书添加)(如果不需要的话可以直接跳过)
    • Unity 编辑器 Windows 平台设置
    • MRTK Unity Package 包
    • Unity MRTK 空间锚点
      • MRTK 按钮控件添加
      • AnchorManagerHoloLens_ZH :空间锚点管理
      • 相关资源
      • 脚本搭载 及 效果
    • 协同调试打包
      • Unity编辑器打包
      • Visual Studio 打包
      • Visual Studio部署HoloLens找不到WindowsMobile SDK的解决方案
      • WindowsMobile SDK 安装
  • HoloLens2 安装
    • PC电脑设置
    • HoloLens IP查询
    • HoloLens Apps 安装

Unity HoloLens2 空间锚点

MRTK 提供跨平台的输入系统、基础组件以及用于空间交互的通用构建基块。 它可以帮助你加快面向 Microsoft HoloLens、Windows Mixed Reality 沉浸式 (VR) 头戴显示设备和许多其他 VR/AR 设备的应用程序开发。

MRTK 空间锚点 准备

Unity 工程创建设置

当然 新建一个工程是必要的
Unity 版本必须是 2019!!!
其他的不行 我试过了,不用在意下面的版本

在这里插入图片描述

切换 UWP 平台

平台切换:
点击File->Build Settings

请添加图片描述

点击切换为 UWP 平台

请添加图片描述

UWP 平台设置

Architecture:体系结构
Build Type:构建类型
Target SDK Version:目标SDK版本
Minimum Platform Version:最低平台版本
Visual Studio Version:Visual Studio版本
Build and Run on:构建和运行(如果不知道的话,最好选择Local Machine)
Build configuration:构建配置(选择 Release 或者 Master)
Device Portal Address:设备入口地址
Device Portal Username:设备Portal用户名
Device Portal Password:设备Portal密码

如果不知道怎怎么设置,按照我的设置就行

请添加图片描述

当然也有可能是这样的,Unity 版本不同也会有一点点变动。不过大体上都差不多

请添加图片描述

下载并安装混合现实功能工具

去官网或者下方链接下载 MixedRealityFeatureTool 工具
下载好之后双击运行

请添加图片描述

Mixed Reality Feature Tool : 官网下载

Mixed Reality Feature Tool : 本地下载

导入混合现实工具包和 OpenXR 包

1. 等待一会,然后点击 Start 运行

请添加图片描述

2. 点击“浏览”按钮,导航到刚才新建的项目,然后打开。

请添加图片描述

2. 点击“发现功能”按钮,检索可使用包体

请添加图片描述

3. 选择MRTK 包体中的 基础包 注意版本:2.5.3

请添加图片描述

在这里插入图片描述

4. 注意这个是Unity 2022 及以上版本才能 添加 OpenXR 插件,如果是 Unity 2019 请忽略
   当然Unity 2022 这个方法就不可以用了

请添加图片描述

在这里插入图片描述

5. 点击 Get Features 获取功能

在这里插入图片描述

6. 模块导入及批准

在这里插入图片描述

在这里插入图片描述

7. 退出 Mixed Reality Feature Tool 安装工具

请添加图片描述

Unity 编辑器 UWP 设置

1. 返回 Unity 点击 Yes 重启编辑器
   注意:确保所有 Unity 编辑器和 Visual Studio 实例都已关闭。
   不然会报错:请求的操作无法在使用用户映射区域打开的文件上执行。 

请添加图片描述

Unity 2019.4.40 设置

1. 直接点击应用就行

在这里插入图片描述

2. 在Priject Settings -> Player -> XR Settings 里面设置 跟我一样就行

在这里插入图片描述

Unity 2022.3.0 设置

1. 点击 OpenXR 插件

请添加图片描述

2. 设置 XR Pluh-in Management

请添加图片描述

3. 打开OpenXR 点击 Microsoft HoloLens 功能组

请添加图片描述

Unity 2022.3.0 解决不兼容设置

1. 点击 OpenXR 旁边的黄色警告三角形

请添加图片描述

2. 点击 Fix All 全部修复

请添加图片描述

3. 如果跟我一样,就证明需要添加 OpenXR 交互配置文件。如果不一样:不是你错了,就是我错了。
   单击 Edit “编辑”。 这会转到“项目设置”窗口中“OpenXR”插件的设置。

请添加图片描述

4. Depth Submission Mode(深度提交模式):选择16或者24都行,越大消耗越高,显示效果越好

请添加图片描述

5. 点击加号添加 交互配置文件
   Microsoft Motion Controller Profile:Microsoft 运动控制器配置文件
   
   Eye Gaze Interaction Profile:眼睛注视交互配置文件
   
   Microsoft Hand Interaction Profile:Microsoft 手势交互配置文件

请添加图片描述

6. 最后记得检查一下确保无误

请添加图片描述

MRTK Certificate(证书添加)(如果不需要的话可以直接跳过)

在Player->Publishing Settings->Certificate 看一下有没有,没有的话可以创建一个

请添加图片描述

点击 Create 证书创建

请添加图片描述

填写完毕之后 点击 Create 就会生成了

请添加图片描述

输入证书密码,要记住 因为后续 VS 打包会使用的到

请添加图片描述

添加完成之后是这样的

请添加图片描述

可以在Assets 根目录下看到

请添加图片描述

Unity 编辑器 Windows 平台设置

1. 打开OpenXR 然后跟着启用

在这里插入图片描述

2. 在 OpenXR 界面接换成 Windows 平台

在这里插入图片描述

3. 跟我选一样就行

在这里插入图片描述

4. 交互配置文件添加一下

在这里插入图片描述

5. 检查一下有没有冲突,有冲突就解决冲突,和 UWP 平台一样

在这里插入图片描述

6. 在project Setting->Player->Other Settings->Configuration 设置一下
   Scripting Backend:设置为IL2CPP
   Api Compatibility Level:设置为 .Net Standard 2.1

在这里插入图片描述

7. 设置后之后记得切换回 UWP 平台

在这里插入图片描述

MRTK Unity Package 包

解压之后 把这四个Package 包 都导入到Unity中
因为 Foundation 基础包我们已经导入过了,当然你想保持统一性也可以重新导入
注意下载的版本:MixedRealityToolkit-Unity 2.5.3(Unity 2019.4.40)

解释一下这五个包分别是什么,从上到下依次是:
	1. Examples:例子包
	2. Extensions:扩展包
	3. Foundation:基础包
	4. Test Utilities:测试工具包
	5. Tools:工具包

请添加图片描述

重复操作 即可

请添加图片描述

MixedRealityToolkit-Unity Github 下载: 自己挑选
MixedRealityToolkit-Unity 本地下载: 2.5.3
MixedRealityToolkit-Unity 本地下载: 2.8.3

Unity MRTK 空间锚点

实现功能:使用 WorldAnchorStore 实现现实空间固定物体和虚拟空间锚点物体重合
	     并在下次打开时进行锚点读取,实现锚点绑定

MRTK 按钮控件添加

1. 点击菜单栏 Mixed Reality -> Tookit -> Toolbox 打开 控件预制体

在这里插入图片描述

2. 选一个自己喜欢的的按钮控件,然后点击生成

在这里插入图片描述

3. 然后就会在场景中生成 该控件

在这里插入图片描述

4. 在 Hierarchy 窗口选择自己想要使用的按钮
5. 在 Button Config Helper 组件上添加想要想要响应的方法,和普通Button 按钮一样使用

在这里插入图片描述

AnchorManagerHoloLens_ZH :空间锚点管理

完整代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.WSA.Persistence;
using UnityEngine.XR.WSA;
using TMPro;
/// <summary>
/// 空间锚点管理
/// </summary>
public class AnchorManagerHoloLens_ZH : MonoBehaviour
{
    [Header("锚点生成预制体")]
    public GameObject _AnchorPrefab;
    [Header("打印信息")]
    public TextMeshPro _TextShow;
    [Header("锚点存储器")]
    private WorldAnchorStore _AnchorStore;
    [Header("锚点生成")]
    private WorldAnchor _Anchor;

    [Header("锚点载体")]
    GameObject _AnchorObject;

    private void Awake()
    {
        _TextShow = GameObject.Find("TextShow").GetComponent<TextMeshPro>();

        if (GameObject.Find("Anchor") == null)
        {
            // 尝试从WorldAnchorStore加载锚点
            _AnchorObject = Instantiate(_AnchorPrefab);
            _AnchorObject.name = "Anchor";
        }
    }

    private void Start()
    {
        // 异步加载WorldAnchorStore
        WorldAnchorStore.GetAsync(StoreLoaded);
    }

    /// <summary>
    /// WorldAnchorStore加载完成
    /// </summary>
    /// <param 存储="_Store"></param>
    private void StoreLoaded(WorldAnchorStore _Store)
    {
        // 存储WorldAnchorStore引用
        _AnchorStore = _Store;
        // 尝试加载已保存的锚点
        LoadAnchor();
    }

    /// <summary>
    /// 新建锚点
    /// </summary>
    /// <param 位置="_Position"></param>
    /// <param 旋转="_Rotation"></param>
    public void CreateAnchor(Vector3 _Position, Quaternion _Rotation)
    {
        // 实例化锚点对象
        GameObject _AnchorObject;
        if (GameObject.Find("Anchor") == null)
        {
            // 实例化锚点对象
            _AnchorObject = Instantiate(_AnchorPrefab, _Position, _Rotation);
            _Anchor = _AnchorObject.AddComponent<WorldAnchor>();
        }
        _AnchorObject = GameObject.Find("Anchor");

        // 获取或添加WorldAnchor组件
        if (_AnchorObject.GetComponent<WorldAnchor>() == null)
        {
            _AnchorObject.AddComponent<WorldAnchor>();
        }
        _Anchor = _AnchorObject.GetComponent<WorldAnchor>();

        //_TextShow.text += _Anchor.isLocated.ToString();
        // 如果锚点已定位,立即保存锚点
        if (_Anchor.isLocated)
        {
            SaveAnchor(_Anchor);
            print("锚点已定位");
            _TextShow.text += "anchor:锚点已定位\n";
        }
        else
        {
            // 等待锚点定位成功后再保存锚点
            _Anchor.OnTrackingChanged += Anchor_OnTrackingChanged;
        }
    }

    /// <summary>
    /// 锚点定位状态改变事件
    /// </summary>
    /// <param 自身存储="_Self"></param>
    /// <param 存储布尔="_Located"></param>
    private void Anchor_OnTrackingChanged(WorldAnchor _Self, bool _Located)
    {
        if (_Located)
        {
            SaveAnchor(_Self);
            _Self.OnTrackingChanged -= Anchor_OnTrackingChanged;
            Debug.Log("锚点已定位");
        }
        else
        {
            Debug.Log("锚点未能定位");
            _TextShow.text += "锚点未能定位\n";
        }
    }

    /// <summary>
    /// 保存锚点
    /// </summary>
    /// <param 空间锚点="_Anchor"></param>
    private void SaveAnchor(WorldAnchor _Anchor)
    {
        // 保存锚点到WorldAnchorStore
        if (_AnchorStore != null)
        {
            _AnchorStore.Save("保存锚点", _Anchor);
            Debug.Log("锚点已保存");
            _TextShow.text += "锚点已保存\n";
        }
        else
        {
            Debug.LogWarning("锚点存储未初始化");
            _TextShow.text += "锚点存储未初始化\n";
        }
    }

    /// <summary>
    /// 锚点加载
    /// </summary>
    private void LoadAnchor()
    {

        _Anchor = _AnchorStore.Load("保存锚点", _AnchorObject);

        if (_Anchor == null)
        {
            Debug.LogWarning("找不到锚点");
            _TextShow.text += "找不到锚点\n";
        }
        else
        {
            Debug.Log("锚点已加载");
            _TextShow.text += "锚点已加载\n";
        }
    }

    /// <summary>
    /// 锚点设置
    /// </summary>
    public void ButtonAnchor()
    {
        //锚点设置
        SetAnchorToObject(GameObject.Find("Anchor").transform.position, GameObject.Find("Anchor").transform.rotation);
        print("锚点设置");
    }

    /// <summary>
    /// 锚点位置复位
    /// </summary>
    public void ButtonAnchorPosition()
    {
        DeleteAnchor();

        //锚点位置设置
        if (GameObject.Find("Anchor").GetComponent<WorldAnchor>())
        {
            Destroy(GameObject.Find("Anchor").GetComponent<WorldAnchor>());
        }

        GameObject.Find("Anchor").transform.position = Camera.main.transform.forward * 1.5f;
        print("锚点位置设置");
    }

    /// <summary>
    /// 删除锚点
    /// </summary>
    public void DeleteAnchor()
    {
        if (_AnchorStore != null && _Anchor != null)
        {
            if (_AnchorStore.Delete("保存锚点"))
            {
                Destroy(_Anchor);
                _Anchor = null;
                Debug.Log("锚点已删除");
                _TextShow.text += "锚点已删除\n";
            }
            else
            {
                Debug.LogWarning("锚点删除失败");
                _TextShow.text += "锚点删除失败\n";
            }
        }
        else
        {
            Debug.LogWarning("锚点存储未初始化或锚点不存在");
            _TextShow.text += "锚点存储未初始化或锚点不存在\n";
        }
    }


    /// <summary>
    /// 手动设置锚点位置和旋转
    /// </summary>
    /// <param 位置="_Position"></param>
    /// <param 旋转="_Rotation"></param>
    public void SetAnchorToObject(Vector3 _Position, Quaternion _Rotation)
    {
        // 如果存在旧的锚点,先删除
        if (_Anchor != null)
        {
            Destroy(_Anchor);
        }

        // 创建新的锚点
        CreateAnchor(_Position, _Rotation);
    }
}

相关资源

Text Mesh Pro 中文显示 字体:Text Mesh 中文

Unity 通用字体:Unity 通用字体 合集

脚本搭载 及 效果

脚本搭载

请添加图片描述

实现效果:这是我在Unity 编辑器上跑的,已经实机验证大家放心使用

请添加图片描述

请添加图片描述

协同调试打包

Unity编辑器打包

点击 Mixed Reality -> Toolkit -> Utilities -> Build Window

在这里插入图片描述

先在 Unity Build Options 里面设置 Target Device 为 HoloLens

在这里插入图片描述

Build Directory:打包路径
基础设置完毕之后 直接 Build 就行了

在这里插入图片描述

完整路径:
Builds\WSAPlayer\AppPackages\HoloLens2_Test\HoloLens2_Test_1.0.2.0_ARM64_Test
HoloLens2_Test_1.0.2.0_ARM64_Test.Msix:是后续安装到 HoloLens2 需要使用的

请添加图片描述

Visual Studio 打包

打包成 Visual Studio 包体

在这里插入图片描述

打开打包文件夹  使用 Visual Studio 打开 .sln 文件

在这里插入图片描述

注意更改 解决方案配置

在这里插入图片描述

生成解决方案 快捷键 Crel+Shift+B

请添加图片描述

点击:项目 -> 发布 -> 创建应用程序包

请添加图片描述

接着点就行

请添加图片描述

没有证书就创建一个

请添加图片描述

输入账户、密码

在这里插入图片描述

创建应用就行

请添加图片描述

更改输出位置(改不改都行)
配置映射需要更改

在这里插入图片描述

在这里插入图片描述

然后这就是打包好的样子

在这里插入图片描述

Visual Studio部署HoloLens找不到WindowsMobile SDK的解决方案

如果你也有这样的报错请按照下面的步骤操作。
这是个几乎每个HoloLens开发者都会遇见的问题,在官方没有给出最优解的方法之前只能用这样的方法了。
原因是什么呢:
因为 VS在编译的时候是默认UWP相关SDKC:\Program Files (x86)\Windows Kits
但是可能你下载的 Window SDK并不在哪个位置,还有一个就是 Window SDK不能安装在URL过长的目录下

请添加图片描述

点击输出面板 查看你的 Window SDK 装在哪个位置

请添加图片描述

复制出来,然后复制或者剪切到 C:\Program Files (x86)\Windows Kits 文件夹下

请添加图片描述

请添加图片描述

再次重新编译 输出

请添加图片描述

WindowsMobile SDK 安装

可以在 Visual Studio 里面安装也可以在 Windos官网安装。

请添加图片描述

选择你想要现在的 Windos SDK (备注:10.0.18362.0 是官方建议版本)

请添加图片描述

HoloLens2 安装

PC电脑设置

直接搜索框中搜索 开发者设置

请添加图片描述

打开开发模式 设备发现也打开

请添加图片描述

HoloLens IP查询

1.打开 Hololens  点击应用
2.找到设置 点击进入
3.点击网络和Interent
4.找到你链接的 Wifi 点击属性 查看当前 IPv4 地址(这个就是你需要在浏览器地址栏输入的地址)
注意:想要 PC 和 HoloLens 联通需要在同一局域网下

HoloLens Apps 安装

1. 在地址栏键入 HoloLens IP地址
   第一次链接需要配对 并添加账号密码

请添加图片描述

2. 输入账号密码 登录 HoloLens 管理界面

请添加图片描述

3. 如果正确连接 点击 3D view 红色方框中的物体会同步转动

在这里插入图片描述

4. 点击 Views->Apps 安装 软件包体

请添加图片描述
请添加图片描述

5. 打开 Apps 文件夹

请添加图片描述
请添加图片描述

6. 等待安装 安装完毕 之后就能在 Hololens 的应用菜单中打开刚刚安装的 Apps

请添加图片描述

后续再更新 MRTK 插件 相关使用(如果有时间的话)
暂时先这样吧,如果有时间的话就会更新,实在看不明白就留言,看到我会回复的。
路漫漫其修远兮,与君共勉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构(邓俊辉)学习笔记】图04——双连通域分解

文章目录 0. 概述1 关节点与双连通域2 蛮力算法3 可行算法4 实现5 示例6 复杂度 0. 概述 学习下双连通域分解&#xff0c;这里略微有一点点难&#xff0c;这个算是DFS算法的非常非常经典的应用&#xff0c;解决的问题也非常非常有用。 1 关节点与双连通域 连通性很好理解&am…

C语言——字符数组

一、字符数组的定义 语言字符数组的定义是指在C语言中可以使用一组连续的字符来存储和处理字符串。在定义字符数组时&#xff0c;需要指定数组的大小&#xff0c;并且可以初始化数组的内容。 1、字符数组方式&#xff1a; char str[] "Hello,world!";2、指针方式…

13- 函数的定义与使用+形参实参区分

13- 函数的定义与使用形参实参区分 文章目录 13- 函数的定义与使用形参实参区分一、函数的定义与使用1.1 函数的结构1. 函数头2. 函数体 1.2 示例代码例子 1&#xff1a;无参数和无返回值的函数例子 2&#xff1a;带参数和返回值的函数 1.3 函数的基本语法1.4 函数的使用示例例…

「动态规划」如何计算能获得多少点数?

740. 删除并获得点数https://leetcode.cn/problems/delete-and-earn/description/ 给你一个整数数组nums&#xff0c;你可以对它进行一些操作。每次操作中&#xff0c;选择任意一个nums[i]&#xff0c;删除它并获得nums[i]的点数。之后&#xff0c;你必须删除所有等于nums[i] …

统信UOS1070上配置文件管理器默认属性02

原文链接&#xff1a;统信UOS 1070上配置文件管理器默认属性01 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在统信UOS 1070上配置文件管理器默认属性的第二篇文章——配置工作区视图。文件管理器中的工作区视图配置可以帮助我们更好地组织和管理文件&#xff0c;…

“群模时代”,国产AI大模型的进击

近期&#xff0c;国内多款大模型重磅消息不断。 1 3月&#xff0c;月之暗面的Kimi升级迭代后&#xff0c;长文本能力达到尚未上线的GPT-4.5Turbo的10倍。 2 4月&#xff0c;商汤科技发布的“日日新SenseNova”5.0多模态大模型在主流客观评测上&#xff0c;中文理解、知识储…

arm开发板移植sshd

移植sshd 文章目录 移植sshd1、准备工作2、编译zlib3、编译openssl4、编译openssh5、其他旧版本6、部署测试7、多用户配置8、sshd_config示例 1、准备工作 准备openssh-9.5p1.tar.gz openssl-1.1.1w.tar.gz zlib-1.2.11.tar.gz 我在http://10.45.156.100/IG2100/IG2100.git …

栈的实现和括号匹配问题

1.什么是栈 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#xf…

数据中心智能化运维发展研究报告(2023)解读

数据中心智能化运维发展研究报告&#xff08;2023&#xff09;解读 《数据中心智能化运维发展研究报告&#xff08;2023&#xff09;》探讨了数据中心智能化运维的概念、核心内容、实际应用和发展建议。报告指出&#xff0c;通过人工智能、大数据等新一代信息技术的深度应用&a…

【recast-navigation-js】使用three.js辅助绘制Agent寻路路径

目录 说在前面setAgentTarget绘制寻路路径结果问题其他 说在前面 操作系统&#xff1a;windows 11浏览器&#xff1a;edge版本 124.0.2478.97recast-navigation-js版本&#xff1a;0.29.0golang版本&#xff1a;1.21.5上一篇&#xff1a;【recast-navigation-js】使用three.js辅…

STM32CubeIDE使用过程记录

最近在做一款机器人的开发&#xff0c;使用到了STM32CubeIDE&#xff0c;这里记录一些使用技巧方便后续查阅。 STM32CubeIDE使用过程记录 快捷键开启代码自动补全功能看门狗设置CRC设置IO口取反定时器设置 及 定时器中断外部中断GPIO配置STC15单片机GPIO模式配置片内闪存&#…

PyTorch学习7:加载数据集

文章目录 前言一、epoch&#xff0c;batch-size和iteration二、示例1.说明2.代码示例 总结 前言 介绍PyTorch中加载数据集的相关操作。Dataset和DataLoader 一、epoch&#xff0c;batch-size和iteration epoch&#xff1a;所有训练数据完成一次前馈和反馈 batch-size&#x…

深度学习革命-AI发展详解

深度学习革命 《深度学习革命》是一部引人深思的作品&#xff0c;详细讲述了深度学习技术的发展历程及其对各个行业的深远影响。由杰出的计算机科学家、深度学习专家撰写&#xff0c;这本书不仅适合科技领域的专业人士阅读&#xff0c;也为普通读者提供了一个理解人工智能革命…

Vue TypeScript 实战:掌握静态类型编程

title: Vue TypeScript 实战&#xff1a;掌握静态类型编程 date: 2024/6/10 updated: 2024/6/10 excerpt: 这篇文章介绍了如何在TypeScript环境下为Vue.js应用搭建项目结构&#xff0c;包括初始化配置、创建Vue组件、实现状态管理利用Vuex、配置路由以及性能优化的方法&#x…

【电机控制】FOC算法验证步骤——电流环PI参数、速度环PI参数

【电机控制】FOC算法验证步骤——电流环PI参数、速度环PI参数 文章目录 前言一、电流环PI1.TI手册 二、速度环PI1.TI手册——根据稳定性和带宽计算速度环PI参数2.TI手册——根据稳定性和带宽计算速度环PI参数 三、参考文献总结 前言 【电机控制】直流有刷电机、无刷电机汇总—…

Python私教张大鹏 Vue3整合Vue Router之编程式导航

除了使用 <router-link> 创建 a 标签来定义导航链接&#xff0c;我们还可以借助 router 的实例方法&#xff0c;通过编写代码来实现。 导航到不同的位置 注意: 下面的示例中的 router 指代路由器实例。在组件内部&#xff0c;你可以使用 $router 属性访问路由&#xff…

vue-cli是什么?和 webpack是什么关系?

前言 Vue CLI是Vue.js项目的官方脚手架&#xff0c;基于Node.js与Webpack构建。安装Vue CLI前需确保Node.js已安装&#xff0c;随后通过npm全局安装。Vue CLI能迅速创建和管理Vue.js项目&#xff0c;提升开发效率。而Webpack则负责资源打包&#xff0c;通过配置文件管理依赖、插…

FiRa标准UWB MAC实现(三)——距离如何获得?

继续前期FiRa MAC相关介绍,将FiRa UWB MAC层相关细节进一步进行剖析,介绍了UWB技术中最重要的一个点,高精度的距离是怎么获得的,具体使用的测距方法都有哪些,原理又是什么。为后续FiRa UWB MAC的实现进行铺垫。 3、测距方法 3.1 SS-TWR SS-TWR为Single-Sided Two-Way Ra…

通过python操作redis(windows)

注意在连接之前要确保 redis 服务已经安装。 更多的安装信息请查看&#xff1a;https://blog.csdn.net/sinat_20471177/article/details/132042779?spm1001.2014.3001.5501 redis 模块 Python 要使用 redis&#xff0c;需要先安装 redis 模块。如果要做数据导入/导出操作的…

动手学深度学习4.10 实战Kaggle比赛:预测房价-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记&#xff0c;以及对课后练习的一些思考&#xff0c;自留回顾&#xff0c;也供同学之人交流参考。 本节课程地址&#xff1a;实战 Kaggle 比赛&#xff1a;预测房价_哔哩哔哩_bilibili 本节教材地址&#xff1a;4.10. 实战Ka…