OpenRoberta / openroberta-connector

The multiplatform connector program for most robots supported by the Open Roberta Lab.
Apache License 2.0
9 stars 15 forks source link

failed to upload to NAO Robot 6 #50

Closed burgr033 closed 10 months ago

burgr033 commented 1 year ago

Hi,

we tried connecting a NAO robot (wireless) with an offline open roberta lab instance and it failed (and it didn't work with the cloud version either). After looking through the log files I found the corresponding entries:

2023-07-17 11:50:41,192 [main] ERROR d.f.i.r.c.ServerCommunicator verifyHalChecksum - Could not read hal zip data: C:\Users\<username>\AppData\Roaming\OpenRobertaConnector\roberta.zip
2023-07-17 11:50:41,239 [main] ERROR d.f.i.r.c.wireless.nao.NaoConnector waitUpload - Something went wrong: https://lab.open-roberta.org:443/update/nao/2-8/hal
2023-07-17 11:50:41,252 [main] INFO  d.f.i.roberta.ui.main.MainController setState - Setting state to ERROR_UPLOAD_TO_ROBOT

I could identify following problems:

I could work around it by:

  1. downloading the corresponding HAL (roberta.zip) from my local instance
  2. place it in the expected folder (%roamingappdata%\OpenRobertaConnector)
  3. comment out line 34 in NaoConnector.java
  4. and recompiling openroberta-connector

Any idea what went wrong and how this could be fixed?

eleminer commented 1 year ago

i have the same problem, can you help me. How i recompile this program?

bjost2s commented 1 year ago

Hi all, sorry for the late reply. This is indeed a problem and should have appeared about 3 weeks ago when we released this commit. So we forgot to check this repo for using the deprecated Rest API. @cigh033 would you please check wether this 2 corrected lines in file ServerCommunicator.java L217 and L218:

217 this.serverUpdateAddress = prefix + customServerAddress + "/rest/update/nao/%s/hal";
218 this.serverUpdateChecksumAddress = prefix + customServerAddress + "/rest/update/nao/%s/hal/checksum";

fix the problem (please remove your fix first ;-))

We have problems starting our (old) NAO, so if you could verify that this fix helps I will release it asap.

bjost2s commented 1 year ago

@eleminer, you might try to unzip the target.zip, open a console, go into the target folder and then start the connector with java -jar target/OpenRobertaConnector-1.6.3.jar target.zip

eleminer commented 1 year ago

hi, @cigh033 send me the corrected and working open roberta connector. so I still had it running that evening.

@bjost2s i am not at school right now. But in three weeks again. If the lines are not tested by then, I can try it on my NAO.

burgr033 commented 1 year ago

I'll build and test it on monday and let you all know :)

bjost2s commented 1 year ago

@cigh033 and @eleminer , thank you very much!

burgr033 commented 1 year ago

@bjost2s I couldn't help but check the new url before compiling it. The URL (with the %s replaced with the version 2.8) should be https://lab.open-roberta.org/rest/update/nao/2.8/hal, correct?

Because if you browse to it, it throws the following error:

HTTP ERROR 500
Problem accessing /rest/update/nao/2.8/hal. Reason:

    Server Error
Caused by:
java.io.FileNotFoundException: /opt/ora-cc-rsc/RobotNAO/updateResources/2.8/roberta.zip (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at com.sun.jersey.core.impl.provider.entity.FileProvider.writeTo(FileProvider.java:101)
    at com.sun.jersey.core.impl.provider.entity.FileProvider.writeTo(FileProvider.java:64)
    at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
    at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
    at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184)
    at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89)
    at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
    at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1701)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1668)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
    at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
    at org.eclipse.jetty.server.Server.handle(Server.java:502)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
    at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:748)
[Powered by Jetty:// 9.4.15.v20190215](http://eclipse.org/jetty)

if this is intended. please let me know, before I compile and check with the robot.

bjost2s commented 1 year ago

Are you checking this with a local instance? If so, please check if you have run mvn clean install in the ora-cc-rsc folder. This should create and save the roberta.zip into the corresponding folder. @cigh033 , the correct URL should be: https://lab.open-roberta.org/rest/update/nao/2-8/hal which is working for me.

burgr033 commented 1 year ago

I'm happy to tell you (@bjost2s), that it now works as expected with the two lines changed.

Sorry for the late reply. Thanks so much for your support.

From my view you could close this issue and release :)

burgr033 commented 10 months ago

@bjost2s I created a PR that fixes the issue. Also I would love to see a release out of it.