visose / Robots

Create and simulate ABB, KUKA, UR, and Staubli robot programs.
MIT License
306 stars 127 forks source link

Cant upload via sftp to real robot #174

Closed robin-gdwl closed 1 year ago

robin-gdwl commented 2 years ago

Is there an existing issue for this?

What Robots version are you using?

1.5.2

What Rhino version are you using?

Rhino 7 on MacOS

Current Behavior

I cant seem to send Robot programs to UR-Robots (CB3 Polyscope 3.15) with the FTP option. It works with UR-sim with the ip input: sftp://ur:easybot@IP/home/ur/ursim-current/programs. It does not work on a real robot with sftp://IP as well as with any directory or with added username and password(root:easybot). The remote connection LOG-output tells me: ERROR: FTP - the method or operation is not implemented.

I can connect to the robots ftp-server via Filezilla without problem. What could I be missing? Why is there a difference between Polyscope 3.15 on URSim and a real Robot? Where does the error "not implemented" come from? is this part of the plugin or some C# Library. Could it be specific to MacOs? Thanks for any advice

In this image you can see the output of the remote connection Log. The first 2 items are with the real robot the third item is from a connection to URsim

Screenshot 2022-08-06 at 16 05 05
visose commented 2 years ago

It's likely related to mono, and the library used for sftp distributes a different dll for net framework and netstandard2.

If you don't mind, could you test the following:

If you're still getting a not implemented exception, try with the latest Rhino WIP for Mac. They have the switched from mono to NET6.0. I tested the Windows WIP with NET6.0 and it works, but you still need the two netstandard2.0 files mentioned above.

Edit: To clarify, the files Renci.SshNet.dll and SshNet.Security.Cryptography.dll should be placed in the Robots plugin folder directly, at the same level as where Robots.dll is (not under /lib/netstandard2.0 subfolder).

visose commented 2 years ago

I tested this on Rhino 7 MacOS and URSim, and it works as expected. This is strange because that error seems like a mono issue, and not on any differences between using URSim vs a live robot. The only difference there could be the folder location. Maybe you have other plugins that contain Renci.SshNet.dll and there is some version conflict.

robin-gdwl commented 2 years ago

This is indeed the strangest part about this. I will check if it makes a difference after uninstalling other plugins. Selecting the wrong folder gives a different error than the one I am experiencing, so it does not seem to be part of the issue.

visose commented 2 years ago

Hi @robin-gdwl, yesterday I tested the FTP upload with a UR10 and it did work.

There is an issue though, when not specifying the path (sftp://IP) where it will upload correctly to the programs folder but not able to automatically load it due to a wrong path. You can still load it as normal using the pendant. This will be fixed in the next version. Another issue is the URP syntax used does not work with old CB2 models.

But neither of these two issues are related to your error, which seems now more likely that it's specific to your computer. I'll close the issue for now, but feel free to open if you can reproduce with multiple computers.

robin-gdwl commented 1 year ago

If you don't mind, could you test the following:

I finally got another chance to test this. I followed the steps, downloaded the .dll files and replaced the one in the folder and added the other one. There was unfortunately no change. The Problem even Persists on a new Macbook (2021). I have not yet used the Rhino WIP. Interestingly I tried it on a CB2-UR5 and the ftp-upload actually went through, however the Program can't be opened on the Robot (as you pointed out the URP file is not compatible with older robots as expected).
This makes the "Not implemented" Issue even weirder and would actually point to there being something odd with the two cb3 robots themself. I will test with another laptop tomorrow.

visose commented 1 year ago

Thanks for testing, looks like either the FTP works or the URP file works for you but never both at the same time 😞

I've attached a version of Robots.dll that should display more information about the exception. You can download it here: Robots.zip

The file to replace is located at: C:\Users\yourUserName\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\Robots\1.6.5\ (assuming you have updated to the latest version).

If you could send me the full text of the error, hopefully I can find out where it's coming from.

robin-gdwl commented 1 year ago

I have exchanged the Robots.dll and tried again, here is the error I get from the log:

14:07:37 - Error: FTP - System.NotImplementedException: The method or operation is not implemented.
  at Renci.SshNet.Session.WaitOnHandle (System.Threading.WaitHandle waitHandle, System.TimeSpan timeout) [0x00041] in <b2136f1708424d439013dbe17c5d5f17>:0 
  at Renci.SshNet.Session.WaitOnHandle (System.Threading.WaitHandle waitHandle) [0x0000d] in <b2136f1708424d439013dbe17c5d5f17>:0 
  at Renci.SshNet.Session.Connect () [0x0017b] in <b2136f1708424d439013dbe17c5d5f17>:0 
  at Renci.SshNet.BaseClient.CreateAndConnectSession () [0x00053] in <b2136f1708424d439013dbe17c5d5f17>:0 
  at Renci.SshNet.BaseClient.Connect () [0x0001f] in <b2136f1708424d439013dbe17c5d5f17>:0 
  at Robots.Ftp.Upload (System.Byte[] bytes, System.String fileName, Robots.User user) [0x00049] in <c5f548f2309f4340afd227fcad3d89c6>:0 
  at Robots.RemoteURFtp.UploadFtp (Robots.IProgram program) [0x00022] in <c5f548f2309f4340afd227fcad3d89c6>:0 
  at Robots.RemoteURFtp.Upload (Robots.IProgram program) [0x00000] in <c5f548f2309f4340afd227fcad3d89c6>:0 

I have tested with a windows computer and the upload works, so the problem is not on the robot side. I am guessing it is some version conflict somewhere. Thank you very much for the continued support.

Other students with Macbooks are having the same issue.

visose commented 1 year ago

Thanks @robin-gdwl, It seems to be due to mono (used on MacOS) not implementing certain cryptographic algorithms. I've followed a workaround mentioned here. Here's an updated Robots.dll file that you can test containing the workaround: Robots.zip

robin-gdwl commented 1 year ago

This new .dll file works on my 2021 Macbook! Thank you very much, this will make working with larger files so much easier.