Giter Site home page Giter Site logo

Comments (3)

tpanzarella avatar tpanzarella commented on July 20, 2024

You will not get an error code in the way you are expecting. The software triggering is asynchronous -- "success" indicates that your request to trigger was successfully completed (i.e., processed by the underlying libo3d3xx).

Lot's of other lower-level technical issues at hand here.... From a practical perspective, you can determine an "error" (like, no camera connected) in that your next call to WaitForFrame() on the FrameGrabber will time out, or in the case of ROS, no message getting published to the topic you are subscribing to.

....at the driver level, libo3d3xx is running a boost::asio event loop. If the camera is not connected, no TCP connection to the PCIC server on the camera can be made. At which point the main FrameGrabber thread will stop as the asio event loop will stop running. So, when you ask to s/w trigger, the event is posted to the ASIO io_service, but since the event loop is not running, it is basically like sending it to /dev/null (metaphorically speaking).

I hope that helps.

from o3d3xx-ros.

bennilson avatar bennilson commented on July 20, 2024

Ok, so the s/w trigger request for a frame is queued with the FrameGrabber, but in that case never executed.

And there is nothing at the ROS level that can catch or handle any exception being raised as part of the FrameGrabber failing to establish a TCP connection to the PCIP server, correct?

And the only thing that could recover from that situation would be the FrameGrabberreset as a result of timeout_tolerance_secs for not receiving a frame?
Thanks

from o3d3xx-ros.

tpanzarella avatar tpanzarella commented on July 20, 2024

Right. The auto-resetting of the FrameGrabber (i.e., literally calling .reset() on the std::shared_ptr) reconstructs a new FrameGrabber which will re-attempt to establish the TCP connection with the camera. When running in "free run mode" you can literally watch this in action (via rviz) by plugging and unplugging your ethernet cable between the camera and your computer. The idea here was to make the node robust to exactly this situation ... losing the connection to the camera.

from o3d3xx-ros.

Related Issues (20)

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.