На момент написання цього тексту (2025-01-12), скрипт visualize_franka.sh з franka_description, версія 0.4.0, базується на Docker-образі та ros2 Humble.
Оскільки я використовую Jazzy і хочу уникнути будь-яких несумісностей, ось як оновити скрипт до Jazzy.
Ви можете напряму клонувати мій форк репозиторію:
git clone -b jazzy https://github.com/ulikoehler/franka_description.gitТепер ви можете запустити скрипт як зазвичай:
cd franka_description
./scripts/visualize_franka.sh arm_id:=fr3Зміни базуються на тому факті, що в Docker-образі humble UID 1000 не використовувався, тоді як у Jazzy він використовується користувачем ubuntu. Тому, якщо UID користувача, що виконує скрипт, дорівнює 1000, скрипту потрібно повторно використати існуючий UID та GID, оскільки спроба створити користувача/групу з тим самим UID/GID приречена на невдачу. Деталі щодо методу, яким це було виправлено, дивіться у Логіка оболонки: Як створити користувача/групу, якщо немає користувача/групи з таким UID/GID
Якщо ви хочете модифікувати його самостійно, єдина зміна, яку потрібно зробити — це змінити .docker/Dockerfile:
FROM osrf/ros:jazzy-desktop
ARG DEBIAN_FRONTEND=noninteractive
ARG USER_UID=1001
ARG USER_GID=1001
ARG USERNAME=user
WORKDIR /workspaces
# Створити користувача/групу лише якщо такого користувача/групи не існує
RUN (getent group $USER_GID || groupadd --gid $USER_GID $USERNAME) \
&& (getent passwd $USER_UID || useradd --uid $USER_UID --gid $USER_GID -m $USERNAME) \
&& mkdir -p -m 0700 /run/user/"${USER_UID}" \
&& mkdir -p -m 0700 /run/user/"${USER_UID}"/gdm \
&& chown $USER_UID:$USER_GID /run/user/"${USER_UID}" \
&& chown $USER_UID:$USER_GID /workspaces \
&& chown $USER_UID:$USER_GID /run/user/"${USER_UID}"/gdm
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ros-jazzy-xacro \
ros-jazzy-joint-state-publisher-gui \
&& rm -rf /var/lib/apt/lists/*
ENV XDG_RUNTIME_DIR=/run/user/"${USER_UID}"
# Вказати користувача через UID та GID, щоб цей скрипт не
# залежав від точного імені користувача
USER $USER_UID:$USER_GID
RUN echo "source /ros_entrypoint.sh" >>~/.bashrc
ARG MAX_ROS_DOMAIN_ID=232
RUN echo "export ROS_DOMAIN_ID=100" >>~/.bashrc
RUN echo "set +e" >>~/.bashrc