技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

深度技术分析:ihmc-robotics-software

项目背景与痛点

ihmcrobotics 开发的 ihmc-open-robotics-software 是一个旨在推进机器人技术的开源项目,尤其在腿部运动算法和基于动量的控制核心方面有着卓越贡献。该项目支持了世界顶级机器人,例如人型机器人、奔跑的鸟类机器人、外骨骼以及机械装置等。它解决了机器人在不平坦环境中行走和奔跑时的稳定性挑战,这是机器人领域的一个重要痛点。

在现有解决方案中,无论是为专业机器人还是为消费级产品,实现稳定的腿部运动都不是易事,尤其是需要考虑动能管理和姿态控制。现有的技术要么过于复杂,要么不能在实际环境中可靠运行。通过 ihmc-open-robotics-software,开发者可以更为轻松地实现稳定高效的机器人控制,并且通过对算法进行模块化处理,使得系统更容易被集成到不同类型的机器人平台中。

核心技术揭秘

技术架构

该软件的核心在于其优化的腿部运动算法及基于动量的控制器。动量控制器使得机器人在动态环境中保持平衡和稳定,是一个复杂的系统。核心技术栈包括优化算法、动力学仿真、控制策略等。

下面通过一个简化的数据流图来阐述ihmc的核心技术架构:

graph TD A[用户输入] --> B{"命令解析"} B -->|"解析通过"| C[总控制核心] B -->|"失败"| D[错误处理] C --> E{"动力学计算"} E -->|"计算结束"| F[控制算法输出] E -->|"失败"| G[重试或回退逻辑] F --> H[执行命令] H --> I{"传感器反馈"} I -->|"数据有效"| J[状态更新] I -->|"数据无效"| K[诊断校正] J --> L[返回用户] K --> L

关键实现原理

ihmc使用基于动量的方法来掌握机器人的运动状态,通过实时探测执行的动力学计算,调整姿态并维持控制策略。核心模块实现了动量优化控制器,可在复杂的地面环境变化时,确保机器人的行走和奔跑动作平稳流畅,无明显偏移或失去平衡。算法的设计极大地减少了实现稳定腿部运动的复杂度,同时也提高了算法的适应性和集成性,为复杂系统的构建奠定了可靠基础。

功能亮点与差异

与市场上其他类似工具相比,ihmc-open-robotics-software具有的独特设计包括但不限于高适应性的腿部运动控制算法和高效的动量优化模块。这些亮点使其能够适应并运行在不同类型的机器人上,从而展示出明显的性能优势和功能差异化。通过算法模块化和高度可配置的控制参数,开发人员得以轻松实现机器人的定制化需求,从小型桌面机器人至大型外骨骼装备。

应用场景与落地建议

在开发中实际应用时需要注意的一点是,该软件的核心算法虽然性能出色,但是对硬件环境提出较高要求,因为它涉及大量的实时动能管理计算。适用的场景应该是那些对机器人稳定性要求极高,可以配备高性能计算资源的项目。如用于科学研究项目中复杂地形下的探索、大型外骨骼装置的日常使用等。

综上,ihmc-open-robotics-software可以应用于任何需要高效腿部控制功能的机器人项目,并特别适合关注机器人能力发挥且能够匹配硬件需求的场景。开发者应该结合项目特点,合理选用ihmc中的功能模块以提高项目效率和机器人表现。

综合评价

ihmc-open-robotics-software是一个具有前瞻性的开源项目,解决了机器人腿部运动控制这一行业痛点。实现了增强的动量优化算法和高效的控制策略,但是在硬件性能上有一定的依赖,这将影响其在低端硬件上的实际应用效果。从开发者的角度来看,该项目提供了强大的技术和算法资源,极大地减少了开发与集成的复杂度,而对于用户和终端研发团队而言,它也展现出了高度的稳定性和适应性,适合用于需要高性能腿部运动控制的复杂机器人项目。

关于

GitHub 原始描述(英文)

Robotics software featuring legged locomotion algorithms and a momentum-based controller core with optimization. Supporting software for world-class robots including humanoids, running birds, exoskeletons, mechs and more.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
576
价值分
229
活跃状态
活跃

语言占比

Batchfile
C
C++
CMake
CSS
Cuda
Dockerfile
GLSL
Java
PostScript
Python
Shell
TeX

README

IHMC Open Robotics Software

Compile: Compile Test (3000+ tests): Test

Download <-- Download from Bintray

Tested Platforms

Robots
  • Atlas
  • Valkyrie
Developers

We test all of our software on OSX, Windows, and Ubuntu. It is likely to work on other platforms but not necessarily tested.

Branches

This repository uses the git-flow branching model. You can find more about git-flow here.

Licensing

All of the software in IHMC Open Robotics Software is licensed under the Apache 2.0 license.

