> For the complete documentation index, see [llms.txt](https://docs.robpod.cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.robpod.cloud/hmi-designer/working-examples/universal-robots/path-recording-example.md).

# Path Recording Example

### **HMI Panel File**

<figure><img src="/files/0AkntqnF25lUovKqyNu0" alt=""><figcaption></figcaption></figure>

{% file src="/files/BC3yZSMAfZfEVzCQJxNV" %}

### **Robot Program File**

```python
# Robot script file

recorded_points = 0
executed_points = 0

recording = False
executing = False

# list to store recorded waypoints
path = make_list(500, p[-0.190, -0.610, 0.261, -0.00, 3.12, 0.04])

# record function
def record():
    freedrive_mode()
    recording = True

    recorded_points = 0

    while recording and recorded_points < 500:
        path[recorded_points] = get_actual_tcp_pose()
        sleep(0.2)
        recorded_points = recorded_points + 1
    end
    recording = False

    end_freedrive_mode()
end

# play function
def execute():
    executing = True

    executed_points = 0
    while executing and executed_points < recorded_points:
        pose = path[recorded_points]
        q = get_inverse_kin(pose)
        
        # just an example using plain servo j command
        # t parameter must be changed acordingly to real application scenario
        servoj(q, t=0.2)
        executed_points = executed_points + 1
    end

    executing = False

end

```

{% file src="/files/1dbS2Sm87edAzMidBKNi" %}
