[Documentation] [TitleIndex] [WordIndex

Care-O-Bot: Configuring the Allied Vision Technologies Prosilica GC1380CH GigE Camera Pair

Many of the hints summarized on this page originate from the AVT knowledge base (http://www.alliedvisiontec.com/de/support/knowledge-base.html) and the available documentation.

Configuration of the Ethernet Connection

Performance Optimization

To obtain the best performance with the prosilica cameras you should apply the following optimization steps (also written at http://www.alliedvisiontec.com/de/support/knowledge-base.html?tx_nawavtknowledgebase_piList[uid]=8&tx_nawavtknowledgebase_piList[mode]=single).

Configure the Network to use Jumbo Frames

Then check whether you can still receive images from your camera using the launch files or the SampleViewer tool. Depending on the capabilities of the ethernet adaptor you might have to decrease the MTU value from 9000 to 6000 or 4000. If set to a lower value, the camera's PacketSize should be adjusted accordingly. Just try it out until you actually receive images. You should not test with two cameras simultaneously before you followed the stereo setup, especially the GigE/StreamBytesPerSecond has to be set appropriately to receive any images.

Reduce the Number of CPU Interrupts

You can reduce the number of CPU interrupts to decrease its workload caused by the camera. Just open the file /etc/modprobe.d/e1000e.conf and add the line

options e1000e InterruptThrottleRate=1000,1000

Allocating Rx Buffers when Using Jumbo Frames

Allocating Rx buffers when using Jumbo Frames on 2.6.x kernels may fail if the available memory is heavily fragmented. This issue may be seen with PCI-X adapters or with packet split disabled. This can be reduced or eliminated by changing the amount of available memory for receive buffer allocation, by increasing /proc/sys/vm/min_free_kbytes. It should be the same as the Jumbo frame size. Open the file /etc/sysctl.conf and append the line

vm.min_free_kbytes=9000

at the end.

Stereo-Configuration of the Camera Pair

After succeeding with the network configuration we can now check or set the optimal settings for the stereo mode of both Prosilica cameras (see also hints at http://www.alliedvisiontec.com/de/support/knowledge-base.html?tx_nawavtknowledgebase_piList[uid]=6&tx_nawavtknowledgebase_piList[mode]=single).

For the Care-O-Bot we define the right camera to be the master camera (IP=192.168.21.101) and the left camera to be the slave (IP=192.168.21.102). The right camera is the camera on the right side when looking at the robot from behind. On the Care-O-Bot platform there should be an external trigger wire from the master camera to the slave camera.

If you use the Care-O-Bot launch files prosilica_left.launch and prosilica_right.launch from cob_bringup/components/ for starting the cameras, you do not have to adjust anything since the correct settings are already prepared in the parameters_left.yaml and parameters_right.yaml files, which you can find in cob_hardware_config/ROBOT/config/cameras (dependent on your robot model, you replace the folder ROBOT by the value chosen for the ROBOT variable, e.g. when you have the Care-O-bot 3-2 you use folder cob3-2).

However, we recommend that you check the settings once after starting the launch files. Use the ListAttributes <IP-address of your camera> tool from the prosilica_gige_sdk package to compare the actual settings with the desired settings. Especially, check whether the following settings are correct:

Slave camera (left camera, IP=192.168.21.102):

Master camera (right camera, IP=192.168.21.101):

If you do not want to use the Care-O-Bot launch files, you should set the required parameters in the camera memory directly. Start the SampleViewer utility from the prosilica_gige_sdk package, select each camera and open the properties dialogue. Depending on the mode of the respective camera (master/slave) you should set the settings listed above.

The packet size parameter defines the size of Jumbo frames. You should use the same value as for the switch and ethernet adaptor. StreamBytesPerSecond is very important to be set since you have a bandwidth around 120000000 to distribute among your devices. You will not receive images if all your devices together need more bandwidth than this value. If the master triggers the slave, make sure that the master has a little lower bandwidth than the slave so that both arrive at the same frame rate. If you do not have an external trigger, set the FrameStartTriggerMode property of the slave to Freerun as well.

With the ExposureAutoMax parameter you can specify the maximal exposure time in microseconds, which should not be too high if you like to have stereo cameras well synchronized. The ExposureAutoTarget parameter specifies the target value of the mean intensity. It ranges between 0 (=black) and 100 (=white). For best synchronization, turn ExposureMode to Manual and set an appropriate value for exposure (in seconds) in the yaml file. Also make sure that auto_adjust_stream_bytes_per_second is set to False in the yaml files to avoid automatic bandwidth adaptation which does not work properly with stereo rigs.

Save your changes on camera memory by selecting a slot in the ConfigFile/ConfigFileIndex property and save it via ConfigFile/ConfigFileSave. You should load this configuration on power up, so choose the same index for the ConfigFile/ConfigFilePowerUp property.

Calibration of the Camera Pair

Please use the automatic calibration tool for Care-O-bot which is available with the cob_calibration package.


2019-08-17 12:36