nao机器人比赛高尔夫和接力

三、NAO机器人指令操作

3.1 几大常用模块介绍

模块名称中文翻译方法
ALproxy初始化代理ALProxy("模块名称", "<机器人的IP地址>", 9559)
ALMotion运动模块唤醒、休息、设置刚度、设置角度、获取刚度
ALRobotPosture姿势模块goToPosture
ALPhotoCapture相机模块getCameraID()、setResolution(分辨率)、setPictureFormat("jpg")、takePictures(拍摄数量, 文件夹, 文件名)
ALTextToSpeech说话模块say()
ALMemory内存模块subscribeToEvent()订阅事件
ALSpeechRecognition语音识别模块setVocabulary()设置可识别字典,subscribe()订阅事件

3.2 NAO机器人的启动与休息

说明:

 机器人的运动都是通过代码控制,你知道什么代码执行什么功能就行了

导入端口模块:

 ​  from naoqi import ALProxy

完整测试程序:

 # -*- encoding: UTF-8 -*-  ​  '''Wake up: sets Motor on and, if needed, goes to initial position'''  ​  import time  # import argparse 命令行调参的,用处不太大  from naoqi import ALProxy  IP="192.168.xx.xx" #你的IP  PORT=9559  ​  motionProxy = ALProxy("ALMotion", IP, PORT)  def weakUp():     print("我被唤醒了")     motionProxy.wakeUp()  ​  def rest():     print("我休息了")     motionProxy.rest()  ​  def main(robotIP, PORT=9559):  ​     print motionProxy.getSummary()     time.sleep(4.0)  ​     # Go to rest position     # motionProxy.rest()  ​  if __name__ == "__main__":  ​     while True:         op=int(input("输入你的操作数吧,0表示休息 1表示唤醒电机\n"))         if op == 1:             weakUp()         elif op == 0:             rest()         else:             break     # main(IP, PORT)

3.3对机器人启动与休息的判断

如果机器人处于唤醒状态,则为 true。

 # -*- encoding: UTF-8 -*-  import time  # import argparse 命令行调参的,用处不太大  from naoqi import ALProxy  IP="192.168.1.181"  PORT=9559  ​  motionProxy = ALProxy("ALMotion", IP, PORT)  def weakUp():     motionProxy.wakeUp()     print("我被唤醒了")  ​  def rest():     motionProxy.rest()     print("我休息了")  ​  def judgeAwake(motionProxy):     if motionProxy.robotIsWakeUp():         print("我醒着呢")     else:         print("机器人正在休眠,请不要打扰他")  ​  if __name__ == "__main__":     while True:         op=int(input("输入你的操作数吧,0表示休息 1表示唤醒电机\n"))         if op == 1:             weakUp()         elif op == 0:             rest()         else:             break         judgeAwake(motionProxy)     # main(IP, PORT)

3.4机器人的自主生活的开启与关闭

开启自主生活

 def beginAutonomousLife():     autonomousLife.setState("solitary")

关闭自主生活

 def stopAutonomousLife():     #停止自主生活他会蹲下来     autonomousLife.setState("disabled")

关闭自主生活且运动

 def wakeUp():     motionProxy.wakeUp()  def stopAutonomousLife():     #停止自主生活他会蹲下来     autonomousLife.setState("disabled")  def stopLifeAndRunning():     stopAutonomousLife()     wakeUp()

要达到这个效果,我们需要先关闭其自主生活再给他唤醒,就可以了

3.5设置刚度(stiffnesses)和获取刚度

 motionProxy.setStiffnesses((str)部位名称,(int)刚度)

可以在设置完刚度后调用motionProxy.getSummary()来查看参数,不过记得sleep(1)来让系统记录

测试代码:

stiffnesses=1 motionProxy.setStiffnesses("HeadPitch",stiffnesses) motionProxy.setStiffnesses("HeadYaw",stiffnesses) time.sleep(1) print(motionProxy.getSummary())

也可以使用motionProxy.getStiffnesses(name)来获取某个部位的刚度

3.6让机器人说话

tts = ALProxy("ALTextToSpeech", IP, 9559) tts.say("I can speak English!")

3.7让机器人走路

motionProxy = ALProxy("ALMotion", IP, PORT) def move_to(motionProxy): moveConfig = [["MaxStepX", 0.08], ["MaxStepY", 0.16], ["MaxStepTheta", 1.0], ["MaxStepFrequency", 0.7], ["StepHeight", 0.02], ["TorsoWx", 0.0], ["TorsoWy", 0.01]] # 默认运动参数配置 motionProxy.moveTo(5.5,0, 0, moveConfig) move_to(motionProxy)

3.8获取机器人所有姿势

