Extends Crobotic's arm_api2 tutorial base image
(CroboticSolutions/docker_files)
-- the exact image this dev container was originally built from -- with
every other package added to this workspace since: fanuc_description,
fanuc_driver, fanuc_gazebo, ros2_robotiq_gripper, the UR ROS 2
stack, ros_plc_sim, idustrial_demo_gui, ros_gui_bridge, serial,
and plc_bridge (nested inside plc-ros2-bridge).
All repos are cloned fresh from GitHub at build time, at the branch each
one is currently on. Two repos are private: ros_gui_bridge, and
arm_api2 itself -- the crx-integration branch lives on bb53192's
private fork, not the public CroboticSolutions/arm_api2 upstream.
Everything else is public.
Requires Docker BuildKit (for SSH-agent forwarding into the build, needed to clone the two private repos).
ssh-add -l # make sure a key with access to both private repos is loaded
DOCKER_BUILDKIT=1 docker build --ssh default -t arms_ws:latest .run_docker.sh mirrors the original tutorial's run_docker.sh:
--network host --privileged --gpus all, /dev and the X11 socket
mounted, and your SSH_AUTH_SOCK forwarded in (so git/private-repo
access still works from inside the running container, not just at build
time).
xhost +local:docker # allow the container to open windows on your X server
./run_docker.shROS 2 + the workspace are sourced automatically via .bashrc (matching
how the original image does it), so things just work in any shell you
open in the container, e.g.:
ros2 launch fanuc_gazebo r2000_gz_sim_moveit.launch.py- Base: Ubuntu 24.04 (Noble) + ROS 2 Jazzy desktop-full + Gazebo Harmonic
(via
ros-jazzy-ros-gz-*) + MoveIt (Servo, Visual Tools, Pilz LIN/PTP/ CIRC planner) +ros2_control/gz_ros2_control+rqt_joint_trajectory_controller(used for manually teaching joint waypoints) +xterm(keyboard servo teleop). plc_bridgeis not its own top-level repo -- it lives insidebb53192/plc-ros2-bridgeatarms_ws/src/plc_bridgeand is symlinked into this workspace'ssrc/, matching the layout on the original machine.asyncua(OPC UA) andpymodbus(Modbus) are installed via pip for the PLC bridge; everything else comes fromrosdep install.arm_api2is pinned tocrx-integrationhere (this workspace's current branch), not the tutorial image's originalapirsic/devel.- Uncommitted local-only changes that existed only in the working tree
on the original machine (small tweaks in
Universal_Robots_ROS2_Driver,ros_plc_sim/scripts/color_classifier.py, andplc_bridge/plc_bridge/bridge_node.py) are not captured here -- only what was committed and pushed. Commit/push those first if you want them included. - Each build re-clones everything at the pinned branch's current HEAD -- there's no incremental/cached rebuild story here.