Giter VIP home page Giter VIP logo

lowell-l-naofbxcontrol's Introduction

NaoFBXControl

项目简介

本项目以 Nao 机器人为平台,根据人体动捕数据来控制仿人机器人模拟人体运动。

项目的输入文件为包含人体数据的 FBX 文件(来自 www.mixamo.com ),项目的输出文件为 behavior.xar 文件,此可以通过 Nao 机器人配套的仿真平台 choregraph 打开,控制 Nao 机器人运动。

本项目最终的运行结果如下所示( GIF 动图):

人体动作

Nao模拟效果

环境配置

Python 版本:3.7.7(注:这里 python 的版本必须是 3.7,因为下文中 FBX Python SDK 库的一个依赖文件为 Pytho37.dll,FBX Python SDK 在3.8 版本的 Python 环境中无法使用)

FBX Python SDK:2020.2

Nao 机器人模拟平台 Choregraphe :2.1.4

Input:FBX文件(存储于 BinaryFBX文件夹中,更多 FBX 资源可从 www.mixamo.com 中下载,FBX文件可使用 MotionBuilder 软件查看)

程序思路

本程序通过 FBX SDK 读取存储于 FBX 文件中的人体动作捕捉数据,并据此进行逆运动学求解,结合 Nao机器人本身的运动特点,求解出适用于 Nao 机器人各自由度的旋转角度,使其在此角度下模仿人体动作;当 Nao 机器人成功模拟人体运动后,我们需要一个指标来表示模拟的准确度:通过正运动学求解得到 Nao 机器人模型(./nao.fbx)在各自由度旋转相应角度后的位姿,然后计算 Nao 机器人模型与人体模型代表同一肢体部位的单位向量的夹角值,以此表示模拟的准确度。

正逆运动学为机器人运动学的内容,具体可参考B站台大林沛群老师的机器人运动学的课程;

本程序逆运动学主要采用较简单的几何法,主要根据各自由度的运动方向及人体 FBX 模型中的关节点分布来计算各自由度的旋转角度,计算出来后,还要根据 Nao 机器人与 FBX 模型的起始角度、旋转阈值、角度正负与增减方向等各方面(具体可见官方文档)的差异,对各自由度初步计算出来的旋转角度进行角度映射,最终得到适用于 Nao 机器人本身的旋转角度。

本程序正运动学部分,并未对 Nao 机器人建立复杂的运动学模型,而是根据其肢体数据(具体可见官方文档)为其建立了 FBX 模型,通过 FBX SDK 为 Nao 机器人各自由度输入旋转角度,再通过 FBX SDK 获取旋转之后的位姿,通过这种方法,将复杂的正运动学计算交给了 FBX 来进行。

在同一时刻/帧(即给 Nao 机器人模型输入人体模型对应时刻下的旋转角度),计算 Nao 机器人模型和人体模型的同一肢体部位(本程序以人体的右大臂和右小臂为例)的单位向量的夹角,以此表示模拟的准确度。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.