Skip to content
This repository was archived by the owner on Apr 27, 2022. It is now read-only.
This repository was archived by the owner on Apr 27, 2022. It is now read-only.

Bottleneck in CameraRosBase::PublishCamera #5

@kvmanohar22

Description

@kvmanohar22

I am using this package in conjunction with bluefox2 package for matrixvision bluefox MLC200wC camera with resolution 752x480. Settings are adjusted so as to acquire images at a rate ~80 FPS. Turns out the method CameraRosBase::PublishCamera takes too long to process images and the max. FPS that I can get is ~35 FPS.

Also, my launch file is following.

test_triggering.launch:

<launch>
    <!-- Start mavros -->
    <include file="$(find mavros)/launch/px4.launch">
        <arg name="fcu_url" value="/dev/ttyOffboard:921600"/>
    </include>

    <!-- Start camera driver -->
    <include file="$(find bluefox2)/launch/single_node.launch">
		<arg name="record_cameras" value="false"/>
		<arg name="expose_us" value="10000"/>
		<arg name="rate" value="150"/>
    </include>

</launch>

single_node.launch:

<launch>
    <!-- Common Interface -->
    <arg name="device" default="26807563"/>
    <arg name="rate" default="15"/>

    <!-- Record data? -->
    <arg name="record_cameras" default="true"/>

    <!-- Camera Settings -->
    <arg name="serial" default="$(arg device)"/>
    <arg name="camera_name" default="camera_0"/>
    <arg name="camera" default="$(arg camera_name)"/>
    <arg name="frame_id" default="$(arg camera)"/>
    <arg name="calib_url" default="file://${ROS_HOME}/camera_info/$(arg camera_name).yaml"/>
    <arg name="fps" default="$(arg rate)"/>

    <arg name="idpf" default="2"/>
    <arg name="aec" default="false"/>
    <arg name="expose_us" default="15000"/>
    <arg name="agc" default="true"/>
    <arg name="gain_db" default="0.0"/>
    <arg name="cbm" default="0"/>
    <arg name="dcfm" default="0"/>
    <arg name="cpc" default="40000"/>
    <arg name="hdr" default="false"/>
    <arg name="wbp" default="-1"/>
    <arg name="request" default="0"/>
    <arg name="mm" default="0"/>
    <arg name="jpeg_quality" default="80"/>

    <!-- Trigger mode (ctm): 1=on demand (default), 3=hardware trigger -->     
    <arg name="ctm" default="3"/> 
    <arg name="cts" default="0"/>

    <!-- Node Settings -->
    <arg name="output" default="screen"/>
    <arg name="proc" default="false"/>
    <arg name="view" default="true"/>
    <arg name="calib" default="false"/>

    <!-- Node -->
    <node pkg="bluefox2" type="bluefox2_single_node" name="$(arg camera)" output="$(arg output)" ns="hawk">
        <param name="identifier" type="string" value="$(arg serial)"/>
        <param name="frame_id" type="string" value="$(arg frame_id)"/>
        <param name="camera_name" type="string" value="$(arg camera_name)"/>
        <param name="calib_url" type="string" value="$(arg calib_url)"/>
        <param name="fps" type="double" value="$(arg fps)"/>
        <param name="idpf" type="int" value="$(arg idpf)"/>
        <param name="aec" type="bool" value="$(arg aec)"/>
        <param name="expose_us" type="int" value="$(arg expose_us)"/>
        <param name="agc" type="bool" value="$(arg aec)"/>
        <param name="gain_db" type="double" value="$(arg gain_db)"/>
        <param name="cbm" type="int" value="$(arg cbm)"/>
        <param name="ctm" type="int" value="$(arg ctm)"/>
        <param name="cpc" type="int" value="$(arg cpc)"/>
        <param name="cts" type="int" value="$(arg cts)"/>
        <param name="dcfm" type="int" value="$(arg dcfm)"/>
        <param name="hdr" type="bool" value="$(arg hdr)"/>
        <param name="wbp" type="int" value="$(arg wbp)"/>
        <param name="request" type="int" value="$(arg request)"/>
        <param name="mm" type="int" value="$(arg mm)"/>
        <param name="image_raw/compressed/jpeg_quality" type="int" value="$(arg jpeg_quality)"/>
    </node>

    <!-- View -->
    <arg name="image" default="image_raw"/>
    <node if="$(arg view)"
        pkg="image_view" type="image_view" name="viewer" ns="hawk/$(arg camera)"
        args="image:=$(arg image)" output="$(arg output)">
    </node>

</launch>

So, my question is, are any methods tried that can overcome this bottleneck and acquire images at high frame rate (atleast 70)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions