nao机器人行走速度_NAO机器人学习笔记(2)
5 电机
5.1为了增加扭力,每种电机上都有减速箱,通过电机连接的微型齿轮降低转速。
5.2 转矩
转矩是一种力矩,力矩=力*力臂 (N * m)
堵转转矩和标称转矩反应了电机在启动和政策工作状态下驱动力的大小。
堵转转矩是指当电机转速为0时的转矩,如膝关节电机在启动或维持半蹲状态都处于堵转状态。
额定转矩是电机可以长期稳定运行的转矩。
5.3 位置检测
所有的关节都是伺服控制的结构,传输给电机的力或力矩指令都是根据检测到的关节位置与
期望位置之间的差值而给定的。每个关节都有位置传感器,直接安装在电机的轴上,根据电机
轴的位置可以计算得到真实的关节转角。
5.4 电流控制
每个点击电路板上都有一个电流传感器,如果电流达到电流传感器最大值,通过控制电路的
反馈机制,能够减小电流直到返回到最大值以下。
NAO使用刚度控制电机电流,值为0~1.0
6 ALRobotPosture模块
6.1 主要方法
goToPosture(postureName, speed):
转到预定义姿势。阻塞调用。
getPosture():
返回当前姿势名称,如果当前姿势不是预定义姿势,返回unknow。阻塞调用。
getPostureList():
返回预定义姿势列表。阻塞调用。
applayPosture(postureName, speed):
将机器人关节设置为预定义姿势对应的状态(没有中间动作)。阻塞调用。
stopMove():
停止当前动作。
7 ALMotion模块
包括与机器人动作相关的API,分为刚度控制、关节控制、运动控制等方面。
ALMotion运行频率是50HZ. 在ALMotion中,当调用API去执行一个动作时,要创建一个'运动任务'
处理这个任务,每隔20ms,这个’运动任务‘将计算基本命令(电机角度和刚度变化)执行这个动作,
设置角度或刚度变化时,time.sleep(1.0)。
7.1 刚度控制方法
Nao使用刚度控制电机最大电流。电机的转矩(驱动力)与电流相关,设置关节的刚度相当于设置电
机的转矩限制。
刚度为0.0,关节位置不受电机控制,关节是自由的。
刚度为1.0,关节使用最大转矩功率转到指定位置。
刚度为0.0~1.0,关节电机的转矩介于0与最大值直接(如果关节移动到目标位置所需要的转矩高于刚、
度的限制,关节不会到达目标位置)。
wakeUp():
唤醒机器人(启动电机
robotIsWakeUp():
机器人为唤醒状态返回Ture。
setStiffnesses(names, stiffnesses):
设置一个或多个关节刚度,names为关节名或关节组名。非阻塞调用。注:刚度设置结果略有误差, 误差范围约为0~2%)
rest():
转到休息姿势。
getStiffnesses(jointName):
获取关节或关节组刚度,返回为一个或多个刚度值,jointname为关节名
或关节组名。
stiffnessInterpolation(names,stiffnessLists,timeLists): 将一个或多个关节按时间序列设置刚度旭烈治,
names为关节名或关节组名,stiffnessLists为刚度列表,timeLists为时间列表。阻塞调用。
7.2 关节控制方法
关节运动与身体平衡:
当关节运动时,机器人的重心会发生变化,严重时机器人会摔倒。为保持身体平衡,不仅需要同时改变
多个关节的角度,通常还需要同时调节关节运动速度。
(1)插值方法,阻塞调用,类似于动画,在起始位置和终止位置间定时插入若干中间值。
(2)反应式方法,非阻塞式调用,通常在反应控制中多次调用。NAO可能得到一组相互矛盾的命令序列,
调用反应式方法可以保证运动平滑且速度连续。
angleInterpolation(names, angleLists, timelists, isAbsolution):
插值运动。name是关节名称,angleLists是角度、或二维角度列表,单位为弧度,timeLists是为达到目标
角度的时间、时间列表或二维时间列表,isAbsolute为Ture,代表绝对角度,为False,代表相对角度。阻塞调用。
angleInterpolationWithSpeed(names, targetAngles, maxSpeedFraction):
插值运动(带速度限制)。maxSpeedFraction为最大速度比。阻塞调用。
angleInterpolationBezier(joinNames, times, controlPoints):
贝塞尔角度插值。joinNames为关节名称列表,times为时间列表,controlPoints为控制点列表。阻塞调用。
setAngles(names,angles, fractionMaxSpeed):
设置关节角度。names是关节名称;angles为一个或多个角度;maxSpeedFraction为最大速度百分比。非阻塞调用。
changeAngles(names,angles, fractionMaxSpeed):
改变关节角度。names是关节名称;angles为一个或多个角度;maxSpeedFraction为最大速度百分比。非阻塞调用。
getAngles(names, useSensors):
获取关节角度。names为关节名;useSensors为True返回关节传感器角度,为False返回执行器角度。
closeHand(handName):
合上手掌。handName取值:LHand,RHand。阻塞调用。
openHand(handName):
打开手掌。handName取值:LHand,RHand。阻塞调用。
7.3 运动控制方法
在每一个ALMotion周期中采集来自传感器的实际关节位置信号,与位移和身体的倾斜角度等期望值进行比较后,利用
控制算法计算出控制量,驱动电机实现队关节的实时控制。
每步包括双脚支撑和单脚支撑两个阶段,其中,双脚支持时间占1/3.行走初始阶段和结束阶段双腿支撑时间为0.6。脚
运动轨迹是一条平滑曲线,利用初始速度和关键点,使用SE3插值方法计算出,脚部符合速度限制又能够保持平稳。
运动位置使用Pose2D类定义。在描述左脚时,以右脚为参照点。
7.3.1 步态参数
名称 含义 缺省 最小 最大 可修改
MaxStepX 沿X方向的最大向前平移(m) 0.040 0.001 0.080 是
MinStepX 沿X方向的最大向后平移(m) -0.040 否
MaxStepY 沿Y方向的最大平移绝对值(m) 0.140 0.101 0.160 是
MaxStepTheta 沿Z轴旋转角度最大绝对值(°) 0.349 0.001 0.524 是
MaxStepFrequency 最大步频 1.0 0.0 1.0 是
MinStepPeriod 最小步周期 0.42 否
MaxstepPeriod 最大步周期 0.6 否
StepHeight Z轴方向抬脚最大高度(m) 0.020 0.005 0.040 是
TorsoWx 躯干与X轴间最大角度(°) 0.000 -0.122 0.122 是
TorsoWy 躯干与Y轴间最大角度(°) 0.000 -0.122 0.122 是
FootSeparation Y方向两脚之间距离(m) 0.1 否
MinFootSeparation Y方向两脚之间最小距离(m) 0.088 否
7.3.2 Nao行走控制主要的三种方式
moveTo:
使机器人移动到指定位置,阻塞调用。
(1).moveTo(x, y, theta), 移动到指定位置。
(2)moveTo(x, y, theta, MoveConfig), 按给定的步态参数移动到指定位置。moveConfig为自定义步态参数列表,列表
中的内容为步态参数键值对。
(3)moveTo(controlPoints),沿控制点移动到指定位置,controlPoints为控制点列表。
(4)moveTo(controlPoints, moveConfig), movetoConfig为自定义步态参数列表。
move:
move方法是机器人按指定速度行走,非阻塞调用。
(1)move(x, y, theta), 按指定速度行走,x为绕X方向速度(m/s), theta为绕Z轴旋转角速度(rad/s), 负数表示顺时针
转动。非阻塞调用方法,需要time.sleep()延时,延时时间除了行走过程时间外,应还包括机器人走过程的初始化阶段和终止阶段。
(2)move(x, y, theata, moveConfig), 按给定的步态参数和指定速度行走。其中x为X方向,moveConfig为自定义步态参数列表
可以分别设置左脚和右脚的步态参数。
moveToward:
moveToward()方法是机器人按指定速度行走,非阻塞调用方法。
(1)moveToward(x, y, theta), 按指定速度行走,其中x为X方向速度,取值范围[-1, 1], theta为绕Z轴旋转速度。
(2)moveToward(x, y, moveConfig), 按给定的步态参数、指定速度行走。
7.3.3 运动控制的几个关键问题
(1)初始化问题,在NAO启动行走进程前,NAO首先要执行初始化过程,goToPosture("StandInit", 0.5)。
(2)同步问题,moveTo()方法为阻塞调用,执行完成后,与原线程同步可以使用如下两种方法:
1)waitUntilMoveIsFinished:
self.motion.post.moveTo(1.0, 0.0, 0.0)
self.motion.waitUntilMoveIsFinished()
2)moveIsActive
self.motion.post.moveTo(1.0, 0.0, 0.0)
while self.motion.moveIsActivate():
time.sleep(1)
(3)步态控制问题
通过步态规划可以独立地控制NAO行走的每一步,实现步态规划有如下两种方式,
1)setFootSteps, 非阻塞调用,setFootSteps()方法设置每一步发生的时间。
2)setFootStepsWithSpeed,阻塞调用,setFootStepsWithSpeed()方法使用标准化的步态速度。
运动控制方法
nao机器人行走速度_NAO机器人学习笔记(2)相关推荐
- nao机器人行走速度_NAO5机器人的一些使用心得
一.背景 2014年开始推出V5机器人. 二.简介 NAO机器人是一个57厘米高的可编程仿人机器人.其关键组件如下: (1)拥有25个自由度(DOF)的身体,其关键部件为电机与致动器. (2)一系列传 ...
- nao机器人行走速度_数计学院学子在2020世界机器人大赛总决赛中荣获佳绩!
12月3日至6日,2020世界机器人大赛总决赛在佛山潭州国际会展中心举行.由武汉纺织大学数学与计算机学院何儒汉教授指导,杨皓然.成振瑞.李幸阜.伏嘉豪.李创等5名本科生同学组成的参赛团队荣获 2020 ...
- nao机器人行走速度_震撼!寒冬腊月里惊现多台历途外墙清洗机器人
https://www.zhihu.com/video/1082591132478771200 北京历途科技有限公司是一家专注于人工智能与机器人研发的高新技术企业,经过十几年的技术积累,现已自主研发出 ...
- nao机器人行走速度_基于PID控制的NAO机器人循线行走技术研究
基于 PID 控制的 NAO 机器人循线行走技术研究 秦 娇,王向华 [摘 要] 智能机器人的循线行走技术在工业安全领域具有重要意义.选用 NAO 机器人作为研究平台,创新点在于将其在平面上的运动学动 ...
- 平移刚体上各点的加速度和速度_大物学习笔记(一)——刚体力学
第一次写笔记,或多或少都会有很多的不足.疫情期间一直都是网课的学习,书本也没有带回来,经常都是在草稿本上随手推导一下公式,隔几天翻了几页,自己推导的东西就不见了.所以总想着来总结一下,把学的东西稍稍理 ...
- nao机器人的规格书_NAO机器人技术参数.pdf
NAO机器人技术参数 RESEARCH EDITION ACADEMICS EDITION NAO®, 机器人领域探索研究的理想合作伙伴. 完全可编程 Nao 大学版的主要特点 大量的传感器 • 25 ...
- MATLAB强化学习实战(十三) 使用强化学习智能体训练Biped机器人行走
使用强化学习智能体训练Biped机器人行走 两足机器人模型 创建环境接口 选择和创建训练智能体 DDPG Agent TD3 Agent 指定训练选项和训练智能体 仿真训练过的智能体 比较智能体性能 ...
- 机器人电焊电流电压怎么调_焊接机器人焊机电流电压匹配及行走速度调节(一)...
焊接是两种或两种以上的同种或异种材料通过原子或分子之间的结合和扩散而连接成一体的工艺过 程.焊接接头是采用焊接工艺形成的不可拆卸的连接接头. 它由焊缝.熔合区(线).热影响区以及相邻近的母材组成. 气 ...
- CV学习笔记-立体视觉(点云模型、Spin image、三维重建)
立体视觉 1. 立体视觉概述 概述: 立体视觉是一种计算机视觉技术,其目的是从两幅或两幅以上的图像中推理出图像中的每个像素点的深度信息. 原理: 在二维图像中,只有宽高两个维度的信息,而如何辨识远近的 ...
最新文章
- 幼儿园课程体系结构图_全人教育、均衡发展课程体系介绍
- [gist]Android SHA-1
- UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 43: illegal multibyte sequence
- nginx / 安装、部署和启动
- 快手通过标签添加的我_快手怎么上热门?快手短视频推荐指标有哪些?
- CSS 字体调整 font-size-adjust属性
- OracleOraDb11g_home1TNSListener服务无法启动
- 对象池common-pool2源码分析之对象状态
- matlab最小费用最大流函数,Matlab最小费用最大流算法通用程序
- java程序设计期末考试试题汇总及答案_《JAVA程序设计》期末考试试题汇总及答案...
- php 许愿墙 阶段案例_PHP+jQueryUI实现许愿墙功能、贴便签、贴标签功能(案例)...
- c++语言设计五子棋游戏,C++实现五子棋游戏
- 如何用阿里云云盘快照恢复部分数据
- 多包管理工具Lerna(莱尔纳)
- tit-al00 android 6,华为TIT-AL00入网 MTK6735四核全网通手机
- CC2530驱动_ds18b20
- MTK如何配置长按关机
- bfs+dfs分析----poj 3278 Catch That Cow
- 帝国,又是帝国... ...
- 大数据如何帮助小数据? 主题报告速记与评述(二)
热门文章
- 文章标题 SPOJ - DRUIDEOI : Fata7y Ya Warda!(单调栈)
- 性格色彩测试android程序开发之三--dialog(续)
- vscode远程开发基础教程
- COALESCE()函数 一个非常有用的函数
- 更改SQL Server数据库名、数据库文件名、逻辑文件名的方法
- windows下使用vscode连接ubuntu服务器,使用xming将Ubuntu服务器端的图形界面转发到windows下
- 手把手教你搭建SpringBoot+MySQL+Mybatis项目(采坑日记)
- E-PUCK机器人-标准固件
- 股市风暴下的雪球架构改造经验分享
- 堆排序(最小堆)C++