Coder Social home page Coder Social logo

pylon-ros-camera's People

Contributors

alireza-moayyedi avatar bjoernrennfanz avatar ckurtz22 avatar csukuangfj avatar ethflo avatar flova avatar francoispicarddti avatar franekstark avatar g-gemignani avatar jonathanhechtbauer-bc avatar lalten avatar mehditlili avatar mgrrx avatar nachovizzo avatar nakai-omer avatar pablo-quilez avatar plieningerweb avatar saif-abdullah avatar thiesmoeller avatar tonynajjar avatar uliklank avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pylon-ros-camera's Issues

Huge image input delay when working with low frame rates

Setting frame_rate: 1.0 I get a huge delay of about 36 seconds from when the actual image is taken and received on ros. Comparing the timestamp of the image message and ros time of the moment the image message is published I get a difference of about 1 second which I can work with. The delay of 36 seconds I acquired by comparing the image content and the image message timestamp so the total delay is at about 37 seconds.
Using the same camera settings with PylonViewerApp does not result is a huge delay. So the fault must be with the ros driver.

Remove dependency on dragandbot_common

Hey!

Including a company-specific package just for two tiny definitions looks like an overkill. Wouldn't it be easier to add them to the camera_control_msgs?

Timestamp

Hi,

Is it possible to get timestamp of grabbed image directly from the camera ?

BR,
Boris

version for ROS2-foxy

Hi,

is there a similar implementation for ros2 foxy or any other ros2 version?

BR Chris

Install of driver

Hello,
do you know if the ros driver works with pylon view 6.2 because if I try to install the pylon SDK API with
'sudo rosdep install --from-paths . --ignore-src --rosdistro=$ROS_DISTRO -y' I become the failure that:
Could not find any pylon Installation with version 5 or greater
ERROR: the following rosdeps failed to install
source: Failed to detect successful installation of [source: https://raw.githubusercontent.com/magazino/pylon_camera/indigo-devel/rosdep/pylon_sdk.rdmanifest]
I hope you can help me

Grab and Save images not working

Hello,
I publish the below goal to the action server:
~$ rostopic pub /pylon_camera_grab_and_save_as/grab_and_save_image_raw/goal camera_control_msgs/GrabAndSaveImageActionGoal "header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
goal_id:
stamp:
secs: 0
nsecs: 0
id: ''
goal: {exposure_given: false, exposure_time: 3000.0, gain_given: false, gain_value: 0.0,
gamma_given: false, gamma_value: 1.0, brightness_given: false, brightness_value: 0.0,
exposure_auto: True, gain_auto: false, img_storage_path_and_name: '/home/manolis/image1.png'}"
publishing and latching message. Press ctrl-C to terminate

And I get the below error at the action server terminal:
[ERROR] [1615557594.524704]: Exception in your execute callback: list index out of range
Traceback (most recent call last):
File "/opt/ros/noetic/lib/python3/dist-packages/actionlib/simple_action_server.py", line 289, in executeLoop
self.execute_callback(goal)
File "/home/manolis/ws/src/pylon-ros-camera/pylon_camera/scripts/grab_and_save_image_action_server.py", line 80, in grab_and_save_img_raw_execute_cb
self.grab_and_save_img_execute_cb(grab_and_save_img_goal,
File "/home/manolis/ws/src/pylon-ros-camera/pylon_camera/scripts/grab_and_save_image_action_server.py", line 105, in grab_and_save_img_execute_cb
cv_img = CvBridge().imgmsg_to_cv2(grab_imgs_result.images[0],
IndexError: list index out of range

As I understand the grab_imgs_result.images is empty, but why? Am I right?
Any help would be very much appreciated. Thank you!

Triggering an new Image

Hey,

is it possible to trigger a new image, so that I can trigger two cameras simultaneously?

The /pylon_camera_node/execute_software_trigger service lead to to believe it, but after looking around the docs and code it doesn't seem like its possible with the current implementation?

Dart camera timeout when using ROS (or Pylon)

Camera: daA1600-60uc
Platform: Rock960A/B, ARM64
Pylon: 5.2.0

I'm sometimes unable to load the camera using ROS using the sample node - it doesn't open in Pylon either. It's not clear what the error is as the camera is detected:

[ WARN] [1583103522.287427099]: Autoflash: 0, line2: 1 , line3: 1
[ INFO] [1583103522.288132931]: No Device User ID set -> Will open the camera device found first
[ INFO] [1583103522.619771689]: Found camera with DeviceUserID N/A: daA1600-60uc
[ERROR] [1583103531.077220534]: Could not apply configuration. Pylon::GenericException caught in OnOpened method msg=Write operation failed on device '2676:ba03:3:1:2' at address: 0x10000038; length 4; Error: 'The requested operation timed out.' : TimeoutException thrown (file 'PylonUsb
[ERROR] [1583103531.078270532]: Error while trying to open the desired camera!

When I try to run a simple capture script:

linaro@linaro-alip:~/tests$ cat test_basler.py
from pypylon import pylon

camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice())
camera.Open()

# demonstrate some feature access
new_width = camera.Width.GetValue() - camera.Width.GetInc()
if new_width >= camera.Width.GetMin():
    camera.Width.SetValue(new_width)

numberOfImagesToGrab = 100

camera.StartGrabbingMax(numberOfImagesToGrab)

while camera.IsGrabbing():
    grabResult = camera.RetrieveResult(5000, pylon.TimeoutHandling_ThrowException)

    if grabResult.GrabSucceeded():
        # Access the image data.
        print("SizeX: ", grabResult.Width)
        print("SizeY: ", grabResult.Height)
        img = grabResult.Array
        print("Gray value of first pixel: ", img[0, 0])

    grabResult.Release()

camera.Close()
linaro@linaro-alip:~/tests$ python test_basler.py
Traceback (most recent call last):
  File "test_basler.py", line 4, in <module>
    camera.Open()
  File "/home/linaro/.local/lib/python2.7/site-packages/pypylon/pylon.py", line 3417, in Open
    return _pylon.InstantCamera_Open(self)
_genicam.RuntimeException: Could not apply configuration. Pylon::GenericException caught in OnOpened method msg=Read operation on device '2676:ba03:3:1:2' failed: 'The requested operation timed out.' : TimeoutException thrown (file 'PylonUsbDevice.cpp', line 778) : RuntimeException thrown (file 'AcquireContinuousConfiguration.h', line 91)

This code definitely works, if I re-plug the camera (lens cap on, so zeros):

linaro@linaro-alip:~/tests$ python test_basler.py
('SizeX: ', 1588)
('SizeY: ', 1200)
('Gray value of first pixel: ', 0)
('SizeX: ', 1588)
('SizeY: ', 1200)
('Gray value of first pixel: ', 0)
('SizeX: ', 1588)
('SizeY: ', 1200)
('Gray value of first pixel: ', 0)
('SizeX: ', 1588)
('SizeY: ', 1200)
('Gray value of first pixel: ', 0)
('SizeX: ', 1588)
('SizeY: ', 1200)
('Gray value of first pixel: ', 0)

Any idea what's going wrong? It's a bit concerning that whatever is failing seems to be locking up the USB device completely. I can provide more info if it would be useful.

pylon_camera fps cannot exceed 75

Hello,
I am using pylon_camera for my Basler acA1300-200uc. However, as put the fps to be 100 or higher in the launch file, the rosout shows that it has launched the camera at that specific frame rate.
[ INFO] [1583442203.551151871]: Start image grabbing if node connects to topic with a frame_rate of: 100 Hz

However when I check the topic
rostopic hz /pylon_camera_node/image_raw

I only get 75fps.
min: 0.012s max: 0.015s std dev: 0.00029s window: 70
Is there a way to get higher fps. I have already tried with the basler application, which works fine and gives me a higher frame rate, so it is not an issue with the hardware or the connectors.

I looked into: magazino/pylon_camera#25 and related issue to it but it did not help.

Waiting For Trigger Signal/Error: Grab was not successful

Hi all,

I'm trying to implement hardware triggering of two GigE cameras so that they capture a single frame each time there is a pulse on line 3. To do this, I'm using the default Pylon ROS camera config and then making a service call to set the trigger source to line 3 (int value 2).

Here's the method I implemented:

bool initializeCameras(ros::NodeHandle &n) {
    ros::ServiceClient trigger_source_client0 = n.serviceClient<camera_control_msgs::SetIntegerValue>("/cameranode0/set_trigger_source");
    ros::ServiceClient trigger_source_client1 = n.serviceClient<camera_control_msgs::SetIntegerValue>("/cameranode1/set_trigger_source");

    // set trigger source to line3
    camera_control_msgs::SetIntegerValue trigger_source_call;
    trigger_source_call.request.value = 2; // XXX this is from pylon_camera's pylon_camera_node.cpp, find a symbol
    if(!trigger_source_client0.call(trigger_source_call) || !trigger_source_client1.call(trigger_source_call)) {
        ROS_ERROR_STREAM("Couldn't set trigger source for cameras: " << trigger_source_call.response.message);
        return false;
    } else {
        ROS_INFO("Set trigger source for cameras successfully.");
    }
    return true;
}

It seems to work. I get a image_raw callback for each camera whenever line 3 gets a pulse. However, I'm seeing a lot of these errors in the logs:

[ERROR] [1616015132.304685759]: Waiting for Trigger signal
[ERROR] [1616015132.304724894]: Error: Grab was not successful
[ERROR] [1616015132.359765457]: Waiting for Trigger signal
[ERROR] [1616015132.359786272]: Error: Grab was not successful

I looked into the source, and found the following in pylon_camera_base.hpp:

template <typename CameraTrait>
bool PylonCameraImpl<CameraTrait>::grab(Pylon::CGrabResultPtr& grab_result)
{
    // XXX several lines omitted for brevity
    catch ( const GenICam::GenericException &e )
    {
        if ( cam_->IsCameraDeviceRemoved() )
        {
            ROS_ERROR("Lost connection to the camera . . .");
        }
        else
        {
            if ((! cam_->TriggerSource.GetValue() == TriggerSourceEnums::TriggerSource_Software) && (cam_->TriggerMode.GetValue() == TriggerModeEnums::TriggerMode_On))
            {
                ROS_ERROR_STREAM("Waiting for Trigger signal");
            }
            else
            {
            ROS_ERROR_STREAM("An image grabbing exception in pylon camera occurred: "
                    << e.GetDescription());
            }
        }
        return false;
    }
    // XXX several lines omitted for brevity

The caller of the method is what produces the "Error: Grab was not successful" message.

This leads me to my questions:

  1. The code in pylon_camera_base.hpp handles non-software triggers as an exceptional condition. Does this mean non-software triggering is not fully supported?
  2. What else do I need to configure on the camera, if anything? My assumption is that trigger mode should be "on", the trigger source should be line 3 (in my case), trigger selector should be "frame start".

Unable to receive data on more than 5 USB cameras

Hi, I got a vision system using 6 basler camera acA1920-40uc.
I am able to launch and record 5 of them a without issue.
When I connect the sixth one i receive no data on that topic
All cam have a unique device_user_id from cam0 to cam5

Here is the message i got when connecting the last one

[ERROR] [1570648293.510069443]: Couldn't find the camera that matches the given DeviceUserID: cam5! Either the ID is wrong or the cam is not yet connected
[ERROR] [1570648295.510965631]: Couldn't find the camera that matches the given DeviceUserID: cam5! Either the ID is wrong or the cam is not yet connected
[ INFO] [1570648297.509387785]: Found the desired camera with DeviceUserID cam5: acA1920-40uc
[ WARN] [1570648297.622168215]: No camera present. Keep waiting ...
[ WARN] [1570648299.265209747]: No User Set Is selected, Camera current setting will be used
[ INFO] [1570648299.267531490]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono8'|'mono8'] ['BayerRG8'|'bayer_rggb8'] ['BayerRG12'|'bayer_rggb16'] ['BayerRG12p'|'NO_ROS_EQUIVALENT'] ['RGB8'|'rgb8'] ['BGR8'|'bgr8'] ['YCbCr422_8'|'NO_ROS_EQUIVALENT']
[ INFO] [1570648299.355252985]: camera calibration URL: file:///home/sixmetrix/catkin_ws/src/pylon-ros-camera/pylon_camera/config/cam5_calib.yaml
[ WARN] [1570648299.362856675]: [cam5] does not match name narrow_stereo in file /home/sixmetrix/catkin_ws/src/pylon-ros-camera/pylon_camera/config/cam5_calib.yaml
[ INFO] [1570648299.377006538]: Setting gamma to 1, reached: 1
[ INFO] [1570648300.996723716]: Setting brightness to: 100, reached: 99
[ INFO] [1570648301.002561299]: Startup settings: encoding = 'bayer_rggb8', binning = [1, 1], exposure = 22285, gain = 0, gamma = 1, shutter mode = global
[ INFO] [1570648301.002960076]: Start image grabbing if node connects to topic with a frame_rate of: 5 Hz
[ INFO] [1570648301.003087051]: Camera is calibrated
[ WARN] [1570648301.003396208]: diagnostic_updater: No HW_ID was set. This is probably a bug. Please report it. For devices that do not have a HW_ID, set this value to 'none'. This warning only occurs once all diagnostics are OK so it is okay to wait until the device is open before calling setHardwareID.

Any idea how to solve the issue?

Low FPS in rgb8 mode

Am connecting an ac2440-35uc (2448 x 2048 colour, 35 fps) to a Jetson Nano.

I can get 35 fps in pylon viewer with colour images, 26 fps when subscribed to image_raw topic with greyscale images (mono8) but only 2.5 fps with RGB (rgb8).

Why would this be? Something to do with the software triggering?

Increasing bandwith ROS Topic Image_raw (USB)

Hello, i am a beginner with the ros pylon package and i want to ask how to solve the following problem:

I am trying to increase the bandwith and so on my publishing rate to the topic "image_raw".
I already changed the USB memory from Ubuntu as mentioned in the instuctions of the ros pylon package on github. I also tried to set the max usb transfer size to 150MB by rosservice commands but i didn't get any changes to my bandwith.

I am meassuring the bandwith by the ros call: "rostopic bw "..../image_raw" (for publishing rate: hz instead of bw).
At the moment i reach with one camera: publishing rate: ca. 6,2 Hz and bandwidth: ca 12MB/s

Could anybody help me with this issue?
In the end i want to work with several cameras at the same time so i should solve this problem....

Thanks for any help!

Error connecting to Basler ACE 2 Pro

Hello,

I have issues running a basler ace 2 pro (a2A1920-51gcPRO) camera with the driver. I'm using ros noetic on 20.04.
The error log shows that the property ExposureTimeAbs cannot be queried from the camera.

SUMMARY

PARAMETERS

  • /pylon_camera_node/camera_frame: pylon_camera
  • /pylon_camera_node/camera_info_url:
  • /pylon_camera_node/device_user_id:
  • /pylon_camera_node/enable_current_params_publisher: True
  • /pylon_camera_node/enable_status_publisher: True
  • /pylon_camera_node/frame_rate: 5.0
  • /pylon_camera_node/gige/mtu_size: 1500
  • /pylon_camera_node/startup_user_set: CurrentSetting
  • /rosdistro: noetic
  • /rosversion: 1.15.9

NODES
/
pylon_camera_node (pylon_camera/pylon_camera_node)

auto-starting new master
process[master]: started with pid [50947]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 56dfbef4-574a-11eb-af70-df158f63f6b0
process[rosout-1]: started with pid [50957]
started core service [/rosout]
process[pylon_camera_node-2]: started with pid [50964]
[ WARN][/pylon_camera_node][WallTime: 1610726236.868098176]: Autoflash: 0, line2: 1 , line3: 1
[ INFO][/pylon_camera_node][WallTime: 1610726236.868819414]: No Device User ID set -> Will open the camera device found first
[ INFO][/pylon_camera_node][WallTime: 1610726237.124932171]: Found camera with DeviceUserID 0: a2A1920-51gcPRO
[ WARN][/pylon_camera_node][WallTime: 1610726237.346371877]: No User Set Is selected, Camera current setting will be used
[ INFO][/pylon_camera_node][WallTime: 1610726237.373381813]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono8'|'mono8'] ['Mono12'|'mono16'] ['Mono12p'|'NO_ROS_EQUIVALENT'] ['RGB8'|'rgb8'] ['BGR8'|'bgr8'] ['YCbCr422_8'|'NO_ROS_EQUIVALENT'] ['BayerRG8'|'bayer_rggb8'] ['BayerRG12'|'bayer_rggb16'] ['BayerRG12p'|'NO_ROS_EQUIVALENT']
[ WARN][/pylon_camera_node][WallTime: 1610726237.373513115]: No image encoding provided. Will use 'mono8' or 'rgb8' as fallback!
[ INFO][/pylon_camera_node][WallTime: 1610726237.515286564]: CameraInfoURL needed for rectification! ROS-Param: '/pylon_camera_node/camera_info_url' = '' is invalid!
[ WARN][/pylon_camera_node][WallTime: 1610726237.515392230]: Will only provide distorted /image_raw images!
terminate called after throwing an instance of 'std::runtime_error'
what(): Error while accessing ExposureTimeAbs in PylonGigECamera

When I use the ./PylonViewerApp, I can access the camera and even view a video stream, so the cam in general seems to be working.
After I tried the ros driver, the camera seems to freeze internally and does not show any video stream in ./PylonViewerApp anymore (ros nodes were already terminated properly).

Do you have any suggestions how to trace the problem? What did I do wrong?

thanks in advance for your help,
Tobias

Handle multiple USB cameras

Hello,
How could i handle multiple USB Basler cameras?
I could successfully get the image of single camera. I set each camera a different UserDevice ID ("camera_01", "camera_02", etc.) and reset them afterwards. I changed the parameters in the default.yaml file at catkin_ws/src/pylon-ros-camera/pylon_camera/config as mentioned in the READ_ME File in the package folders: device_user_id: "camera_01" but it only detect one camera with its user ID. It tried also to add both camera-IDs (i tried something like: device_user_id: "camera_01", "camera_02") to the parameter but i got an error. I couldn't find any information how this driver work with multiple USB cameras. Is it necessary to run one node for each camera? And how do adapt some settings of a specific camera with rosservice, how do i adress the camera?
I appreciate any help

no device found, will try once more in 2 s

Hello !
Thanks for this great job and making it available to everyone.

I am using an Ethernet camera (GigE) and failing to get it connected. With lfconfig I can see the IP address of my camera, it is connected, but pylon_camera_ip_configuration.launch can't establish a connection with my camera returning 'no device found, will try once more in 2 s' . Consequently I am getting warning ' No camera present '. Any hints or suggestions ?

Wrong check after auto-brightness

When calling the setBrightness service and having gamma enabled (and not set to 1), the ROS node reports Did not reach the desired brightness .... However, the auto brightness function is triggered correctly and the brightness adjusts as well. But the computation of the brightness in the ROS node is implemented differently as on the camera.
In particular the following function

float PylonCameraNode::calcCurrentBrightness()
{
boost::lock_guard<boost::recursive_mutex> lock(grab_mutex_);
if ( img_raw_msg_.data.empty() )
{
return 0.0;
}
float sum = 0.0;
if ( sensor_msgs::image_encodings::isMono(img_raw_msg_.encoding) )
{
// The mean brightness is calculated using a subset of all pixels
for ( const std::size_t& idx : sampling_indices_ )
{
sum += img_raw_msg_.data.at(idx);
}
if ( sum > 0.0 )
{
sum /= static_cast<float>(sampling_indices_.size());
}
}
else
{
// The mean brightness is calculated using all pixels and all channels
sum = std::accumulate(img_raw_msg_.data.begin(), img_raw_msg_.data.end(), 0);
if ( sum > 0.0 )
{
sum /= static_cast<float>(img_raw_msg_.data.size());
}
}
return sum;
}

takes the pixel values of the final image, after gamma correction has been applied.
On the camera, however, brightness is computed on raw pixel values before gamma correction.
To reproduce this, you can enable gamma correction and call the brightness service.

To fix this issue we believe (cc @neunertm) that for verifying the auto-corrected brightness the achieved value should be the average sum over the uncorrected pixels values, effectively inverting this formula from Basler doc.

The Basler documentation also reports that

The target value calculation does not include other image optimizations, e.g. Gamma. Depending on the image optimizations set, images output by the camera may have a significantly lower or higher average gray value than indicated by the target value.

input delay / high latency - basler acA2440-35uc

On our system with Intel(R) Xeon(R) CPU E3-1505M v6 we have very heavy delays (several seconds, sometimes over 10 seconds) until the message arrives. We use a USB3 Basler acA2440-35uc camera for this. If we open PylonViewer directly on the same computer, it works fine. Via rqt_image_view (and no matter which topic we connect to) the message is delayed very long.
All settings are stored within a User-Settings, which is invoked while launching. The framerate is set to 20hz. No scaling is applied. The framerate of the received, but delayed message seems to be okay (movements are smooth). We do not face this problem on a desktop pc setup.
On the first look I think this issues #17 is fixed and does not relate to this problem anymore, or does ist?
Are there any approaches to solving this problem?
Is there a option for software scaling within the pylon-ros-camera node?

PTP synchronization with multiple cameras

Hello,

the Basler documentation provide detailed information on how to synchronize multiple cameras using the PTP protocol, but the problem is that I cannot find the way to match does information for the Pylon ROS Driver.

I already have a network with a master clock and I enabled, through the Pylon Software Suite, the PTP clock synchronization for both cameras (as mentioned here).

What I am doing right now is running two different Pylon nodes specific to a singular camera and looking at the header of their topic in order to understand if the time stamp of the two cameras coincides.

Because this is not a professional way to check their synchronization and it doesn't give me the prove that they are really synchronized I would like:

  • to know if there is a way to understand if the cameras are really synchronized with the master clock
  • or to know how to synchronize them using the Pylon ROS driver.

All of this, if possible, only by using the Pylon ROS driver.

Thank you,
Alessandro

Not finding camera with UserDefinedID

I tried setting my camera device_user_id using write_device_user_id_to_camera, which seems to work fine. However, when trying to run pylon_camera with the specified device_user_id, it only finds cameras with user_ids "N/A".

My temporary solution was to replace every instance of "GetUserDefinedName" in pylon_camera with "GetDeviceGUID" and setting the device_user_id to be equal to the camera's GUID. This works great.

I don't know enough c++ to debug why the original approach is not working :(

Read Pylon Temperature

Hello Dev-Team,

is it possible to add the psobility to read out the temperature of the camera?
Pylon sdk does support to read the temperature.

best regards

rosdep update error: <urlopen error [Errno 111]>

When I run:

sudo sh -c 'echo "yaml https://raw.githubusercontent.com/basler/pylon-ros-camera/master/pylon_camera/rosdep/pylon_sdk.yaml" > /etc/ros/rosdep/sources.list.d/30-pylon_camera.list' && rosdep update && sudo rosdep install --from-paths . --ignore-src --rosdistro=$ROS_DISTRO -y

Erros like this arised:

ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml]:
<urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml)

How to fix it? thank you!

Driver for two cameras

Hi,

I currently have two cameras, and I want to start them synchronously. What should I do?

Thanks,
Tairan Chen

Unable to run pylon_camera_node with BASLER scA1390-ABB camera

I'm using BASLER scA1390-ABB camera with pylon_camera package and ROS-kinetic.
I can't connect to the camera with automatic IP address, So I configured IPv4 Setting in Manual, Address: 169.254.1.1 and Netmask: 255.255.0.0 Finally the connection is established.
Then I tried the following command:

roslaunch pylon_camera pylon_camera_node.launch

And then it returned the following error:

[ WARN] [1614848016.079406596]: Autoflash: 0, line2: 1 , line3: 1 
[ INFO] [1614848016.079532262]: No Device User ID set -> Will open the camera device found first
[ERROR] [1614848016.386277604]: No camera present

I'm not sure can I use the camera with pylon_camera package.
What am I doing wrong?

Unable to grab images from daA3840-45uc

roslaunch pylon_camera pylon_camera_node.launch returns the following error, bit works fine with a daA2500-14uc

Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://dev.local:39093/

SUMMARY
========

PARAMETERS
 * /pylon_camera_node/camera_frame: pylon_camera
 * /pylon_camera_node/camera_info_url: 
 * /pylon_camera_node/device_user_id: 
 * /pylon_camera_node/enable_current_params_publisher: True
 * /pylon_camera_node/enable_status_publisher: True
 * /pylon_camera_node/frame_rate: 5.0
 * /pylon_camera_node/gige/mtu_size: 1500
 * /pylon_camera_node/image_encoding: rgb8
 * /pylon_camera_node/startup_user_set: CurrentSetting
 * /rosdistro: melodic
 * /rosversion: 1.14.10

NODES
  /
    pylon_camera_node (pylon_camera/pylon_camera_node)

auto-starting new master
process[master]: started with pid [21582]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 3ebc001e-67d3-11eb-a847-00044bec1ccd
process[rosout-1]: started with pid [21593]
started core service [/rosout]
process[pylon_camera_node-2]: started with pid [21597]
[ WARN] [1612544257.249715311]: Autoflash: 0, line2: 1 , line3: 1 
[ INFO] [1612544257.251923600]: No Device User ID set -> Will open the camera device found first
[ INFO] [1612544257.525473588]: Found camera with DeviceUserID N/A: daA3840-45uc
[ WARN] [1612544257.934902505]: No User Set Is selected, Camera current setting will be used
[ INFO] [1612544257.948000936]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono8'|'mono8'] ['Mono12'|'mono16'] ['Mono12p'|'NO_ROS_EQUIVALENT'] ['RGB8'|'rgb8'] ['BGR8'|'bgr8'] ['YCbCr422_8'|'NO_ROS_EQUIVALENT'] ['BayerRG8'|'bayer_rggb8'] ['BayerRG12'|'bayer_rggb16'] ['BayerRG12p'|'NO_ROS_EQUIVALENT'] 
[ERROR] [1612544259.000065048]: Waiting for Trigger signal
[ERROR] [1612544259.000201458]: PylonCamera not ready because the result of the initial grab is invalid
[ WARN] [1612544259.018461124]: [] name not valid for camera_info_manager
[ INFO] [1612544259.038553393]: CameraInfoURL needed for rectification! ROS-Param: '/pylon_camera_node/camera_info_url' = '' is invalid!
[ WARN] [1612544259.038646625]: Will only provide distorted /image_raw images!
[ INFO] [1612544259.040987678]: Startup settings: encoding = 'rgb8', binning = [1, 1], exposure = 14983, gain = 0, gamma = 1, shutter mode = default_shutter_mode
[ INFO] [1612544259.041788794]: Desired framerate 5.00 is higher than max possible. Will limit framerate to: 0.30 Hz
[ INFO] [1612544259.044071617]: Start image grabbing if node connects to topic with a frame_rate of: 0.297531 Hz
[ INFO] [1612544259.044281518]: Camera not calibrated
[ WARN] [1612544259.045840103]: Error in triggerDeviceReset(): pylon_camera_ is not ready!
[ WARN] [1612544262.406677254]: Error in triggerDeviceReset(): pylon_camera_ is not ready!
[ WARN] [1612544265.774585948]: Error in triggerDeviceReset(): pylon_camera_ is not ready!

Unable to run the pylon_camera_node with basler blaze camera

Now, I'm following the manual here:
https://www.baslerweb.com/fp-1591878203/media/downloads/documents/application_notes/AW00149103000_Interfacing_Basler_Cameras_with_ROS~1.pdf

$ rosrun pylon_camera pylon_camera_node

returned the following error:

[ WARN] [1613029125.159595628]: Autoflash: 0, line2: 1 , line3: 1 
[ INFO] [1613029125.160155182]: No Device User ID set -> Will open the camera device found first
[ INFO] [1613029125.467144068]: Found camera with DeviceUserID : blaze-101-GEV
[ INFO] [1613029125.837165899]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono16'|'mono16'] 
[ WARN] [1613029125.837357976]: No image encoding provided. Will use 'mono8' or 'rgb8' as fallback!
[ERROR] [1613029125.837498203]: Couldn't find a fallback solution!
[ERROR] [1613029125.837626693]: Error while start grabbing

Then, I tried:
$ rosparam set /pylon_camera_node/image_encoding "mono16"

still returned the error:

$ rosrun pylon_camera pylon_camera_node 
[ WARN] [1613029547.989726418]: Autoflash: 0, line2: 1 , line3: 1 
[ INFO] [1613029547.990249293]: No Device User ID set -> Will open the camera device found first
[ INFO] [1613029548.299452267]: Found camera with DeviceUserID : blaze-101-GEV
[ INFO] [1613029548.663975655]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono16'|'mono16'] 
[ERROR] [1613029548.664156572]: Error while start grabbing

rosdep install fails due to wrong checksum

executing command [rosdep-source install https://raw.githubusercontent.com/basler/pylon-ros-camera/master/pylon_camera/rosdep/pylon_sdk.rdmanifest]
ERROR: installation failed:
source: md5sum check on https://raw.githubusercontent.com/basler/pylon-ros-camera/master/pylon_camera/rosdep/empty.tar failed. Expected df41600634ca08cb5082877eb64220c9 got d41d8cd98f00b204e9800998ecf8427e
ERROR: the following rosdeps failed to install
source: command [rosdep-source install https://raw.githubusercontent.com/basler/pylon-ros-camera/master/pylon_camera/rosdep/pylon_sdk.rdmanifest] failed

ROS Installation problem

Based on manual installation on stage -
$ sudo sh -c 'echo "yaml https://raw.githubusercontent.com/basler/pylon_ros_camera/master/pylon_came ra/rosdep/pylon_sdk.yaml " > /etc/ros/rosdep/sources.list.d/30- plyon_camera.list'
$ rosdep update

The ERROR received:

ERROR: unable to process source [https://raw.githubusercontent.com/basler/pylon_ros_camera/master/pylon_came]:
HTTP Error 404: Not Found (https://raw.githubusercontent.com/basler/pylon_ros_camera/master/pylon_came)

Adding PTP and sync free run

I wanted to support PTP (#25 might be interested) and also synchronous free run. I have it working here: https://github.com/iron-ox/pylon-ros-camera/tree/petercheng/ptp_sync_free_run

However, the changes are somewhat messy. Sync free run require continuous capture mode and not software trigger mode, and the codebase seems to be built assuming software trigger mode. Do you have any suggestions for how the code could be made cleaner?

I was also considering making it a separate node for continuous capture / sync free run. Perhaps one node could manage multiple cameras to ensure they are all synced simultaneously. However, I couldn't find a good place to split between the node code and the camera code. Any thoughts or suggestions on that?

Thanks

Camera node dies as soon as camera matrix gets updated

Hello,
Why my camera node dies as soon as I update the camera matrix K? I do update it by calling the set_camera_info service:

$ rosservice call /pylon_camera_node/set_camera_info "camera_info:
header:
seq: 0
stamp: {secs: 0, nsecs: 0}
frame_id: ''
height: 0
width: 0
distortion_model: ''
D: [0]
K: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
R: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
P: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
binning_x: 0
binning_y: 0
roi: {x_offset: 0, y_offset: 0, height: 0, width: 0, do_rectify: false}"

When, I insert a value different that 0 in the K matrix, in the camera's node terminal says:
[ INFO] [1615941352.735544232]: Camera is calibrated
[pylon_camera_node-1] process has died [pid 27803, exit code -11, cmd /home/manolis/ws/devel/lib/pylon_camera/pylon_camera_node __name:=pylon_camera_node __log:=/home/manolis/.ros/log/fbd05ee6-86ac-11eb-a608-071dbd7be759/pylon_camera_node-1.log].
log file: /home/manolis/.ros/log/fbd05ee6-86ac-11eb-a608-071dbd7be759/pylon_camera_node-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
But, whenever I insert a value different than 0 to any other argument of the 'set_camera_info' service, in the camera's node terminal says:
[ INFO] [1615941237.782840476]: writing calibration data to /home/manolis/.ros/camera_info/camera.yaml

and it is still running.

Any insight for the potential issue would be helpful. Thank you!

"No camera present"after roslaunch pylon_camera pylon_camera_node.launch

Hi there,
I use pylon on a linux arm system, but when I run "roslaunch pylon_camera pylon_camera_node.launch", "No camera present" appears, as follows:
process[pylon_camera_node-1]: started with pid [10841]
[ WARN] [1591426727.887867753]: Autoflash: 0, line2: 1 , line3: 1
[ INFO] [1591426727.890951286]: No Device User ID set -> Will open the camera device found first
[ERROR] [1591426728.221549200]: No camera present
[ INFO] [1591426730.223653219]: using default calibration URL
[ INFO] [1591426730.224012859]: camera calibration URL: file:///home/nvidia/.ros/camera_info/camera.yaml
[ INFO] [1591426730.224407350]: Unable to open camera calibration file [/home/nvidia/.ros/camera_info/camera.yaml]
[ WARN] [1591426730.224656519]: Camera calibration file /home/nvidia/.ros/camera_info/camera.yaml not found.
[ WARN] [1591426744.554398780]: No camera present. Keep waiting ...

I can use the camera normally in the pylon viewer, but I cannot detect the camera in ros,what should i do?

Setting auto_exposure_upper_limit has no effect

Config .yaml file needs the following line for auto_exposure_upper_limit to take an effect:

startup_user_set: "Default"

I suggest adding that to the default.yaml file or clarifying the use of auto_exposure_upper_limit in any other way.

Feature Request: Auto Exposure and both Auto Function ROI's

Hi there,
In case someone would like to add some features, someone has brought to me an application needing the Auto Exposure and Auto Function ROI's (both for Brightness and White Balance). Unfortunately at the moment I don't have the resources to implement these myself. I'm not sure of the urgency, just that they would be needed at some point. (I also file the issue so that I won't forget one day when I am able to work on them :)).
Thanks and I hope everyone is healthy and doing well during these strange days!!
-Matt

Any support for YUV colour format planned?

Hi :)

When we moved from USB to GigE we lost the ability to use PGI on-board demoasicing because the GigE Ace U cams only support YUV as a debayered format.
The stack here however does not support the YUV format.

Are there any plans to add those?

Thanks a lot :)

No option to start grabbing with a different strategy

The current implementation of the camera driver uses the following function call to start grabbing

void Pylon::CInstantCamera::StartGrabbing(EGrabStrategy strategy = GrabStrategy_OneByOne, EGrabLoop grabLoopType = GrabLoop_ProvidedByUser)

with default parameters, i.e. calling

Pylon::CInstantCamera::StartGrabbing()

in diffeernt part of the code, see for example pylon_camera/include/pylon_camera/internal/impl/pylon_camera_base.hpp.

However this implies that, for real-time applications, if a frame is not grabbed (e.g. a trigger fails) a queue with past frames is formed, resulting in an synchronized grabbed sequence of images. This may be desirable in some applications, but the dirver/ROS node should provide a way to choose the best strategy, which are

enum Pylon::EGrabStrategy
Enum Description
GrabStrategy_OneByOne The images are processed in the order of their arrival. This is the default grab strategy.
GrabStrategy_LatestImageOnly Only the latest image is kept in the output queue, all other grabbed images are skipped. If no image is in the output queue when retrieving an image with CInstantCamera::RetrieveResult(), the processing waits for the upcoming image.
GrabStrategy_LatestImages This strategy can be used to grab images while keeping only the latest images. If the application does not retrieve all images in time, all other grabbed images are skipped. The CInstantCamera::OutputQueueSize parameter can be used to control how many images can be queued in the output queue. When setting the output queue size to 1, this strategy is equivalent to GrabStrategy_LatestImageOnly grab strategy. When setting the output queue size to CInstantCamera::MaxNumBuffer, this strategy is equivalent to GrabStrategy_OneByOne.
GrabStrategy_UpcomingImage The input buffer queue is kept empty. This prevents grabbing. However, when retrieving an image with a call to the CInstantCamera::RetrieveResult() method a buffer is queued into the input queue and then the call waits for the upcoming image. The buffer is removed from the queue on timeout. Hence after the call to the CInstantCamera::RetrieveResult() method the input buffer queue is empty again. The upcoming image grab strategy cannot be used together with USB camera devices.

Error while catkin_make

An error occurs after catkin_make command:

[ 98%] Building CXX object pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera_node.dir/src/pylon_camera/main.cpp.o
[100%] Linking CXX executable /home/khs/桌面/baslerCamera/pylon_ros/devel/lib/pylon_camera/pylon_camera_node
/home/khs/桌面/baslerCamera/pylon_ros/devel/lib/libpylon_camera.so:对‘cv::Mat::Mat()’未定义的引用
collect2: error: ld returned 1 exit status
pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera_node.dir/build.make:170: recipe for target '/home/khs/桌面/baslerCamera/pylon_ros/devel/lib/pylon_camera/pylon_camera_node' failed
make[2]: *** [/home/khs/桌面/baslerCamera/pylon_ros/devel/lib/pylon_camera/pylon_camera_node] Error 1
CMakeFiles/Makefile2:4048: recipe for target 'pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera_node.dir/all' failed
make[1]: *** [pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera_node.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed

before this step, everything goes right, how to solve this problem? thanks~

picture shows gray in RVIZ

I set rgb8 in default.yaml . I can get the color map when I run " rosrun image_view image_view image:=/pylon_camera_node/image_raw "

but when I run "rviz" , the pictures is gray

Error while start grabbing. ROS melodic, pylon 6, Basler Ace 2 Ethernet camera.

Hello,

I have a Basler ace 2 camera (a2A1920-51gcBAS) connected directly to my laptop with static IPs configured (169.254.1.10 laptop, 169.254.1.1 camera). The pylon viewer works as expected and I have also tried some of the samples of the SDK and they work as expected but I can not get the ROS node to work. It throws the error "Error while start grabbing". I installed everything following the readme but I had pylon 6 installed.

This is the output of roslaunch pylon_camera pylon_camera_node.launch with de configuration set to debug=true. Any idea on what might be the issue and how to solve it?

marc@pc2829pt:~/basler_catkin_ws$ roslaunch pylon_camera pylon_camera_node.launch
... logging to /home/marc/.ros/log/dd105d88-4130-11eb-8d7c-1065303dcaa8/roslaunch-pc2829pt-26288.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://pc2829pt:33101/

SUMMARY

PARAMETERS

  • /pylon_camera_node/camera_frame: pylon_camera
  • /pylon_camera_node/camera_info_url:
  • /pylon_camera_node/device_user_id:
  • /pylon_camera_node/enable_current_params_publisher: True
  • /pylon_camera_node/enable_status_publisher: True
  • /pylon_camera_node/frame_rate: 15.0
  • /pylon_camera_node/gige/inter_pkg_delay: 1000
  • /pylon_camera_node/gige/mtu_size: 1500
  • /pylon_camera_node/image_encoding: bayer_gbrg8
  • /pylon_camera_node/startup_user_set: CurrentSetting
  • /rosdistro: kinetic
  • /rosversion: 1.12.14

NODES
/
pylon_camera_node (pylon_camera/pylon_camera_node)

ROS_MASTER_URI=http://localhost:11311

process[pylon_camera_node-1]: started with pid [26306]
GNU gdb (Ubuntu 7.11.1-0ubuntu116.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
---Type to continue, or q to quit---
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Registered pretty printers for UE4 classes
Reading symbols from /home/idiada/Ensemble/basler_catkin_ws/devel/lib/pylon_camera/pylon_camera_node...(no debugging symbols found)...done.
Starting program: /home/marc/basler_catkin_ws/devel/lib/pylon_camera/pylon_camera_node __name:=pylon_camera_node __log:=/home/idiada/.ros/log/dd105d88-4130-11eb-8d7c-1065303dcaa8/pylon_camera_node-1.log
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[New Thread 0x7fffe67a4700 (LWP 26313)]
[New Thread 0x7fffe5fa3700 (LWP 26314)]
[New Thread 0x7fffe57a2700 (LWP 26315)]
[New Thread 0x7fffe4fa1700 (LWP 26320)]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[New Thread 0x7fffd6eaf700 (LWP 26410)]
[New Thread 0x7fffd66ae700 (LWP 26415)]
[ WARN] [1608296470.451341444]: Autoflash: 0, line2: 1 , line3: 1
[ INFO] [1608296470.451392814]: No Device User ID set -> Will open the camera device found first
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[New Thread 0x7fffce433700 (LWP 26453)]
[New Thread 0x7fffcdc32700 (LWP 26454)]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[ INFO] [1608296470.894443024]: Found camera with DeviceUserID camera_1: a2A1920-51gcBAS
[New Thread 0x7fffccc55700 (LWP 26455)]
[Thread 0x7fffccc55700 (LWP 26455) exited]
[New Thread 0x7fffccc55700 (LWP 26457)]
[New Thread 0x7fffc7fff700 (LWP 26458)]
[ WARN] [1608296471.128966931]: No User Set Is selected, Camera current setting will be used
[ INFO] [1608296471.156283167]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono8'|'mono8'] ['Mono12'|'mono16'] ['Mono12p'|'NO_ROS_EQUIVALENT'] ['RGB8'|'rgb8'] ['BGR8'|'bgr8'] ['YCbCr422_8'|'NO_ROS_EQUIVALENT'] ['BayerRG8'|'bayer_rggb8'] ['BayerRG12'|'bayer_rggb16'] ['BayerRG12p'|'NO_ROS_EQUIVALENT']
[ERROR] [1608296471.156352385]: Error while start grabbing
[Thread 0x7fffe4fa1700 (LWP 26320) exited]
[Thread 0x7fffe67a4700 (LWP 26313) exited]
[Thread 0x7fffe5fa3700 (LWP 26314) exited]
[New Thread 0x7fffe5fa3700 (LWP 26524)]
[Thread 0x7fffd6eaf700 (LWP 26410) exited]
[Thread 0x7fffe5fa3700 (LWP 26524) exited]
[Thread 0x7fffccc55700 (LWP 26457) exited]
[Thread 0x7fffc7fff700 (LWP 26458) exited]
[Thread 0x7fffcdc32700 (LWP 26454) exited]
[Thread 0x7fffce433700 (LWP 26453) exited]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[tcsetpgrp failed in terminal_inferior: Inappropriate ioctl for device]
[Thread 0x7fffd66ae700 (LWP 26415) exited]
[Thread 0x7fffe57a2700 (LWP 26315) exited]
[Inferior 1 (process 26308) exited normally]
(gdb) [pylon_camera_node-1] killing on exit
Quit
(gdb) [pylon_camera_node-1] escalating to SIGTERM
Exception ignored in: <gdb.GdbOutputFile object at 0x7f79e3a0eeb8>
Traceback (most recent call last):
File "/usr/share/gdb/python/gdb/init.py", line 43, in flush
def flush(self):
KeyboardInterrupt
shutting down processing monitor...
... shutting down processing monitor complete
done
marc@pc2829pt:
/basler_catkin_ws$ ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:06:c0:89:f7
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

enp61s0 Link encap:Ethernet HWaddr 10:65:30:3d:ca:a8
inet addr:169.254.1.10 Bcast:169.254.255.255 Mask:255.255.0.0
inet6 addr: fe80::f354:5384:b003:6a4e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3304788 errors:0 dropped:0 overruns:0 frame:0
TX packets:19185 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4963976382 (4.9 GB) TX bytes:1196259 (1.1 MB)
Interrupt:16

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:54379 errors:0 dropped:0 overruns:0 frame:0
TX packets:54379 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13961275 (13.9 MB) TX bytes:13961275 (13.9 MB)

wlp62s0 Link encap:Ethernet HWaddr 9c:b6:d0:6b:70:a3
inet addr:192.168.248.68 Bcast:192.168.255.255 Mask:255.255.248.0
inet6 addr: fe80::8180:fdc5:e184:2df5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:722113 errors:0 dropped:0 overruns:0 frame:0
TX packets:415795 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:690722733 (690.7 MB) TX bytes:154309170 (154.3 MB)

A2440-75uc USB3 not present

Hi i try connect my camera. It can be opened in Pylon viewer but not in ros there the camera is not present. I opened ros in docker the workspace seems to be working. What could be answer. I hope you can help me.

Node is not writable when call start_grabbing

camera: acA2440-75uc with USB3.0
OS/device: Ubuntu 16.04 with ROS(kinetic) in docker / Jetson AGX Xavier
Opened two terminal,
First called roslaunch pylon_camera pylon_camera_node.launch

PARAMETERS
 * /pylon_camera_node/camera_frame: pylon_camera
 * /pylon_camera_node/camera_info_url: 
 * /pylon_camera_node/device_user_id: 
 * /pylon_camera_node/enable_current_params_publisher: True
 * /pylon_camera_node/enable_status_publisher: True
 * /pylon_camera_node/frame_rate: 5.0
 * /pylon_camera_node/gige/mtu_size: 1500
 * /pylon_camera_node/startup_user_set: CurrentSetting
 * /rosdistro: kinetic
 * /rosversion: 1.12.14

NODES
  /
    pylon_camera_node (pylon_camera/pylon_camera_node)

auto-starting new master
process[master]: started with pid [1183]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to afe8bf76-56ad-11ea-82b5-00044bcc10e6
process[rosout-1]: started with pid [1196]
started core service [/rosout]
process[pylon_camera_node-2]: started with pid [1208]
[ WARN] [1582511462.441443735]: Autoflash: 0, line2: 1 , line3: 1 
[ INFO] [1582511462.441945201]: No Device User ID set -> Will open the camera device found first
[ INFO] [1582511462.731535945]: Found camera with DeviceUserID N/A: acA2440-75uc
[ WARN] [1582511462.986045287]: No User Set Is selected, Camera current setting will be used
[ INFO] [1582511462.992758423]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono8'|'mono8'] ['BayerRG8'|'bayer_rggb8'] ['BayerRG12'|'bayer_rggb16'] ['BayerRG12p'|'NO_ROS_EQUIVALENT'] ['RGB8'|'rgb8'] ['BGR8'|'bgr8'] ['YCbCr422_8'|'NO_ROS_EQUIVALENT'] 
[ WARN] [1582511462.993106632]: No image encoding provided. Will use 'mono8' or 'rgb8' as fallback!
[ WARN] [1582511463.128782253]: [] name not valid for camera_info_manager
[ INFO] [1582511463.220310896]: CameraInfoURL needed for rectification! ROS-Param: '/pylon_camera_node/camera_info_url' = '' is invalid!
[ WARN] [1582511463.220583774]: Will only provide distorted /image_raw images!
[ INFO] [1582511463.226793332]: Startup settings: encoding = 'mono8', binning = [1, 1], exposure = 3000, gain = 0, gamma = 1, shutter mode = default_shutter_mode
[ INFO] [1582511463.228155000]: Start image grabbing if node connects to topic with a frame_rate of: 5 Hz
[ INFO] [1582511463.229123785]: Camera not calibrated
[ INFO] [1582511463.277962964]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono8'|'mono8'] ['BayerRG8'|'bayer_rggb8'] ['BayerRG12'|'bayer_rggb16'] ['BayerRG12p'|'NO_ROS_EQUIVALENT'] ['RGB8'|'rgb8'] ['BGR8'|'bgr8'] ['YCbCr422_8'|'NO_ROS_EQUIVALENT'] 
[ WARN] [1582511463.386160986]: [] name not valid for camera_info_manager
[ INFO] [1582511463.453152433]: CameraInfoURL needed for rectification! ROS-Param: '/pylon_camera_node/camera_info_url' = '' is invalid!
[ WARN] [1582511463.453369308]: Will only provide distorted /image_raw images!
[ INFO] [1582511463.461328139]: Startup settings: encoding = 'mono8', binning = [1, 1], exposure = 3000, gain = 0, gamma = 1, shutter mode = default_shutter_mode
[ INFO] [1582511749.218811729]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono8'|'mono8'] ['BayerRG8'|'bayer_rggb8'] ['BayerRG12'|'bayer_rggb16'] ['BayerRG12p'|'NO_ROS_EQUIVALENT'] ['RGB8'|'rgb8'] ['BGR8'|'bgr8'] ['YCbCr422_8'|'NO_ROS_EQUIVALENT'] 

Second call rosservice call /pylon_camera_node/start_grabbing

root@AGX:~/catkin_ws# rosservice call /pylon_camera_node/start_grabbing
success: False
message: "Error"

and I got msg in first terminal

[ INFO] [1582511749.218811729]: Cam supports the following [GenAPI|ROS] image encodings: ['Mono8'|'mono8'] ['BayerRG8'|'bayer_rggb8'] ['BayerRG12'|'bayer_rggb16'] ['BayerRG12p'|'NO_ROS_EQUIVALENT'] ['RGB8'|'rgb8'] ['BGR8'|'bgr8'] ['YCbCr422_8'|'NO_ROS_EQUIVALENT'] 
[ERROR] [1582511749.223653481]: An exception while setting target image encoding to 'mono8' occurred: Node is not writable
[ERROR] [1582511749.225676099]: Error while start grabbing

Can you help me to solve this issue?

Hard coded timeouts in camera driver decrease maximum FPS

The following trigger- and grab-related timeouts are hard coded

//grab_timeout_ = exposureTime().GetMax() * 1.05;
grab_timeout_ = 500; // grab timeout = 500 ms

that results in the following code

try
{
int timeout = 5000; // ms
// WaitForFrameTriggerReady to prevent trigger signal to get lost
// this could happen, if 2xExecuteSoftwareTrigger() is only followed by 1xgrabResult()
// -> 2nd trigger might get lost
if ((cam_->TriggerMode.GetValue() == TriggerModeEnums::TriggerMode_On))
{
if ( cam_->WaitForFrameTriggerReady(timeout, Pylon::TimeoutHandling_ThrowException) )
{
cam_->ExecuteSoftwareTrigger();
}
else
{
ROS_ERROR("Error WaitForFrameTriggerReady() timed out, impossible to ExecuteSoftwareTrigger()");
return false;
}
}
cam_->RetrieveResult(grab_timeout_, grab_result, Pylon::TimeoutHandling_ThrowException);
}

to hang too much and, as a consequence, decrease the FPS of the camera.
Notice that this behavior, in conjunction with #28, provides a slow and delayed/unsynched stream of images, which is very undesirable when high frame-rate/real-time is desirable.
After some tests, setting grab_timeout_ = <framerate> and timeout = 2 * grab_timeout_ resulted in very stable performance with few image drops.

Influence parameter of frame rate

Hello together,

How does the trigger timeout and the grabbing timeout influence the frame rate/image acquisition, when i run my camera in the free run mode with the grabbing strategy latest image only?

I wolud appreciate any explanation of the realtion of these two parameters in the config-file. Because i want to understand the whole process behind the free run mode and the parameters

Thanks for any help!

Rosdep install uses incorrect architecture

Hi there,

I'm trying to install pylon-ros-camera inside an i386 docker container. I'm building the container on an amd64 host.

Currently the rosdep install step fails because it tries to install _pylon_5.2.0.13457-deb0_amd64.deb_ (i.e. the amd64 version of pylon).

Tracing this back, it looks like the amd64 version is picked based on the output of uname -m - see here:
https://github.com/basler/pylon-ros-camera/blob/master/pylon_camera/rosdep/pylon_sdk.rdmanifest#L16

Running uname -m inside the container returns x86_64, reflecting the fact that the container is running on a 64 bit host, but I need the 32 bit deb to be installed in this case.

As far as I can tell, a more suitable way to get the architecture for the package install would be pkgarch=$(dpkg --print-architecture). I've confirmed that this returns i386 in my container, and amd64 on my host. I'm guessing that this approach would resolve my issue and allow you to get rid of the whole if/elif/else block here:
https://github.com/basler/pylon-ros-camera/blob/master/pylon_camera/rosdep/pylon_sdk.rdmanifest#L16-L27

I could put this together as a pull request, but I'm not able to test on those other architectures, and I'm not sure if I'm missing something in my reasoning.

ROS dependencies installation error

Hello,

when I am installing the ROS dependencies I got a following error. I have installed pylon 6.1.0 in /opt. Is there a way to solve it?

reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Hit https://raw.githubusercontent.com/basler/pylon-ros-camera/master/pylon_camera/rosdep/pylon_sdk.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Add distro "dashing"
Add distro "eloquent"
Add distro "foxy"
Skip end-of-life distro "groovy"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Skip end-of-life distro "jade"
Add distro "kinetic"
Skip end-of-life distro "lunar"
Add distro "melodic"
Add distro "noetic"
updated cache in /home/pilz/.ros/rosdep/sources.cache
/opt/pylon/bin/pylon-config
Could not find any pylon Installation with version 5 or greater
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
pylon_camera: Cannot locate rosdep definition for [dnb_msgs]

pylon/PylonIncludes.h: No such file or directory

Hello!
I tried to install the package on a Jetson device (ARM) and during catkin_make, I get the following error:

fatal error: pylon/PylonIncludes.h: No such file or directory
 #include <pylon/PylonIncludes.h>

Pylon is installed at /opt/pylon5 as expected (and stated in the FindPylon.cmake).
Do you have any ideas, how I can get it working?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.