VisualMove visual_move

Description

Move to the pose which is dynamic pose got from Mech-Vision. It need to be used with visual_look .

Parameters

useAll

For the trajectory scene, if it is True, all the poses given by vision service will be continuously executed at one time, instead of executing the Pick-Hold-Place of the next target when Pick-Hold-Place of one target is completed

If checked, it will show the parameter icon: useAll

notMove

If it is True, this module will actually participate in the planning (so avoid collisions with the path between the front and back positions), but this position will not be sent to the robot, and the results are generally only used for relative_move as a reference

If checked, it will show the parameter icon: notMove

reuseVisionResult

Reuse the remaining visual results from the previous execution.

If checked, it will show the parameter icon: reuseVisionResult

reuseVisionResult

If it is True, multiple visual_move will share the same vision result of one visual_look . Besides, you need to choose the Vision Name from Get Vision Services below.

Usage scenario: The object is not easy to be grasped. If picking failed first time, the robot will change anothor end effector to pick this object again by using the same vision result.

How to use

  1. As shown in the figure, one visual_look with multiple visual_move

    ../../../../_images/shareVisionResult_sample.png

    Attention

    It is important to connect a reset_task after the last visual_move to clear the shared vision result. Otherwise, it will use the previous vision result even if new detection is triggered, which will impact the running of project.

  2. using with reuseVisionResult

    1. It must have picking pose before running the logic “switch end effectors then pick”, otherwise it will pop up error when running. So you need to connect check_look after every visual_look , as shown below

    2. Connect vision_result_used_up after every visual_move and connect the reasonable processing both port 1 and 2 to ensure the project running as expect.

    3. Connect a reset_task after the last visual_move to finish the trying of “switch end effectors”

    ../../../../_images/reuse_share_sample.png
Sucker Config

It is applied to the scenario that the sucker size is bigger than box size, Mech-Viz can calculate the offset and decide whether it is a proper picking pose.

If the offset is calculated by Mech-Viz, it is necessary to use check collision function to avoid colliding with the nonstationary objects such as other picking objects. For the fixed objects in the scene, the collision checking should by added models, instead of point cloud. See the details: Collision Detection .

  1. suckerType: Includes four types:

    1. Unspecified

    2. Continuous: continuous sucker, such as a sponge sucker.

    3. IndependentCtrl: combined sucker that can independently control the switching of multiple suckers.

    4. ContinuousWithMultiPick: continuous sucker which can pick multiple boxes per time. Based on type 2, it will pick boxes as much as possible according to the sucker size and boxes size, such as picking a row of boxes.

    If Unspecified is selected, Mech-Vision can provide the offset; if the remaining parameters is selected, Mech-Vision is not allowed to provide the offset. The offset is calculated by Mech-Viz and combined with Collision Detection to determine whether it can be grasped.

  2. offsetStrategy: sucker bias principle

  3. suckerLenX: x-direction length of sucker.

  4. suckerLenY: y-direction length of sucker.

  5. boxNotExceedSucker: If it is True, the combined boxes will not be picked once its size bigger than sucker size

  6. suckerConfigPath: Path of the sucker configuration file in IndependentCtrl mode, see Individual control mode for combined suction cup

Avoid Pick Same Pose
  1. samePoseDistThre: If the spatial straight distance between a pose and the last grasping pose is less than this threshold, they are considered to be the same pose. If it is 0, it indicates that the function of Avoid Pick Same Pose is not used.

  2. poseDiscardDistThre: If the spatial straight distance between this pose and the last grasping pose is smaller than this threshold, then give up the grasping.

    This parameter is always used with samePoseDistThre to solve the problem that failed picking leads process stopping due to overweighed objects. If the first time picking failed and the position of this object changed, the priority of this pose will be reduce, robot will pick this objects again after picking other objects; but if the position has not changed when failed picking, this pose will be delete.

    Therefore, the value of poseDiscardDistThre should smaller than samePoseDistThre

  3. sizeOfRecorded: Record the maximum number of poses or objects.

  4. recordType:

    • PickPose: Record by poses. For example, the object X has three picking pose, if one of them has been tried, the other two poses still can be picked.

    • Object: Record by object. For example: if one of the object X’s poses has been tried, the other two poses can not be picked anymore, robot will try to pick other objects next time.

MultiPick
  1. isMultiPick: If it is true, it will use the traditional multi-picking mode.

  2. multiPickConfigPath: File path for multi-grasping configuration.

  3. distThre: The distance deviation threshold between two adjacent boxes when combine several small boxes to a picking unit. The boxes cannot be combined when the distance larger than this value.

  4. angleThre: The angle deviation threshold around Z axis of each box when combine several small boxes to a picking unit. The boxes cannot be combined when the angle larger than this value.

PickingCount
  1. expectedPickingCount: Preset the total number of target grasped. Stop when the number of target grasped is reached.

  2. totalPickedObjCount: Cumulate the total number of grasped. It is no editable

  3. pickedObjCount: Number of current grasped; the actual number of grasped for this time, it is no editable.

Symmetry

xyRotLeastChange: If it is checked, robot will move to the pose which the rotation around x/y axis in JPs or TCP is minimal, comparing with the previous move .

saveVisionResult

If it is checked as True, the actual executed pose of each planning result will be recorded in the succeed_vision_records next to the execution file in the root directory of Mech-Viz.

pickBoxName

The picking box model name when update the model by vision service.

Get Vision Services

Select the vision project name which is needed to get poses. These function can be achieved:

  1. Multiple visual_move can share the same vision result

#. Assign some visual_move getting vision result from certain vision service(visual_look). It is not necessary to using the combination like [one visual_look must connect one visual_move ]

Only Use Poses with Following Label

Load Labels

When select a certain label, this visual_move will only pick the object with this label.

Use Symmetry of

It will acquire all the labels which are edited in Configuration of Objects to Pick (for Move Planning). If Mech-Vision gives poses with labels, this module will use the corresponding symmetry with the given label; if there is no label given by Mech-Vision, this module will use the symmetry according to the selected label in this parameter.