First try with Nvidia jetson Nano and Manticore

Hello community,
First of all, I am an absolute newcomer to Linux, which doesn't make things any easier. But at some point you have to face new challenges.

I have a little (big) problem there. Since saturday I've been trying to get Inmoov to run on a Jetson Nano. At least I have it so far that the Swing GUI and Web GUI start and the chatbott works. But when the connection to the Arduinos is to be made, only the error message below appears. If I start Myrobotlab on its own without all the Inmmov runtimes, no arduinos are recognized (found) when I start an Arduino runtime. In the Arduino IDE, the Arduinos are found and displayed correctly.

 

-Traceback (most recent call last):  File string, line 41, in module  File InMoov/system/InitCheckup.py, line 49, in module    execfile(RuningFolder+services/+filename.encode(utf8))  File /home/nvidia/Dokumente/myrobotlab/myrobotlab.1.0.2693.16/InMoov/services/7_Inmoov.py, line 23, in module    right.serial.usedByInmoov=TrueAttributeError: NoneType object has no attribute usedByInmoov at org.python.core.Py.AttributeError(Py.java:205) at org.python.core.PyObject.noAttributeError(PyObject.java:1013) at org.python.core.PyObject.object___setattr__(PyObject.java:3885) at org.python.core.PyObject.__setattr__(PyObject.java:1048) at org.python.pycode._pyx51.f$0(/home/nvidia/Dokumente/myrobotlab/myrobotlab.1.0.2693.16/InMoov/services/7_Inmoov.py:38) at org.python.pycode._pyx51.call_function(/home/nvidia/Dokumente/myrobotlab/myrobotlab.1.0.2693.16/InMoov/services/7_Inmoov.py) at org.python.core.PyTableCode.call(PyTableCode.java:167) at org.python.core.PyCode.call(PyCode.java:18) at org.python.core.Py.runCode(Py.java:1386) at org.python.core.__builtin__.execfile_flags(__builtin__.java:535) at org.python.core.__builtin__.execfile(__builtin__.java:512) at org.python.core.__builtin__.execfile(__builtin__.java:543) at org.python.core.BuiltinFunctions.__call__(__builtin__.java:88) at org.python.core.PyObject.__call__(PyObject.java:465) at org.python.pycode._pyx4.f$0(InMoov/system/InitCheckup.py:124) at org.python.pycode._pyx4.call_function(InMoov/system/InitCheckup.py) at org.python.core.PyTableCode.call(PyTableCode.java:167) at org.python.core.PyCode.call(PyCode.java:18) at org.python.core.Py.runCode(Py.java:1386) at org.python.core.__builtin__.execfile_flags(__builtin__.java:535) at org.python.core.__builtin__.execfile(__builtin__.java:512) at org.python.core.__builtin__.execfile(__builtin__.java:543) at org.python.core.BuiltinFunctions.__call__(__builtin__.java:88) at org.python.core.PyObject.__call__(PyObject.java:465) at org.python.pycode._pyx2.f$0(string:76) at org.python.pycode._pyx2.call_function(string) at org.python.core.PyTableCode.call(PyTableCode.java:167) at org.python.core.PyCode.call(PyCode.java:18) at org.python.core.Py.runCode(Py.java:1386) at org.python.core.Py.exec(Py.java:1430) at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:267) at org.myrobotlab.service.Python$PIThread.run(Python.java:160)------
 
I'm using the latest Manticore version from Inmoov.fr, Java 1.8.0_282.
I have already tested Nixie: If I open an Arduino Runtime here, the Arduino is recognized. If I load the Inmoov runtimes, the Arduino is not displayed for selection there either.

 

kwatters's picture

nixie for the nano.

manitcore has little chance of working on the jetson nano.

I have tested and nixie works on the jetson nano. download and try the "latest" build of nixie.  

pepper's picture

That sounds great and gives

That sounds great and gives me hope :-)

I already have the latest version of Nixie installed. How would the rest of my setup have to look so that Nixie Works with the Jetson? When i start Nixie ,it shows me a long red list of things that obviously cause errors or cannot be found,all of wich seem to be related to Java. Which Version of Java should i use best? At the Moment i use JDK version 11.0.10

