# Path Recording Example

### **HMI Panel File**

<figure><img src="https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FA5C4yyEdcZsSCZ2jud3U%2Fimmagine.png?alt=media&#x26;token=319b7630-a883-41bd-8274-5f726861caa6" alt=""><figcaption></figcaption></figure>

{% file src="<https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FicHP3vbwWK6PjyRcmZH6%2Frecord_hmi.hmi?alt=media&token=1fa3dbc4-fe5d-4108-af78-78b28149aa3e>" %}

### **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="<https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FvEWNev1XNnW1CCfxEsie%2Frecord_task.urp?alt=media&token=054ebce9-833e-472c-87ac-c433747f58f0>" %}
