diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index 0b3ac48..0000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,56 +0,0 @@ -FROM ros:humble -ENV DEBIAN_FRONTEND noninteractive -SHELL ["/bin/bash", "-c"] -RUN apt-get update && apt-get install -y -qq --no-install-recommends \ - libglvnd-dev \ - libgl1-mesa-dev \ - libegl1-mesa-dev \ - libgles2-mesa-dev \ - libxext6 \ - libx11-6 \ - freeglut3-dev \ - git \ - python3-pip \ - python3-tk \ - curl \ - vim \ - libcgal-dev \ - libcgal-demo \ - ros-humble-rmw-cyclonedds-cpp ros-humble-rosidl-generator-dds-idl \ - libyaml-cpp-dev \ - ros-humble-xacro \ - libboost-all-dev\ - build-essential \ - cmake \ - git \ - && rm -rf /var/lib/apt/lists/* - -RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash -RUN apt-get install git-lfs - -# Cheange the ROS2 RMW to CycloneDDS as instructed by Unitree -RUN cd / && git clone https://github.com/unitreerobotics/unitree_ros2 && cd /unitree_ros2/cyclonedds_ws/src && \ -git clone https://github.com/ros2/rmw_cyclonedds -b humble && git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x &&\ -cd .. && colcon build --packages-select cyclonedds && source /opt/ros/humble/setup.bash && colcon build - -# Install Python dependencies -RUN pip3 install scipy ipykernel warp-lang -RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -RUN pip3 install matplotlib opencv-python proxsuite -RUN pip3 install isort black -RUN pip3 install warp-lang scikit-learn casadi mujoco pin - -RUN pip install jupyter ipykernel -RUN pip install cyclonedds pygame -RUN pip install pynput pygame -RUN pip install onnx onnxruntime - -# Set environmental variables required for using ROS -RUN echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc -RUN echo 'source /unitree_ros2/cyclonedds_ws/install/setup.bash' >> ~/.bashrc -RUN echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> ~/.bashrc -RUN echo 'export CYCLONEDDS_URI=file:///home/Go2py/Go2Py/assets/cyclonedds.xml' >> ~/.bashrc - -# Env vars for the nvidia-container-runtime. -ENV NVIDIA_VISIBLE_DEVICES all -ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute \ No newline at end of file diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 120000 index 0000000..8b4a7f7 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1 @@ +Dockerfile.x86 \ No newline at end of file diff --git a/.devcontainer/Dockerfile.go2 b/.devcontainer/Dockerfile.go2 new file mode 100644 index 0000000..a3e56e6 --- /dev/null +++ b/.devcontainer/Dockerfile.go2 @@ -0,0 +1,42 @@ +FROM nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_42f50fd45227c63eb74af1d69ddc2970 +ENV DEBIAN_FRONTEND noninteractive +ARG CONDA_VER=latest +ARG OS_TYPE=aarch64 + +RUN apt-get update && apt-get install -y -qq --no-install-recommends cuda \ + wget \ + ros-humble-rmw-cyclonedds-cpp ros-humble-rosidl-generator-dds-idl \ + ros-humble-pcl-ros \ + && rm -rf /var/lib/apt/lists/* + +# MID360 Lidar Drivers +RUN cd /root && git clone https://github.com/Livox-SDK/Livox-SDK2.git && cd ./Livox-SDK2/ && mkdir build && cd build && cmake .. && make -j4 && make install +RUN cd /root && git clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2 && cd ws_livox/src/livox_ros_driver2 && source /opt/ros/humble/setup.bash && cd /root/ws_livox/src/livox_ros_driver2 && /bin/bash build.sh humble +# FAST-LIO Install +RUN cd /root && mkdir -p fastlio-ws/src && cd fastlio-ws/src && git clone https://github.com/Ericsii/FAST_LIO.git --recursive && cd FAST_LIO && git checkout ros2 && cd /root/fastlio-ws && source /root/ws_livox/install/setup.bash && colcon build --symlink-install + +RUN cd / && git clone https://github.com/unitreerobotics/unitree_ros2 && cd /unitree_ros2/cyclonedds_ws/src && \ +git clone https://github.com/ros2/rmw_cyclonedds -b humble && git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x &&\ +cd .. && colcon build --packages-select cyclonedds && source /opt/ros/humble/setup.bash && colcon build + + +RUN echo "export CYCLONEDDS_HOME=/unitree_ros2/cyclonedds_ws/install/cyclonedds/" >> ~/.bashrc +ENV CYCLONEDDS_HOME "/unitree_ros2/cyclonedds_ws/install/cyclonedds" +RUN cd /root && git clone https://github.com/eclipse-cyclonedds/cyclonedds-python -b releases/0.10.x && cd cyclonedds-python && pip install . + +# CycloneDDS-cxx +# RUN cd /root && git clone https://github.com/eclipse-cyclonedds/cyclonedds-cxx -b releases/0.10.x &&\ +# cd cyclonedds-cxx && mkdir build install && cd build && cmake .. && \ +# cmake --build . --target install + +# Install Python dependencies +RUN pip install matplotlib opencv-python scipy isort black onnx onnxruntime +RUN pip install https://github.com/NVIDIA/warp/releases/download/v1.5.1/warp_lang-1.5.1+cu11-py3-none-manylinux2014_aarch64.whl +RUN pip install pygame pynput jupyter ipykernel meshcat + +RUN echo "export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp" >> ~/.bashrc + +# RUN echo "export CYCLONEDDS_URI=''" >> ~/.bashrc +# RUN echo 'source /unitree_ros2/cyclonedds_ws/install/setup.bash' >> ~/.bashrc +# RUN echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> ~/.bashrc +# RUN echo 'export CYCLONEDDS_URI=file:///home/Go2py/Go2Py/assets/cyclonedds.xml' >> ~/.bashrc diff --git a/.devcontainer/Dockerfile.x86 b/.devcontainer/Dockerfile.x86 new file mode 100644 index 0000000..c90d0ed --- /dev/null +++ b/.devcontainer/Dockerfile.x86 @@ -0,0 +1,79 @@ +FROM ros:humble +ENV DEBIAN_FRONTEND noninteractive +ARG CONDA_VER=latest +ARG OS_TYPE=x86_64 +SHELL ["/bin/bash", "-c"] + +RUN apt-get update && apt-get install -y -qq --no-install-recommends \ + libglvnd-dev \ + libgl1-mesa-dev \ + libegl1-mesa-dev \ + libgles2-mesa-dev \ + libxext6 \ + libx11-6 \ + freeglut3-dev \ + git \ + python3-pip \ + python3-tk \ + curl \ + vim \ + libcgal-dev \ + libcgal-demo \ + ros-humble-rmw-cyclonedds-cpp ros-humble-rosidl-generator-dds-idl \ + libyaml-cpp-dev \ + ros-humble-xacro \ + libboost-all-dev\ + build-essential \ + cmake \ + git \ + wget \ + && rm -rf /var/lib/apt/lists/* + +RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash +RUN apt-get install git-lfs + +RUN cd / && git clone https://github.com/unitreerobotics/unitree_ros2 && cd /unitree_ros2/cyclonedds_ws/src && \ +git clone https://github.com/ros2/rmw_cyclonedds -b humble && git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x &&\ +cd .. && colcon build --packages-select cyclonedds && source /opt/ros/humble/setup.bash && colcon build + + +# Install Miniconda +RUN wget https://github.com/conda-forge/miniforge/releases/${CONDA_VER}/download/Miniforge3-Linux-${OS_TYPE}.sh -O ~/miniconda.sh \ + && /bin/bash ~/miniconda.sh -b -p /opt/conda \ + && rm ~/miniconda.sh \ + && ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh \ + && echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc \ + && echo "conda activate base" >> ~/.bashrc + +ENV PATH /opt/conda/bin:$PATH + +RUN conda create -n go2py python==3.8.10 +SHELL ["conda", "run", "-n", "go2py", "/bin/bash", "-c"] + +ENV CONDA_PREFIX /opt/conda + +RUN echo "export CYCLONEDDS_HOME=/unitree_ros2/cyclonedds_ws/install/cyclonedds/" >> ~/.bashrc +ENV CYCLONEDDS_HOME "/unitree_ros2/cyclonedds_ws/install/cyclonedds" +RUN cd /root && git clone https://github.com/eclipse-cyclonedds/cyclonedds-python -b releases/0.10.x && cd cyclonedds-python && pip install . + +# Install Python dependencies +RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 +RUN pip install matplotlib opencv-python proxsuite scipy isort black +RUN pip install warp-lang scikit-learn casadi +RUN pip install onnx onnxruntime +RUN pip install pygame pynput jupyter ipykernel +RUN pip install meshcat mujoco +RUN conda install -y -c conda-forge \ + pinocchio \ + crocoddyl \ + mim-solvers + +# Set environmental variables required for using ROS +RUN echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc +RUN echo 'source /unitree_ros2/cyclonedds_ws/install/setup.bash' >> ~/.bashrc +RUN echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> ~/.bashrc +RUN echo 'export CYCLONEDDS_URI=file:///home/Go2py/Go2Py/assets/cyclonedds.xml' >> ~/.bashrc + +# Env vars for the nvidia-container-runtime. +ENV NVIDIA_VISIBLE_DEVICES all +ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute \ No newline at end of file diff --git a/.devcontainer/docker-compose.yaml b/.devcontainer/docker-compose.yaml index c623dce..54b1edc 100644 --- a/.devcontainer/docker-compose.yaml +++ b/.devcontainer/docker-compose.yaml @@ -10,9 +10,12 @@ services: - /tmp/.X11-unix:/tmp/.X11-unix - ../:/home/Go2py - /dev/input:/dev/input + - /dev/shm:/dev/shm + - /dev:/dev environment: - DISPLAY=${DISPLAY} - QT_X11_NO_MITSHM=1 runtime: nvidia stdin_open: true - tty: true \ No newline at end of file + tty: true + ipc: host \ No newline at end of file diff --git a/Go2Py/assets/d1_assets/stl/Link1.STL b/Go2Py/assets/d1_assets/stl/Link1.STL new file mode 100644 index 0000000..fab96c9 Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/Link1.STL differ diff --git a/Go2Py/assets/d1_assets/stl/Link2.STL b/Go2Py/assets/d1_assets/stl/Link2.STL new file mode 100644 index 0000000..81536da Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/Link2.STL differ diff --git a/Go2Py/assets/d1_assets/stl/Link3.STL b/Go2Py/assets/d1_assets/stl/Link3.STL new file mode 100644 index 0000000..f12190f Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/Link3.STL differ diff --git a/Go2Py/assets/d1_assets/stl/Link4.STL b/Go2Py/assets/d1_assets/stl/Link4.STL new file mode 100644 index 0000000..ea9ed66 Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/Link4.STL differ diff --git a/Go2Py/assets/d1_assets/stl/Link5.STL b/Go2Py/assets/d1_assets/stl/Link5.STL new file mode 100644 index 0000000..7f5982e Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/Link5.STL differ diff --git a/Go2Py/assets/d1_assets/stl/Link6.STL b/Go2Py/assets/d1_assets/stl/Link6.STL new file mode 100644 index 0000000..48065eb Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/Link6.STL differ diff --git a/Go2Py/assets/d1_assets/stl/Link7_1.STL b/Go2Py/assets/d1_assets/stl/Link7_1.STL new file mode 100644 index 0000000..b385f4c Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/Link7_1.STL differ diff --git a/Go2Py/assets/d1_assets/stl/Link7_2.STL b/Go2Py/assets/d1_assets/stl/Link7_2.STL new file mode 100644 index 0000000..6b13b2f Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/Link7_2.STL differ diff --git a/Go2Py/assets/d1_assets/stl/base_link.STL b/Go2Py/assets/d1_assets/stl/base_link.STL new file mode 100644 index 0000000..adb0d53 Binary files /dev/null and b/Go2Py/assets/d1_assets/stl/base_link.STL differ diff --git a/Go2Py/assets/dae/base.dae b/Go2Py/assets/go2_assets/dae/base.dae similarity index 100% rename from Go2Py/assets/dae/base.dae rename to Go2Py/assets/go2_assets/dae/base.dae diff --git a/Go2Py/assets/dae/calf.dae b/Go2Py/assets/go2_assets/dae/calf.dae similarity index 100% rename from Go2Py/assets/dae/calf.dae rename to Go2Py/assets/go2_assets/dae/calf.dae diff --git a/Go2Py/assets/dae/calf_mirror.dae b/Go2Py/assets/go2_assets/dae/calf_mirror.dae similarity index 100% rename from Go2Py/assets/dae/calf_mirror.dae rename to Go2Py/assets/go2_assets/dae/calf_mirror.dae diff --git a/Go2Py/assets/dae/foot.dae b/Go2Py/assets/go2_assets/dae/foot.dae similarity index 100% rename from Go2Py/assets/dae/foot.dae rename to Go2Py/assets/go2_assets/dae/foot.dae diff --git a/Go2Py/assets/dae/hip.dae b/Go2Py/assets/go2_assets/dae/hip.dae similarity index 100% rename from Go2Py/assets/dae/hip.dae rename to Go2Py/assets/go2_assets/dae/hip.dae diff --git a/Go2Py/assets/dae/thigh.dae b/Go2Py/assets/go2_assets/dae/thigh.dae similarity index 100% rename from Go2Py/assets/dae/thigh.dae rename to Go2Py/assets/go2_assets/dae/thigh.dae diff --git a/Go2Py/assets/dae/thigh_mirror.dae b/Go2Py/assets/go2_assets/dae/thigh_mirror.dae similarity index 100% rename from Go2Py/assets/dae/thigh_mirror.dae rename to Go2Py/assets/go2_assets/dae/thigh_mirror.dae diff --git a/Go2Py/assets/mujoco/assets/base_0.obj b/Go2Py/assets/go2_assets/obj/base_0.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/base_0.obj rename to Go2Py/assets/go2_assets/obj/base_0.obj diff --git a/Go2Py/assets/mujoco/assets/base_1.obj b/Go2Py/assets/go2_assets/obj/base_1.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/base_1.obj rename to Go2Py/assets/go2_assets/obj/base_1.obj diff --git a/Go2Py/assets/mujoco/assets/base_2.obj b/Go2Py/assets/go2_assets/obj/base_2.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/base_2.obj rename to Go2Py/assets/go2_assets/obj/base_2.obj diff --git a/Go2Py/assets/mujoco/assets/base_3.obj b/Go2Py/assets/go2_assets/obj/base_3.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/base_3.obj rename to Go2Py/assets/go2_assets/obj/base_3.obj diff --git a/Go2Py/assets/mujoco/assets/base_4.obj b/Go2Py/assets/go2_assets/obj/base_4.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/base_4.obj rename to Go2Py/assets/go2_assets/obj/base_4.obj diff --git a/Go2Py/assets/mujoco/assets/calf_0.obj b/Go2Py/assets/go2_assets/obj/calf_0.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/calf_0.obj rename to Go2Py/assets/go2_assets/obj/calf_0.obj diff --git a/Go2Py/assets/mujoco/assets/calf_1.obj b/Go2Py/assets/go2_assets/obj/calf_1.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/calf_1.obj rename to Go2Py/assets/go2_assets/obj/calf_1.obj diff --git a/Go2Py/assets/mujoco/assets/calf_mirror_0.obj b/Go2Py/assets/go2_assets/obj/calf_mirror_0.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/calf_mirror_0.obj rename to Go2Py/assets/go2_assets/obj/calf_mirror_0.obj diff --git a/Go2Py/assets/mujoco/assets/calf_mirror_1.obj b/Go2Py/assets/go2_assets/obj/calf_mirror_1.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/calf_mirror_1.obj rename to Go2Py/assets/go2_assets/obj/calf_mirror_1.obj diff --git a/Go2Py/assets/mujoco/assets/foot.obj b/Go2Py/assets/go2_assets/obj/foot.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/foot.obj rename to Go2Py/assets/go2_assets/obj/foot.obj diff --git a/Go2Py/assets/mujoco/assets/hip_0.obj b/Go2Py/assets/go2_assets/obj/hip_0.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/hip_0.obj rename to Go2Py/assets/go2_assets/obj/hip_0.obj diff --git a/Go2Py/assets/mujoco/assets/hip_1.obj b/Go2Py/assets/go2_assets/obj/hip_1.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/hip_1.obj rename to Go2Py/assets/go2_assets/obj/hip_1.obj diff --git a/Go2Py/assets/mujoco/assets/thigh_0.obj b/Go2Py/assets/go2_assets/obj/thigh_0.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/thigh_0.obj rename to Go2Py/assets/go2_assets/obj/thigh_0.obj diff --git a/Go2Py/assets/mujoco/assets/thigh_1.obj b/Go2Py/assets/go2_assets/obj/thigh_1.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/thigh_1.obj rename to Go2Py/assets/go2_assets/obj/thigh_1.obj diff --git a/Go2Py/assets/mujoco/assets/thigh_mirror_0.obj b/Go2Py/assets/go2_assets/obj/thigh_mirror_0.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/thigh_mirror_0.obj rename to Go2Py/assets/go2_assets/obj/thigh_mirror_0.obj diff --git a/Go2Py/assets/mujoco/assets/thigh_mirror_1.obj b/Go2Py/assets/go2_assets/obj/thigh_mirror_1.obj similarity index 100% rename from Go2Py/assets/mujoco/assets/thigh_mirror_1.obj rename to Go2Py/assets/go2_assets/obj/thigh_mirror_1.obj diff --git a/Go2Py/assets/mujoco/d1_arm.xml b/Go2Py/assets/mujoco/d1_arm.xml new file mode 100644 index 0000000..1b778f2 --- /dev/null +++ b/Go2Py/assets/mujoco/d1_arm.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Go2Py/assets/mujoco/go2.xml b/Go2Py/assets/mujoco/go2.xml index 43fd6d7..7af68f9 100644 --- a/Go2Py/assets/mujoco/go2.xml +++ b/Go2Py/assets/mujoco/go2.xml @@ -1,5 +1,5 @@ - +