webgui : InvocationTargetException - null : java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.myrobotlab.service.WebGui.handle(WebGui.java:657) at org.atmosphere.nettosphere.Config$Builder$1.onRequest(Config.java:516) at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:225) at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:114) at org.atmosphere.nettosphere.BridgeRuntime$3.suspended(BridgeRuntime.java:252) at org.atmosphere.container.NettyCometSupport.service(NettyCometSupport.java:52) at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2300) at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:595) at org.atmosphere.websocket.DefaultWebSocketProcessor$3.run(DefaultWebSocketProcessor.java:346) at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101) at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:341) at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:449) at org.atmosphere.nettosphere.BridgeRuntime.handleWebSocketFrame(BridgeRuntime.java:437) at org.atmosphere.nettosphere.BridgeRuntime.handleMessageEvent(BridgeRuntime.java:346) at org.atmosphere.nettosphere.BridgeRuntime.channelRead(BridgeRuntime.java:296) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:101) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:321) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:308) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:422) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.NoClassDefFoundError: org/datavec/image/transform/ImageTransform at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:315) at org.myrobotlab.service.Runtime.getServiceTypeNamesFromInterface(Runtime.java:906) ... 51 more Caused by: java.lang.ClassNotFoundException: org.datavec.image.transform.ImageTransform at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 54 more

kwatters's picture

did you install all first?

I wonder if you're seeing an error because some libraries weren't installed as expected.  I see the following in that stacktrace (and no worky)

Caused by: java.lang.NoClassDefFoundError: org/datavec/image/transform/ImageTransform

This is a library used by deeplearning4j ...  it should have found it if it was installed.

to install services on nixie, make sure run the following command first.

java -jar myrobotlab.jar --install

How are you starting nixie up from the command line?  what command are you using to start it?  You might end up needing to set a larger than default heap size to give myrobotlab some extra memory to use by adding  "-m 3g" to the startup command:

java -jar myrobotlab.jar -m 3g

 

 

 

 

pepper's picture

Hello

Hello Kwaters,
 
unfortunately it took a little longer to answer.
I reinstalled Nixie with
 java -jar myrobotlab.jar --install
The installation ran through to the end.
I now start Nixie in the console
 
java -jar myrobotlab.jar
or
java -jar myrobotlab.jar -m 3g
 
starts the WebGui. I get the following error message in the console.
 
Error: Can't initialize nvrm channel
nvdc: open: Operation not permiteted
nvdc: failed to open '/ dev / tegra_dc_ctrl'.
 
Could this have something to do with Kinect?
 
Nixie is going so far. I can start a serice for an Arduino and also control a servo. OpenCv also works so far, a little very slowly but you can see a picture ;-)
 
However, if I start the i01 runtime, start for example the runtime for the right arm and then I would like for example controlling the bicep with the Arduino, Nixie complains about a wrong MrlComm.ino.
 
MrlComm.ino responded with version 63 expected version is 67
 
There is also no USB port to choose from in the setup for the Bicep, for example. But in the previously created runtime for the Arduino.
 
On the one hand I tried the MRLComm version in the resource folder and downloaded the MRLComm version again via Nixie and tried it with it. Same result.
kwatters's picture

upload mrlcomm.ino that comes with the latest build

Your "mrlcomm" that is loaded onto the arduino is old.  You need to upload the latest version of mrlcomm.ino to the Arduinos if you want it to work.  (as mentioned in your post.. version 67.)  

This comes with the installation of MyRobotLab in the resources/Arduino/MrlComm folder.  (I don't know if the arduino IDE works on Nixie.  so I recommend uploading the mrlcomm from a windows or mac )

As for the "slowness" ..  I'd recommend getting a separate USB SSD drive for running MRL on.  Using the same filesystem as the root operating system gets really slow if there are many disk I/O writes to the device. 

On my Jetson Nano,  I have a high speed USB thumbdrive plugged into one of the USB 3.0 ports on the Nano.  This is where I install MyRobotLab.  I found that it made a really big improvement in performance.

Glad to hear you're making progress!

pepper's picture

Waiting for the USB Drive

Ok then I'll see that I get the correct Mrlcomm installed on the Arduino. I basically load the MrlComm onto the Arduino via my Windows PC. The external SSD will not come until tomorrow, I hope a Samsung T7 500GB will be the right choice.
 
I will completely discard the SD card and boot the entire system from the USB. I already tried it yesterday with a Seagate Expansion STJD500400, but unfortunately it went wrong. As the saying goes, if you buy cheap, you buy twice.
I also bought an IMX219-160 camera for the Jetson, which unfortunately does not give more than a green picture under Opencv. Not so easy if you are a spoiled Windows user.
 
I also have to say a big thank you for your patience with me. In most forums, a complete newbie is more likely to be beaten down than to be helped. This is absolutely not the case here. At the beginning the Inmoov project is still quite easy to handle, but if you then go deeper, you will quickly reach your limits as a beginner. So a big fat thumbs up for your support. Keep up the good work.
rv8flyboy's picture

Am having the same error preventing the mic to work in chromium

This error:

Error: Can't initialize nvrm channel
nvdc: open: Operation not permiteted
nvdc: failed to open '/ dev / tegra_dc_ctrl'.
 
as I dont have kinect, i do not think its kinect related
 
runing Nixie on Java 11 on jetson 4.5