jetson nano development kit problem

95 views
Skip to first unread message

刘达祺

unread,
Mar 3, 2020, 11:49:28 PM3/3/20
to jaer-users
I'm trying to use it for a Nvidia jetson nano development kit, which has a Arm64 chip. I got the following problem, could any one help with this?

Mar. 04, 2020 3:16:23 PM net.sf.jaer.util.LoggingThreadGroup uncaughtException
WARNING: Thread[AWT-EventQueue-0,6,main]
Mar. 04, 2020 3:16:23 PM net.sf.jaer.util.LoggingThreadGroup uncaughtException
WARNING: java.lang.UnsatisfiedLinkError: Can't load library: /home/tj-group/Documents/software/jaer/jaer-dist-161/natives/linux-aarch64//libgluegen-rt.so
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2620)
at java.base/java.lang.Runtime.load0(Runtime.java:767)
at java.base/java.lang.System.load(System.java:1834)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624)
at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63)
at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487)
at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:421)
at com.jogamp.common.os.Platform$1.run(Platform.java:317)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at com.jogamp.common.os.Platform.<clinit>(Platform.java:287)
at com.jogamp.opengl.GLProfile.<clinit>(GLProfile.java:147)
at net.sf.jaer.JAERViewer.<init>(JAERViewer.java:140)
at net.sf.jaer.JAERViewer.<init>(JAERViewer.java:73)
at net.sf.jaer.JAERViewer$2.run(JAERViewer.java:298)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)


Loading version info from resource BUILDVERSION.txt
Version URL=jar:file:/home/tj-group/Documents/software/jaer/jaer-dist-161/dist/jAER.jar!/BUILDVERSION.txt

-- listing properties --
20180302-97-g21b283b=
build.date=20180608 at 1526

Tobi Delbruck

unread,
Mar 4, 2020, 1:36:58 AM3/4/20
to jaer-users

I don't know about JOGL support on this platform.  Generally jAER is intended for algorithm development on desktop/laptop platforms. We build a lot of live and quick robot demos with jAER, but never intended it to be an embedded linux solution.


 

It looks like this problem is from missing (or not properly loaded) native libraries for the Arm64 for JOGL (JOGL is Java OpenGL - a java wrapper around native OpenGL graphics).  After setting up a development environment (e.g. netbeans-8.2+JDK 1.8), you can try to play with the ivy setup ivy.xml at the root of jaer to try to include arm64 jogl libraries. (Ivy is a package management downloader system like maven, but is more flexible; it downloads the required libraries from public repositories). 

If you have JDK and ant installed, then you might not even need to install an IDE like netbeans. You should be able to run AEViewer directly from ant using the run target. I.e. from a terminal at the root of jaer you should be able to do "ant run" to execute the whole thing.

I get this running on windows 10 x64 (I have local modification to the current git master)

 
Tobi@TobiPC MINGW64 /h/Dropbox (Personal)/GitHub/SensorsINI/jaer (master)
 $ ant run
 
Buildfile: H:\Dropbox (Personal)\GitHub\SensorsINI\jaer\build.xml
 
 
-check-ivy:
 
 
-download-ivy:
 
 
-load-ivy-tasks:
 
 download
-deps:
 
[ivy:resolve] :: Apache Ivy 2.4.0 - 20141213170938 :: http://ant.apache.org/ivy/ ::
 
[ivy:resolve] :: loading settings :: file = H:\Dropbox (Personal)\GitHub\SensorsINI\jaer\ivysettings.xml
 
....

 

and eventually AEViewer starts up



 
The current state of JOGL is not so active. 

