Instruction Executor
The Instruction Executor is a convenience wrapper to make common robot instructions such as point to point motions easily accessible. Currently, it supports the following instructions:
Execute MoveJ point to point motions
Execute MoveL point to point motions
Execute MoveP point to point motions
Execute MoveC circular motions
Execute OptimoveJ point to point motions (For PolyScope 5.21 / PolyScope 10.8 and later)
Execute OptimoveL point to point motions (For PolyScope 5.21 / PolyScope 10.8 and later)
Execute sequences consisting of the motion primitives above
Joint and Cartesian targets
Every motion function comes in two flavours:
A “native” overload whose parameter is the target type that matches the underlying URScript command (
vector6d_tformoveJ/optimoveJ,urcl::PoseformoveL,moveP,moveCandoptimoveL). Braced-initializer-list calls such asmoveJ({ q1, q2, q3, q4, q5, q6 })bind to this overload and keep the behaviour from older releases.A
urcl::MotionTargetoverload that accepts either aurcl::Q(joint configuration) or aurcl::Pose(Cartesian pose). This lets the same function perform a motion whose target type does not match the URScript command’s natural argument, e.g.moveJ(urcl::Pose{...})to reach a Cartesian target with a joint-interpolated motion, ormoveL(urcl::Q{...})to perform a linear tool-space motion towards the pose implied by a joint configuration.
An urcl::Pose may optionally carry q_near (std::optional<urcl::Q>), a joint configuration
hint for inverse kinematic solver to select the desired joint angle solution,
when the pose is sent over the trajectory interface; see Trajectory Point Interface.
The Instruction Executor uses the Trajectory Point Interface and the ReverseInterface for sending motion instructions to the robot. Hence, it requires a UrDriver object.
Note
The InstructionExecutor simply forwards the trajectory points to the robot. Execution
is done using respective URScript functions such as movej
or movel.
Therefore, all parameters and restrictions of these functions apply. For example, velocity and
acceleration parameters will be ignored if there is a time > 0 given.
As a minimal working example, please see the Instruction Executor example.