PLC Simulator
Online robot arm simulator

Online 6-Axis Robot Arm Simulator — 4 Lessons Free in Your Browser

Program a UR-style industrial robot arm with real URScript, run pick-and-place under live physics, and learn jogging, waypoints, payload, and cobot safety — all in a browser tab. No install. No robot. No vendor license. A free account is required: 5 of the 21 lessons are free, and Pro unlocks the other 16 plus the certificate.

Free account required, no card needed. 5 of 21 lessons are free; Pro unlocks the other 16 and the certificate.

A UR-style six-axis robot arm standing in a 3D factory cell in the browser-based robot arm simulator, with a parts table, safety railing and pallet.
The real 3D simulator: a six-axis robot arm in a factory cell. You write the URScript; the simulator solves the kinematics and runs it under physics.

What it is

A virtual robot arm simulator you run online, free to start

This is an online robot arm simulator: a 3D, UR-style six-axis articulated arm that you program with real URScript and watch run — without owning the robot, installing heavyweight offline software, or risking a real machine while you learn. You write the motion, the simulator solves the inverse kinematics and physics, and the arm does exactly what your program tells it to.

The arm has a gripper, the table has parts, and everything runs together in a single browser tab — the URScript interpreter, the six-axis kinematics, the rigid-body physics, and the work cell. You can jog the arm, build a full pick-and-place cycle, and have your program graded against a real goal. It is the same approach that made our PLC simulator work: practise the real skill, online, free to start.

A six-axis articulated robot arm in the online robot arm simulator, with rotary joints J1 through J6, a two-finger gripper, and the tool center point markedA six-axis articulated robot arm with a base and a two-finger gripper, its six rotary joints labelled J1 through J6.J1J2J3J4J5J6TCP
The six-axis arm you program: joints J1–J6 give it full reach and orientation, with the gripper’s tool centre point (TCP) at the working end.

Important

An industrial robot arm simulator, not a game

Search for “robot simulator” and most results are games — sandbox builders, Roblox experiences, fantasy robots. This is not that. This is an industrial and educational robot arm simulator for people learning to program real automation.

You program a realistic Universal Robots style six-axis arm in real URScript, and your programs are graded against engineering goals: place the part within tolerance, finish under the cycle-time budget, move without a collision, and stay within the collaborative-robot force limit. There is no make-believe and no toy physics — the skills you build here are the skills used to program robots on a real production line.

How it works

Jog, write URScript, run, grade

1

Jog the arm

Move the six-axis arm in joint space (rotate each axis) and in Cartesian / TCP space (drive the tool point in X, Y, Z). Jogging teaches you base vs tool frames and exactly where the tool center point sits before you write a line of code.

2

Write real URScript

Type actual UR commands in the editor — movej for fast joint moves, movel for straight Cartesian lines, set_digital_out and gripper control, plus waypoints, variables, and loops. The interpreter understands the real language, not a simplified stand-in.

3

Run it under physics

The simulator solves the inverse kinematics for each target pose, plans the joint trajectory, and runs it under rigid-body physics. Grasp a part and it follows the gripper; collide with the table or exceed a safe contact force and that is detected and surfaced.

4

Get a graded result

Each task defines success — part placed at B within tolerance, no collision, under the cycle-time budget, within the cobot force limit. Your program runs, is checked against those goals, and you get specific feedback on what to fix. That goal-based grading is what turns watching into learning.

What you can simulate

From a first move to a full pick-and-place cell

The 6-axis robot arm simulator models the things that actually matter when you program a real cobot cell — not just pretty motion.

Pick-and-place

The core skill: approach, grasp, lift, traverse, place, release — the backbone of real cobot work, built from movej and movel moves.

Waypoints & paths

Chain waypoints into a path and tune speed and acceleration so the arm flows smoothly through a sequence instead of stopping at every point.

Payload

Set the payload the gripper is carrying and see how mass changes the safe speed and the way the arm tracks its trajectory.

Collisions

The physics detects when the arm or the part hits the table, a fixture, or itself — so you learn to plan approach and retract heights that clear the cell.

Protective stop (cobot safety)

Exceed a safe contact force and the simulated arm triggers a protective stop, just like a real collaborative robot — teaching the safety habits cobot work demands.

Gripper & digital I/O

Open and close the gripper with set_digital_out, read and set signals, and actually pick something up rather than just waving the tool around.

