Code base for the project: Procedural Locomotion Engine For Digital Humans.
We recommend JetBrains CLion for the development. It is a paid software, but JetBrains has the student plan that provides free licenses. See this for a quick start guide.
-
Fork this repository and download the code.
-
Build the project (or build
locoApp). You can build the project in cmake Release mode for realtime performance: see this for a guide about cmake profile for CLion. -
Run the
locoApp. -
Select a model to play with:
Main Menu > Character > Model. We haveBobandDogfor examples.
- Press the space bar to play the app. You can give joystick command with arrow keys in your keyboard. If it does not move, don't freak out. It's normal. You have to implement a base (body) trajectory planning strategy as well as a inverse kinematics solver: recall a1. Once you've done that, you will see something like this.
- Of course, we don't want this crappy walking motion. Now, try your best to generate more natural motions for our poor Bob! But first, play around the code, and try understanding it. Don't hesitate to contact Dongho ([email protected]) if you have any question regarding the implementation.
- Implement an inverse kinematics solver:
src/libs/loco/include/loco/kinematics/IK_Solver.h. Complete TODO part. - Complete a base (body) trajectory planning
strategy:
src/libs/loco/include/loco/planner/LocomotionPlannerHelpers.h - Design a strategy for arm motions. Modify
src/libs/loco/include/loco/plannerfiles to implement your strategy. - Review biomechanics, computer graphics and robotics literature for a natural ankle motion. This is the most crucial step for successful demo!
- Most likely, you wouldn't need to modify the following source code files in
src/libs/guiandsrc/libs/utils: basic feature implementation for rendering, mathematical operation etc.src/libs/loco/include/loco/robotand corresponding cpp files.- But of course, if you need, feel free to do it.
- This repo will be keep updated, so please stay tuned. If you want to sync your repo with the new commits,
use
git rebaseinstead ofgit merge: see this for more details ofgit rebase. - Please actively use GitHub issue for questions and reporting issues on the code base!

