AIR

NAO机器人(python语言)

img 是一种双足人形机器人,58公分高,可以做出各种与人类一样的

肢体语言,通过代码实现了识别语言并根据代码做出相应的回应,能够通过感应器识别物体,与人类互动,NAO提供了一个独立的编程环境(Choregraphe),需要密匙才能激活对应

机器人环境(到时候会帮助你们建立起来)。

NAO机器人是人工智能机器人,嵌入式软件使得NAO可以声音合成,图像识别,行为控制,双通道超声波探测障碍物,以及自身二极管进行视觉效果。

1581240565545

在C++、Python、Choregraphe中,我们是通过编译代码实现对机器人控制实现,多看NAOqi API

,在那之前我们了解一下NAO机器人的基本情况:

1.NAO能够探测前方0.25-2.55m内是否有障碍物,探测角度60°。

2.触摸、按压、划过接触传感器可以出发接触传感器产生电信号,进而完成向机器人输入信息.
头部:前中后三个触摸传感器。
手部触摸传感器,脚前部的碰撞传感器(也起到缓冲作用)。
胸前:长按、短按、连按。
开机:按胸前按钮。
报IP地址:在开机并且联网状态下,按胸前按钮。
关机:在开机状态下,按胸前按钮。
自主生活状态:连续按两次胸前按钮进入或退出。

3.测量身体状态以及加速度,包括2个陀螺仪,1个加速度计。
4.(MRE磁性编码器):测量机器人自身关节位置,36个。
5.每只脚上有4个压力传感器,用来确定每只脚重心的位置。在行走过程中,NAO根据重心为在进行不太调整以保持身体平衡。
6.头部传感器周围:12个LED
耳部:2的10次方个16级蓝色LED, 2的8次方个全彩色LED, 胸前按钮和双足各有1个RGB全彩色LED。

  1. 使用的坐标系:
    笛卡尔坐标系,X轴指向身体前方,Y为由右向左方向,Z轴为垂直向上方向。 沿Z轴方向的旋转称为偏转(Yam), 沿Y轴的旋转称为俯仰(Pitch),沿X轴方向的旋转称为横滚(Roll)。

  2. 关节运动范围:
    头部两个自由度分别控制Nao脑袋的扭转,其中控制头部关节在Z轴扭转的范围为-120°到120°,在Y轴前后运动的范围为-39°到39°;
    左右手臂各有5个自由度且呈对称分布,肩关节控制Y轴前后运动的范围为-120°到120°,控制Z轴左右运动的范围为0°到95°,
    肩关节控制在X轴扭转的范围为-90°到0°,
    肘关节控制在Z轴运动的范围为-120°到120°,
    腕关节控制在X轴扭转的范围为-105°到105°;
    Nao的左右手上各有一个自由度,其控制Nao的手部的打开或合拢;
    Nao左右腿的关节除髋关节和踝关节外其余均呈对称分布的,
    左髋关节控制腿部在Y轴前后运动的范围为-104.5°到28.5°,
    左髋关节控制腿部在X轴左右运动的范围为-25°到45°,
    左踝关节控制在Y轴前后运动的范围为-70.5°到54°,
    左控制X轴左右运动的范围为-45°到25°,
    右髋关节控制腿部在Y轴前后运动的范围为-104.5°到28.5°,
    右髋关节控制腿部在X轴左右运动的范围为-45°到25°,
    右踝关节控制在Y轴前后运动的范围为-70.5°到54°,
    右踝关节控制X轴左右运动的范围为-25°到45°;
    膝关节控制腿部在Y轴运动的范围为-5°到125°;
    髋部存在一个控制其髋部在Y轴运动的自由度,其运动范围为-65.62°到42.44°。

  3. 自由度:

    机器人能够独立运动的关节数目称为机器人的运动自由度。头部有两个关节,可以做偏转(Yam)和俯仰(pitch),因此,头部的自由度为2.
    全身共有26个自由度。

    1. 转矩是一种力矩,力矩=力力臂 (N m)
      堵转转矩和标称转矩反应了电机在启动和政策工作状态下驱动力的大小。
      堵转转矩是指当电机转速为0时的转矩,如膝关节电机在启动或维持半蹲状态都处于堵转状态。额定转矩是电机可以长期稳定运行的转矩。

    2. 主要方法:学习NAOqi API

      goToPosture(postureName, speed):转到预定义姿势。阻塞调用。
      getPosture():返回当前姿势名称,如果当前姿势不是预定义姿势,返回unknow。阻塞调用。
      getPostureList():返回预定义姿势列表。阻塞调用。
      applayPosture(postureName, speed):将机器人关节设置为预定义姿势对应的状态(没有中间动作)。阻塞调用。
      stopMove():停止当前动作。

      1. 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), 按给定的步态参数、指定速度行走。


 Comments


Blog content follows the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License

Use Material X as theme , total visits times .
载入天数...载入时分秒...