The ivy setup for JOGL is pretty complicated. I don't remember all the details that went into getting this setup working. It lists arm64, but something is not working on your setup since the natives are not loaded. You may want to check that they exist. Here is the ivy XML for JOGL

    <dependencies>
        <!--see http://search.maven.org to find libraries -->
        <!--following does not work, since the latest jogl doesn't have com.jogamp.opengl--> 
        <dependency org="org.jogamp.gluegen" name="gluegen-rt" rev="2.3.2" />
        <dependency org="org.jogamp.gluegen" name="gluegen-rt-main" rev="2.3.2" />
        <dependency org="org.jogamp.gluegen" name="gluegen-rt" rev="2.3.2" >
            <!--include main jar-->
            <artifact name="gluegen-rt" type="jar" ext="jar"/>
            <artifact name="gluegen-rt" type="jar" ext="jar" m:classifier="natives-linux-amd64"/>
            <artifact name="gluegen-rt" type="jar" ext="jar" m:classifier="natives-linux-i586"/>
            <artifact name="gluegen-rt" type="jar" ext="jar" m:classifier="natives-macosx-universal"/>
            <artifact name="gluegen-rt" type="jar" ext="jar" m:classifier="natives-solaris-amd64"/>
            <artifact name="gluegen-rt" type="jar" ext="jar" m:classifier="natives-solaris-i586"/>
            <artifact name="gluegen-rt" type="jar" ext="jar" m:classifier="natives-windows-amd64"/>
            <artifact name="gluegen-rt" type="jar" ext="jar" m:classifier="natives-windows-i586"/>
            <artifact name="gluegen-rt" type="jar" ext="jar" m:classifier="natives-windows-amd64"/>
        </dependency>
        <!--<dependency org="org.jogamp.jogl" name="jogl-all" rev="2.3.2" />--> 
        <dependency org="org.jogamp.jogl" name="jogl-all-main" rev="2.3.2" /> 
        <!--<dependency org="org.jogamp.jogl" name="nativewindow" rev="2.3.2" />-->
        <!--<dependency org="org.jogamp.jogl" name="newt" rev="2.3.2" />-->
        <!--<dependency org="org.jogamp.jogl" name="jogl-all-main" rev="2.3.2" />--> 
        <dependency org="org.jogamp.jogl" name="jogl-all" rev="2.3.2" > 
            <!--include main jar-->
            <artifact name="jogl-all" type="jar" ext="jar"/>
            <artifact name="jogl-all" type="jar" ext="jar" m:classifier="natives-linux-amd64"/>
            <artifact name="jogl-all" type="jar" ext="jar" m:classifier="natives-linux-i586"/>
            <artifact name="jogl-all" type="jar" ext="jar" m:classifier="natives-macosx-universal"/>
            <artifact name="jogl-all" type="jar" ext="jar" m:classifier="natives-solaris-amd64"/>
            <artifact name="jogl-all" type="jar" ext="jar" m:classifier="natives-solaris-i586"/>
            <artifact name="jogl-all" type="jar" ext="jar" m:classifier="natives-windows-amd64"/>
            <artifact name="jogl-all" type="jar" ext="jar" m:classifier="natives-windows-i586"/>
            <artifact name="jogl-all" type="jar" ext="jar" m:classifier="natives-windows-amd64"/>
        </dependency>
 

Your logging output (thanks for including it) shows
WARNING: java.lang.UnsatisfiedLinkError: Can't load library: /home/tj-group/Documents/software/jaer/jaer-dist-161/natives/linux-aarch64//libgluegen-rt.so

It seems to be trying to load the aarch64 setup. I don't know if this is correct.
Message has been deleted

Daqi Liu

unread,
Mar 22, 2020, 8:32:02 AM3/22/20
to jaer-users
Thank you very much Tobi. I've installed JDK1.8 + JavaFx and build the program with "ant jar". It build successful, however when I try yo open the jaer bashfile, it has the same problem with jogl.

Tobi Delbruck (INI)

unread,
Mar 22, 2020, 9:34:51 AM3/22/20
to jaer-...@googlegroups.com
So there is some problem with JOGL for arm64.  You might be the first
person to try it. Did you verify that the
/jaer-dist-161/natives/linux-aarch64//libgluegen-rt.so exists?

By the way, the path above looks like you are still running the
jaer-dist-161 release. This doesn't look like you are running from a
folder that you built jAER by ant from. Are you sure you went to the
root of jAER in that folder and run as below

