Skip to content

Running programs

A program is a list of moves, delays, I/O and gripper commands. PAROL6 runs programs in two ways.

RBTscript in the commander software

The commander's Program window takes an RBTscript program: one command per line, MoveJoint, MoveCart, MoveCartRelTRF, Delay, Output, Gripper, with Begin() and End() or Loop() around it. The command list next to the window inserts a command with the robot's current pose as its arguments, which is how you teach points: jog to the pose, click the command. Start runs the program, Stop halts it.

Begin()
MoveJoint(90,-90,180,0,0,180,t=3)
MoveCart(0,263,242,90,0,90,t=2)
Output(1,HIGH)
Delay(1)
Output(1,LOW)
End()

RBTscript has the language and Examples has programs to start from. Programs are plain text files you can keep and share.

Python with the Python API

A Python script that calls the client is a program: every motion call queues a move on the controller, and the script waits for it or not, as you choose.

from parol6 import RobotClient

with RobotClient() as rbt:
    rbt.home(wait=True)
    rbt.select_tool("SSG-48")
    rbt.tool.calibrate()
    rbt.delay(2)                  # the SSG-48 needs about 3 s; calibrate() waits only 2 s
    rbt.move_j([90, -90, 180, 0, 0, 180], speed=0.5)
    rbt.move_l([0, 263, 200, 90, 0, 90], speed=0.3)
    rbt.tool.close(speed=0.5, current=0.4)
    rbt.move_l([0, 263, 242, 90, 0, 90], speed=0.3)
    rbt.tool.open()

The Python API also runs programs written for other tools, and from other machines: the controller accepts commands over the network from any client, so a program can run on a laptop while the controller runs on the PC at the robot. The Python API is the guide.

Simulate first

Both programs have a simulator. The commander opens its 3D window with the GUI and mirrors the robot; the Python API's controller runs with simulator(True) or the DryRunRobotClient without hardware, through the same kinematics and collision checks. Run a new program in the simulator at full speed, then on the robot at low speed.

Speed

The commander's speed slider scales jogging only; a program's speed is in its moves, v= and a= or t=. The Python API takes a speed fraction per move and set_execution_speed() scales the queue while it runs; pause() and resume() hold and continue it.

Stopping a program

  • Stop in the commander, or stop() in the API: the current move is cancelled, the queue cleared, the robot stays enabled and holding.
  • The E-stop: the robot is disabled and the program or the queue is stopped; in the Python API, call reset() after releasing it (Emergency stop).
  • Closing the software: stop the program first. The firmware has no timeout: it keeps executing the last packet it received until the next one arrives. After a move to a position the joints stop near that target and hold.

When the PC stops sending during a jog

If the commander closes, crashes or loses the USB connection while a joint jogs (in joint or Cartesian jog), the firmware keeps that joint turning at its jog speed until it reaches its blocker. Programs that use speed tracking (speed as the last argument of a move) behave the same way. Use the mains switch of the power supply (Emergency stop).

Comments


Found a mistake on this page? Edit it on GitHub · Report it · Get help · This page as Markdown · llms.txt · The whole manual as PDF