A demo project using the Limx Tron1 Robot with Artefacts, ROS 2, and Gazebo.
This workspace provides a Tron1 simulation and development environment using a standard ROS 2 workflow.
It supports both ROS 2 Humble (Ubuntu 22.04) and ROS 2 Jazzy (Ubuntu 24.04):
- Humble: Uses Ignition Fortress
- Jazzy: Uses Gazebo Harmonic
Follow the official installation guide for your Ubuntu version:
Install the ros-{ROS_DISTRO}-desktop package.
sudo apt update
sudo apt install python3-pip python3-vcstool python3-colcon-common-extensions python3-rosdep gitgit clone https://github.com/art-e-fact/tron1-artefacts.git
cd tron1-artefacts# For Jazzy:
mkdir src && vcs import src < jazzy.repos
# For Humble:
mkdir src && vcs import src < humble.repospython3 -m venv --system-site-packages venv
source venv/bin/activate
pip install --upgrade pip && pip install -r requirements.txt(Replace .bash with the shell you are using (e.g. .zsh))
source /opt/ros/$ROS_DISTRO/setup.bash
sudo rosdep init # Only required when using rosdep for the first time
rosdep update
rosdep install --from-paths src --ignore-src -y(Replace .bash with the shell you are using (e.g. .zsh))
source venv/bin/activate
source /opt/ros/$ROS_DISTRO/setup.bash
colcon build --symlink-installA doit configuration file is provided in this repository as an alternative setup flow. See dodo.py and doit_config.py for details. See below for commands:
# System Dependencies
sudo apt install python3-pip python3-doit git
# Installs dependencies, creates virtual environment, sets up ROS2 packages
doit setup
# Builds all packages in the workspace using colcon
doit build
Other commands:
# Pulls, fetches, and updates all repositories
doit download
# If you want to do a full rebuild cycle:
doit clean
doit setup
doit build
The doit configuration will be removed in a future release.
- You will need three sessions to run a full simulation: 1. The RL Controller, 2. The simulation, and 3. The custom controller
- Run the RL Controller: Do this before the simulation, if you want the robot to start walking, or else it will fall:
export ROBOT_TYPE=PF_TRON1A # Set the robot model type (only PF_TRON1A compatible with artefacts)
export RL_TYPE=isaacgym # or isaaclab
source venv/bin/activate
python3 src/rl-deploy-python/main.py- Run the Simulation
export ROBOT_TYPE=PF_TRON1A
source venv/bin/activate
source install/setup.bash # or e.g. .zsh
ros2 launch pointfoot_gazebo empty_world.launch.py server:=false # or true to run headlessly - Run the custom controller to move the robot:
export ROBOT_TYPE=PF_TRON1A
source venv/bin/activate
source install/setup.bash
python3 src/limxsdk_python/limxsdk_python/api/goto.pyNOTE: Do not manually launch any processes before running the test. The test script will automatically collect and launch all necessary components. Please ensure that any other active processes (simulators or controllers) are fully terminated beforehand.
-
Test with Artefacts:
Setup the environment:
source venv/bin/activate source install/setup.bash
-
Relative motion execution test:
artefacts run move_around
-
Relative command policy comparison:
artefacts run policy_test
-
Idle drift evaluation:
artefacts run policy_drift
-
-
Test with Pytest:
source venv/bin/activate source install/setup.bash python3 -m pytest test/test_move.py -v -x
The tests can be ran with artefacts in a container, either locally, or on the artefacts platform.
- Locally (
--in-container)
Note: Requires a gpu that is available to Docker.
# "policy_test" can be changed for any of the other tests (e.g policy_drift)
artefacts run --in-container policy_test --gpus=all
- On the artefacts platform (
run-remote)
# "policy_test" can be changed for any of the other tests (e.g policy_drift)
artefacts run-remote policy_test
- Use
vcs status srcto check repo status across all dependencies. - Use
vcs pull srcto update dependent repos rm -rf build install logfollowed bycolcon build --symlink-installfor a clean rebuild