Menu

USB protocol for DAVIS 240C

Help
Timo S
2017-06-04
2017-06-04
  • Timo S

    Timo S - 2017-06-04

    Hi all,

    I have been happily working with JAER project, however I now wish to process some event data on an FPGA on PCIExpress. To do this I want to read event data directly from USB and put it in some memory, but so far I have not been able to understand the data I have been recieving. I looked at the post here https://sourceforge.net/p/jaer/discussion/631958/thread/e5fbe1d5/, but it is for the DVS128. Is there a resource somewhere that will explain how to communicate with the DVS sensors directly without using JAER?
    I have been looking through the jaer project code, and I see that the USB connection is set up in CypressFX3.java and how that data is parsed in DavisFX3HardwareInterface.java, however I haven't been able to find out where the camera is actually set up and from where communcations with the camera are based. Some help here would be very much appreciated!

    Many thanks,
    Timo

     
    • Tobi Delbruck

      Tobi Delbruck - 2017-06-04

      Timo, in short, it's complicated. One the data starts flowing it is not
      so complicated (it all flows through the translateEvents() method),

      The device setup is complicated because a lot of configuration needs to
      be sent to the camera to set the on-chip bias generator registers, other
      on-chip registers, and also the off-chip (CPLD or FPGA) registers. All
      of this stuff in jaer is centralized in the AEChip's Biasgen object
      (which historically was just an on-chip bias generators but nowadays
      encapsulated all configuration).

      It's also complicated because the configuration needs to be sent 1. on
      startup, 2. whenever the device is replugged, 3. whenever a new
      configuration is loaded, by loading a new XML settings file.
      Plus, the camera, the software state, and all the GUI elements need to
      be kept in sync.

      For Davis cameras, look in the class DavisConfig. Put a breakpoint in
      the update() method and you will see how each type of configuration is
      sent via the corresponding CypressFX3 method. update() is called by
      firing a notifyObservers() in the set method that is called by GUI
      changes. I.e. the DavisConfig is an Observer for these changes.
      There is another method called sendConfiguration() that completely
      updates the camera with all parameters.
      Hope this helps a bit. The debugger is probably a good way to see how it
      works.
      Tobi

       
      • Tobi Delbruck

        Tobi Delbruck - 2017-06-04

        Timo, PS, did you realize that jaer moved to github? Please have a look
        at the the announcement on http://jaerproject.org

        For migrating, Luca's instructions were very useful for me:

        For Windows users, install Git For Windows
        https://git-scm.com/download/win and then I can highly recommend
        TortoiseGit as client https://tortoisegit.org/ it also has some useful
        documentation https://tortoisegit.org/docs/tortoisegit/
        remember to always set your name and e-mail correctly in your Git
        client! You can then create a user on GitHub and associate those e-mail
        addresses to it, as Git(Hub) tracks commits by e-mail.

         
  • Luca Longinotti

    Luca Longinotti - 2017-06-04

    Tobi already explained how jAER works and what parts to look at, though for what you want to do, just get data from the camera and send it off to a PCI-Express FPGA, I'd highly recommend using libcaer instead. It's a minimal C library that simply sets the camera up and gives you back the events in a simple, efficient in-memory format that you can then send to your device. It's also got a C++ interface if you prefer that.

     
    • Tobi Delbruck

      Tobi Delbruck - 2017-06-04

      I agree with Luca. Using libcaer would be a great solution for basic camera applications. I expect that jaer will eventually interface to hardware the same way, using libcaer API.

      Tobi Delbruck, www.ini.uzh.ch/~ tobi, Swiss cell +41766291500, USA cell +16265102646

      On June 4, 2017 7:46:40 PM GMT+08:00, Luca Longinotti llongi@users.sf.net wrote:

      Tobi already explained how jAER works and what parts to look at, though
      for what you want to do, just get data from the camera and send it off
      to a PCI-Express FPGA, I'd highly recommend using
      libcaer instead. It's a minimal C
      library that simply sets the camera up and gives you back the events in
      a simple, efficient in-memory format that you can then send to your
      device. It's also got a C++ interface if you prefer that.


      USB protocol for DAVIS
      240C


      Sent from sourceforge.net because you indicated interest in
      https://sourceforge.net/p/jaer/discussion/631958/

      To unsubscribe from further messages, please visit
      https://sourceforge.net/auth/subscriptions/

       
  • Timo S

    Timo S - 2017-06-06

    Thanks for the clear explanation Tobi and for the suggestion Luca! I will use the libcaer library, sounds like this would be easier than reinventing the wheel :)
    Many thanks,
    Timo