Skip to content

Commit d095f21

Browse files
Merge pull request #1 from ActiveIntelligentSystemsLab/add-ros
[update] Add ROS support
2 parents 8e0c943 + 52e82f1 commit d095f21

File tree

9 files changed

+155
-3
lines changed

9 files changed

+155
-3
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
catkin_ws/build/
2+
catkin_ws/devel/
3+
catkin_ws/logs/
4+
catkin_ws/.catkin_workspace
5+
catkin_ws/.catkin_tools/

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
[submodule "PyTorch-ENet"]
22
path = PyTorch-ENet
33
url = https://github.com/ActiveIntelligentSystemsLab/PyTorch-ENet
4+
[submodule "catkin_ws/src/aisl_utils"]
5+
path = catkin_ws/src/aisl_utils
6+
url = https://aisl-serv6.aisl.cs.tut.ac.jp:20443/common/aisl_utils.git
7+
[submodule "catkin_ws/src/pytorch_enet_ros"]
8+
path = catkin_ws/src/pytorch_enet_ros
9+
url = https://github.com/ActiveIntelligentSystemsLab/pytorch_enet_ros

Dockerfile

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,58 @@ MAINTAINER ShigemichiMatsuzaki <matsuzaki@aisl.cs.tut.ac.jp>
55
WORKDIR /workspace
66
COPY requirements.txt /tmp
77

