diff --git a/.gitmodules b/.gitmodules index f075ff829..26b779c5e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,15 +1,15 @@ [submodule "Multiverse-Launch"] path = Multiverse-Launch - url = https://github.com/Multiverse-Framework/Multiverse-Launch.git + url = https://github.com/mitsav01/Multiverse-Launch.git [submodule "Multiverse-Resources"] path = Multiverse-Resources - url = https://github.com/Multiverse-Framework/Multiverse-Resources.git + url = https://github.com/mitsav01/Multiverse-Resources.git [submodule "Multiverse-Utilities"] path = Multiverse-Utilities - url = https://github.com/Multiverse-Framework/Multiverse-Utilities.git + url = https://github.com/mitsav01/Multiverse-Utilities.git [submodule "Multiverse-Knowledge"] path = Multiverse-Knowledge - url = https://github.com/Multiverse-Framework/Multiverse-Knowledge.git + url = https://github.com/mitsav01/Multiverse-Knowledge.git [submodule "Multiverse-Parser"] path = Multiverse-Parser - url = https://github.com/Multiverse-Framework/Multiverse-Parser.git + url = https://github.com/mitsav01/Multiverse-Parser.git \ No newline at end of file diff --git a/Multiverse-Knowledge b/Multiverse-Knowledge index 2218e4b02..27cbad095 160000 --- a/Multiverse-Knowledge +++ b/Multiverse-Knowledge @@ -1 +1 @@ -Subproject commit 2218e4b028b684313239855d4f0a6d5ed44c3612 +Subproject commit 27cbad095d3967024b906208c56f955cfd57c853 diff --git a/Multiverse-Launch b/Multiverse-Launch index 521945994..eabcfc5cf 160000 --- a/Multiverse-Launch +++ b/Multiverse-Launch @@ -1 +1 @@ -Subproject commit 5219459948735cd43f7765d1ea80a614eab6851e +Subproject commit eabcfc5cf012d1b5f6a2036bf7f7e3e884377a9d diff --git a/Multiverse-Parser b/Multiverse-Parser index 5c6045c92..00a284c9c 160000 --- a/Multiverse-Parser +++ b/Multiverse-Parser @@ -1 +1 @@ -Subproject commit 5c6045c9284f2b72caea5b0edb433cc4889f194d +Subproject commit 00a284c9c084f4b6efc0546b164f75556d10db8b diff --git a/Multiverse-Resources b/Multiverse-Resources index 8e2d1c4bc..2ac142d8c 160000 --- a/Multiverse-Resources +++ b/Multiverse-Resources @@ -1 +1 @@ -Subproject commit 8e2d1c4bcde53d87cfa21b6ca5509702c73610b9 +Subproject commit 2ac142d8c1419dfa3b6473b6ccafbfcc44c202a4 diff --git a/Multiverse-Utilities b/Multiverse-Utilities index bada6d93b..f53b2cf77 160000 --- a/Multiverse-Utilities +++ b/Multiverse-Utilities @@ -1 +1 @@ -Subproject commit bada6d93b8591796a4f30e2b14b5369f70e4f653 +Subproject commit f53b2cf77471aa54875598c5b5bbdc4654d09dae diff --git a/README.md b/README.md index 3ff727cff..82bd898f1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,123 @@ # Multiverse +# Multiverse-Framework + +A powerful framework for robotics and 3D scene representation leveraging OpenUSD. + +--- + +## Features + +- Modular robotics control and simulation +- Integration with OpenUSD for advanced 3D scene handling +- Flexible architecture for extension and customization + +--- + +## Installation Guide + +Follow these steps to install the Multiverse-Framework and its dependencies, including OpenUSD. + +### Prerequisites + +Make sure you have the following installed: + +- Python 3.8+ and pip +- Git +- CMake (3.18 or higher) +- A C++ compiler (gcc/g++ recommended) +- Python development headers (e.g., `python3-dev` on Ubuntu) +- Additional dependencies like Boost, TBB, etc., required by OpenUSD (see below) + +--- + +### Step 0: Create a virtual environment (recommended) + +It is highly recommended to use virtual environment for Multiverse Framework. + +```bash +python3 -m venv venv +source path/to/venv/bin/activate +echo 'alias activate_venv='source path/to/venv/bin/activate' >> ~/.bashrc +``` + +### Step 1: Clone the repository + +```bash +git clone https://github.com/mitsav01/Multiverse-Framework.git --recursive +cd Multiverse-Framework +``` + +### Step 2: Install required Python packages + +```bash +pip install -r requirements.txt +``` + +### Step 3: Install OpenUSD + +Although, it is given in setup.sh file to clone and install OpenUSD repo. I've cloned and installed repo by myself. + +```bash +git clone https://github.com/PixarAnimationStudios/OpenUSD.git +mkdir OpenUSD/install +chmod -R +x OpenUSD +``` +To integrate Multiverse with OpenUSD, we need to specify OpenUSD's source and install directory. I did it by specifying them in `.bashrc` file. + +```bash +echo 'export USD_SRC_DIR=path/to/OpenUSD' >> ~/.bashrc +echo 'export USD_INSTALL_DIR=path/to/OpenUSD/install' >> ~/.bashrc +``` +### Step 4: Running Installation script + +Now, after following this steps. +We can go to any individual package of Multiverse and execute ```install.sh``` +I did it with ```Multiverse-Knowledge```. + +```bash +cd path/to/Multiverse/Multiverse-Knowledge +./install.sh +``` +The installation of ```OpenUSD``` will take really long (~15-20 minutes). At the end of installation, we'll have an output showing that Installation finished successfully and we'll get a message to add some stuffs to ```PATH``` and ```PYTHONPATH``` variable. + +```bash +echo 'export PATH=$PATH:path/to/OpenUSD/install/bin' >> ~/.bashrc +echo 'export PYTHONPATH=$PYTHONPATH:path/to/OpenUSD/install/lib/python' >> ~/.bashrc +``` +### Step 5: Building workspace + +It is also important to build and source `ros_ws` or `ros2_ws` everytime, we use this framework. +We can build the `ros2_ws` with below command: + +```bash +cd /path/to/Multiverse/Multiverse-Launch/src/multiverse_connectors/multiverse_ros_connector/ros_ws/multiverse_ws2 +colcon build --symlink-install +source install/setup.bash +```` +In order to make it easy, we can add following line to `~/.bashrc`: + +```bash +source /path/to/Multiverse/Multiverse-Launch/src/multiverse_connectors/multiverse_ros_connector/ros_ws/multiverse_ws2/install/setup.bash +``` + +### Step 6: Verifying Installation + +After successful execution of ```install.sh```, we can verify the installation of 'Multiverse' framework using below command: + +```bash +cd /path/to/Multiverse/Multiverse-Launch/bin +multiverse_launch +``` +You'll see four different windows showing an example of 'Table with ball and Square' in simulation. +Note: In order to save the time to write whole command to launch `multiverse_launch`, we can use following command. + +```bash +echo 'alias multiverse_launch='bash /path/to/Multiverse/Multiverse-Launch/bin/multiverse_launch'' >> ~/.bashrc +``` +Everytime, we can launch 'Multiverse' just by writing `multiverse_launch` in the terminal. + + ## Citation If you find this software helpful, please cite it as follows: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..ac2c29184 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,72 @@ +# =============================== +# Dependency Resolution & Packaging +# =============================== +pip +setuptools # For building/installing Python packages +packaging # Handles version and package specifiers +typeguard # Runtime type checking +pyyaml # YAML parsing +attrs # Class attribute management +distro # Linux distro info +zipp # Zip file utilities +future # Python 2/3 compatibility + +# =============================== +# USD & GUI Dependencies +# =============================== +pyopengl # OpenGL interface +jinja2 # Templating engine (lowercase variant) +Jinja2 # Templating engine (capitalized variant — kept in case some tool uses it) +pyside6 # Qt for GUI +pyside2 # Qt for GUI (older version) +PyQt5 # Alternative Qt bindings +docutils # Used by Sphinx, documentation tools +tornado # Web server (used by some USD GUI tools) +wheel # For building wheels +empy==3.3.4 # Required for ROS build system (template system) + +# =============================== +# Knowledge & Ontology +# =============================== +owlready2 # Ontology management +rdflib # RDF graph handling +lxml # XML/HTML processing +lark-parser # Parsing tool (used in grammar-based systems) + +# =============================== +# Robotics/ROS Dependencies +# =============================== +urdf_parser_py # URDF parsing +rospkg # ROS package utility +rosdistro # ROS distro information + +# =============================== +# Mujoco & Physics Sim +# =============================== +mujoco==3.3.2 # Mujoco physics engine +mujoco-mjx==3.3.2 # Mujoco MJX for enhanced simulation + +# =============================== +# Data Science & ML Utilities +# =============================== +numpy +pandas +scipy +plotly +opencv-python +tqdm +requests +pillow +Pillow # Duplicate kept for compatibility — safe to keep one + +# =============================== +# Multiverse Parser / Custom Tools +# =============================== +#pyfactxx # Custom or lesser-known package (verify source) + +# =============================== +# Testing +# =============================== +pytest +pytest-cov +coverage