'''
(base) tobi@tobi-dh87:~/Dropbox/GitHub/SensorsINI/jaer$
./jAERViewer_linux.sh
Mar 22, 2020 2:33:25 PM net.sf.jaer.JAERViewer main
INFO: jAERViewer starting up
Mar 22, 2020 2:33:25 PM net.sf.jaer.JAERViewer main
INFO: java.vm.version=25.161-b12
user.dir=/home/tobi/Dropbox/GitHub/SensorsINI/jaer
Mar 22, 2020 2:33:25 PM net.sf.jaer.JAERViewer main
INFO: Java logging is configured by the command line option
-Djava.util.logging.config.file=<filename>.
The current value of java.util.logging.config.file is
conf/Logging.properties
Edit this file to configure logging.
The value of java.io.tmpdir is /tmp
Mar 22, 2020 2:33:25 PM net.sf.jaer.JAERViewer main
INFO: Preferences come from root located at /net/sf/jaer
Mar 22, 2020 2:33:25 PM net.sf.jaer.JAERViewer main

'''
(i tried to use quotes above but I don't know the markdown syntax.

Daqi Liu

unread,
Mar 22, 2020, 9:46:42 AM3/22/20
to jaer-users
Hi Tobi

I think no available jogl for linux-aarch64 can be used. I can only found android-aarch64 available.

Tobi Delbruck (INI)

unread,
Mar 22, 2020, 10:28:57 AM3/22/20
to jaer-...@googlegroups.com
Yes, I think you would have to build JOGL for that platform. It might
not be so bad. You could try to fork JOGL and build it. I forked it once
to try to debug the problems with the context not being available
sometimes, but gave up on figuring out that bug. But maybe building it
would be possible. I'm not sure if it is very active now.

Daqi Liu

unread,
Mar 22, 2020, 11:31:45 AM3/22/20
to jaer-users
I’m sorry I didn’t attach the new error in the reply. I’ve build the jade-master with ant run and natives/linux-aarch64//libgluegen-rt.so doesn’t exist. Then I downloaded the jogl-all-platform folder from their website and they don’t have Linux-aarch64 available. I think you are right, this project might be not so active. Thank you very much. We might try it no a intel-based embedded board first.

Gokul B Nair

unread,
Sep 5, 2023, 1:43:48 AM9/5/23
to jaer-users
Hi,
I tried building jAER on jetson platform and faced pretty much the same issue as above. 
I looked around for existing jar files, but the closest ones I could find mentioned linux-armv6 or android-aarch64. I'm not sure if these are what I'm looking for, but I tried building jAER with these included in ivy.xml anyway. It didn't change anything for me, I was getting the same error as above.
I tried building libgluegen-rt on the Jetson platform and tried to update jAER's build.xml to include the path to the newly built jar files. I got the same error as above again. Though I'm not sure if I did this correctly, I have not had a lot of experience with Java. 
Just wanted to check again if there's anything I can do to make the tool Jetson compatible.

Tobi Delbruck (UZH-ETH)

unread,
Sep 5, 2023, 4:21:30 AM9/5/23
to jaer-...@googlegroups.com
It will be a lot of work to try to get this to work!  And probably not
the way you want to go, since jAER was developed as a desktop PC tool
for testing event cams and developing and using real time algorithms.
You would probably be better off going with either DV or ROS for
embedded applications on embedded linux machines.

The core jAER rendering engine heavily relies on JOGL which is highly
optimized cross-OS OpenGL for java rendering. JOGL is still actively
being developed but very slowly, and since more recent JDKs after 1.8
came out JOGL has not kept up or been very slow. You might check
https://jogamp.org/jogl/www/ for current status, since jAER still uses
jogl 2.3.2. In ivy.xml:

```
```

Finally, you might check DVSActApplet
https://github.com/SensorsINI/jaer/blob/master/src/net/sf/jaer/jaerappletviewer/DVSActApplet.java.
This application constructs an AEChip (the DVS128) and streams input to
it from the network. Or look at AEViewer
https://github.com/SensorsINI/jaer/blob/master/src/net/sf/jaer/graphics/AEViewer.java
which is a very big and complicated class that does everything; you can
see from this how an AEChip is constructed, biases are loaded for it,
and data is acquired from it.

Reply all
Reply to author
Forward
0 new messages