Git Product home page Git Product logo

promenade's Introduction

Promenade

Code repository for Master's Thesis: "Performance of Physics-Driven Procedural Animation of Character Locomotion For Bipedal and Quadrupedal Gait"

Video:

Simulation video showcase

The MIT License (MIT)

Copyright (c) 2015 Jarl Larsson

For full license information, see all-licenses.md

promenade's People

Contributors

jarllarsson avatar

Stargazers

 avatar Hiko ひこ 黑口 avatar tanaka-tomonori-ab avatar  avatar Roman Hossain Shaon avatar Fabio Dias Rollo avatar Alvin avatar Albert Tavares de Almeida avatar  avatar  avatar Brynjard Øvergård avatar  avatar Zeyu Zhang avatar  avatar Pho Hale avatar  avatar  avatar Romulo Messias avatar Starry Animation avatar Sergey Makeev avatar  avatar CEONo1984 avatar  avatar Jason avatar Jesper avatar

Watchers

James Cloos avatar  avatar  avatar

promenade's Issues

Gravity Compensation is only applied for the foot, not every link.

Gravity compensation is only calculated for the Jacobian of the foot. The resulting torque is applied for all links.
What I interpreted wrong here is that I apply this torque additively to the links, when I should had calculated new Jt for each link and applied the torque to all its parent links.

There might be a nasty error hiding in App.cpp or similar in release

When letting the variable "quadruped"( in App.cpp, which tells whether or not to create a quadruped) depend on another variable, the biped simulation wouldn't work. This was independent of the value of quadruped.
As long as there was a branch where it could be set to true, the biped would fail, even if the branch path wasn't taken.

Think I fixed it for now. But I don't know what the actual error was.
The error seem to occur on line 339 to 344:
if (quadruped)
{
lLegHeight = scale_0.4f;
footHeight = scale_0.05f;
footLen = scale*0.2f;
}
lLegHeight was being written to (it seemed) even if "quadruped" was false. I can not explain it other that that the error must've been somewhere else and will show up again when I least expect it... :(

This is probably an error caused by something like wrong operator usage(like == instead of = or + instead of += for instance). But I cannot find anything using static code analysis.

Falling directly on start. No strength in legs whatsoever. They should be straight at least, to allow for future movement.

The model seems to weak to even lift its feet. It is allowed to fall unoptimized, but there should at least be some form of strength in the legs at start.

Discovered that there is a large difference in the VF forces being applied in unity and C++. The ones in C++ seems to grow infinitely large (downwards), the ones in Unity seem to more correctly match the error in orientation needed to be adressed. Can this be due to the currently larger PD gain in the LF in c++? Either way, the direction (down) still seem off in that case.

I've also made the feet huger and uniform, in order to make the model overall stabler, while I try to find the source of the absolute non-stiffness in the legs.

Creating a heavier LF results in stronger corrective movement in the legs. Probably as it then forms a firmer base for applying the GC VFs.

Feet collision not enabled!

Related to #12

I never fixed this!
In controllersystem in isincontrolledstance:
bool isTouchingGround = false;
//isFootStrike(p_lf,p_legIdx);

The collision check is still commented out!
Reenable this and try to find the bug as to why not all characters receive the correct collision data.

Character can't be too far outside the world center or the simulation falls apart.

Possibly, the calculations(either in bullet or in the locomotion sim, or both) are too reliant on floating point precision to work with a certain parameter set outside the area in which it was generated (which is in the world center at the moment) or there is another bug somewhere in the locomotion sim which causes this.
Quick fix to allow for visualizations has been implemented as a render offset (m_positionOffset in the transform component), which is only used by the renderer.

IK is initiated incorrectly

The resulting foot pos is wrong for the first iterations of the IK.
The starting hip pos is also a tiny bit off. Not as much as the feet though. And the hip pos does not get better after time, which the feet does.

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.