forked from rosmed/docker-ubuntu-22.04-ros2-novnc
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile.slicerros2
90 lines (77 loc) · 3.68 KB
/
Dockerfile.slicerros2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Built with arch: amd64 flavor: lxde image: ubuntu:20.04
#
################################################################################
# base system
################################################################################
FROM rosmed/docker-ubuntu-22.04-ros2-slicer:ismr2024 as system
#
# Additional ROS2 packages (dVRK)
#
WORKDIR /root
RUN apt install -y python3-vcstool python3-colcon-common-extensions \
&& apt install -y python3-pykdl \
&& apt install -y libxml2-dev libraw1394-dev libncurses5-dev qtcreator swig sox espeak cmake-curses-gui cmake-qt-gui git subversion gfortran libcppunit-dev libqt5xmlpatterns5-dev libbluetooth-dev \
&& apt install -y ros-humble-joint-state-publisher* ros-humble-xacro
#WORKDIR /root
#RUN mkdir -p /root/ros2_ws/src \
# && cd /root/ros2_ws/src \
# && /bin/bash -c 'source /opt/ros/humble/setup.sh; vcs import --input https://raw.githubusercontent.com/jhu-dvrk/dvrk_robot_ros2/main/dvrk.vcs --recursive'
#
# Build SlicerROS2
#
WORKDIR /root
RUN mkdir -p /root/ros2_ws/src \
&& mkdir -p /root/ros2_ws/src \
&& cd /root/ros2_ws/src \
#&& git clone https://github.com/jhu-cisst/ros2_cisst_msgs.git cisst_msgs \ # Installed as part of dVRK/ciasst
#&& git clone https://github.com/jhu-saw/ros2_sensable_omni_model \
&& git clone -b devel https://github.com/rosmed/slicer_ros2_module \
&& cd /root/ros2_ws \
&& /bin/bash -c 'source /opt/ros/humble/setup.sh; colcon build --cmake-args -DSlicer_DIR:PATH=/root/slicer/Slicer-SuperBuild-Release/Slicer-build -DCMAKE_BUILD_TYPE=Release'
#
# Install 3D Slicer Extensions
#
WORKDIR /root
COPY slicer/install-extension.py /root/slicer
COPY slicer/install-module.py /root/slicer
COPY slicer/start-slicer-ros2.bash /root
WORKDIR /root
RUN cd /root \
&& chmod 755 start-slicer-ros2.bash
RUN /bin/bash -c "export EXTENSION_DIR=/root/slicer/packages; xvfb-run --auto-servernum /root/slicer/Slicer-SuperBuild-Release/Slicer-build/Slicer --no-main-window --no-splash --python-script /root/slicer/install-extension.py"
#
# Install 3D Slicer Modules
#
# SlicerROS2
WORKDIR /root
RUN /bin/bash -c "export MODULE_DIR=/root/ros2_ws/build/ROS2/lib/Slicer-5.6/qt-loadable-modules; xvfb-run --auto-servernum /root/slicer/Slicer-SuperBuild-Release/Slicer-build/Slicer --no-main-window --no-splash --python-script /root/slicer/install-module.py"
# Package SlicerROS2
# See https://github.com/rosmed/slicer_ros2_module/blob/main/release.md
WORKDIR /root/slicer/packages
RUN cd /root/slicer/packages \
&& pkg_name=`find Slicer-*.tar.gz |sed -e 's/.tar.gz//g'` \
&& tar zxvf $pkg_name.tar.gz \
&& cd /root/slicer/Slicer-SuperBuild-Release/Slicer-build \
&& cp vtkSlicerROS2Module* /root/slicer/packages/$pkg_name/ \
&& cp lib/Slicer-5.6/qt-loadable-modules/*ROS2* /root/slicer/packages/$pkg_name/lib/Slicer-5.6/qt-loadable-modules \
&& cd /root/slicer/packages \
&& find $pkg_name -name "*.so" -exec strip {} \; \
&& find $pkg_name -name "*.pyc" -exec rm {} \; \
&& mv $pkg_name $pkg_name-SlicerROS2-humble \
&& tar cf $pkg_name-SlicerROS2-humble.tar $pkg_name-SlicerROS2-humble \
&& gzip --best $pkg_name-SlicerROS2-humble.tar
#
# PLUS Toolkit
#
WORKDIR /root
RUN apt install -y libglvnd-dev libqt5x11extras5-dev qtdeclarative5-dev qml-module-qtquick*
WORKDIR /root
RUN mkdir -p /root/plus/ \
&& cd /root/plus \
&& git clone https://github.com/PlusToolkit/PlusBuild.git \
&& mkdir PlusBuild-bin \
&& cd PlusBuild-bin \
&& cmake ../PlusBuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/root/plus/install -DPLUSBUILD_INSTALL_VTK=ON -DPLUSBUILD_INSTALL_ITK=ON \
&& make -j4 \
&& find . -name "*.o" -exec rm {} \; \
&& find . -name "*.d" -exec rm {} \;