VLMotion is a ROS2-based vision-language robot control system that integrates two main packages: VLPoint and VLServo.
VLMotion/
├── docker/ # Docker container configuration
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── build.sh # Build Docker image
│ ├── run.sh # Start Docker container
│ └── stop.sh # Stop Docker container
├── ros2_ws/ # ROS2 workspace
│ └── src/
│ ├── vlpoint/ # VLPoint package (controller and worker)
│ └── vlservo/ # VLServo package (visual servoing)
└── environment.sh # Environment setup script
- Ubuntu 22.04
- ROS2 Humble
- Docker (optional)
- Python 3.10+
-
Build Docker Image
cd docker ./build.sh -
Start Docker Container
./run.sh
-
Inside the Container, Setup Environment
source /workspace/environment.sh [ROS_DOMAIN_ID]ROS_DOMAIN_IDis optional, defaults to 0, valid range: 0-232
-
Build ROS2 Packages
cd /workspace/ros2_ws colcon build --symlink-install source install/setup.bash
-
Install ROS2 Humble
# See official documentation: https://docs.ros.org/en/humble/Installation.html -
Setup Environment
source environment.sh [ROS_DOMAIN_ID] -
Build ROS2 Packages
cd ros2_ws colcon build --symlink-install source install/setup.bash
The VLPoint package contains two main components: controller and worker.
ros2 launch vlpoint controller.launch.pyros2 launch vlpoint worker.launch.pyros2 launch vlpoint vlpoint.launch.pyThe VLServo package provides visual servoing functionality.
ros2 launch vlservo vlservoing.launch.pyExecute the following commands in separate terminal windows:
Terminal 1 - Launch VLPoint Controller:
source environment.sh
cd ros2_ws
source install/setup.bash
ros2 launch vlpoint controller.launch.pyTerminal 2 - Launch VLPoint Worker:
source environment.sh
cd ros2_ws
source install/setup.bash
ros2 launch vlpoint worker.launch.pyTerminal 3 - Launch VLServo Visual Servoing:
source environment.sh
cd ros2_ws
source install/setup.bash
ros2 launch vlservo vlservoing.launch.pyIf using Docker, you can open multiple terminals inside the container:
# On host machine
docker exec -it vlmotion_container bash
# Inside container
source /workspace/environment.sh
cd /workspace/ros2_ws
source install/setup.bash
# Then execute the corresponding launch commands- controller.launch.py: Launches the main controller node for system coordination
- worker.launch.py: Launches the worker node for vision-language tasks
- vlpoint.launch.py: Launches both controller and worker simultaneously
- vlservoing.launch.py: Launches the visual servoing system for robot vision-based navigation and control
ROS_DOMAIN_ID: ROS2 domain ID (0-232), used for multi-robot or multi-system isolationROS_DISTRO: ROS2 distribution version (default: humble)PYTHONWARNINGS: Python warning filter settingsPIP_DISABLE_PIP_VERSION_CHECK: Disable pip version check
-
Package Not Found
# Make sure packages are built and environment is sourced cd ros2_ws colcon build --symlink-install source install/setup.bash
-
Permission Issues
# Check file permissions sudo chmod +x docker/*.sh
-
ROS2 Communication Issues
# Check if ROS_DOMAIN_ID is consistent echo $ROS_DOMAIN_ID # Reset environment source environment.sh [DOMAIN_ID]
-
GUI Issues in Docker Container
# Make sure X11 forwarding is enabled xhost +local:docker
cd ros2_ws
colcon build --symlink-install --packages-select vlpoint vlservo
source install/setup.bashcd ros2_ws
rm -rf build/ install/ log/Apache-2.0