:orphan:
.. _device-PVCam Camera:
PVCam Camera
============
**From:** `Teledyne Technologies `_
**Class:** :py:class:`herosdevices.hardware.teledyne.pvcam.PvcamCamera`
**Driver Quality Index:** beta
.. admonition:: Requires the following packages
`pyvcam `_
Additional Information :bdg-warning:`Check before use`
------------------------------------------------------
.. dropdown:: PVCam Setup
This device requires additional binary drivers to run.
.. warning::
The PCIe Driver only works with very specific (and often outdated) kernel versions.
If you need the PCIe driver you will likely need to build a docker image yourself or run it without docker.
The following script can be :external:ref:`used with BOSS ` to automatically build and install the driver inside a docker container.
.. code-block:: bash
:caption: pvcam.boss.sh
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# Install prerequisites
apt-get update && apt-get install -y sudo git
# Install the vendor library itself
# We have to agree to some licenses here so we use the "yes" command.
# The EUID=1 is a little hack to trick the installer into thinking we're not root.
/bin/sh -c 'yes | /bin/bash '"${SCRIPT_DIR}"'/pvcam/pvcam__install_helper-Ubuntu.sh'
# Remove build files after installation to make image a bit smaller
rm -rf /pvcam
# We need to point the python api to the correct library path
export PVCAM_SDK_PATH="/opt/pvcam/sdk"
# Install python API
pip install --break-system-packages PyVCAM
Place the ``pvcam`` folder from the archive you can download `here `_ in the same folder as the script.
Finally, add the following lines to your docker compose file:
.. code-block:: yaml
environment:
- PVCAM_SDK_PATH=/opt/pvcam/sdk
- PVCAM_UMD_PATH=/opt/pvcam/drivers/user-mode
- PVCAM_VERSION=3.10.2.5 # Adjust this to your version
.. important::
To access the camera from within the docker container follow :external+boss:std:ref:`this guide `.
Note, that pvcam cameras are not linked to a nice name but are only accessible via their usb path like
``/dev/bus/usb/004/004``. To find this path run
.. code-block:: bash
lsusb | grep | awk '{ sub(/:/, "", $4); print "/dev/bus/usb/" $2 "/" $4 }'
Replace ```` with the name of your device as shown by ``lsusb``.
....................
A class to interface with Teledyne PVCam Cameras.
It manages camera configuration, acquisition, and data streaming compatible with the atomiq camera template.
.. tab-set::
.. tab-item:: Arguments
Bold arguments are mandatory. For more information on the listed arguments refer to the class documentation: :py:class:`herosdevices.hardware.teledyne.pvcam.PvcamCamera` If parameters appear in this list but not in the class definition, please recursively check the linked base classes for the definition of the parameter.
.. list-table::
:widths: 50 50 50 100
:header-rows: 1
* - Argument
- Type
- Default Value
- Description
* - **cam_id**
- ****
-
- Serial number of the cam. Can be obtained for example from the ``PVCamTest`` program shipped with the vendor library. If you specify a wrong id, this driver will also log a list of available devices.
* - **config_dict**
- ****
-
- Dict of configuration values like shown in the json example above.
* - default_config
- str | None
- None
- Default key in :code:`config_dict` to use.
* - lib_path
- str | None
- None
- Path to vendor library. Can also be set via the environmental variable ``PVCAM_SDK_PATH``
.. tab-item:: Example JSON for BOSS
The following JSON strings can be used to start a HERO device representation of :py:class:`PvcamCamera ` using `BOSS `_.
.. code-block:: json
{
"_id": "my-camera",
"classname": "herosdevices.hardware.teledyne.PvcamCamera",
"arguments": {
"cam_id": "pvcamUSB_0",
"default_config": "default",
"config_dict": {
"default": {
"roi": [
1500,
800,
700,
700
],
"exp_mode": "Edge Trigger"
}
}
}
}
:sup:`from examples/teledyne/pvcam.json`
.. code-block:: json
{
"_id": "my_PvcamCamera",
"classname": "herosdevices.hardware.teledyne.pvcam.PvcamCamera",
"arguments": {
"cam_id": "",
"config_dict": "",
"default_config": null,
"lib_path": null
}
}
:sup:`generated from signature`
.. tab-item:: Inheritance
.. inheritance-diagram:: herosdevices.hardware.teledyne.pvcam.PvcamCamera