Skip to content

Commit

Permalink
Container Support (uzh-rpg#119)
Browse files Browse the repository at this point in the history
Squashed commit of the following:

commit 5f2d23d
Author: ddanon <[email protected]>
Date:   Mon Dec 25 13:25:04 2023 -0500

    remove README.md deltas for pull request

commit 842562b
Author: ddanon <[email protected]>
Date:   Mon Dec 25 13:23:18 2023 -0500

    clean up for pull request

commit 8920b20
Author: Lucas Miller <[email protected]>
Date:   Tue Dec 19 15:26:48 2023 -0700

    Update README.md

    run graphical via display sharing

commit a967870
Author: Lucas Miller <[email protected]>
Date:   Tue Dec 19 15:23:39 2023 -0700

    Update melodic.Dockerfile

    added rviz

commit 405238b
Author: Lucas Miller <[email protected]>
Date:   Tue Dec 19 14:34:10 2023 -0700

    Update README.md

commit ac7b054
Author: Lucas Miller <[email protected]>
Date:   Tue Dec 19 14:17:28 2023 -0700

    Update README.md

commit 0529a57
Author: Lucas Miller <[email protected]>
Date:   Tue Dec 19 14:14:42 2023 -0700

    Delete kinetic.Dockerfile

    sticking to melodic

commit d1fe536
Author: Lucas Miller <[email protected]>
Date:   Tue Dec 19 14:14:04 2023 -0700

    Update melodic.Dockerfile

    added packages not mentioned in the installation guide; fixed paths; tested with planar and opengl renderers

commit 6a5db3a
Author: ddanon <[email protected]>
Date:   Thu Dec 14 17:54:53 2023 -0700

    dockerfile made
  • Loading branch information
LingzheZhao committed Feb 18, 2024
1 parent 465ce5b commit 4e41c48
Show file tree
Hide file tree
Showing 3 changed files with 160 additions and 0 deletions.
53 changes: 53 additions & 0 deletions CONTAINER_README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Foreward

The work herein is primarily that of Rebecq et al, in the Acknowlegements section below. This fork simply impelements a dockerized version such that ESIM can be used on platforms without ROS Melodic.

## Suggested Installation

After cloning this repository, simply build the dockerfile as follows.

```bash
# where $(pwd) is /the/path/to/rpg_esim
podman build -t esim:melodic -f melodic.Dockerfile
```

Alternatively, build with docker (untested)

```bash
podman build -t esim:melodic -f melodic.Dockerfile
```

## Run

Then, simply run the container, source the setup file, and launch the renderer. Please refer to specific instructions to run a given simulator in [the original rpg_esim wiki](https://github.com/uzh-rpg/rpg_esim/wiki).

```bash
# On the host
# Running as root via rootless podman mitigates security risks that come with root access to xhost.
# Use with caution if you are not running rootless podman!
podman run --rm -ti -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /etc/localtime:/etc/localtime:ro esim
```

```bash
# In the container
. /home/user/sim_ws/devel/setup.bash
roscd esim_ros
# Based on the suggested test renderer
roslaunch esim_ros esim.launch config:=cfg/example.conf
```

An alternative, 3D, rendering option is below.

### OpenGL Renderer

```bash
roscd esim_ros
roslaunch esim_ros esim.launch config:=cfg/opengl.conf
```

## TODO
- [x] Add a graphical run script for visualization compatibility as discussed in numerous forum posts like [this one](https://unix.stackexchange.com/questions/330366/how-can-i-run-a-graphical-application-in-a-container-under-wayland)

## Acknowledgements

Thank you to the [Robotics and Perception Group](https://rpg.ifi.uzh.ch/) for all of their hard work and open source implementations.
45 changes: 45 additions & 0 deletions http-dependencies.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
repositories:
catkin_simple:
type: git
url: https://github.com/catkin/catkin_simple.git
version: master
ze_oss:
type: git
url: https://github.com/uzh-rpg/ze_oss.git
version: master
gflags_catkin:
type: git
url: https://github.com/ethz-asl/gflags_catkin.git
version: master
glog_catkin:
type: git
url: https://github.com/ethz-asl/glog_catkin.git
version: master
eigen_catkin:
type: git
url: https://github.com/ethz-asl/eigen_catkin.git
version: master
eigen_checks:
type: git
url: https://github.com/ethz-asl/eigen_checks.git
version: master
minkindr:
type: git
url: https://github.com/ethz-asl/minkindr.git
version: master
minkindr_ros:
type: git
url: https://github.com/ethz-asl/minkindr_ros.git
version: master
yaml_cpp_catkin:
type: git
url: https://github.com/ethz-asl/yaml_cpp_catkin.git
version: master
rpg_dvs_ros:
type: git
url: https://github.com/uzh-rpg/rpg_dvs_ros.git
version: master
assimp_catkin:
type: git
url: https://github.com/uzh-rpg/assimp_catkin.git
version: master
62 changes: 62 additions & 0 deletions melodic.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
FROM ros:melodic-ros-base

ARG DEBIAN_FRONTEND=noninteractive
ARG PROJ_PATH=/home/user/sim_ws
ARG ESIM_PATH=$PROJ_PATH/src/rpg_esim

# Installing some essential system packages
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
RUN apt-get update
RUN apt-get install -y \
python3-vcstool \
python3-catkin-tools \
python3-pip \
libproj-dev \
libglm-dev \
libopencv-dev \
ros-melodic-image-transport \
ros-melodic-cv-bridge \
autoconf \
libyaml-cpp-dev \
ros-melodic-eigen-conversions \
libtool \
ros-melodic-tf-conversions \
ros-melodic-tf \
ros-melodic-pcl-ros \
libglfw3-dev \
libassimp-dev \
ros-melodic-rviz

RUN apt-get clean autoclean &&\
rm -rf /var/lib/apt/lists/*

RUN python3 -m pip install -U pip

WORKDIR $PROJ_PATH
RUN catkin init
RUN catkin config --extend /opt/ros/melodic --cmake-args -DCMAKE_BUILD_TYPE=Release

RUN mkdir -p $ESIM_PATH
COPY ./ $ESIM_PATH
WORKDIR $PROJ_PATH/src
RUN vcs-import < $ESIM_PATH/dependencies.yaml

WORKDIR $PROJ_PATH/src/ze_oss
RUN touch \
imp_3rdparty_cuda_toolkit/CATKIN_IGNORE \
imp_app_pangolin_example/CATKIN_IGNORE \
imp_benchmark_aligned_allocator/CATKIN_IGNORE \
imp_bridge_pangolin/CATKIN_IGNORE \
imp_cu_core/CATKIN_IGNORE \
imp_cu_correspondence/CATKIN_IGNORE \
imp_cu_imgproc/CATKIN_IGNORE \
imp_ros_rof_denoising/CATKIN_IGNORE \
imp_tools_cmd/CATKIN_IGNORE \
ze_data_provider/CATKIN_IGNORE \
ze_geometry/CATKIN_IGNORE \
ze_imu/CATKIN_IGNORE \
ze_trajectory_analysis/CATKIN_IGNORE

WORKDIR $PROJ_PATH
RUN catkin build esim_ros
#ENTRYPOINT [". /home/user/sim_ws/devel/setup.bash"]

0 comments on commit 4e41c48

Please sign in to comment.