diff --git a/Dockerfile b/Dockerfile index ccdcd76..90ba16e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,8 @@ ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ && apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \ && apt-get install -y \ + gdb \ + gdbserver \ ripgrep \ ninja-build \ gettext \ @@ -30,17 +32,17 @@ RUN apt-get update \ FROM base-ros-nvim AS base-ros-nvim-graphics ARG ROS_DISTR=iron +ENV ROS_DISTR=$ROS_DISTR ENV NVIDIA_VISIBLE_DEVICES \ ${NVIDIA_VISIBLE_DEVICES:-all} ENV NVIDIA_DRIVER_CAPABILITIES \ ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics -ENV ROS_DISTR=$ROS_DISTR RUN apt-get update \ #&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \ && apt-get install -y \ software-properties-common \ - && add-apt-repository -y ppa:inivation-ppa/inivation \ + #&& add-apt-repository -y ppa:inivation-ppa/inivation \ && rm -rf /var/lib/apt/lists/* RUN apt-get update \ @@ -58,14 +60,20 @@ RUN apt-get update \ iputils-ping \ sudo \ wget \ + #dv-processing \ + #dv-runtime-dev \ libserial-dev \ + nlohmann-json3-dev \ ros-${ROS_DISTR}-rqt-tf-tree \ ros-${ROS_DISTR}-apriltag \ ros-${ROS_DISTR}-plotjuggler-ros \ ros-${ROS_DISTR}-tf-transformations \ ros-${ROS_DISTR}-topic-tools \ ros-${ROS_DISTR}-rviz-2d-overlay-plugins \ - && pip3 install transforms3d \ + ros-${ROS_DISTR}-simple-launch \ + ros-${ROS_DISTR}-slider-publisher \ # used for gripper tests + pre-commit \ + # && pip3 install transforms3d \ # && rosdep install --from-paths /ros2_underlay/src -y --ignore-src \ # && rosdep install --from paths /ros2/src -y --ignore-src \ && apt-get autoremove -y \ @@ -77,7 +85,8 @@ ARG USERNAME=ros-user ARG USER_UID=1000 ARG USER_GID=$USER_UID -RUN groupadd --gid $USER_GID $USERNAME \ +RUN userdel -r ubuntu; \ + groupadd --gid $USER_GID $USERNAME \ && useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \ && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME\ && chmod 0440 /etc/sudoers.d/$USERNAME @@ -104,9 +113,14 @@ RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/ && mkdir -p "$HOME/.zsh" \ && git clone https://github.com/sindresorhus/pure.git "$HOME/.zsh/pure" \ && echo "source /opt/ros/$ROS_DISTR/setup.zsh" >> /home/$USERNAME/.zshrc \ - && pip3 install yapf pre-commit ruff \ + # && pip3 install yapf pre-commit ruff \ + && git clone https://github.com/HippoCampusRobotics/hippo_core.git "$HOME/hippo_core" \ + && ls $HOME/hippo_core/hippo_common/scripts \ + && $HOME/hippo_core/hippo_common/scripts/install_scripts.sh \ && sudo wget https://hippocampusrobotics.github.io/docs/_downloads/6055b3168d4f0a8cd764ebc481280219/ros-iron-px4-msgs_2.0.1-0jammy_amd64.deb \ - && sudo apt-get install ./ros-iron-px4-msgs_2.0.1-0jammy_amd64.deb \ + # && sudo wget https://hippocampusrobotics.github.io/docs/_downloads/286cb880b68d2c4b6c6d9e6730fab199/ros-jazzy-px4-msgs_2.0.1-0noble_amd64.deb \ + # && sudo apt-get install ./ros-${ROS_DISTR}-px4-msgs_2.0.1-0noble_amd64.deb \ + && sudo apt-get install ./ros-${ROS_DISTR}-px4-msgs_2.0.1-0jammy_amd64.deb \ && sudo apt install asciinema \ && sudo apt-get autoremove -y \ && sudo apt-get clean -y \ @@ -116,8 +130,10 @@ USER root RUN mkdir /zsh_history \ && touch /zsh_history/.zsh_history \ && chown -R $USERNAME /zsh_history -RUN mkdir /home/$USERNAME/.cache/pre-commit \ +RUN mkdir -p /home/$USERNAME/.cache/pre-commit \ && chown -R $USERNAME /home/$USERNAME/.cache/pre-commit +RUN mkdir -p /home/$USERNAME/.local/bin \ + && chown -R $USERNAME /home/$USERNAME/.local/bin ADD ros2-vim/nvim /home/$USERNAME/.config/nvim RUN chown -R $USERNAME /home/$USERNAME/ USER ${USERNAME} diff --git a/docker-compose.yml b/docker-compose.yml index ec212e0..3cb9f41 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,7 +46,7 @@ services: target: /home/ros-user/.config/nvim - type: bind source: $XDG_RUNTIME_DIR/${WAYLAND_DISPLAY} - target: /tmp/${WAYLAND_DISPLAY} + target: /tmp/runtime-ros-user/${WAYLAND_DISPLAY} - "ros2_zsh_history:/zsh_history" - pre_commit_data:/home/ros-user/.cache/pre-commit - nvim_data:/home/ros-user/.local/share/nvim @@ -55,7 +55,7 @@ services: environment: - DISPLAY=${DISPLAY} - - XDG_RUNTIME_DIR=/tmp + - XDG_RUNTIME_DIR=/tmp/runtime-ros-user - WAYLAND_DISPLAY=${WAYLAND_DISPLAY} - QT_X11_NO_MITSHM=1 - QT_STYLE_OVERRIDE=breeze diff --git a/entrypoint.sh b/entrypoint.sh index 7c14297..4c1c93d 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,13 +1,18 @@ #!/bin/bash set -e -WORKSPACE_DIR="\$HOME/uuv/ros2" -UNDERLAY_DIR="\$HOME/uuv/ros2_underlay" -#echo "alias build_ros=\"env -i HOME=\$HOME USER=\$USER TERM=xterm-256color bash -l -c 'source $UNDERLAY_DIR/install/setup.bash && cd $WORKSPACE_DIR && colcon build --symlink-install --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON'\"" >> ~/.zshrc -#echo "alias build_underlay=\"env -i HOME=\$HOME USER=\$USER TERM=xterm-256color bash -l -c 'source /opt/ros/$ROS_DISTR/setup.bash && cd $UNDERLAY_DIR && colcon build'\"" >> ~/.zshrc -echo "alias rosdep-ros2=\"env -i HOME=\$HOME USER=\$USER TERM=xterm-256color bash -l -c 'source \$HOME/uuv/ros2_underlay/install/setup.bash && cd \$HOME/uuv/ros2 && rosdep install --from-paths src -y --ignore-src'\"" >> ~/.zshrc -echo "alias rosdep-underlay=\"env -i HOME=\$HOME USER=\$USER TERM=xterm-256color bash -l -c 'source /opt/ros/iron/setup.bash && cd \$HOME/uuv/ros2_underlay && rosdep install --from-paths src -y --ignore-src'\"" >> ~/.zshrc +host=$(cat /etc/hostname) +echo "127.0.0.1 $host" | sudo tee -a /etc/hosts > /dev/null 2>1 +sudo chown $UID:$UID $XDG_RUNTIME_DIR +chmod 700 $XDG_RUNTIME_DIR +export WORKSPACE_DIR="\$HOME/uuv/ros2" +export UNDERLAY_DIR="\$HOME/uuv/ros2_underlay" + +echo "alias build_ros=\"env -i HOME=\$HOME USER=\$USER TERM=xterm-256color bash -l -c 'source $UNDERLAY_DIR/install/setup.bash && cd $WORKSPACE_DIR && colcon build --symlink-install --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON'\"" >> ~/.zshrc +echo "alias build_underlay=\"env -i HOME=\$HOME USER=\$USER TERM=xterm-256color bash -l -c 'source /opt/ros/$ROS_DISTR/setup.bash && cd $UNDERLAY_DIR && colcon build'\"" >> ~/.zshrc +echo "alias rosdep-ros2=\"env -i HOME=\$HOME USER=\$USER TERM=xterm-256color UNDERLAY_DIR=\$UNDERLAY_DIR bash -l -c 'source \$UNDERLAY_DIR/install/setup.bash && cd $WORKSPACE_DIR && rosdep install --from-paths src -y --ignore-src'\"" >> ~/.zshrc +echo "alias rosdep-underlay=\"env -i UNDERLAY_DIR=\$UNDERLAY_DIR HOME=\$HOME USER=\$USER TERM=xterm-256color bash -l -c 'source /opt/ros/$ROS_DISTR/setup.bash && cd $UNDERLAY_DIR && rosdep install --from-paths src -y --ignore-src'\"" >> ~/.zshrc echo 'source $HOME/uuv/ros2_underlay/install/setup.zsh' >> ~/.zshrc echo 'source $HOME/uuv/ros2/install/local_setup.zsh' >> ~/.zshrc @@ -18,4 +23,9 @@ echo 'eval "$(register-python-argcomplete3 build-ros)"' >> ~/.zshrc echo 'eval "$(register-python-argcomplete3 clean-ros)"' >> ~/.zshrc echo "bindkey '^ ' autosuggest-toggle" >> ~/.zshrc + +# required to make the daemon/CLI work properly +# might be fixed in ros jazzy according to https://github.com/ros2/ros2/issues/1531 +ulimit -n 1024 + exec $@