Getting Started

Using IHMC Open Robotics Software .jar releases with Maven/Gradle

The release .jars for the various IHMC Open Robotics Software packages are hosted on Bintray. You can browse the release packages at https://bintray.com/ihmcrobotics/maven-release. Instructions for adding the Maven repository and identifying the artifacts can also be found on Bintray for each package.

At a minimum, you will need to have the following repositories declared in your build script to use IHMC Open Robotics Software .jars:

repositories {
   maven {
      url  "http://dl.bintray.com/ihmcrobotics/maven-release" // IHMC Code releases
   }
   maven {
      url  "http://dl.bintray.com/ihmcrobotics/maven-vendor" // Third-party libraries that we have vendored for various reasons
   }

   /* You will also need to add either jcenter() or mavenCentral() or both, depending on your preference */
}

Developing with IHMC Open Robotics Software from source

Requirements

IHMC Open Robotics Software uses the Gradle build system, and requires JDK 8 with JavaFX. We also strongly suggest an IDE, either Eclipse or IntelliJ (Ultimate or Community is fine). Currently, we require Gradle 4.10+.

Installing Gradle: https://gradle.org/install/

Companion Software

Other IHMC Libraries

IHMC Open Robotics Software both depends on and is depended on by many other IHMC Robotics Libraries. A small sampling of our other software includes:

You can find all of our other repositories as well as the ones above at https://github.com/ihmcrobotics

ROS API’s

We provide a native ROS 2 API for many of the core components in our software stack. You can find the .msg definitions for use in your own projects here: https://github.com/ihmcrobotics/ihmc_interfaces

We have ROS 1 support via the ROS 2 ros1_bridge package. You can find the ROS 1 message definitions and instructions on using the ROS 1 Bridge here: https://github.com/ihmcrobotics/ihmc_msgs

IDE Support

Our Gradle models are tested in IntelliJ IDEA 2018 (both Community and Ultimate) with the Gradle plugin. Eclipse 2018.09+ or higher with the Buildship plugin. The Buildship plugin is bundled with the Eclipse IDE for Java Developers (but not Java EE Developers). It can always be manually installed to any version of Eclipse using the installation instructions.

Building .jars

IHMC Open Robotics Software is pre-configured for generating Maven publications. You can publish directly from the source code right in to your local Maven repository, e.g. the $HOME/.m2 directory. These builds will be tagged with a build “version” of "LOCAL" instead of an incrementing version number.

An example workflow for developing against a local clone of the software:

  1. Clone IHMC Open Robotics Software
  2. Make modifications
  3. Publish to your local $HOME/.m2 repository

To publish jars to your local Maven repository:

$ cd /path/to/ihmc-open-robotics-software
$ gradle publishAll -PcompositeSearchHeight=0

To depend on the jars in your local Maven repository:

In this example we’ll have a compile-time dependency of the locally built Simulation Construction Set project. In the build.gradle of the project you wish to have link against Simulation Construction Set:

repositories {
  mavenLocal()
  <your other repositories>
}

dependencies {
  compile group: "us.ihmc", name: "simulation-construction-set", version: "LOCAL", changing: true
}
Creating a project

To create a project that uses IHMC Open Robotics Software, your project hierarchy needs to take a particular form.

First be sure you have completed the section above titled “Clone repositories”.

Next, create your project folder:

mkdir -p src/ihmc/my-project-a

Follow the project setup tutorial at https://github.com/ihmcrobotics/ihmc-build#quick-project-setup.

Your directory structure should now look something like:

src/ihmc
├── my-project-a
│   └── build.gradle
│   └── gradle.properties
│   └── settings.gradle
├── my-project-b
│   └── ...
├── ihmc-open-robotics-software
│   └── atlas
│   └── common-walking-control-modules
│   └── ...
├── my-multi-project-c
│   └── subproject-a
│   │  └── build.gradle
│   └── subproject-b
│      └── build.gradle
├── ...
├── build.gradle
├── gradle.properties
└── settings.gradle

If this is set up correctly, you will have applied the ihmc-build plugin and use the dependency resolver methods exposed by the build extension. Alternatively, you can manually identify dependencies on projects using the normal Gradle syntax for project dependencies. A sample build.gradle dependency block:

/* Normal Gradle way */
dependencies {
  compile project(':ihmc-open-robotics-software:ihmc-java-toolkit')
  testCompile project(':ihmc-open-robotics-software:ihmc-java-toolkit-test')
}

/* ihmc-build way */
mainDependencies {
  compile group: "us.ihmc", name: "ihmc-java-toolkit", version: "source"
}
testDependencies {
  compile group: "us.ihmc", name: "ihmc-java-toolkit-test", version: "source"
}

Maintainers

评论

暂无评论