posture = ALProxy("ALRobotPosture", IP, PORT) print(posture.getPostureList()

姿势英文中文名称
Crouch下蹲
LyingBack扑地
LyingBelly朝天
Sit
SitOnChair坐在椅子上(10cm)
SitRelax放松坐下
Stand站立
StandInit预备站立
StandZero平举双手站立

3.9设置机器人的姿势

def setPouseStand(): ##posture speed robotPostureProxy.goToPosture("StandInit", 1)

3.10获取机器人26个部位的信息

motionProxy.getSummary()

3.11部位介绍

BodyName中文名称
HeadYaw头部左右转动
HeadPitch头部上下转动
LShoulderPitch...
LShoulderRoll...
LElbowYaw
LElbowRoll
LWristYaw
LHipYawPitch
LHipRoll
LHipPitch
LKneePitch
LAnklePitch
LAnkleRoll
RHipYawPitch
RHipRoll
RHipPitch
RKneePitch
RAnklePitch
RAnkleRoll
RShoulderPitch
RShoulderRoll
RElbowYaw
RElbowRoll
RWristYaw
LHand
RHand

四、一些不错的链接

1、关节的介绍以及部分代码

(30条消息) NAO团队任务——运动控制(1)headyaw含义云灵小镇的博客-ZEEKLOG博客

2.高尔夫机器人

(30条消息) 人工智能协会 Nao 团队 学习任务——运动控制(2)_云灵小镇的博客-ZEEKLOG博客

3.NAO机器人手册

Nao机器人手册 (tj-work.github.io)

4.从硬件到下载

NAO机器人学习笔记(1) - Coodyzのblog - 博客园 (cnblogs.com)

5.gitHub的NAO代码示例

Python ALProxy.unsubscribeToEvent方法代码示例 - 纯净天空 (vimsky.com)

6.机器的一些数据的判断方法

(33条消息) nao机器人--移动、是否摔倒、opencv图像处理、socket通信_面-包的博客-ZEEKLOG博客

由于之前上传的资源需要付费下载,所以私信我直接免费发吧,ZEEKLOG不会常在线,需要源文件的可以关注我的公众号私信我。

Read more

Web 应用开发核心:登录注册接口设计与实现全解析

在 Web 应用开发中,登录注册接口是用户与系统交互的第一道门槛,也是保障系统安全、提升用户体验的关键环节。无论是简单的个人博客,还是复杂的电商平台、SaaS 系统,稳定、安全、易用的登录注册功能都是基础中的基础。本文将从核心概念、技术选型、设计规范、安全防护、常见问题等维度,全面拆解登录注册接口的开发知识点,助力开发者打造可靠的用户认证体系。 一、登录注册接口的核心定位与业务价值 登录注册接口本质是用户身份认证与授权的入口,核心职责包括: 1. 身份核验:验证用户提交的凭证(账号密码、验证码等)是否合法; 2. 会话管理:为合法用户创建会话,维护登录状态; 3. 数据安全:保护用户敏感信息(密码、手机号等)在传输和存储过程中的安全; 4. 用户体验:简化注册流程、降低登录门槛,同时提供找回密码等兜底方案。 其业务价值直接影响产品留存:注册流程繁琐会导致用户流失,登录安全漏洞可能引发数据泄露,而稳定的会话管理则是保障用户持续使用的基础。 二、

【Java Web学习 | 第五篇】CSS(4) -盒子模型

【Java Web学习 | 第五篇】CSS(4) -盒子模型

🌈个人主页: Hygge_Code🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络💫个人格言: “既然选择了远方,便不顾风雨兼程” 文章目录 * CSS盒子模型🥝 * 1. 什么是CSS盒子模型? * 2. 边框(border):盒子的"外衣"🍋‍🟩 * 边框的基本属性 * 单边边框设置 * 边框对盒子大小的影响 * 表格细线边框 * 3. 内边距(padding):内容与边框的缓冲带🍋‍🟩 * 内边距的基本用法 * 内边距对盒子大小的影响 * 内边距的实用技巧 * 内边距不影响盒子大小的特殊情况 * 4. 外边距(margin):盒子之间的距离🍋‍🟩 * 外边距的基本用法 * 外边距的典型应用:水平居中 * 外边距合并问题 * 清除默认内外边距🐦‍🔥 * 综合代码演示 * CSS美化三剑客:圆角边框、盒子阴影与文字阴影🥝 * 1. 圆角边框(border-radius):告别生

Web 毕设篇-适合练手的 Spring Boot Web 毕业设计项目:智驿AI系统(前后端源码 + 数据库 sql 脚本)

Web 毕设篇-适合练手的 Spring Boot Web 毕业设计项目:智驿AI系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-ZEEKLOG博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         AI系统具有许多优势         1.0 项目介绍         1.1 项目功能         1.2 用户端功能         2.0 用户登录         3.0 首页界面         4.0 物件管理功能         5.0 用户管理功能         6.0 区域管理功能         7.0 物件日志管理功能         8.0 操作日志         AI系统具有许多优势         1)自动化:AI 系统能够自动化执行任务,减少人力和时间成本。它们可以自动处理大量数据并执行复杂的计算,从而提高效率。         2)智能决策:AI 系统可以通过学习和分析数据来做出智能决策。

【n8n入门教程08】n8n 触发节点完全指南:定时器、Webhook 和手动触发

n8n工作流分享:商业级别的5个实用自动化工作流分享,诚意满满 n8n 触发节点完全指南:定时器、Webhook 和手动触发 在 n8n 自动化平台中,触发节点是工作流的起点,决定了整个流程的启动方式。无论是定时任务、外部事件还是手动测试,合理选择和配置触发节点,是实现高效自动化的基础。今天就来详细讲讲 n8n 的三类主流触发节点,帮你灵活应对各种业务场景。 手动触发节点(Manual Trigger) Manual Trigger 节点主要用于开发和调试阶段。把它放在工作流起点后,可以通过编辑器的 “Execute Workflow” 按钮手动启动流程,实时观察结果。 这个节点不会自动运行,也无法被外部事件触发,只有在你手动执行时才会生效。特别适合测试用途,你可以通过它手动运行整个流程,验证逻辑和数据流是否符合预期。 使用场景: * 开发调试新工作流 * 测试工作流的各个节点 * 验证数据流转是否正确 注意事项: * 一个工作流只能有一个 Manual Trigger 节点 * 仅在开发调试时使用,生产环境应该用其他触发器