Skip to content

Plan of Approach

Nils Meijer edited this page Mar 29, 2024 · 1 revision

Create a machine learning agent capable of reaching a certain height on a wall.

Some resources:
Magnus shocked by world’s most advanced climbing AI
AI vs. Stairs (deep reinforcement learning). While not necessarily related to bouldering, this video shows a machine learning agent that's put in a ragdoll, so perhaps it's to some use to me.

Plan of Approach segments

What does the AI look like, and what is it capable of?

  • Some way to grab and hold on to the wall

    • Hands & feet - sensor in each
      • Unity ragdolls?
    • Colliders on the wall
  • A way to detect where grabbable points are

    • Raycasts
  • The AI can exert force from its hands & feet, to move towards a position.

How are rewards/punishments handled?

  • A reward when:
    • it manages to reach a new record height
    • it grabs a stone which has a position above the agents height
    • it has no exhaustion (explained below)
  • Some sort of "exhaustion" parameter
    • This should encourage trying to gain stability; holding onto the wall with as many body parts as possible (so preferably both hands and feet)
    • Hanging on to a wall with less than 4 body parts will gradually start to fill up the exhaustion meter.
    • When the exhaustion meter reaches 100, the agent gives up and falls down.
    • Exhaustion grows when the agent tries to counter gravity
      • When the wall is slightly inclined, the agent is able to rest and decrease its exhaustion meter. * However, having an exhaustion meter at 0 will result in punishment. This should prevent the agent from being too comfortable in its spot.
      • When the wall is straight up (no angle), there is no difference in exhaustion acceleration.
      • When the wall is slightly declined, the agent has to make use of all his "muscles" to hold on.
  • A punishment when a condition is not satisfied
    • When it touches the ground
    • Becoming "exhausted"

What does the testing environment look like?

  • A level
    • Increasing difficulty
    • Should be scalable and yet diverse (randomness implementation)
      • Procedural generation?
        • A wall prefab. Contains script that depending on selected difficulty, places x amount of grabbing stones for every x unit on the wall.
        • Grabbing stone prefabs. Are classed per difficulty.

Wall difficulties

1. Beginner
2. Intermediate
3. Strong climber
4. Expert
5. Boulderman

Let's define what each difficulty looks like.

1. Beginner

  • Basic wall structure. Short height
  • Plenty of grabbing points to hold on to - 100%
  • Slight wall incline. This allows for more stability and lets the agent rest, decreasing the exhaustion meter.

2. Intermediate

  • Longer wall height.
  • A bit less grabbing points - 80%
  • No wall incline.

3. Strong climber

  • Even longer wall height
  • Rotating wall (cylinder shape)
  • Even less grabbing points - 60%
  • Wall overhangs

4. Expert

  • Collectibles on the climbing course: incentive for riskier climbs
  • Even less grabbing points - 50%

5. Boulderman

  • Time pressure
  • Rocks falling down
  • Collectibles on the climbing course: incentive for riskier climbs
  • Very little grabbing points - 30%

Research & brainstorming

Ragdoll implementation

Starting with different concept

Clone this wiki locally