Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
sunsided committed Jun 3, 2020
0 parents commit 6d90f92
Show file tree
Hide file tree
Showing 4 changed files with 273 additions and 0 deletions.
184 changes: 184 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
.tmp/
tmp/

src/CMakeLists.txt

# Created by https://www.gitignore.io/api/ros,c++,clion
# Edit at https://www.gitignore.io/?templates=ros,c++,clion

### C++ ###
# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

### CLion ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### CLion Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr

# Sonarlint plugin
.idea/**/sonarlint/

# SonarQube Plugin
.idea/**/sonarIssues.xml

# Markdown Navigator plugin
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator/

### ROS ###
devel/
logs/
build/
bin/
lib/
msg_gen/
srv_gen/
msg/*Action.msg
msg/*ActionFeedback.msg
msg/*ActionGoal.msg
msg/*ActionResult.msg
msg/*Feedback.msg
msg/*Goal.msg
msg/*Result.msg
msg/_*.py
build_isolated/
devel_isolated/

# Generated by dynamic reconfigure
*.cfgc
/cfg/cpp/
/cfg/*.py

# Ignore generated docs
*.dox
*.wikidoc

# eclipse stuff
.project
.cproject

# qcreator stuff
CMakeLists.txt.user

srv/_*.py
*.pcd
*.pyc
qtcreator-*
*.user

/planning/cfg
/planning/docs
/planning/src

*~

# Emacs
.#*

# Catkin custom files
CATKIN_IGNORE

# End of https://www.gitignore.io/api/ros,c++,clion
41 changes: 41 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
FROM sunside/ros-gazebo-gpu:kinetic-nvidia

USER root

# Install required ROS packages, as well as GDB for debugging.
RUN apt-get update && apt-get install -y \
ros-kinetic-gazebo-ros-control \
ros-kinetic-effort-controllers \
ros-kinetic-joint-state-controller \
gdb \
&& rm -rf /var/lib/apt/lists/*

# Install packages for Where Am I? project
RUN apt-get update && apt-get install -y \
ros-kinetic-navigation \
ros-kinetic-map-server \
ros-kinetic-move-base \
ros-kinetic-amcl \
libignition-math2-dev \
protobuf-compiler \
&& rm -rf /var/lib/apt/lists/*

# Install packages the Home Service Robot? project
RUN apt-get update && apt-get install -y \
ros-kinetic-gmapping \
ros-kinetic-joy \
&& rm -rf /var/lib/apt/lists/*

# Allow SSH login into the container.
# See e.g. https://github.com/JetBrains/clion-remote/blob/master/Dockerfile.remote-cpp-env
RUN ( \
echo 'LogLevel DEBUG2'; \
echo 'PermitRootLogin yes'; \
echo 'PasswordAuthentication yes'; \
echo 'Subsystem sftp /usr/lib/openssh/sftp-server'; \
) > /etc/ssh/sshd_config_test_clion \
&& mkdir /run/sshd

# Start SSH server and run bash as the ros user.
USER ros
ENTRYPOINT sudo service ssh restart && bash
3 changes: 3 additions & 0 deletions build-docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env bash

docker build -t sunside/ros-gazebo-gpu:udacity-robond-hsr -f Dockerfile .
45 changes: 45 additions & 0 deletions run-nvidia.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/usr/bin/env bash
set -euo pipefail

CONTAINER_NAME=robond
DOCKER_IMAGE=sunside/ros-gazebo-gpu:udacity-robond-hsr
WORKSPACE=$(pwd)

# Which GPUs to use; see https://github.com/NVIDIA/nvidia-docker
GPUS="all"

XSOCK=/tmp/.X11-unix

XAUTH=`pwd`/.tmp/docker.xauth
XAUTH_DOCKER=/tmp/.docker.xauth

if [ ! -f $XAUTH ]
then
xauth_list=$(xauth nlist :0 | sed -e 's/^..../ffff/')
if [ ! -z "$xauth_list" ]
then
mkdir -p $(dirname "$XAUTH") > /dev/null
echo "$xauth_list" | xauth -f $XAUTH nmerge -
else
touch $XAUTH
fi
chmod a+r $XAUTH
fi

# We add SSH port forwarding, as well as sys_ptrace capability
# to allow for debugging.

docker run --rm -it \
--name "$CONTAINER_NAME" \
--gpus "$GPUS" \
--publish 127.0.0.1:2222:22 \
--publish 127.0.0.1:11311:11311 \
--cap-add sys_ptrace \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--env="XAUTHORITY=$XAUTH_DOCKER" \
--volume="$XSOCK:$XSOCK:rw" \
--volume="$XAUTH:$XAUTH_DOCKER:rw" \
--volume="$WORKSPACE:/workspace:rw" \
$DOCKER_IMAGE \
bash

0 comments on commit 6d90f92

Please sign in to comment.