Thank you for your interest in contributing to this project. This document outlines the guidelines for contributing code, documentation, and other improvements.
This is a research project under the ENFIELD Exchange Scheme (Horizon Europe, Grant Agreement No 101120657). Contributions must align with the project's Open Science requirements and simulation-only scope.
# Clone
git clone https://github.com/dryuemco/industrial_robot_security.git
cd industrial_robot_security
# Docker (recommended)
docker compose build
docker compose run --rm dev
# Or native ROS2 Humble
source /opt/ros/humble/setup.bash
cd ros2_ws && colcon build --symlink-installmain— stable, CI-passing, release-readydevelop— integration branch for PRsfeature/<name>— feature branches (e.g.,feature/ur5e-adapter)fix/<name>— bug fixesdocs/<name>— documentation-only changes
We follow Conventional Commits:
<type>(<scope>): <short description>
[optional body]
[optional footer]
Types: feat, fix, docs, test, ci, refactor, chore, build
Scopes: core, ur5e, tasks, watchdog, docker, ci, open-science
Examples:
feat(ur5e): add Gazebo launch file with ros2_control
fix(watchdog): correct velocity threshold comparison
docs(open-science): add OSF preregistration draft
test(core): add unit tests for IR validator
ci: add SBOM generation step to workflow
chore: update .gitignore for colcon artifacts
- Create a feature branch from
develop - Keep PRs small and focused (one concern per PR)
- Ensure
colcon buildandcolcon testpass locally - Include or update tests for new functionality
- Update documentation if behavior changes
- Fill in the PR template (objectives, files changed, test results)
- Request review from project maintainers
- Type hints on all public functions
- Docstrings (Google style) on all modules, classes, and public functions
loggingmodule instead ofprint()statements- Configurable parameters via YAML, not hardcoded values
- Deterministic seed for any randomized operations
- Use
ament_pythonorament_cmakebuild type as appropriate - Launch files in Python (
.launch.py) - Parameters via YAML config files
- Proper
package.xmldependencies declared
- Unit tests with
pytest - Integration tests for ROS2 nodes (launch_testing where applicable)
- Minimum 80% line coverage for new code
- All tests must pass in Docker environment
All contributions must respect the project's Open Science obligations:
- License: All code must be compatible with Apache-2.0
- No proprietary dependencies: All dependencies must be OSI-licensed
- Reproducibility: Any new functionality must be runnable inside Docker
- Documentation: New features require corresponding docs updates
- ISO traceability: Safety-related changes must reference ISO 10218 clauses
This project operates exclusively in simulation. Contributions must NOT:
- Include instructions for deploying to physical robots
- Contain real-world exploit code beyond simulation test purposes
- Remove or weaken safety monitoring without documented justification
Use GitHub Issues with the following labels:
bug— something is brokenenhancement— new feature requestdocumentation— docs improvementopen-science— OSF/DOI/license/replication concernsquestion— discussion needed
- Researcher: Yunus Emre Cogurcu (yunusemrecogurcu@gmail.com)
- Supervisor: Assoc. Prof. Georgios Spathoulas (NTNU)