Video camera ============ .. image:: ../../../media/sensors/video_camera.png :align: center :width: 600 **A camera capturing RGBA image** This sensor emulates a single video camera. It generates a series of RGBA images. Images are encoded as binary char arrays, with 4 bytes per pixel. Camera calibration matrix ------------------------- The camera configuration parameters implicitly define a geometric camera in blender units. Knowing that the **cam_focal** attribute is a value that represents the distance in Blender unit at which the largest image dimension is 32.0 Blender units, the camera intrinsic calibration matrix is defined as +--------------+-------------+---------+ | **alpha_u** | 0 | **u_0** | +--------------+-------------+---------+ | 0 | **alpha_v** | **v_0** | +--------------+-------------+---------+ | 0 | 0 | 1 | +--------------+-------------+---------+ where: - **alpha_u** == **alpha_v** = **cam_width** . **cam_focal** / 32 (we suppose here that **cam_width** > **cam_height**. If not, then use **cam_height** in the formula) - **u_0** = **cam_width** / 2 - **v_0** = **cam_height** / 2 See also :doc:`../sensors/camera` for generic informations about Morse cameras. .. cssclass:: properties morse-section Configuration parameters for Video camera ----------------------------------------- You can set these properties in your scripts with ``.properties(=..., =...)``. - ``cam_width`` (default: ``256``) (no documentation available yet) - ``cam_height`` (default: ``256``) (no documentation available yet) - ``cam_focal`` (default: ``25.0``) (no documentation available yet) - ``cam_near`` (default: ``0.1``) (no documentation available yet) - ``cam_far`` (default: ``100.0``) (no documentation available yet) - ``Vertical_Flip`` (default: ``True``) (no documentation available yet) - ``retrieve_depth`` (default: ``False``) (no documentation available yet) - ``retrieve_zbuffer`` (default: ``False``) (no documentation available yet) .. cssclass:: fields morse-section Data fields ----------- This sensor exports these datafields at each simulation step: - ``timestamp`` (float, initial value: ``0.0``) number of seconds in simulated time - ``image`` (buffer, initial value: ``none``) The data captured by the camera, stored as a Python Buffer class object. The data is of size ``(cam_width * cam_height * 4)`` bytes. The image is stored as RGBA. - ``intrinsic_matrix`` (mat3, initial value: ``none``) The intrinsic calibration matrix, stored as a 3x3 row major Matrix. *Interface support:* - :tag:`pocolibs` as `ViamImageBank `_ (:py:mod:`morse.middleware.pocolibs.sensors.viam.ViamPoster`) - :tag:`ros` as `sensor_msgs/Image `_ (:py:mod:`morse.middleware.ros.video_camera.VideoCameraPublisher`) - :tag:`socket` as base64 encoded RGBA image (:py:mod:`morse.middleware.sockets.video_camera.VideoCameraPublisher`) - :tag:`yarp` as yarp::ImageRGBA (:py:mod:`morse.middleware.yarp.video_camera.YarpImagePublisher`) .. cssclass:: services morse-section Services for Video camera ------------------------- - ``get_properties()`` (blocking) Returns the properties of a component. - Return value a dictionary of the current component's properties - ``get_local_data()`` (blocking) Returns the current data stored in the sensor. - Return value a dictionary of the current sensor's data - ``set_property(prop_name, prop_val)`` (blocking) Modify one property on a component - Parameters - ``prop_name``: the name of the property to modify (as shown the documentation) - ``prop_val``: the new value of the property. Note that there is no checking about the type of the value so be careful - Return value nothing - ``capture(n)`` (non blocking) Capture **n** images - Parameters - ``n``: the number of images to take. A negative number means take image indefinitely - ``get_configurations()`` (blocking) Returns the configurations of a component (parsed from the properties). - Return value a dictionary of the current component's configurations .. cssclass:: examples morse-section Examples -------- The following examples show how to use this component in a *Builder* script: .. code-block:: python from morse.builder import * # adds a default robot (the MORSE mascott!) robot = Morsy() # creates a new instance of the sensor videocamera = VideoCamera() # place your component at the correct location videocamera.translate(, , ) videocamera.rotate(, , ) robot.append(videocamera) # define one or several communication interface, like 'socket' videocamera.add_interface() env = Environment('empty') .. cssclass:: files morse-section Other sources of examples +++++++++++++++++++++++++ - `Source code <../../_modules/morse/sensors/video_camera.html>`_ - `Unit-test <../../_modules/base/video_camera_testing.html>`_ *(This page has been auto-generated from MORSE module morse.sensors.video_camera.)*