External Move
Function
This Step obtains the target pose from the external service, Adapter, and then performs path planning and robot motion control in Mech-Viz. You can set JPs, TCP, and the object pose in the “External Move” Step.
Parameter Description
Move-Type Step Common Parameters
Send Waypoint
Selected by default, i.e., send the current waypoint to the receiver, such as the robot. Once deselected, the current waypoint will not be sent. However, the waypoint will remain in the planned path.
Try Continuously Running through Succeeding Non-Moves
Unselected by default. When non-move Steps, such as Visual Recognition, Set DO, Check DI, etc., are connected between move-type Steps, the sending of the waypoints will be interrupted, and the real robot will take a short pause, reducing the smoothness of running.
When this parameter is selected, the project will continue to run without waiting for the current move-type Step to complete execution, and therefore the robot can move in a smooth way without pauses. However, selecting this parameter may cause the execution of the Step to end prematurely.
Why will this feature cause the execution of the Step to end prematurely?
Mech-Viz will send multiple waypoints simultaneously to the robot when the project is running. When the currently returned JPs of the robot correspond to the last waypoint sent by Mech-Viz, Mech-Viz will assume that the robot has moved to the last waypoint.
For example, there are 10 move-type Steps in a path, and the pose of the 5th move-type Step is the same as that of the last move-type Step. When the robot moves at a low speed, the current JPs will be sent to Mech-Viz after the robot moves to the 5th waypoint. Since the poses of the 5th move-type Step and the last move-type Step are the same, Mech-Viz may mistakenly determine that the robot has reached all waypoints and prematurely ends the command.
Do Not Check Collision with Placed Target Object
Once Detect collisions on target objects is enabled in the Collisions panel, selecting this parameter will disable the collision detection between the robot, robot tool, and placed target objects. Typically, this parameter is selected in the move-type Step following the Step whose Pick or place is set to Place to avoid false collision detections.
Application Example:
The TCP of a depalletizing vacuum gripper is usually set inside the model rather than on the surface of the vacuum gripper. As a result, when picking a box, the vacuum gripper model may overlap with the box model. However, the software does not detect collisions between the end tool and the picked target object, so no collision alarm will be triggered during picking. Once the robot places the box down, the picked box model becomes a scene model, and the software will start to detect the collision between the end tool and the box’s scene model, triggering a collision alarm and preventing the completion of the palletizing task.
Once this parameter is selected, no collision between the robot, end tool, and the model of the placed target object will be detected, and the above issue will be resolved.
Point Cloud Collision Detection Mode
Usually, Auto can be selected, i.e., directly apply the Point cloud collision detection settings in the Collisions panel. For the Steps between picking and placing, Check collision can typically be selected.
Auto |
Default setting. Once Detect collisions on target objects is enabled in the Collisions panel, only point cloud collisions of the “Vision Move” Step and the “Relative Move” Steps that depend on the “Vision Move” Step will be detected, while other move-type Steps will not be detected. |
Do not check collision |
Point cloud collisions of all move-type Steps will not be detected. |
Check collision |
Point cloud collisions of all move-type Steps will be detected. |
Ignore Target Object Symmetry
This parameter is only visible when the Waypoint type of the move-type Step is set to Target object pose.
The target object symmetry here refers to the Rotational symmetry of held target object predefined in the target object editor during collision model setup.
None |
Default setting, i.e., do not ignore symmetry on any axis. |
Around target object frame Z axis |
Only ignore symmetry around the Z-axis. |
Around target object frame X&Y axes |
Ignore symmetry around the X-axis and Y-axis. |
Around all axes |
Once the symmetry around all axes is ignored, the robot will place the object strictly according to the target object pose. |
When the move-type Steps are used to place the target objects, the consistency of the placing poses of the target objects cannot be guaranteed once the rotational symmetry is applied. If you want all target objects to be placed strictly according to a specific rule, ignore the symmetry of the target object around all axes. |
Plan Failure Out Port
Once this parameter is selected, a Plan failure exit port will be added to the Step.
If the path planning of the current Step succeeds, the workflow will continue along the Success exit port. If the path planning of the current Step fails, the workflow will proceed along the Plan failure exit port. If multiple move-type Steps with “Plan failure” exit ports display in the same plan history entry, the workflow will proceed along the “Plan failure” exit port of the first move-type Step.
Held Target Object Collision Detection Settings
Before configuring this parameter group, please go to the Collisions panel and enable Detect collisions on target objects.
Disabling collision detection will increase the collision risks. Please select the following parameters with caution. |
Do Not Check Collision with Scene Objects
Once this parameter is selected, collisions between the held target object and the scene model will not be detected, reducing the computational load of collision detection in the software, speeding up path planning, and optimizing the overall cycle time.
Do Not Check Collision with Robot
Once this parameter is selected, collisions between the held target object and the robot will not be detected, reducing the computational load of collision detection in the software, speeding up path planning, and optimizing the overall cycle time.
Do Not Check Collision with Point Cloud
Once Point cloud collision detection is enabled in the Collisions panel, selecting this parameter will stop detecting collisions between the held target object and the point cloud, further reducing the software’s computational load, shortening path planning time, and enhancing the overall cycle time.
Service Name
The Adapter’s external service name registered in the communication component, which is used to connect the interface of this Step and send waypoints. Please make sure that the service name is the same as the Adapter name.
Use JPs from External Service
Unselected by default. The software will use the previous waypoint as the initial position when planning the path. Once this option is selected, the initial position for path planning will be the joint positions obtained from external services. This function is usually used in the scenarios where Mech-Viz is not used for master-control of the robot.
Interface Example
class CustomOuterMoveService(OuterMoveService):
def gather_targets(self, di, jps, flange_pose):
self.add_target(self.move_target_type, [0.189430,-0.455540,0.529460,-0.079367,0.294292,-0.952178,0.021236])
The CustomOuterMoveService class is developed based on the OuterMoveService class. self.move_target_type indicates the target type. Valid values: 0, 1, and 2. A value of 0 indicates the JP type, a value of 1 indicates the TCP type, and a value of 2 indicates the object pose type. Mech-Viz calls getMoveTargets() when running an External Move Step. Different External Move Steps can be distinguished by their service names.
def _register_service(self):
self.outer_move_service = CustomOuterMoveService()
self._outer_move_server, port = register_service(outer_move_service, port)
If self.move_target_type is set to 2, you must place a Step that defines the picking before the External Move Step. Otherwise, the following error message will pop up: - The posture of the object is invalid when the object is not held!. |