diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..6878236b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +# Use the base ROS2 humble image +FROM osrf/ros:humble-desktop-full + +# Set environment variables +ENV DEBIAN_FRONTEND=noninteractive + +# Install the required packages in a single layer and clean up afterwards +RUN apt-get update && apt-get install -y \ + git \ + python3-pip \ + ros-${ROS_DISTRO}-gazebo-ros-pkgs \ + ros-${ROS_DISTRO}-cartographer \ + ros-${ROS_DISTRO}-cartographer-ros \ + ros-${ROS_DISTRO}-navigation2 \ + ros-${ROS_DISTRO}-nav2-bringup && \ + rm -rf /var/lib/apt/lists/* + +ENV COLCON_WS=/root/colcon_ws +WORKDIR ${COLCON_WS} + +RUN mkdir -p ${COLCON_WS}/src && \ + cd ${COLCON_WS}/src && \ + git clone -b humble https://github.com/ROBOTIS-GIT/DynamixelSDK.git && \ + git clone -b humble https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git && \ + git clone -b humble https://github.com/ROBOTIS-GIT/turtlebot3.git + +RUN bash -c "source /opt/ros/${ROS_DISTRO}/setup.bash && \ + cd ${COLCON_WS} && \ + colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release" + +RUN echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ~/.bashrc +RUN echo "source ${COLCON_WS}/install/setup.bash" >> ~/.bashrc +RUN echo "source /usr/share/gazebo/setup.sh" >> ~/.bashrc + +CMD ["bash"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..4adde1d5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +services: + ros2: + build: + context: . + dockerfile: Dockerfile + container_name: turtlebot3 + tty: true + restart: always + cap_add: + - SYS_NICE + ulimits: + rtprio: 99 + rttime: -1 + memlock: 8428281856 + network_mode: host + environment: + - DISPLAY=${DISPLAY} + - QT_X11_NO_MITSHM=1 + - ROS_DOMAIN_ID=30 + volumes: + - /dev:/dev + - ./workspace:/workspace + - /tmp/.X11-unix:/tmp/.X11-unix:rw + - /tmp/.docker.xauth:/tmp/.docker.xauth:rw + privileged: true + command: bash