jAER USB Driver Install
jAER discussions moved to Google Groups
The SourceForge discussion forums are moving to Google Groups. Read our announcement here: https://sourceforge.net/p/jaer/news/2017/09/jaer-discussions-moved-to-google-groups/ Subscription is open to everyone. We encourage you to subscribe to all lists that apply to you!
After moving all our code to GitHub, it became necessary to find a good replacement for the SourceForge discussion forums. To also support easy e-mail announcements, as well as a good mailing-list and web-interface integration, we decided to use Google Groups. The following new groups are available: https://groups.google.com/d/forum/jaer-users https://groups.google.com/d/forum/caer-users https://groups.google.com/d/forum/davis-users https://groups.google.com/d/forum/dynapse-users This covers all...
jAER discussions moved to Google Groups
I don't have any experience in implementing UART at such a low level, usually any kind of microcontroller or OS has libraries for that, and for FPGAs you have modules by the vendor or talk to some external chip over a parallel bus. Xilinx for example has IP cores to do this: https://www.xilinx.com/products/intellectual-property/1-4c5ro4.html According to https://en.wikipedia.org/wiki/RS-232#RTS.2C_CTS.2C_and_RTR the meaning of RTS/CTS changes depending on half or full-duplex communication, modern...
Thanks for your replay, Luca. Probably I misundertand the control pins. I thought RTS (require to send, low active) is a output signal of camera and CTS(clear to send. low active) is a input signal for camera. So I just float the RTS and pull down the CTS, which tells camera the FPGA is always ready to receive data. Today I have also found something intresting. Because the communication between PC and camera is fine, so I test the pin voltage of UART. After setting the baudrate, I use echo 'E+' >...
Hello, indeed if sending commands works, then also the command to enable events should have worked. And it probably did. UART0 is a slave port, so it will start trying to send bytes right away, and you need to read the data and do the flow-control yourself. So you wouldn't control CTS, the eDVS does that when it's ready to receive data (commands in your case), and you'd assert RTS to signal you are ready to get the data. I hope this helps, have a nice week-end!
Home
Hello, my task is to connect the DVS camera with a FPGA and let the FPGA activate the camera and then receive the streaming data from the camera. As the first step I've established the communication between camera and a linux PC. Everything is fine. For the FPGA test, I use a 5V power source to provide the power for camera and use the UART0 interface to connect with my FPGA. The problem I met is when the FPGA sends the activation command "E+\n" via RXD to the camera. There is no response on TXD....
Hi Timo, yes the pixel biases are acting on the transistors of the pixel circuits. To have a better understanding please have a look at this paper: http://ieeexplore.ieee.org/abstract/document/4444573/ The names are also preserved On, Off , Threshold etc.. is this what you were asking for?
Hi Timo, yes the pixel biases are acting on the transistors of the pixel circuits. To have a better understanding please have a look at this paper: http://ieeexplore.ieee.org/abstract/document/4444573/ The name are also preserved On, Off , Threshold etc.. is this what you were asking for?
Hi Federico, Yeah, that has solved it, thank you! I'm trying to work out what this slider actually changes on the camera, can you help me out with this at all?
Hi Timo, sorry for my late reply (I was on hoidays). The amount of positive vs negative events can be easily controlled by changing the ON (OnBn) and OFF (OffBn) thresholds. Have a look at our bias setting user guide, at this link: https://inilabs.com/support/hardware/biasing/ In addition, if you want to observe fast movements I suggest you use the bias settings that you can find here: https://github.com/SensorsINI/jaer/blob/master/biasgenSettings/Davis240bc/C-fast.xml Let me know if the user guide...
jAER migrated to GitHub
Pasting answers from me from a private e-mail discussion where we solved this: If you indeed want to work only via the connectors and do the biasing yourself, there is no official documentation concerning this, as we do not support this mode of operation currently. The documentation you can find is the code, look at the firmware that does biasing and figure out how to replicate that in your system: https://github.com/inilabs/devices/blob/master/firmware/CypressFX2/SeeBetterLogic_DAVIS/main.c BiasWrite()...
Many thanks for that: I'd had some problems creating the doc info under Eclipse (managed now). Have found detailed info on extracted events: still 1 question (but considering the volume of documentation, I may simply have missed it). Inside the depressing synapse event filter (DepressingSynapseFilter, net.sf.jaer.eventprocessinhfilter.DepressingSynapseFilter.java), type and y are between 8 and 15 (and not 16 as I wrote above). I now understand that for this sort of event, type = y, I take it that...
Many thanks for that: I'd had some problems creating the doc info under Eclipse (managed now). Have found detailed info on extracted events: still 1 question (but considering the volume of documentation, I may simply have missed it). Inside the depressing synapse event filter (DepressingSynapseFilter, net.sf.jaer.eventprocessinhfilter.DepressingSynapseFilter.java), type and y are between 8 and 15 (and not 16 as I wrote above). I now understand that for this sort of event, type = y, I take it that...
Hi all! I noticed recently that my DAVIS 240C produces excessive amounts of positively signed events if I stimulate it with slow movements, whereas if I stimulate it with fast motions it produces predominantly negative signed events. I have tested this by summing up the net polarities of all the events produced. My camera has a couple of "dead" pixels which constantly produce positive events, but those have been taken into account. Interestingly, a colleague who is working with the same camera has...
Hi Leslie, it is documented in the source code for CochleaAMS1c. I recommend using the "Find usages" for the event class and to look in the javadoc I wrote. I tried to put down the precise definitiions as I developed that class and the EventExtractor for it. Hope this helps. Let me know if you need more tips about it.
Thanks for pointing that out - I've corrected it in the repository now. For the file format, this document may help you: https://inilabs.com/support/software/fileformat/#h.b6cs448dhp9
Hi Sim: got that to work - had to add line 'Das1' 'cochleaams1cv4' ; to the initialisation of devices in BasicSourceName.m. Now I need to look harder at the file formants beween the program, and the asdat output, since I want to write a slightly different depressing synapse.filter...
Hi Leslie, I expect someone will get back to you soon about the jAER implementation, though note that the project moved to github. In the meantime, if you'd like to look at recorded data in Matlab, you can import a .aedat file recorded from jaer using: https://github.com/Inivation/AedatTools Look at the exampleImportAedat.m script for an example of how to import the data. Cheers Sim
Looking at the values in e.y and e.type: they both seem to be always the same, and between 8 and 15: suggests a 4 bit value with a 1 for neuron firing and 0 for not firing. Bit 3 (msb) set for most sensitive neuron output. Is this right? Is this documented anywhere?
BinauralCochleaEvent 's (subclass of CochleaEvent, subclass of TypedEvent, subclass of BasicEvent) have class variables x, y, type, timestamp and Ear. I understand that x is the bandpass channel, and timestamp is the time in uS, and Ear is RIGHT or LEFT. I'd expected either type or y to be the level of the spike (which neuron it emanates from), and so to be 1 to 4 or 0 to 3, but both y and type seem to be 8, 12, 16 rather than smaller numbers. Also y and type seem to be the same (or was that just...
Hi, I am working with the Davis240C. The device id is DAVIS FX2 02460045. The JAERViewer works fine with it. I would like to strip the code down to the absolute minimum to just get the raw data in a continuous loop. I tried the following code below but only receives packets of length 0. The log is below. Please, is there something obviously wrong with the steps? Or, can you point me to example code that achieves what I am trying to do? Thank you, Jan public static void main(String[] args) throws...
Hi Sim, We would like to use our own FPGA, would your prototype allow that or do they come with their own FPGA board? /Luca
If the point is to work with events directly in an fpga then we have different prototypes, current and upcoming, which will suit you much better and save you a ton of work. I suggest you get in touch directly about that.
Hi all, We are planning to use the DAVIS240C together with our FPGA for robotics applications and we want to reduce the size and weight of our system as much as possible. This would mean that our computing platform will not have a USB connector and we will interface to the Davis camera straight through the two provided headers. We managed up to now to get the event stream (when using the USB power and JAER), we also managed to power the chip through the feed connector. What we are trying to do now...
Hello, first of all sorry for my late reply, I was away on vacation and just returned today. The controls are present since some time (2016?) also in jAER, under "Hardware Configuration" -> "External Input" tab. So cAER and jAER can both control this. The graphic that shows the bits may not be the clearest way to look at events, especially as it includes the timestamp in the bit count. When you're loading things in Matlab or looking at files, you always have 32bit data and 32bit timestamp. The part...
Hi Luca, I want to inject trigger events into our DAVIS240C FX2 but so far I cannot find any trigger events (bit 42 for 'trigger (DVS)') in a recording nor does the 'special events' bar in the jAER IDE flicker. Our hardware creates square waves of 5V and also 3.3V to feed four DVS128 (and they work perfectly). However, even though I followed the instructions in https://inilabs.com/support/hardware/synchronisation and connected the 5V signal via the middle ring of a 3.5 stereo jack and also enabled...
I just noticed that a) the official way to post questions is now via github issues, and b) this has gone to the developer list, but I intended to post in the help list. I have re-posted the question on github This post/thread can be ignored. Sorry for the hassle.
Hi, my eDVS camera which I've connected via USB doesn't show up in the eDVS hardware Interface chooser. When I hit refresh, the following is logged to the console: java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/Win32Exception thrown while loading gnu.io.RXTXCommDriver System details: java version "1.8.0_131" (64 bit) Ubuntu 16.04 LTS Compiled jAER 1.5 and set up the udev rule as recommended in the docs. Setting chmod 0666 on /dev/ttyUSB0 didn't help. Tried it with eclipse as well - no...
Thank you Sim for your information.
Hi Konstantin probably you don't want to use this code, since it outputs AER-DAT-3.1 format data, which jaer is not very good at reading yet. It is pretty simple to write an AER-DAT-2.0 file if all you want are DVS events from a particular sensor. You just need a header line followed by binary data of timestamp,address pairs, each of which are 32-bit big endian fixed point numbers. The timestamps are in us. The addresses encode the DVS events with x, y and polarity bits occupying some bits in the...
Hi, I am working on an emulator that creates events synthetically in C++. I would like to interface with jAER via aedat files. I am not sure how to embed the cAER file output module in my implementation to be able to use the C-Code already doing what I need it to do in C++. Can you direct me to a starting point, possibly an implementation that allows me to understand how to interface misc/out/output_common.c with my implementation in C++? Thanks a lot!
Sorry for my late response. I looked at the fileformat and I was quickly able to parse the dvs events from the aedat file. Parsing the aps frames took a bit longer but it now works, too! Thank you!
Sorry for my late response. I looked at the fileformat and I was quickly able to parse the dvs events from the aedat file. Unfortunately I still have problem with the aps frames. I extracted the signal and reset frames according to the file format and I stored them in a similar way compared to the davis_common.c (apsCurrentResetFrame and currentFrameEvent[0]). The problem is that parts of the frame are under or oversaturated: Some parts are completely white and some parts have the same gray color...
... I guess you're looking at the old repository. Check out from here: https://github.com/simbamford/AedatTools
Hi - You're looking at old code - please git pull for the latest version.
Hi Sim, I tried to use your switch in order to plot actual frames. However, I am facing the following error: Undefined function or variable 'resetXPosition'. Error in ImportAedatDataVersion1or2 (line 425) if resetXPosition ~= output.data.frame.xPosition(frameIndex) ... The problem is you defiend resetXPosition inside the IF and then you used it later. So, if process goes outside of this IF condition, this variable doesnt exist.
cAER has the file output module that can do this in AEDAT 3.1 format (-DENABLE_FILE_OUTPUT=1).
Hello I am building a C++ application and I want to record to disk the spikes acquired from a DAVIS240C camera. Is there a function in libcaer or caer for saving the spikes to disk in aedat format? (version 2 or 3) Thanks
caerDeviceConfigSet(deviceHandle, DAVIS_CONFIG_MUX, DAVIS_CONFIG_MUX_TIMESTAMP_RESET, 1);
Hello Does anyone know what the libcaer command/set-of-commands is to do a timestamp reset for a DAVIS240C camera? I am basically trying to find the sequence of commands to replicate the timestamp reset achieved in jaer when '0' is pressed. Thank you very much
Hi - yes get the latest version from https://github.com/simbamford/AedatTools . In your case perhaps you need to set the SubtractResetRead flag - otherwise you're getting reset and signal reads from a .aedat v2 recording all as separate frames.
There is also https://github.com/simbamford/AedatTools which is a more generic and advanced set of scripts, supports caer data files too.
The jAER Subversion repository has moved to GitHub. Read our announcement here: https://sourceforge.net/p/jaer/news/2017/05/jaer-migrated-to-github/
Thanks Tobi. I ll take a closer look at your suggestions. By the way in the ImportAedatDataVersion1or2.m there are 2 bugs that cause programs to crash: line 149: info.startEvents should be info.startEvent and line 418 should probably be if frameCount==1 instead of if ~exist('frameCount', 'var')
Hi Alex, it might be that the script is not normalizing the data right or that in AEViewer the AutoContrast is turned on. Try toggling AEViewer AutoContrast from the DAVIS menu (shortcut shift-C). The control tab for AutoContrast is a tab in the HardwareConfiguration window. This algorithm is just something I wrote to lowpass filter the low and high limits of video and use these to scale the output to fill the 0-1 range of display. I haven't looked at the script but I'm sure there is a number there...
Hello I have a DAVIS 240C and I am trying to load and visualize in matlab the framedata from an aedat file that was logged using jaer. To do this I am running the ExampleImportAedat.m script that has been provided. I have set input.filePath to point to my aedat file and I also set input.source = 'Davis240c'; Apart from that I have not modified the script at all. The problem is that when I visualize the frame data in matlab the image looks very saturated and washed out. When I visualize the frame...
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
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...
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.
The values are in microseconds, relative to the last wraparound. 15 bits are used for timestamps, so ~32ms between wrap-arounds. What do you mean by set the clock? The timestamps will always be 1µs, changing that requires massive changes in the whole stack, from logic to software. You can reset them to zero (TimestampReset in cAER, pressing '0' in jAER). You can also synchronize the camera to anything that outputs a 10 KHz clock, or use the camera as a source for such clock, see https://inilabs.com/support/hardware/synchronisation/...
Yes, the AEDAT 2.0 file format is not equal to the USB one. It's the most similar one as I've said, but it's far from equal. Lots of things that come via USB are not forwarded to file as they only exist to help interpret the USB stream, which is 2 bytes wide, while the file is made up of 8 bytes wide events (4 byte timestamp + 4 byte data). See https://inilabs.com/support/software/fileformat/#h.4ydb2xpu03ik for details on the file formats.
I've updated the news post at https://sourceforge.net/p/jaer/news/2017/05/jaer-migrated-to-github/ to also mention this information.
jAER migrated to GitHub
jAER migrated to GitHub
The instruction below from Luca Longinotti were very helpful to me to migrate my working copy to the github repo https://github.com/SensorsINI/jaer. 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...
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...
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...
Hi all! I see that the timestamps recieved through USB from the DAVIS 240C are shorts, which when they overflow are complemented by a wraparound. I'm guessing that the values recieved are relative to each other and expressed in microseconds. Is that correct? However, I would like to synchronise the timestamps recieved with some other sensors. Is there some way I can set the clock on the DAVIS 240C, or is it necessary to perform this calibration myself, perhaps using blinking LEDs or similar? Many...
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...
Okay thank you. I have implemented the basic functionality and now I have to modify the eventTranslator function taken from davis_common.c. Here, I have a question: What exactly do I have to change according to the encoding ? My first attempt was to pass the whole file (without the header) in packs two bytes to the eventTranslator (equal to the original implementation) but this results in many parsing errors (invalid event coordinates and timestamp errors) and finally the application crashes. Thank...
It's certainly possible to do this, but the idea of libcaer is only to be minimal device access. For file formats, reading and writing, there is cAER (and jAER to a certain extent). If what you want is to open an AEDAT 2.0 file, you can indeed mostly reuse the existing code, as AEDAT 2.0 is a more or less straight dump of the USB events as they come, with different encoding, and not all of them are preserved, but it is slightly easier to parse than AEDAT 3.X, which offers more advanced features.
Hello, for a university project, I am currently working with your DAVIS 240c and I am using the libcaer to create my own c++ application. Everything works very well so far. My problem now is the following: I have to evaluate my software tool with an offline dataset later on and I would prefeer to use my c++ implementation instead of reimplementing everything in matlab. As far as I understood, there is no playback functionallity in libcaer so my question is: Is it possible to implement a "virtual"...
Hi, yes that looks like you had an out-of-date jAER. Both jAER in SVN (old) and GitHub (new) should have the changes needed, and an up-to-date dist/jaer.jar has been committed to both. But you should use the GitHub version from now on, as that's where all development will be going on. I see you opened a bug on GitHub inilabs/devices but closed it right after, so I assume you solved your problem. Can you confirm updating jAER was the solution? Or something else? Thanks and have a nice day, Luca.
Hi Daniel, did you realize that jaer has migrated to githib? The changes to make jaer compatible with latest firmware may not have made it into the final jaer on sourceforge before commits there were disabled. In this case you should use git to clone the github jaer. If the changes made it to the sourceforge subversion repo (SVN), then update from there. You might need to recompile jaer after SVN update from sourceforge. You can do that from netbeans with F11 to build the jar (after SVN update)....
Hi, I recently updated the firmware for my Davis 240c, and no i cant get any event data from the camera. Running jaer in windows 7 or ubuntu - i get a constant stream of Caught event that could not be handled. Problem only started after updating the camera firmware. Thanks
Home
For the AedatTools libraries in 'scripts', development is continuing at: https://github.com/simbamford/AedatTools
jAER migrated to GitHub
Test commits.
improved display of filter action buttons
SampleprobFG TopLevel update
SampleprobFG TopLevel update
SampleprobFG TopLevel update
SampleprobFG TopLevel update
fixed running cameraCalibration all the time, now only when enabled
SampleprobFG TopLevel update
file reader
SampleprobFG TopLevel update
there was no camera calibration called, so camera calibration could not undistort the DVS events. Now the calibraiton is run
jAER: update JAR.
now computes average possible matching distance and uses this distance as target for feedback controller on slice duration
modified target search distance for feedback control to be halfway instead of 1/4 of the way. Need to implement some count of true average distance of possible matches given numScales and searchDistance.
SystemLogic2: MachXO: update Changelog.
SystemLogic2 ECP3 DAVIS: new binaries.
some change in name of the panel interally
jAER: update DAVIS config/hardware-interface to use new logic revision 9980.
SystemLogic2: APS: update comments to reflect new sizes. Update D4A config records to be aligned with new
SystemLogic2 MachXO3 346: new binary file.
SystemLogic2: new DAVIS240 releases.
SystemLogic2: remove AERCorrFilter binary, unmaintained.
SystemLogic2: DAVIS: update all logic versions.
SystemLogic2: FX2/3 SM: remove last multiplier, replace with fully expanded register.
SystemLogic2: APS: small fixes, naming, ADCTestMode only works with internal ADCs, QuadROI Info needs only be
rediuced factor by which a shift-up or shift-down key press changes a float value to allow finer adjustments