Help center

pulpRobot help

Robot design and motion kinematics simulation

Open pulpRobot pulpRobot ›

pulpRobot lets you design a robot (articulated arm, SCARA arm, mobile robot, hexapod), animate its motion keyframe by keyframe and check what its motors will have to deliver. It computes forward and inverse kinematics, torques and collisions, offers a physics simulation, and exports the result as URDF or as an Arduino or MicroPython program.

Getting started

  1. Open pulpRobot. The first time you open it, an example appears on its own so you can see what pulpRobot looks like: the Pick-and-place arm, a 6-axis arm with a gripper that picks a part from one station and places it on the other, its path playing in a loop. Start from scratch or Remove the example clears it in one click, and File › See the example again brings it back. Nothing is saved until you change it, and no motor is driven. The New menu offers a 6-axis arm, 3-servo arm, SCARA arm, Mobile robot, Hexapod and Empty robot.
  2. In Design mode, the Structure tab shows the tree of links and joints. Select a link to set its parts, material, mass and joint (type, axis, range, motor) in Properties.
  3. Switch to Motion mode. In Control, move each joint with its slider, or drag the tool with the 3D handle: inverse kinematics works out the pose.
  4. Add Keyframes on the Timeline (K adds the current pose), then play the animation with Space. Alerts (collision, torque or speed beyond the motor, unreachable point) appear on the timeline.
  5. Open Export to get a URDF, an Arduino or MicroPython program, setpoints as CSV, a video or an image of the view.

Common tasks

In Structure, select the parent link, then Add a jointed link. The Library tab adds a shape (box, cylinder, sphere, aluminium profile, servo horn) or a component to the selected link: servos, stepper motors, DC motors, wheels, sensors, boards, batteries. Import a part… accepts an STL, OBJ or glTF mesh; From the suite lists the pulpCase enclosures and pulpCircuit boards saved on this device.

How do I choose a joint's motor?

Select the joint, then pick a motor in the Library: it becomes the joint's actuator, with its torque and speed. The Torque needed here field and the coloured ring in the view show the load. Automatic › Size the motors… suggests, for each axis, the lightest motor that handles the trajectory with the margin you choose; apply them all, or replace only the under-sized ones.

How do I create a trajectory?

Put the robot in a pose and add a keyframe, then repeat. For each keyframe, set in Properties the time, the Motion (Joint, Straight line or Circular arc), the Speed profile (S-curve, trapezoid or constant) and the Gripper action (grip or release). The Charts tab plots positions, velocities, accelerations and torques.

How do I avoid obstacles?

Add objects with Add an obstacle (Structure tab, Scene section). Automatic › Avoid obstacles replans colliding moves by adding waypoints. A move whose end point touches an obstacle cannot be fixed: move that keyframe first.

How do I generate a pick-and-place?

Add an Object to pick (Structure tab, Scene section) and select it. In its Properties, the Automatic pick and place section offers a destination (Place on): choose it and click Generate the motion. The robot needs a tool. pulpRobot adds the approach, descent, grip, lift, a transfer that avoids collisions, place and retreat, with durations the motors can follow.

How do I teach the robot by showing the gesture?

Automatic › Show the gesture (camera)…: hold your arm out in front of the camera and the tool follows your hand. Pausing records a waypoint. Without a camera, the Example video or a video file of your own will do. Durations are then fitted to the motors.

How do I define the tool and see what the robot can reach?

In the robot's properties, Define a tool (carried by a link, with its offset and orientation). The Inverse kinematics setting chooses Full pose (6D) or Position only. The view options show the Workspace, the Tool path, Centres of gravity, Torques (rings), transparency and the link frames. Dexterity and the singular-configuration warning flag poses where the tool loses a direction of motion. For a serial arm, a table of DH parameters can be read and edited.

How do I fix torque or speed alerts?

The timeline alerts (collision, torque or speed beyond the motor, point out of reach) are detailed in the Charts tab (positions, speeds, accelerations, torques; at least two keyframes). Automatic › Fit durations to the motors lengthens moves where a motor can't keep up; otherwise pick a stronger motor or run Size the motors….

How do I test in a physics simulation?

