Skip to content

Commit bec6af1

Browse files
committed
Merge branch 'main' of
git@github.com:CommonWealthRobotics/mujoco-java.git into kh/pointer-managment
2 parents d4b8ba1 + ec9ab23 commit bec6af1

11 files changed

Lines changed: 4967 additions & 3413 deletions

File tree

.github/workflows/main.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
name: CI
33

44
on:
5-
push:
6-
branches:
7-
- main
5+
push
86

97
jobs:
108
linux:

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,10 @@ build
1414
*jni*.cpp
1515
bin
1616
src/main/resources/linux*
17+
src/main/resources/windows*
18+
src/main/resources/macosx-x*
19+
src/main/java/mujoco/*.h
20+
21+
*.DS_Store*
1722
cppbuild
1823
*hs_err_*.log

README.md

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,44 @@
22

33
Java JNI binding for [mujoco physics system](https://github.com/google-deepmind/mujoco)
44

5+
# Platforms
6+
7+
This library supports
8+
9+
* Windows x86_64
10+
* Linux x86_64
11+
* MacOS x86_64
12+
* MacOS arm64 (M1, M2, M3)
13+
14+
# Examples
15+
16+
An example of loading a MuJoCo model and display in JavaFX 3d:
17+
18+
https://github.com/madhephaestus/MuJoCoTest/releases
19+
20+
Examples are designed to run in [Bowler Studio](http://commonwealthrobotics.com)
21+
522
# Maven
623

724
MuJoCo-Java is published on Maven Central via Sonatype.
825

9-
![](https://img.shields.io/nexus/r/https/oss.sonatype.org/com.neuronrobotics/mujoco-java.svg?style=flat)
10-
1126
Hosting is in:
1227

1328
```
1429
https://oss.sonatype.org/content/repositories/staging/com/neuronrobotics/mujoco-java/
1530
```
1631

32+
![](https://img.shields.io/nexus/r/https/oss.sonatype.org/com.neuronrobotics/mujoco-java.svg?style=flat)
33+
34+
35+
1736
Maven:
1837

1938
```
2039
<dependency>
2140
<groupId>com.neuronrobotics</groupId>
2241
<artifactId>mujoco-java</artifactId>
23-
<version>VERSION_FROM_BADGE</version>
42+
<version>3.1.1-pre.1</version>
2443
<type>module</type>
2544
</dependency>
2645
```
@@ -32,7 +51,7 @@ repositories {
3251
}
3352
3453
dependencies {
35-
implementation group: 'com.neuronrobotics', name: 'mujoco-java', version: 'VERSION_FROM_BADGE'
54+
implementation group: 'com.neuronrobotics', name: 'mujoco-java', version: '3.1.1-pre.1'
3655
}
3756
```
3857

build-linux.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ ls $BUILDDIR/
4242
cd $JAVADIR
4343

4444
echo "JavaCPP configs:"
45-
java -jar $SCRIPT_DIR/javacpp-platform-$JAVACPP_VER-bin/javacpp.jar -Dcompiler.includepath=$BUILDDIR/include/ -print properties.includepath
45+
$JAVA_HOME/bin/java -jar $SCRIPT_DIR/javacpp-platform-$JAVACPP_VER-bin/javacpp.jar -Dcompiler.includepath=$BUILDDIR/include/ -print properties.includepath
4646

47-
java -jar $SCRIPT_DIR/javacpp-platform-$JAVACPP_VER-bin/javacpp.jar org/mujoco/MuJoCoConfig.java
47+
$JAVA_HOME/bin/java -jar $SCRIPT_DIR/javacpp-platform-$JAVACPP_VER-bin/javacpp.jar org/mujoco/MuJoCoConfig.java
4848
echo "Start compile \n\n"
49-
java -jar $SCRIPT_DIR/javacpp-platform-$JAVACPP_VER-bin/javacpp.jar -copylibs -copyresources -Xcompiler "-no-pie" -Xcompiler "-I$JAVADIR" -Xcompiler "-L$JAVADIR" org/mujoco/MuJoCoLib.java
49+
$JAVA_HOME/bin/java -jar $SCRIPT_DIR/javacpp-platform-$JAVACPP_VER-bin/javacpp.jar -copylibs -copyresources -Xcompiler "-no-pie" -Xcompiler "-I$JAVADIR" -Xcompiler "-L$JAVADIR" org/mujoco/MuJoCoLib.java
5050
LIBPATH=$PWD/../resources/$TYPE/
5151
mkdir -p $SCRIPT_DIR/src/main/resources/
5252

build-mac-m1.sh

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/bin/bash
2+
bash --version
3+
g++ --version
4+
echo "Mac M1 Build"
5+
VER=$(cat mujocoRelease.txt)
6+
7+
TYPE=macosx-arm64
8+
ARCHIVE=mujoco-$VER-macos-universal2.dmg
9+
URL=https://github.com/deepmind/mujoco/releases/download/$VER/$ARCHIVE
10+
echo "$URL"
11+
SCRIPT_DIR=$( pwd )
12+
BUILDDIR=/tmp/
13+
set -e
14+
15+
mkdir -p $BUILDDIR
16+
if [ -f "$BUILDDIR$ARCHIVE" ]; then
17+
echo "$BUILDDIR$ARCHIVE exists."
18+
else
19+
rm -rf $BUILDDIR/mujoco*
20+
curl -L --location-trusted https://github.com/deepmind/mujoco/releases/download/$VER/$ARCHIVE -o $BUILDDIR/$ARCHIVE
21+
cd $BUILDDIR
22+
mkdir mujoco
23+
cd mujoco
24+
hdiutil attach ../$ARCHIVE
25+
find /Volumes/MuJoCo/ -name '*.dylib'
26+
mkdir $BUILDDIR/mujoco/include
27+
cp -R /Volumes/MuJoCo/mujoco.framework/Headers/ $BUILDDIR/mujoco/include/mujoco
28+
mkdir $BUILDDIR/mujoco/lib/
29+
cp /Volumes/MuJoCo/mujoco.framework/Versions/A/libmujoco.$VER.dylib $BUILDDIR/mujoco/lib/libmujoco.dylib
30+
31+
echo $BUILDDIR/mujoco/
32+
ls -al $BUILDDIR/mujoco/
33+
cd /tmp
34+
echo /tmp
35+
ls -al
36+
cd $SCRIPT_DIR/
37+
fi
38+
echo "Include"
39+
ls $BUILDDIR/mujoco/include/
40+
ls $BUILDDIR/mujoco/include/mujoco/
41+
echo "Lib"
42+
ls $BUILDDIR/mujoco/lib/
43+
44+
45+
JAVACPP_VER=1.5.7
46+
JAVACPPDIR=javacpp-platform-$JAVACPP_VER-bin
47+
JAVACPP=$JAVACPPDIR.zip
48+
if [ -f "$JAVACPP" ]; then
49+
echo "$JAVACPP exists."
50+
else
51+
curl -L --location-trusted https://github.com/bytedeco/javacpp/releases/download/$JAVACPP_VER/$JAVACPP -o $JAVACPP
52+
unzip $JAVACPP
53+
echo "JavaCPP:"
54+
ls -al $JAVACPPDIR
55+
cd $SCRIPT_DIR/
56+
57+
fi
58+
JAVADIR=$SCRIPT_DIR/src/main/java/
59+
cd $SCRIPT_DIR/src/main/java/
60+
cp $BUILDDIR/mujoco/lib/* $JAVADIR/
61+
echo "Moving headers "
62+
rm -rf $JAVADIR/mujoco/
63+
cp -r $BUILDDIR/mujoco/include/mujoco $JAVADIR/
64+
java -jar $SCRIPT_DIR/javacpp-platform-$JAVACPP_VER-bin/javacpp.jar org/mujoco/MuJoCoConfig.java
65+
java -jar $SCRIPT_DIR/javacpp-platform-$JAVACPP_VER-bin/javacpp.jar -copylibs -copyresources -Xcompiler "-I$JAVADIR" -Xcompiler "-L$JAVADIR" org/mujoco/MuJoCoLib.java
66+
67+
LIBPATH=$PWD/../resources/$TYPE/
68+
mkdir -p $SCRIPT_DIR/src/main/resources/
69+
rm -rf $JAVADIR../resources/$TYPE
70+
find $SCRIPT_DIR|grep $TYPE
71+
mv $JAVADIR/org/mujoco/$TYPE/ $JAVADIR../resources/
72+
cp $BUILDDIR/mujoco/lib/* $JAVADIR../resources/$TYPE/
73+
74+
echo "ls -al $JAVADIR../resources/"
75+
ls -al $JAVADIR../resources/
76+
77+
cd $SCRIPT_DIR/
78+
echo "Resource Files: "
79+
ls -al $JAVADIR../resources/*
80+
ls -al $JAVADIR../resources/$TYPE
81+
./gradlew jar --stacktrace test
82+
83+

mujocoRelease.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.2.0
1+
3.1.1

src/main/java/libmujoco.dylib

4.29 MB
Binary file not shown.

src/main/java/org/mujoco/MuJoCoConfig.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,21 @@
1212
includepath = {"/tmp/mujoco/include/"},
1313
linkpath = {"/tmp/mujoco/lib/"},
1414
include = {
15+
"mujoco/mjtnum.h",
16+
1517
"mujoco/mjexport.h",
18+
"mujoco/mujoco.h" ,
19+
"mujoco/mjmacro.h",
20+
"mujoco/mjthread.h",
1621
"mujoco/mjdata.h",
1722
"mujoco/mjmodel.h",
1823
"mujoco/mjrender.h",
19-
"mujoco/mjtnum.h",
2024
"mujoco/mjui.h",
2125
"mujoco/mjvisualize.h",
22-
"mujoco/mujoco.h"
26+
27+
28+
//"mujoco/mjxmacro.h",
29+
"mujoco/mjplugin.h"
2330
},
2431
link = {"mujoco"}
2532
),
@@ -36,6 +43,7 @@ public class MuJoCoConfig implements InfoMapper {
3643
public void map(InfoMap infoMap) {
3744
infoMap.put(new Info("MJ_STATIC").define(true));
3845
infoMap.put(new Info("mjtNum").cast().valueTypes("double").pointerTypes("DoublePointer"));
46+
3947
infoMap.put(new Info("MJOPTION_VECTORS").skip());
4048
infoMap.put(new Info("MJMODEL_POINTERS").skip());
4149
infoMap.put(new Info("MJDATA_VECTOR").skip());
@@ -60,5 +68,23 @@ public void map(InfoMap infoMap) {
6068
infoMap.put(new Info("MUJOCO_HELPER_DLL_EXPORT").skip());
6169
infoMap.put(new Info("MUJOCO_HELPER_DLL_LOCAL").skip());
6270
infoMap.put(new Info("mjCOLLISIONFUNC").skip());
71+
infoMap.put(new Info("mjEXTERNC").skip());
72+
infoMap.put(new Info("mjDLLMAIN").skip());
73+
infoMap.put(new Info("XMJV").skip());
74+
//infoMap.put(new Info("X").skip());
75+
//infoMap.put(new Info("MJOPTION_FLOATS").skip());
76+
//infoMap.put(new Info("MJOPTION_INTS").skip());
77+
//infoMap.put(new Info("MJOPTION_SCALARS").skip());
78+
infoMap.put(new Info("mjPLUGIN_LIB_INIT").skip());
79+
infoMap.put(new Info("mjfPluginLibraryLoadCallback").skip());
80+
infoMap.put(new Info("mjfGeneric").skip());
81+
infoMap.put(new Info("mjfConFilt").skip());
82+
infoMap.put(new Info("mjfSensor").skip());
83+
infoMap.put(new Info("mjfTime").skip());
84+
infoMap.put(new Info("mjfAct").skip());
85+
infoMap.put(new Info("mjfCollision").skip());
86+
// infoMap.put(new Info("").skip());
87+
// infoMap.put(new Info("").skip());
88+
6389
}
6490
}

0 commit comments

Comments
 (0)