Complete ROS Melodic environment for AgileX Scout mobile robot with xArm6 manipulator running in Gazebo simulation.
~/docker/agilex_scout_xarm/
├── docker/
│ ├── compose.yaml # Docker Compose configuration
│ └── melodic.Dockerfile # ROS Melodic desktop-full image
├── scripts/
│ ├── run_melodic.sh # Quick start: launch container and shell in
│ ├── build_melodic.sh # Build Docker image
│ ├── rebuild_with_robot_packages.sh # Full rebuild including robot packages
│ └── quick_restore_python38.sh # Restore Python 3.8 environment
├── catkin_ws/ # Catkin workspace (bind-mounted)
│ ├── src/
│ │ ├── integration/ # Custom integration packages
│ │ ├── scout_*/ # Scout robot packages (symlinks)
│ │ └── sensors/ # Sensor packages
│ └── build/ # Build artifacts (ignored by git)
├── repos/ # Robot repositories (bind-mounted)
│ ├── agx_xarm_bringup/ # Minimal bringup launch files
│ ├── scout_xarm_base/ # Scout robot base
│ ├── scout_xarm_description/ # URDF descriptions
│ ├── ugv_gazebo_sim/ # Gazebo simulation environments
│ ├── moveit_config/ # MoveIt configuration
│ └── silvanus/ # Additional robot packages
├── home/ # Container user configuration
│ └── .bashrc # Auto-setup on shell start
└── notes/ # RViz configurations and notes
cd ~/docker/agilex_scout_xarm
sudo ./scripts/run_melodic.shThis will:
- Start the melodic_bridge container in detached mode
- Open an interactive bash shell inside the container
- Auto-source ROS and catkin workspace
- Change to catkin workspace directory
roslaunch scout_gazebo_sim scout_empty_world.launchroslaunch agx_xarm_bringup bringup_minimal.launch use_rviz:=trueBase (Scout) Teleop:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=/cmd_velArm (xArm6) Teleop:
rosrun teleop_twist_keyboard xarm6_keyboard_teleop.pyControls:
q/a: Joint 1 (Base yaw)w/s: Joint 2 (Shoulder)e/d: Joint 3 (Elbow)r/f: Joint 4 (Wrist roll)t/g: Joint 5 (Wrist pitch)y/h: Joint 6 (Wrist yaw)u/j: Increase/decrease all speedsz: Reset all joints to 0x: Move to home position
# Build the Docker image
sudo ./scripts/build_melodic.sh
# Complete rebuild with robot packages
sudo ./scripts/rebuild_with_robot_packages.sh
# Quick restore Python 3.8 environment
./scripts/quick_restore_python38.sh
# Stop container
sudo docker compose -f docker/compose.yaml downSee RECOVERY_GUIDE.md for troubleshooting Docker issues.
Common problems:
- Python 3.8 missing → Run
quick_restore_python38.sh - Workspace not building → Run
restore_integration.shinside container - Missing packages → Check
PERMANENT_SETUP.md
This repository tracks:
- Docker configuration files
- Custom ROS packages (integration/)
- Launch files and RViz configs
- Build scripts and recovery tools
NOT tracked:
- Build artifacts (build/, devel/, log/)
- Large model files
- Nested git repositories (use submodules if needed)
- Container uses
network_mode: hostfor ROS communication - GPU access enabled for visualization
- X11 forwarding configured for RViz
- Robot packages are bind-mounted from host
- Teleop keyboard needs TTY allocation (run via run_melodic.sh script)