Wir haben eine einfache V-REP Simulation entwickelt, die ziemlich gut auf OS X funktioniert, aber nicht auf Linux (Ubuntu 15.04). Lua wird als Haupt-Skriptsprache verwendet.V-REPs Lua `tonumber` gibt null auf Linux
Wir legen den folgenden Code (mit den Rückgabewerten in den Kommentaren), die leider nil
auf Linux gibt (aber wandelt e[3]
Nummer ohne Problem auf OS X):
e[3] -- -0.677782532263
type(e[3]) -- string
type(tonumber(e[3])) -- nil
Was wirklich interessant ist, ist die Tatsache, dass der vorherige Code so funktioniert, wie man es von der Lua 5.2.3 Konsole erwarten würde (sowohl OS X als auch Linux). V-REP kann die Zeichenfolge unter Linux jedoch nicht ordnungsgemäß in Nummer konvertieren.
Wir versuchten beide 32b and 64b V-REP versions (heute heruntergeladen) mit genau den gleichen Ergebnissen - nil
s. Könntest du bitte auf einige Dinge hinweisen, die uns fehlen? Weder Lua noch V-REP sind Gebrauchsgegenstände, die wir jeden Tag benutzen.
Bearbeiten 1: Ich benutze Ubuntu 15.04. V-REP verwendet Lua 5.1, My Lua-Version:
$ apt-cache policy lua5.1
lua5.1:
Installed: 5.1.5-7.1
Candidate: 5.1.5-7.1
Version table:
*** 5.1.5-7.1 0
500 http://cz.archive.ubuntu.com/ubuntu/ vivid/main amd64 Packages
100 /var/lib/dpkg/status
In Konsole habe ich versucht, die folgenden:
$ lua
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> e={[3]="-0.677782532263"}; print(e[3], type(e[3]), tonumber(e[3]), type(tonumber(e[3])))
-0.677782532263 string -0.677782532263 number
Pakete
Haben Sie wirklich "Nil" ausgedruckt? Oder ist es "Null"? Sie sind sicher, dass Sie die gleiche Version von Lua auf OS X und Linux verwenden, wenn dies passiert? Und beide der ersten beiden Zeilen geben den gleichen Wert auf OS X und Linux aus, wenn dies geschieht? –
Hallo Etan, wir bekommen 'nil', die Version ist die gleiche auf beiden Plattformen und über die Ausgabe - die Werte werden dynamisch in Python erstellt und über Remote-API an Vrep (und Lua) gesendet, so dass sie nicht genau identisch sind Werte, aber der Fehler passiert nicht auf os x überhaupt und geschieht auf Linux auf allen Float-Zahlen, die übergeben werden. – Gyfis
@EtanReisner es ist genau so, wie Gyfis schrieb. – petrbel