Docker file - MACH-CAU/UAM GitHub Wiki

FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
ROS_DISTRO=humble

---------- 1) ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ & ๋กœ์ผ€์ผ ------------------------------------------

RUN apt-get update &&
apt-get install -y locales tzdata &&
locale-gen en_US en_US.UTF-8 &&
update-locale LANG=en_US.UTF-8

---------- 2) ROS 2 Humble ์ €์žฅ์†Œ ์ถ”๊ฐ€ --------------------------------------

RUN apt-get install -y software-properties-common curl gnupg lsb-release
git build-essential cmake wget python3-pip && \

curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
    -o /usr/share/keyrings/ros-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
     http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | \
     tee /etc/apt/sources.list.d/ros2.list && \
apt-get update && \
apt-get install -y ros-humble-desktop ros-dev-tools \
								    python3-colcon-common-extensions python3-rosdep \
                   python3-vcstool && \
								    rosdep init && rosdep update

---------- 3) Python ์˜์กด์„ฑ --------------------------------------------------

RUN python3 -m pip install --no-cache-dir --upgrade
pip
wheel
setuptools
packaging
empy==3.3.4
pyros-genmsg

---------- 4) PX4 Autopilot --------------------------------------------------

WORKDIR /root RUN git clone --recursive https://github.com/PX4/PX4-Autopilot.git &&
cd PX4-Autopilot &&
# ํ•„์ˆ˜ ์˜์กด์„ฑ ๋ฐ SITL/Gazebo ์„ค์น˜ bash Tools/setup/ubuntu.sh --no-nuttx --verbose &&
# (์˜ต์…˜) ์ฒซ ๋ฒˆ ์งธ ๋นŒ๋“œ๋กœ ์บ์‹œ ์ƒ์„ฑ โ€“ ํ•„์š” ์—†์œผ๋ฉด ์ฃผ์„ ์ฒ˜๋ฆฌ make -j4 px4_sitl

ENV PX4_AUTOPILOT=/opt/PX4-Autopilot

---------- 5) micro XRCE-DDS Agent v2.4.2 -----------------------------------

WORKDIR /root RUN git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git &&
cd Micro-XRCE-DDS-Agent && mkdir build && cd build &&
cmake .. && make -j4 && make install && ldconfig

---------- 6) ROS 2 ์›Œํฌ์ŠคํŽ˜์ด์Šค (px4_msgs + px4_ros_com) -------------------

RUN useradd -m px4 && usermod -aG dialout px4 USER px4 WORKDIR /root RUN mkdir -p ws_sensor_combined/src && cd ws_sensor_combined/src &&
git clone https://github.com/PX4/px4_msgs.git &&
git clone https://github.com/PX4/px4_ros_com.git &&
/bin/bash -c "source /opt/ros/${ROS_DISTRO}/setup.bash &&
cd .. && colcon build --symlink-install"

---------- 7) ํŽธ์˜์šฉ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ & ์ž๋™ source -------------------------------

RUN echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ~/.bashrc &&
echo "source ~/ws_sensor_combined/install/setup.bash" >> ~/.bashrc &&
echo "export PX4_AUTOPILOT=/opt/PX4-Autopilot" >> ~/.bashrc &&
echo "export ROS_DOMAIN_ID=0" >> ~/.bashrc

---------- 8) ๊ธฐ๋ณธ ์‹คํ–‰ ------------------------------------------------------

ํฌํŠธ 8888/UDP - uXRCE-DDS ๊ธฐ๋ณธ ํฌํŠธ

EXPOSE 8888/udp WORKDIR /root CMD ["/bin/bash"]