NAO机器人学习教程-第一篇

1.NAO机器人历史简介

  • 2004年,NAO项目启动。

  • 2007年,NAO被索尼公司的AIBO机器狗击败,未能被RoboCup标准平台联赛(SPL)采用。

  • 2008、2009年度的RoboCup比赛中,NAO被正式采用。NAOV3R则被用于2010年的RoboCup。1

  • 2010年,NAO机器人在上海2010世博会表演同步舞蹈动作。

  • 2015年,NAO在机器人世界杯比赛中,一举获得标准平台组冠军。

  • 2018年,德国总理默克尔出席“女孩日”职业促进活动,与NAO机器人互动。

  • 2018年,NAO机器人参加“软银机器人杯”中国技能大赛。2

2.NAO机器人机型版本

1.早期NAO机器人

通常将V3.2版本以及之前的版本统称为早期NAO机器人。早期NAO机器人的机身一般呈浅灰色,特别是V3.2版本的NAO机器人机身就是一身浅灰,很容易分辨(而V6版本的NAO机器人则是一身深灰色)。
早期的NAO机器人采用的CPU系列均为Geode系列,因此这它们的系统镜像(用于安装机器人系统)的文件名都带有Geode字样,用来表明它们所使用的的CPU是Geode系列,以防止安装错误的系统。

2.早期NAO机器人机身版本

在1.14.4官方文档中Robot version and Body Type 一小节对机器人版本进行了介绍:

  • NAO H25
    具有完整的身体结构,结构示意图如下:
    H25
  • NAO H21
    具有完整身体结构,相比于H21,主要是手指部分存在差异。
    在这里插入图片描述
  • NAO T14
    具有除腿部外完整的机械结构:
    T14
  • NAO T12
    只有头部的机械结构,以及身体中的电池
    T12

3.V4和V5版本NAO机器人

  • V4版本NAO
    该版本NAO机器人机身均为橘黄色或浅蓝色,采用了全新的CPU系列atom
    NAO_V4
    该版本机器人较前代机器人的结构对比:
    V4和V3.2
    V3.2及前版本
    主要差异在脑后接口,除此之外,NAO V3.2版本(可能之前的版本)都带有一张内存卡,插在机器人脑后的USB口上,机器人运行时不可以取出。根据大脑后面的USB接口也可以判定机器人版本和型号。

  • NAO V5
    2014.6.27,softbank-robotics正式宣布,结束对V3.2及以下版本的系统更新,同时也推出了面向V4及以后版本的NAOqi-2.0的新版系统。新版版本号为2.1.0.19,直接从前一年的版本1.14.5跳到了新版本。


  1. 维基百科:https://zh.wikipedia.org/wiki/NAO_(%E6%9C%BA%E5%99%A8%E4%BA%BA ↩︎

  2. 百度百科:https://baike.baidu.com/item/NAO%E6%9C%BA%E5%99%A8%E4%BA%BA/1028672?fr=aladdin ↩︎

### 解决 Electron 中 CSP Violation 'connect-src self' 的方法 在 Electron 应用中,`Content-Security-Policy`(CSP)用于增强应用的安全性,防止跨站脚本攻击(XSS)。当遇到 `connect-src 'self'` 导致的违规问题时,可以通过调整 `<meta>` 标签中的 CSP 配置来解决问题。 以下是针对此问题的具体解决方案: #### 修改 CSP 配置 默认情况下,`connect-src 'self'` 表示仅允许同源连接。如果需要访问其他域上的资源,则需扩展 `connect-src` 指令以包含目标域名。例如,在 HTML 文件的 `<head>` 标签下添加如下代码: ```html <meta http-equiv="Content-Security-Policy" content=" default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' https://example.com; "> ``` - **`default-src 'self'`**: 设置全局加载策略,默认只允许加载同源资源[^2]。 - **`style-src 'self' 'unsafe-inline'`**: 允许加载同源样式文件以及行内样式[^2]。 - **`img-src 'self' data:`**: 图片可以从同源地址加载,也可以通过 Data URI 嵌入[^2]。 - **`connect-src 'self' https://example.com`**: 允许向同源服务器发起网络请求,并额外支持向 `https://example.com` 发起请求[^1]。 #### 动态修改 CSP 策略 如果无法提前预知所有可能的目标域名,可以在运行时动态更新 CSP 策略。例如,使用 JavaScript 修改 `<meta>` 标签的内容: ```javascript document.addEventListener('DOMContentLoaded', () => { const meta = document.querySelector('meta[http-equiv="Content-Security-Policy"]'); if (meta) { let currentPolicy = meta.content || ''; // 添加新的 connect-src 权限 const newConnectSrc = "connect-src 'self' https://api.example.com"; if (!currentPolicy.includes(newConnectSrc)) { meta.content += ` ${newConnectSrc}`; } } else { // 如果不存在 CSP meta 标签则创建一个新的 const cspMeta = document.createElement('meta'); cspMeta.httpEquiv = 'Content-Security-Policy'; cspMeta.content = "default-src 'self'; connect-src 'self' https://api.example.com;"; document.head.appendChild(cspMeta); } }); ``` 这段代码会在 DOM 完全加载后检查并更新现有的 CSP 策略,确保新增加的 `connect-src` 不会被遗漏[^1]。 #### 使用 Electron 主进程自定义 WebPreferences 除了前端配置外,还可以通过 Electron 的主进程中设置更灵活的选项。例如,启用 Node.js 集成的同时禁用远程模块,从而减少潜在风险: ```javascript const { BrowserWindow } = require('electron'); let win = new BrowserWindow({ webPreferences: { nodeIntegration: true, contextIsolation: false, // 可选,取决于安全性需求 additionalArguments: ['--disable-web-security'], // 调试用途,生产环境不建议开启 sandbox: true, // 启用沙箱模式提高安全性 }, }); win.loadURL('file://' + __dirname + '/index.html'); ``` 需要注意的是,虽然可以临时关闭部分安全功能以便调试,但在正式发布前应重新评估这些更改带来的安全隐患[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值