8-
RUN pip install tensorflow tensorboard tensorboardX torchvision moviepy
98
RUN pip install -r /tmp/requirements.txt && rm -rf /tmp/requirements.txt
9+
10+
RUN apt-get update && apt install -y lsb-release \
11+
&& apt-get clean \
12+
&& rm -rf /var/lib/apt/lists/*rm
13+
14+
# Install ROS
15+
# Add key
16+
RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' && \
17+
apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
18+
19+
# Install ROS Melodic
20+
RUN apt-get update && apt install -y ros-kinetic-ros-base \
21+
&& apt-get clean \
22+
&& rm -rf /var/lib/apt/lists/*rm
23+
24+
RUN apt-get install -y ros-kinetic-image-transport ros-kinetic-image-transport-plugins \
25+
python-catkin-tools \
26+
&& apt-get clean \
27+
&& rm -rf /var/lib/apt/lists/*rm
28+
29+
# Initialize the ROS environment
30+
RUN rosdep init && rosdep update
31+
32+
# Set entry point
33+
COPY ./ros_entrypoint.sh /ros_entrypoint.sh
34+
RUN chmod 777 /ros_entrypoint.sh
35+
RUN echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
36+
37+
# Set environment variables
38+
ENV PATH /opt/ros/kinetic/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
39+
ENV PYTHONPATH /opt/ros/kinetic/lib/python2.7/dist-packages:$PYTHONPATH
40+
ENV ROS_DISTRO kinetic
41+
42+
# Install LibTorch, a C++ API of PyTorch
43+
# - Following the instruction in https://github.com/pytorch/pytorch/blob/master/docs/libtorch.rst
44+
# - Use /opt/conda/bin/python because the default python can't locate necessary modules due to its configuration
45+
RUN cd /opt/pytorch/pytorch/ && mkdir build_libtorch && cd build_libtorch \
46+
&& /opt/conda/bin/python ../tools/build_libtorch.py
47+
48+
RUN echo 'alias pt-python="/opt/conda/bin/python $@"' >> ~/.bashrc
49+
50+
# Set entry point
51+
RUN rm /ros_entrypoint.sh
52+
COPY ./ros_entrypoint.sh /ros_entrypoint.sh
53+
RUN chmod 777 /ros_entrypoint.sh
54+
55+
RUN echo 'export TARGET_IP=$(LANG=C /sbin/ifconfig $network_if | grep -Eo '"'"'inet (addr:)?([0-9]*\.){3}[0-9]*'"'"' | grep -Eo '"'"'([0-9]*\.){3}[0-9]*'"'"')' >> ~/.bashrc
56+
RUN echo 'if [ -z "$TARGET_IP" ] ; then' >> ~/.bashrc
57+
RUN echo ' echo "ROS_IP is not set."' >> ~/.bashrc
58+
RUN echo ' else' >> ~/.bashrc
59+
RUN echo ' export ROS_IP=$TARGET_IP' >> ~/.bashrc
60+
RUN echo ' fi' >> ~/.bashrc
61+
62+
ENTRYPOINT ["/ros_entrypoint.sh"]

catkin_ws/src/aisl_utils

Submodule aisl_utils added at c7666a5

catkin_ws/src/pytorch_enet_ros

Submodule pytorch_enet_ros added at 572675a

docker-compose.yml

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@ services:
44
container_name: pytorch-train
55
image: aisl/pytorch:latest
66
runtime: nvidia
7-
command: python /root/PyTorch-ENet/main.py -m train --save-dir /root/PyTorch-ENet/save/ENet_CamVid_matsuzaki_20190921/ --name my_cityscapes_20190921 --dataset camvid --dataset-dir /tmp/dataset/CamVid/ --batch-size 8
7+
build: .
8+
command: >
9+
python /root/PyTorch-ENet/main.py -m train
10+
--save-dir /root/PyTorch-ENet/save/ENet_CamVid_matsuzaki_20190921/
11+
--name my_cityscapes_20190921
12+
--dataset camvid
13+
--dataset-dir /tmp/dataset/CamVid/
14+
--batch-size 8
815
volumes:
916
- ./PyTorch-ENet:/root/PyTorch-ENet
1017
- /media/data/dataset/matsuzaki:/tmp/dataset
@@ -14,7 +21,66 @@ services:
1421
container_name: tensorboard
1522
image: aisl/pytorch:latest
1623
command: tensorboard --logdir /root/PyTorch-ENet/runs
24+
build: .
1725
ports:
1826
- 60006:6006
1927
volumes:
2028
- ./PyTorch-ENet:/root/PyTorch-ENet
29+
30+
master:
31+
container_name: pytorch-ros-master
32+
image: ros:kinetic-ros-core
33+
command: roscore
34+
environment:
35+
- ROS_MASTER_URI=http://localhost:11311
36+
tty: true
37+
38+
pytorch-ros:
39+
container_name: pytorch-ros-node
40+
depends_on:
41+
- master
42+
build: .
43+
runtime: nvidia
44+
image: aisl/pytorch:latest
45+
command: roslaunch pytorch_enet_ros pytorch_enet_ros.launch
46+
environment:
47+
- ROS_MASTER_URI=http://pytorch-ros-master:11311
48+
- ROS_IP=172.24.0.3
49+
volumes:
50+
- ./catkin_ws/:/root/catkin_ws/
51+
- ./PyTorch-ENet:/root/PyTorch-ENet
52+
- /media/data/dataset/matsuzaki:/tmp/dataset
53+
tty: true
54+
shm_size: 1G
55+
56+
catkin-build:
57+
container_name: catkin-build
58+
depends_on:
59+
- master
60+
build: .
61+
runtime: nvidia
62+
image: aisl/pytorch:latest
63+
command: bash -c "cd /root/catkin_ws && catkin build"
64+
environment:
65+
- ROS_MASTER_URI=http://pytorch-ros-master:11311
66+
volumes:
67+
- ./catkin_ws/:/root/catkin_ws/
68+
- ./PyTorch-ENet:/root/PyTorch-ENet
69+
- /media/data/dataset/matsuzaki:/tmp/dataset
70+
tty: true
71+
shm_size: 1G
72+
73+
rviz:
74+
container_name: pytorch-ros-rviz
75+
depends_on:
76+
- master
77+
image: osrf/ros:kinetic-desktop-full
78+
command: rviz
79+
environment:
80+
- ROS_MASTER_URI=http://pytorch-ros-master:11311
81+
- DISPLAY
82+
- QT_X11_NO_MITSHM=1
83+
volumes:
84+
- $HOME/.Xauthority:/root/.Xauthority
85+
- /tmp/.X11-unix:/tmp/.X11-unix:rw
86+
tty: true

requirements.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ pytz==2018.9
99
six==1.12.0
1010
torch==1.0.0
1111
torchvision==0.2.1
12+
moviepy
13+
setuptools==41.0.0
14+
tensorflow==1.13.2
15+
tensorboard==1.13.0
16+
tensorboardX==1.8

ros_entrypoint.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# setup ros environment
5+
source "/opt/ros/$ROS_DISTRO/setup.bash"
6+
source "/root/catkin_ws/devel/setup.bash"
7+
8+
export TARGET_IP=$(LANG=C /sbin/ifconfig $network_if | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*')
9+
if [ -z "$TARGET_IP" ] ; then
10+
echo "ROS_IP is not set."
11+
else
12+
export ROS_IP=$TARGET_IP
13+
fi
14+
15+
exec "$@"

0 commit comments

Comments
 (0)