The pick-and-place cycle in the 6-axis robot arm simulator: approach above the part, grasp, lift, traverse to the place point, lower, and releaseA repeating pick-and-place cycle around a loop: approach, close gripper, lift, traverse, place, open gripper.1Approach2Close3Lift4Traverse5Place6OpenLOOP
Pick-and-place — approach, grasp, lift, traverse, place, release — built from movej and movel moves.
Gripper control via digital I/O in the robot arm simulator: a digital output closes the two-finger gripper to grasp a part and opens it to releaseA two-finger robot gripper shown open (DO=0) and closed on a part (DO=1), controlled by a digital output signal.OPENDO = 0set DOCLOSEDpartDO = 1DO active
Drive the gripper with set_digital_out — a digital output closes the fingers to grasp and opens them to release.
Payload at the robot arm tool center point: the mass the gripper carries affects safe speed, reach, and how accurately the six-axis arm tracks its pathA robot arm holding a payload box at its tool centre point, with a mass and centre-of-gravity indicator and a small downward droop hint.3.0 kgCoGdroop
Payload — the mass at the TCP changes safe speed, reach, and how the arm tracks its trajectory.
Collaborative robot safety in the arm simulator: a speed-reduced safety zone and a protective stop triggered when the arm makes an over-force contactA collaborative robot surrounded by concentric speed-and-separation monitoring zones, with a protective-stop indicator when a person enters the inner zone.warningreduced speedstopPROTECTIVESTOP
Cobot safety — reduced-speed zones and force-limited protective stops, just like a real collaborative arm.
Real code

No drag-blocks-only toy and no invented pseudo-language. A first pick-and-place program in the simulator looks like this — and the exact same commands run on a physical Universal Robots controller:

# Pick a part at A, place it at B
set_tcp(p[0,0,0.15,0,0,0])        # tool centre point: 150 mm gripper
set_payload(0.8)                   # 0.8 kg part in the gripper

movej(home_q, a=1.4, v=1.0)        # joint move to a safe home pose
movel(pick_approach, a=1.2, v=0.3) # linear move above the pick
movel(pick, a=0.5, v=0.1)          # straight down onto the part
set_digital_out(0, True)           # close gripper
sleep(0.4)

movel(pick_approach, a=1.2, v=0.3) # lift straight up
movel(place, a=1.2, v=0.25)        # linear move to place B
set_digital_out(0, False)          # open gripper
movej(home_q, a=1.4, v=1.0)        # return home

The simulator parses this, solves the inverse kinematics for each target pose, plans the joint trajectory, and runs it under physics. movej moves fast through joint space; movel keeps the tool on a straight Cartesian line — the distinction every robot arm programmer has to learn, shown live.

movej versus movel on a 6-axis robot arm: a fast curved joint-space path compared with a straight-line Cartesian tool path between the same two posesTwo tool paths between the same two points: a curved joint move (movej) in cyan and a straight linear move (movel) in amber.ABmovej — joint arcmovel — straight line
movej curves fast through joint space; movel holds a straight Cartesian line.
How URScript becomes arm motion in the simulator: parse the commands, solve inverse kinematics per pose, plan a timed joint trajectory, and run it under physicsThree lines of URScript — movej, movel and set_digital_out — each mapped by an arrow to the corresponding motion on the robot arm.program.urpmovej(p1)movel(p2)set_digital_out(0,True)
Parse → inverse kinematics → trajectory → physics — the pipeline behind every Run.
Why it works

vs a real robot arm

A six-axis arm costs tens of thousands and one wrong move can damage it or the cell. The simulator lets you fail safely and repeat a task a hundred times — the only way to actually build skill — at zero risk and zero cost.

vs heavyweight desktop sims

Official offline simulators are capable but often ship as a Linux virtual machine or a paid desktop install that beginners struggle to set up. Ours opens in a browser tab on any computer, with lessons that teach from zero.

vs robot games

The robot games filling app stores teach nothing about automation. This is a real industrial arm in real URScript with engineering-grade grading — so your practice turns into job-ready robot programming skill.

A complete robot arm work cell in the simulator: a six-axis arm, a parts table with pick and place locations, a pallet, and a safety fence around the cellA top-down robot work cell: a central robot, an infeed conveyor, a pick fixture, a place pad, all enclosed by a safety fence.safety fenceconveyorpickRrobotplace
The arm never works alone — the simulator gives you a full cell with a parts table, pick and place stations, a pallet, and a safety fence to plan around.

Pricing

Free to play, Pro for the full course

Create a free account (no card needed) and 5 of the 21 lessons are free, with unlimited runs. A Pro subscription unlocks the other 16 lessons of the graded robot programming course and a certificate when you complete it. Upgrade only if you want the full curriculum and the credential.

Keep exploring

Questions

Robot arm simulator FAQ

Yes, to start. You run a 6-axis robot arm in your browser — no install and no hardware — with a free account (no card needed). The free tier gives you 5 of the 21 lessons with unlimited runs: jog the arm, write basic URScript moves, and run a simple pick-and-place. The other 16 lessons and the completion certificate are Pro.

Program a 6-axis robot arm in your browser.

No install. No robot. No vendor license. Real URScript, graded from zero — free to start.

Six-axis arm: poses, moves and cell I/O

Robot arm simulator: six-axis URScript motion, poses and gripper I/O

Direct answer

A robot arm simulator lets you program a six-axis arm without hardware and watch what each instruction does. This one runs a UR-style arm in the browser: you jog joints and the tool center point, write URScript such as movej, movel and set_digital_out, then run it under kinematics and physics and get graded on placement, collisions, cycle time and contact force.

This guide is written for automation students, PLC technicians moving into robot cells and instructors who want learners to reason about poses, move types, gripper I/O and protective stops before anyone stands at a teach pendant. The intended result is specific: the learner can write a pick-and-place program with deliberate approach and retreat poses, justify every joint or linear move, and diagnose an unreachable target, a collision or a protective stop from the program text and the graded result.

System map / 02

NODE 01observable

Base frame and pose vectors

URScript writes a pose as p[x, y, z, rx, ry, rz]: position in metres and orientation as a rotation vector in radians, measured from the robot base. Watching the pose readout while you jog shows which way +X and +Y actually point in the cell, which is the only reliable way to sanity-check a typed coordinate before the arm moves to it.

NODE 02observable

Tool center point

set_tcp tells the controller where the working point sits relative to the tool flange. With a 150 mm gripper and no TCP offset, every target is reached by the flange instead of the fingertips, so the part is missed by roughly the tool length. Define the TCP at the top of the program, then teach or type every pose against it.

NODE 03observable

Joint versus linear motion

movej interpolates each joint angle from start to finish. It is fast and tolerant of awkward wrist positions, but the tool follows an arc you did not specify. movel holds the TCP on a straight line, which approach, insertion and retreat moves need, at the cost of more joint travel and sensitivity to singular configurations along the path.

NODE 04observable

Singularities and reach

A six-axis arm loses a usable degree of freedom when joint axes line up: at a wrist singularity the fifth joint is near zero, at an elbow singularity the arm is fully stretched, and at a shoulder singularity the wrist passes near the base axis. Close to these, a short straight move demands very large joint speeds. A target beyond the envelope has no solution at all.

NODE 05observable

Payload and tracking

set_payload declares the mass the arm is carrying. A real controller uses it in its dynamic model and collision detection, and a wrong value is a common cause of nuisance protective stops. In the simulator the declared mass is applied to the dynamic arm model, so a heavier part visibly changes how closely the arm follows its planned trajectory.

NODE 06observable

Digital I/O as the cell contract

An arm rarely works alone. Digital outputs close the gripper and report cycle done or a fault to a PLC; digital inputs bring cycle start, part present and a safety-clear permissive back. The simulator I/O panel lets you toggle those inputs and keeps a trace of every output change, so a get_digital_in wait and its acknowledgement become visible events.

Procedure / 03

  1. 01

    Jog before you code

    Rotate each joint, then drive the TCP in X, Y and Z while watching the pose readout.

    Evidence: You can predict the axis and sign of a Cartesian jog before pressing the button.

    Avoid: Copying pose values from an example without knowing which frame they were taught in.

  2. 02

    Declare tool and load

    Open the program with set_tcp and set_payload that match the gripper length and part mass.

    Evidence: A reach task lands the fingertips, not the flange, inside the stated millimetre tolerance.

    Avoid: Leaving the TCP at the flange and compensating by hand-editing every target height.

  3. 03

    Lay out the path skeleton

    Send the arm to a safe home with movej, then use movel to an approach pose above the pick, straight down, and straight back up to the same approach pose.

    Evidence: Approach and retreat are vertical lines and the grader reports no collision.

    Avoid: Using movej for the last few centimetres into a fixture, where its arc can sweep through the part.

  4. 04

    Sequence the gripper

    Close the gripper with set_digital_out only after the arm has arrived, dwell with sleep, then lift; open it at the place pose before retreating.

    Evidence: The part travels with the gripper and is released at the target within tolerance.

    Avoid: Switching the gripper during motion or lifting before the fingers have finished closing.

  5. 05

    Tune for cycle time

    Raise v and a on free-air joint moves while keeping the final linear approach slow.

    Evidence: The graded run finishes inside the cycle-time budget without a protective stop.

    Avoid: Scaling every speed uniformly, including the contact move, and trading cycle time for a force trip.

  6. 06

    Break it deliberately

    Push one target out of reach, route a move through a fixture and delete the payload line, one change per run.

    Evidence: Each fault produces a specific failed check that you can explain and then reverse.

    Avoid: Editing several poses at once and losing track of which change caused the failure.

Diagnostic matrix / 04

Diagnostic symptoms, inspection points, interpretations and next actions for Robot arm simulator: six-axis URScript motion, poses and gripper I/O
Observed symptomInspectInterpretationNext proving action
Program stops with a reachability errorThe failing target pose, its distance from the base, its orientation values and the TCP offset in force at that lineNo joint solution exists for that pose; a long tool offset or a steep tool angle can push an apparently nearby point outside the envelope.Move the target closer or relax the orientation, then re-run that single move before restoring the rest.
Gripper closes on air beside or above the partThe set_tcp values, the pick pose height and the part position shown in the cellThe pose is being reached by the wrong point on the tool, usually because the TCP is missing or offset along the wrong axis.Run a reach-only task and compare the reported millimetre error with the tool length.
Collision while travelling to the pickWhich move collided, its move type, and its start and end posesmovej fixes only the endpoints; the tool path between them is an arc that can dip into fixtures or the table.Insert a clear approach pose above the obstacle and make the final descent a movel.
Short straight move produces a large wrist rotationThe fifth joint angle, how far the arm is extended and whether the path passes near the base axisThe linear path runs close to a singular configuration, where holding a straight TCP line needs disproportionate joint motion.Change the tool orientation for that segment or reach it with movej between two clear poses.
Protective stop during the place moveFinal approach speed, place height relative to the surface, the declared payload and where contact occurredContact force exceeded the task limit; driving a held part into the surface is the usual cause.Stop the linear approach a few millimetres above the surface, slow it down and release there.
Arm waits indefinitely for the PLCThe input index polled by get_digital_in, its state in the I/O panel and the signal traceThe program is waiting on the wrong input, or the start request was removed before the robot sampled it.Check the index against the signal list and hold the request until the robot answers with cycle done.

Product evidence / 05

What the browser practice can actually demonstrate

The simulator parses URScript, solves inverse kinematics for each pose target, builds a timed joint trajectory and tracks it under rigid-body physics. Graded checks report whether the program runs, whether the tool or part reached its target within tolerance, whether anything collided, whether the cycle-time budget held and whether contact force tripped a protective stop.

Answer surface / 07

When should I use movej and when movel?

movej moves every joint from its start angle to its end angle, so it is usually the quickest move and copes with awkward wrist positions, but the tool path between the endpoints is curved. movel keeps the tool center point on a straight line. Use movej for free-air travel and movel for approach, pick, place and retreat.

What is a TCP and why should it be set first?

The tool center point is the working point of the tool, such as the gap between gripper fingers, defined as an offset from the flange. Every pose target is reached by the TCP. If it is left at the flange, all taught positions are wrong by the tool length, and correcting them pose by pose hides the real mistake.

What causes a robot arm singularity?

A singularity occurs when two or more joint axes align and the arm can no longer move its tool freely in every direction. Typical cases on six-axis arms are a straight wrist, a fully stretched elbow and the wrist passing close to the base axis. Linear moves near these configurations need very high joint speeds, so choose poses that stay clear of them.

Why does my simulated arm trigger a protective stop?

In this simulator a protective stop means contact with an obstacle exceeded the task force limit. The usual causes are a place or pick pose set below the surface, a fast final approach or a joint move whose arc hits a fixture. Raise the target slightly, slow the last linear move and add a clear approach pose.

How do a PLC and a robot arm exchange signals in a cell?

Most cells use a handshake of discrete signals or fieldbus bits: the PLC reports ready and requests a cycle when a part is present, the robot answers ready, cycle done or fault. The arm program waits on inputs and sets outputs; the PLC program sequences the cell. The robot-handshake scenario practices the PLC side of that exchange.

Does simulated cycle time match a real robot?

No. The simulator times a planned trajectory from your speed and acceleration values on a teaching model. A real controller applies its own motion planner, payload limits, safety configuration and speed settings, so physical cycle time can differ. Use the simulated budget to compare your own program versions, then measure the real cell.

Can I practice robot types or languages other than a UR-style arm?

The lesson list also includes SCARA, Cartesian and delta robot exercises and pick-and-place lessons written in ABB RAPID, KUKA KRL and FANUC TP style, most of them in the Pro tier. They are learning subsets for comparing concepts, not vendor controllers, and should be verified in the manufacturer tools before real use.

What should I check before running a simulated program on a real arm?

Confirm the TCP, payload, frames and home position against the physical tool and cell, and review every pose because the real cell layout will differ. Run first at reduced speed under the site procedure, with guarding and safety configuration already validated by qualified people. A simulated pass is design evidence only, not a commissioning result.

Industrial robotics path

Progress from motion concepts to a complete cell sequence

Practice coordinates and commands, connect the robot handshake to PLC state, then validate safety and vendor-specific behavior in the correct tools.