如何使用 ROS2 Jazzy 运行 franka_description visualize_franka.sh
在撰写本文时(2025-01-12),来自 franka_description 版本 0.4.0 的 visualize_franka.sh 脚本基于 Docker 镜像和 ros2 Humble。
由于我使用 Jazzy 并希望避免任何不兼容性,以下是如何将脚本更新到 Jazzy。
你可以直接克隆我的仓库 fork:
clone-and-run.sh
git clone -b jazzy https://github.com/ulikoehler/franka_description.git现在你可以像往常一样运行脚本:
run-visualize-franka.sh
cd franka_description
./scripts/visualize_franka.sh arm_id:=fr3这些更改基于以下事实:在 humble Docker 镜像中 UID 1000 未被使用,而在 Jazzy 中它被 ubuntu 用户使用。因此,如果执行用户的 UID 是 1000,脚本需要重用现有的 UID 和 GID,因为尝试创建具有相同 UID/GID 的用户/组注定会失败。有关修复方法的详细信息,请参见Shell 逻辑:如何在不存在具有该 UID/GID 的用户/组时创建用户/组
如果你想自己修改它,你唯一需要做的更改是更改 .docker/Dockerfile:
Dockerfile.jazzy
FROM osrf/ros:jazzy-desktop
ARG DEBIAN_FRONTEND=noninteractive
ARG USER_UID=1001
ARG USER_GID=1001
ARG USERNAME=user
WORKDIR /workspaces
# Create user/group only of no such user/group exists
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}"
# Specify user by UID & GID so this script doesn't
# depend on the exact username
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" >>~/.bashrcIf this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow