# Off-Line Programming

Robpod Studio can be used to perform **off-line programming** using the [connected simulator ](https://docs.robpod.cloud/simulation/connect-a-simulator)when a real robot is not available.

Integrated simulator functions for off-line programming are provided by the ![](https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FCaLRTJIdgactwErov42Q%2Fsimulator.png?alt=media\&token=fc654fd7-d397-496a-baa5-de054035b417) **Simulator Tool Bar**:

<table data-header-hidden><thead><tr><th width="234"></th><th></th></tr></thead><tbody><tr><td><img src="https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FKTE73283GjCIRVc9bKUF%2Frun.png?alt=media&#x26;token=cc5839c3-c69c-48a2-a321-2fef8a6577ef" alt=""> <strong>Run On Simulator</strong></td><td>Run the selected robot script inside the simulation environment.</td></tr><tr><td><img src="https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FiWsn8yDdabINiq49kIs7%2Fjoint_pose.png?alt=media&#x26;token=dd5bf917-386a-43de-8a93-0826e4bf69cb" alt=""> <strong>Add Joint Pose</strong></td><td>Add current simulated robot joint pose to robot script.</td></tr><tr><td><img src="https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FatTkCp1qc2p2mayylLD3%2Ftask_pose.png?alt=media&#x26;token=f4381815-95fa-4fb2-99d8-b84015c03616" alt=""> <strong>Add Tool Pose</strong></td><td>Add current simulated robot tool pose to robot script..</td></tr><tr><td><img src="https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FYLOJQtkueLhbfH4x6R4y%2Fmovej.png?alt=media&#x26;token=114d82f3-b789-47f0-a233-44dd6d04c9b6" alt=""> <strong>Add MoveJ</strong></td><td>Add MoveJ command with current simulated robot joint pose to robot script.</td></tr><tr><td><img src="https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FvMw41RvRpperpSeJiDKx%2Fmovel.png?alt=media&#x26;token=e6bb2267-760c-4651-9d15-9514444b5158" alt=""> <strong>Add MoveL</strong></td><td>Add MoveL command with current simulated robot tool pose to robot script.</td></tr><tr><td><img src="https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FMncxlZePGowVH7ZI3YHp%2Fmove_to.png?alt=media&#x26;token=2faa8bc7-d3f6-4ff8-98ee-f3b2eca1371b" alt=""> <strong>Move To</strong></td><td>Move simulated robot to selected target position. Place mouse cursor on script position to determin the target pose.</td></tr></tbody></table>

<figure><img src="https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FbLKqspqg4qdhq0y5qr3g%2Fimmagine.png?alt=media&#x26;token=15571b0c-d374-4c0c-ac3a-c22e222f878c" alt=""><figcaption></figcaption></figure>

In order to develop your robotic application with off-line programming approach:

* move the simulated robot inside the simulator environment to target positions
* use ![](https://175138337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fvxlh3prlGsBGF30oqbYW%2Fuploads%2FCaLRTJIdgactwErov42Q%2Fsimulator.png?alt=media\&token=fc654fd7-d397-496a-baa5-de054035b417) **Simulator Tool Bar** functions to acquire target positions and compose the robot script
* run the program inside the simulation environment to test the application
* run the program on real robot

{% hint style="info" %}
[Live Auto Completion](https://docs.robpod.cloud/advanced-scripting/live-auto-completion) can be used also when a simulator is connected to acquire live robot position using the simulator.
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=vVp8Fv1z5FA>" %}