Switch to Physics mode, then Start the simulation: gravity, contacts and friction apply, and each motor is limited to its real torque. Play the timeline to see whether the robot keeps up; a saturated motor is flagged. Drive a mobile robot with the arrow keys.

How do I program the real robot?

Export › Arduino code… or MicroPython code…: choose Keyframes (short program, interpolation on the board) or 50 Hz table (exact trajectory, more memory). The code drives servos, stepper motors (STEP and DIR pins) and DC motors (PWM and direction, open loop). Copy it, download it, or click Open in pulpLab to upload it with pulpLab.

Supported formats

FormatOpenSaveNotes
pulpRobot (.probot)YesYesNative, lossless format.
URDF (.urdf, .xml)YesYesExport: computed inertia, tool as a “tool0” link.
URDF package (.zip)YesYesURDF with its STL, OBJ or COLLADA (.dae) meshes; the export ships STL files.
STL, OBJ, glTF (.glb, .gltf)Yes (part)NoAdded to the selected link; unit guessed (mm or m).
Part (.ppart), enclosure (.penclosure), board (.pboard)Yes (part)NoFrom the suite (pulpCase, pulpCircuit).
Arduino sketch (.ino), MicroPython script (.py)NoYesProgram for the trajectory.
Setpoints (CSV)NoYesSampled trajectory.
Video (.webm), image (.png)NoYesAnimation and 3D view.

Known limitations:

  • .xacro files are not read: convert them to URDF first.
  • A bare URDF does not bring its meshes: import the package's ZIP archive to get them. Unreadable meshes are replaced by boxes.
  • For glTF, prefer a .glb (single file).
  • In the physics simulation, the robot's own parts do not collide with each other (only with the ground and objects).
  • Generated code does not drive the industrial actuators from the library: they are reported as ignored.
  • Video recording depends on the browser and is not available everywhere.

Keyboard shortcuts

ShortcutAction
Ctrl+SSave
Ctrl+Shift+SSave as
Ctrl+OOpen
Ctrl+ZUndo
Ctrl+Y or Ctrl+Shift+ZRedo
SpacePlay or pause the timeline (at least two keyframes)
KAdd a keyframe with the current pose
Home / EndGo to the start / end of the timeline
DelDelete the selected keyframe
EscClear the selection
Arrow keysPhysics mode, mobile robot: drive
Ctrl + mouse wheel on the timelineZoom the timeline
↑ / ↓ in a number fieldIncrease or decrease (Shift: step × 10)

On a Mac, use Cmd instead of Ctrl. Ctrl+J opens pulpAssist and Ctrl+Shift+O the open documents panel.

AI in pulpRobot

Show the gesture uses a small body-recognition model (about 6 MB), downloaded the first time you use it and then kept on the device. It runs on your device: camera images never leave it. If no person is recognised, simulated demonstration landmarks are used and the app says so. See AI models.

The other automatic features (inverse kinematics, obstacle avoidance, pick-and-place, motor sizing) are ordinary calculations, not AI.

If you have set up pulpAssist, the assistant can describe the open robot (structure, motors, masses, timeline, alerts), compute a pose that reaches a point without changing anything, add a waypoint or adjust the pose. Each change is a single undoable step; the robot's data is sent to the service configured for the assistant. Always check the result in the view and on the timeline.

FAQ and troubleshooting

“Under-sized motor” appears.

The torque needed in the pose or along the trajectory exceeds what the motor can deliver. Choose a stronger motor, add a gear reduction, lighten the links or use Size the motors….

“Out of reach”: the tool cannot get to the point.

The point is outside the workspace or needs an impossible orientation. Show the Workspace in the view options, or set inverse kinematics to Position only for an arm with fewer than 6 axes.

My URDF opens with boxes instead of parts.

The meshes were not supplied or could not be read. Import the full ZIP archive of the ROS package, including its meshes folder.

The camera does not start for “Show the gesture”.

Allow camera access in your browser, or use the example video or a video file. The model needs a connection the very first time it is used.

Where are my robots?

On this device, in the space reserved for the browser, with a recovery draft; clearing the browser's data erases them. File › Save creates a .probot file on your disk. See documents and backups.

Does pulpRobot work offline?

Yes, once loaded. The physics simulation and Show the gesture need a first load, so use them once while online.

In the same space