Note: This Tutorial assumes that you know how to use rcdiscover and how to access the web GUI of the rc_visard. If you can't use these look here.
(!) Please ask about problems and questions regarding this tutorial on Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Preparations for the pick modules

Description: This tutorial is about setting up the scene to use the pick modules with ROS to compute grasps on unspecified objects in a defined load carrier and region of interest. The latter two will be defined in the following tutorials using either the web GUI or rosservice calls.

Keywords: rc_visard, itempick, boxpick

Tutorial Level: BEGINNER

Next Tutorial: rc_visard/Tutorials/ManagingRegionsofInterest


This tutorial sets up the scene to compute grasps with the ItemPick or BoxPick module and ROS on unspecified objects in a defined environment.

Before we start

In order to go through this tutorial, the following prerequisites should be met:


The rc_visard’s image version is at least 1.4 and the rc_visard’s license includes the pick component to be used (ItemPick or BoxPick). This can be verified on the web GUI’s system panel. The GUI can be accessed using rcdiscover.

One or more workpieces are in the field of view of the camera. They should meet the following requisites:

  1. The workpiece surface, shape and weight are suitable for picking by suction (i.e. the vacuum generated by the gripper system together with the size of the suction cup generate a suction force large enough to lift and move the workpiece).
  2. The workpiece surface appears in the depth image. This can be verified by placing the workpiece in front of the rc_visard and checking the web GUI’s Depth Image panel. If the workpiece presents holes or low confidence regions (i.e. average gray pixels in the Confidence image), one can follow the Tuning of Image Parameters.

  3. The workpiece has at least the minimum dimensions required by the pick module. This threshold is set to 300 pixels in the depth image, which approximately correspond to an object of size 0.04 m x 0.04 m at a distance of 1.2 m from the sensor.
  4. If a load carrier is used for setting the region of interest, it should be avoided that items stick out of it. ItemPick and BoxPick have a threshold of approximately 10 cm above the load carrier rim to filter the load carrier content. Objects which stick out more than that are not considered for grasping.


Install the pick client package:

$ sudo apt install ros-$ROS_DISTRO-rc-pick-client

To run the rc_itempick node:

$ rosrun rc_pick_client rc_itempick_client_node _host:=<sensor_IP>

To run the rc_boxpick node:

$ rosrun rc_pick_client rc_boxpick_client_node _host:=<sensor_IP>

Since rc-pick-client's version 2.7, the device serial number or ID can be given instead of it's IP address.

To run the rc_itempick node:

$ rosrun rc_pick_client rc_itempick_client_node _device:=<serial number>

To run the rc_boxpick node:

$ rosrun rc_pick_client rc_boxpick_client_node _device:=<serial number>

The IP of your sensor can be determined using rcdiscover.

Setting up the scene

We recommend to mount the rc_visard on a tripod or a static support as explained in the rc_visard’s mechanical interface description

Alternatively, the rc_visard can also be mounted on the end-effector of a robot but the integration with the robot is not included in this tutorial (therefore, no hand-eye calibration is required to complete the tutorial).

The load carrier should be placed in the field of view of the sensor. Optimally, the sensor should have a clear view onto all objects in the bin without any occlusion by its walls – as shown in the sample setup below.

Sample setup. The rc_visard 160 is mounted on static support above the load carrier, approximately 1.15 m away from the bin

The placement should also ensure that the rim of of the load carrier is visible in the depth image. Occlusions of the rim are acceptable, as long as all edges are at least partially visible. If this is not the case, one can follow the recommendations for tuning camera and image parameters

The mounting should be stable such that the sensor remains static while the pick module acquires data.

The workpieces to be grasped should be placed in the field of view of the rc_visard. The optimal distance to the objects depends on the rc_visard model, as shown in the table below.

Sensor's recommended working range

Minimum distance

Maximum distance

rc_visard 160

0.5 m

1.3 m

rc_visard 65

0.2 m

1.0 m

Since the depth accuracy declines quadratically with an object’s distance from the sensor, the rc_visard should be placed as close to the objects as possible.

Configuring image parameters

Once the scene has been set up, we recommend to check the web GUI’s Depth Image panel to verify that the images are well-exposed and the depth image is dense with no holes on the workpieces. The tutorial Tuning of Image Parameters covers all required steps to get the best quality for stereo and depth images.

The pick modules provide their best results when the depth image quality is set to High. The Static mode might be beneficial in static scenes, but it increases the data acquisition time.

Sample images: left image (top left), confidence image (bottom left), and depth image (right)

What's next?

The next step is to define a load carrier and a region of interest for the computation of the grasp. The recommended method is with the web GUI but you can also use rosservice calls. Both ways use a rosservice call to compute the grasps in the end.

Troubleshooting and FAQ

For troubleshooting purposes look here

Wiki: rc_visard/Tutorials/Setting up the rc-pick modules (last edited 2019-07-08 11:26:40 by CarlosGarcia)