Newer
Older
pepper / Dockerfile
FROM tiryoh/ros-desktop-vnc:kinetic

ENV DEBCONF_NOWARNINGS=yes
ENV DEBIAN_FRONTEND noninteractive
ENV ROS_PYTHON_VERSION 1
SHELL ["/bin/bash", "-c"]

RUN sed -i 's@archive.ubuntu.com@ftp.jaist.ac.jp/pub/Linux@g' /etc/apt/sources.list

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install --no-install-recommends -y \
    build-essential \
    dkms \
    openssh-server && \
    apt-get -y clean && \
    rm -rf /var/lib/apt/lists/*

RUN mkdir /var/run/sshd && \
    echo 'root:ubuntu' | chpasswd && \
    sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

EXPOSE 22

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install --no-install-recommends -y \
    python-catkin-tools \
    python-rosdep \
    openssh-server \
    ros-kinetic-driver-base \
    ros-kinetic-move-base-msgs \
    ros-kinetic-octomap \
    ros-kinetic-octomap-msgs \
    ros-kinetic-humanoid-msgs \
    ros-kinetic-humanoid-nav-msgs \
    ros-kinetic-camera-info-manager \
    ros-kinetic-camera-info-manager-py \
    libccd-dev \
    libccd2 \
    libfcl-0.5-dev \
    libfcl0.5 \
    libglew-dev \
    libglew1.13 \
    python-bs4 \
    python-html5lib \
    python-lxml \
    ros-kinetic-ackermann-steering-controller \
    ros-kinetic-chomp-motion-planner \
    ros-kinetic-combined-robot-hw \
    ros-kinetic-combined-robot-hw-tests \
    ros-kinetic-control-toolbox \
    ros-kinetic-controller-interface \
    ros-kinetic-controller-manager \
    ros-kinetic-controller-manager-msgs \
    ros-kinetic-controller-manager-tests \
    ros-kinetic-diff-drive-controller \
    ros-kinetic-effort-controllers \
    ros-kinetic-force-torque-sensor-controller \
    ros-kinetic-forward-command-controller \
    ros-kinetic-gazebo-ros-control \
    ros-kinetic-gripper-action-controller \
    ros-kinetic-hardware-interface \
    ros-kinetic-imu-sensor-controller \
    ros-kinetic-joint-limits-interface \
    ros-kinetic-joint-state-controller \
    ros-kinetic-joint-trajectory-controller \
    ros-kinetic-moveit-core \
    ros-kinetic-moveit-fake-controller-manager \
    ros-kinetic-moveit-kinematics \
    ros-kinetic-moveit-msgs \
    ros-kinetic-moveit-planners-ompl \
    ros-kinetic-moveit-ros-move-group \
    ros-kinetic-moveit-ros-perception \
    ros-kinetic-moveit-ros-planning \
    ros-kinetic-moveit-simple-controller-manager \
    ros-kinetic-naoqi-bridge-msgs \
    ros-kinetic-naoqi-dcm-driver \
    ros-kinetic-naoqi-driver \
    ros-kinetic-naoqi-driver-py \
    ros-kinetic-naoqi-libqi \
    ros-kinetic-naoqi-libqicore \
    ros-kinetic-naoqi-pose \
    ros-kinetic-naoqi-sensors-py \
    ros-kinetic-object-recognition-msgs \
    ros-kinetic-ompl \
    ros-kinetic-pepper-bringup \
    ros-kinetic-pepper-control \
    ros-kinetic-pepper-dcm-bringup \
    ros-kinetic-pepper-description \
    ros-kinetic-pepper-gazebo-plugin \
    ros-kinetic-pepper-moveit-config \
    ros-kinetic-pepper-robot \
    ros-kinetic-pepper-sensors-py \
    ros-kinetic-position-controllers \
    ros-kinetic-realtime-tools \
    ros-kinetic-rgbd-launch ros-kinetic-ros-control \
    ros-kinetic-ros-controllers \
    ros-kinetic-rqt-joint-trajectory-controller \
    ros-kinetic-srdfdom \
    ros-kinetic-transmission-interface \
    ros-kinetic-urdfdom-py \
    ros-kinetic-velocity-controllers \
    libgflags2v5 \
    tmux \
    python-pyassimp \
    ros-kinetic-dsr-description \
    ros-kinetic-eigenpy \
    ros-kinetic-graph-msgs \
    ros-kinetic-moveit \
    ros-kinetic-moveit-chomp-optimizer-adapter \
    ros-kinetic-moveit-commander \
    ros-kinetic-moveit-config-m0609 \
    ros-kinetic-moveit-config-m0617 \
    ros-kinetic-moveit-config-m1013 \
    ros-kinetic-moveit-config-m1509 \
    ros-kinetic-moveit-controller-manager-example \
    ros-kinetic-moveit-experimental \
    ros-kinetic-moveit-opw-kinematics-plugin \
    ros-kinetic-moveit-planners \
    ros-kinetic-moveit-planners-chomp \
    ros-kinetic-moveit-plugins \
    ros-kinetic-moveit-pr2 ros-kinetic-moveit-python \
    ros-kinetic-moveit-resources \
    ros-kinetic-moveit-ros \
    ros-kinetic-moveit-ros-benchmarks \
    ros-kinetic-moveit-ros-control-interface \
    ros-kinetic-moveit-ros-manipulation \
    ros-kinetic-moveit-ros-planning-interface \
    ros-kinetic-moveit-ros-robot-interaction \
    ros-kinetic-moveit-ros-visualization \
    ros-kinetic-moveit-ros-warehouse \
    ros-kinetic-moveit-runtime \
    ros-kinetic-moveit-setup-assistant \
    ros-kinetic-moveit-sim-controller \
    ros-kinetic-moveit-visual-tools \
    ros-kinetic-pr2-controllers-msgs \
    ros-kinetic-pr2-description \
    ros-kinetic-pr2-mechanism-msgs \
    ros-kinetic-pr2-moveit-config \
    ros-kinetic-pr2-moveit-plugins \
    ros-kinetic-ros-control-boilerplate \
    ros-kinetic-rosparam-shortcuts \
    ros-kinetic-rviz-visual-tools \
    ros-kinetic-warehouse-ros \
    iputils-ping \
    ros-kinetic-joint-trajectory-* \
    ros-kinetic-move-base \
    ros-kinetic-teleop-twist-keyboard  && \
    apt-get -y clean && \
    rm -rf /var/lib/apt/lists/*

RUN mkdir -p /home/ubuntu/catkin_ws/src && \
    /bin/bash -c "source /opt/ros/kinetic/setup.bash ; cd /home/ubuntu/catkin_ws/src ; catkin_init_workspace" && \
    /bin/bash -c "source /opt/ros/kinetic/setup.bash ; cd /home/ubuntu/catkin_ws && catkin build" && \
    echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc && \
    echo "source /home/ubuntu/catkin_ws/devel/setup.bash" >> ~/.bashrc && \
    echo "export ROS_PACKAGE_PATH=\${ROS_PACKAGE_PATH}:/home/ubuntu/catkin_ws" >> ~/.bashrc && \
    echo "export ROS_WORKSPACE=/home/ubuntu/catkin_ws" >> ~/.bashrc && \
    echo "alias cm='cd ~/catkin_ws;catkin build'" >> ~/.bashrc && \
    echo "alias cs='cd ~/catkin_ws/src'" >> ~/.bashrc  && \
    apt-get update && \
    apt-get upgrade -y && \
    cd /home/ubuntu/catkin_ws && \
    catkin build && \
    cd /home/ubuntu/catkin_ws/src && \
    git clone https://github.com/ros-naoqi/naoqi_driver.git && \
    rosdep install -i --from-paths . --ignore-src --rosdistro kinetic -y ./naoqi_driver && \
    git clone https://github.com/SoftbankRoboticsChina/pepper-ros-navigation.git && \
    rosdep install -i --from-paths . --ignore-src --rosdistro kinetic -y ./pepper-ros-navigation && \
    catkin_create_pkg create_speech rospy std_msgs --rosdistro kinetic && \
    cd create_speech && \
    curl -o create_speech.py https://raw.githubusercontent.com/ykoga-kyutech/pepper_ros_handson/master/scripts/create_speech_template.py && \
    chmod +x create_speech.py && \
    cd /home/ubuntu/catkin_ws && \
    catkin build && \
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Install pynaoqi 2.5.5 library
COPY ./scripts/pynaoqi-python2.7-2.5.5.5-linux64.tar.gz /home/ubuntu/pynaoqi-python2.7-2.5.5.5-linux64.tar.gz
COPY ./scripts/naoqi-sdk-2.5.5.5-linux64.tar.gz /home/ubuntu/naoqi-sdk-2.5.5.5-linux64.tar.gz
RUN tar -xvzf /home/ubuntu/pynaoqi-python2.7-2.5.5.5-linux64.tar.gz -C /home/ubuntu/ && \
    rm /home/ubuntu/pynaoqi-python2.7-2.5.5.5-linux64.tar.gz && \
    tar -xvzf /home/ubuntu/naoqi-sdk-2.5.5.5-linux64.tar.gz -C /home/ubuntu/ && \
    rm /home/ubuntu/naoqi-sdk-2.5.5.5-linux64.tar.gz && \
    echo "export PYTHONPATH=\${PYTHONPATH}:/home/ubuntu/naoqi-sdk-2.5.5.5-linux64/lib" >> ~/.bashrc && \
    echo "export PYTHONPATH=\${PYTHONPATH}:/home/ubuntu/pynaoqi-python2.7-2.5.5.5-linux64/lib/python2.7/site-packages" >> ~/.bashrc && \
    echo "export NAOqi_DIR=/home/ubuntu/naoqi-sdk-2.5.5.5-linux64" >> ~/.bashrc

COPY ./scripts/startup.sh /startup.sh
COPY ./scripts/connectPEPPER.sh /home/ubuntu/connectPEPPER.sh
COPY ./scripts/pepper.rviz /home/ubuntu/pepper.rviz
COPY ./scripts/launchdemo.txt /home/ubuntu/launchdemo.txt