Page 2 of 2

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Fri Nov 11, 2016 10:54 am
by chrisdembia
It should be fine to use SWIG 3.0.8.

I'd still be interested in knowing if the bindings will work for you (aside from the test cases).
Also, I don't have the <opensim-4.0-install-dir>/lib/[x86_64-linux-gnu] directory.
Then set LD_LIBRARY_PATH to the path containing your libraries:

Code: Select all

<opensim-4.0-install-dir>/lib

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Fri Nov 11, 2016 10:47 pm
by chrisdembia
I was able to get the MATLAB bindings (from OpenSim 4.0) to work on Ubuntu (14.04), but it was not as straightforward as it should be. The issue is a conflict with MATLAB's libstdc++.so and the one used when building OpenSim. As your ldd output shows, OpenSim depends on libstdc++.so:

Code: Select all

libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f402c923000)
Outside of MATLAB, ld will use the one located at the path above. However, MATLAB tries to prefer its own libstdc++.so (inside the MATLAB installation), and it is not compatible with the one used with OpenSim. Ideally, you could just set LD_LIBRARY_PATH handle this, but MATLAB puts its own library paths in front of whatever you set LD_LIBRARY_PATH to. So, you must use LD_PRELOAD:

Code: Select all

LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6" matlab
You can also just export that environment variable before starting MATLAB, or put it in ~/.bashrc:

Code: Select all

export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6"
This solution is also described here: https://www.mathworks.com/matlabcentral ... ead/255846

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Mon Nov 14, 2016 8:11 am
by bartvanveen
This actually solved the problem.

Thank you very much for your help, Chris!

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Mon Nov 14, 2016 10:21 am
by chrisdembia
Thank you for being courageous and trying out the MATLAB bindings on Ubuntu.

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Mon Jan 13, 2020 11:32 am
by modenaxe
Hello,

I have compiled OpenSim 4.0 on Ubuntu 18.04 encountering some issues and since this thread was extremely useful I have decided to extend it describing another problem that I have encountered and how I solved it.

In my case, after compiling the source code with the superbuild, I found that some of the MATLAB test failed.
opensim4.1_tests.png
opensim4.1_tests.png (47.19 KiB) Viewed 1017 times
After running the script for configuring OpenSim, preloading the libstdc++.so library from the system and checking that all the libraries were visible using ldd, my MATLAB API were still not working. Weirdly, I could manipulate/read/print models but not run simulations. For example, I could run OpenSimCreateTugOfWarModel.m smoothly but TugOfWar_CompleteRunVisualize.m was throwing a runtime error both in MATLAB and in my shell. The error in the shell was:
Intel MKL ERROR: Parameter 4 was incorrect on entry to DGETRF.
If I tried to run the RunHopper_answers.m script, MATLAB completely crashed.

I managed to solve the problem, and have all MATLAB test passed (and the OpenSim API working), only by preloading also the LAPACK library and avoiding to use the MATLAB one:

Code: Select all

export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1"
I hope this workaround helps and saves time to someone else!

Luca

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Sat Mar 07, 2020 4:31 am
by gbb
Hello,
I'm also trying to get Open Sim working with Matlab on Ubuntu 18.04 but I'm stuck. I've tried all the possibilities in this thread but still doesn't work. Performing the tests I get error on Java I can't really understand:
Screenshot from 2020-03-07 12-08-22.png
Screenshot from 2020-03-07 12-08-22.png (24.4 KiB) Viewed 960 times
.
When I try some simple example on Matalb I get only java exceptions like this one:

Code: Select all

java.lang.RuntimeException: std::exception
	at org.opensim.modeling.opensimSimulationJNI.Model_initSystem(Native Method)
	at org.opensim.modeling.Model.initSystem(Model.java:848)
I have really no idea how to solve this, if someone have some idea to help me it would be great!
Thanks in advance

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Fri Nov 27, 2020 10:10 am
by xv25
Hi,

I'm also blocked at the same point, especially about the Java_TestTables. I'm using Ubuntu 18.04.5, Matlab R2020b.
What is really strange is that the problem seems to be related to an error in recovering data from .trc files. The recovered TImeStamps would not be of the double type, but of the int type; therefore, successive values of the .trc file would become identical, which would cause an error in the TimeSeriesTable class.
Here is the error message obtained for the file walk_free_01.trc (Timestamp : 3.067000 3.083000 3.100000 3.117000), for the Java_TestTables:

Code: Select all

Exception in thread "main" java.lang.RuntimeException: Timestamp at row 0 with value 3,000000 is greater-than/equal to timestamp at row 1 with value 3,000000
	Thrown at TimeSeriesTable.h:493 in validateRow().
	at org.opensim.modeling.opensimCommonJNI.new_TimeSeriesTableVec3__SWIG_5(Native Method)
	at org.opensim.modeling.TimeSeriesTableVec3.<init>(TimeSeriesTableVec3.java:61)
	at TestTables.test_FlattenWithIK(TestTables.java:710)
	at TestTables.main(TestTables.java:776)
... And if I change walk_free_01.trc a little bit (Timestamp : 3.067000 4.083000 3.100000 3.117000) :

Code: Select all

Exception in thread "main" java.lang.RuntimeException: Timestamp at row 1 with value 4,000000 is greater-than/equal to timestamp at row 2 with value 3,000000
	Thrown at TimeSeriesTable.h:493 in validateRow().
	at org.opensim.modeling.opensimCommonJNI.new_TimeSeriesTableVec3__SWIG_5(Native Method)
	at org.opensim.modeling.TimeSeriesTableVec3.<init>(TimeSeriesTableVec3.java:61)
	at TestTables.test_FlattenWithIK(TestTables.java:710)
	at TestTables.main(TestTables.java:776)
I'm pretty sure that the error on the other tests must be related to this kind of problem. Does anyone have any idea what caused this problem, and how it could be solved?

Regards,

Erwann

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Fri Nov 27, 2020 10:31 am
by aymanh
Hello,

This appears to be a "locale" issue since the error message reports 3.0 as 3,000000. Likely the issue is that our code assumes US locale (decimal point is ".") while your environment suggests looking for "," as decimal point?
You may change the files in a text editor to test the hypothesis and if true investigate/try running our code in US locale environment.

Let us know what you find out,
-Ayman

Re: Matlab API of OpenSim 4.0 on Linux (Ubuntu)

Posted: Mon Nov 30, 2020 6:22 am
by xv25
Hi,

Indeed, this was my issue; my locale variable was set as "fr_FR.UTF-8 UTF-8". Many thanks!

The way to solve this problem is rather well known, but I'll put it here for simplicity (from https://askubuntu.com/questions/162391/ ... 373#790373):

* Check the local variables via the "locale" command. If these variables do not match "en_US.UTF-8", do the following commands:

Code: Select all

 sudo locale-gen "en_US.UTF-8"
sudo dpkg-reconfigure locales 
* Restart the session.

With this last change, all the tests are functionnal with Ubuntu 18.04.5, Python 3.6.9 and Matlab R2020b. However, I also have another problem with the installation of Opensim-gui (problem with the visualization window). I'll detail it in a new topic (viewtopicPhpbb.php?f=91&t=12790&p=0&sta ... 8bdd1923ba).

Regards,

Erwann