{"id":35162055,"url":"https://github.com/silanus23/hold_and_weld","last_synced_at":"2026-03-17T23:08:53.732Z","repository":{"id":330152806,"uuid":"1121752151","full_name":"silanus23/hold_and_weld","owner":"silanus23","description":"ROS 2 framework for automated dual-arm robotic welding systems that perform holding and welding simultaneously.","archived":false,"fork":false,"pushed_at":"2026-03-03T23:10:50.000Z","size":1703,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-04T02:22:54.956Z","etag":null,"topics":["dual-arm-planar-manipulator","industrial","moveit2","robotics","ros2","welding"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/silanus23.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-23T13:50:20.000Z","updated_at":"2026-03-03T23:10:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/silanus23/hold_and_weld","commit_stats":null,"previous_names":["silanus23/hold_and_weld"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/silanus23/hold_and_weld","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silanus23%2Fhold_and_weld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silanus23%2Fhold_and_weld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silanus23%2Fhold_and_weld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silanus23%2Fhold_and_weld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/silanus23","download_url":"https://codeload.github.com/silanus23/hold_and_weld/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/silanus23%2Fhold_and_weld/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30635156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T22:38:22.569Z","status":"ssl_error","status_checked_at":"2026-03-17T22:38:11.804Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dual-arm-planar-manipulator","industrial","moveit2","robotics","ros2","welding"],"created_at":"2025-12-28T18:39:37.563Z","updated_at":"2026-03-17T23:08:53.721Z","avatar_url":"https://github.com/silanus23.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hold and Weld\n\nROS 2 framework for automated dual-arm robotic welding systems that perform holding and welding simultaneously.\n\n## Overview\n\nA modular system for coordinating gripper and welding robots to autonomously manipulate and weld\nworkpieces. This repository currently targets **ROS 2 Jazzy**.\n\n## Features\n\n- Automated weld path generation from seam geometry and saving that as a json file\n- Dual-robot coordination with collision avoidance\n- Action-based architecture for flexible workflows\n- Support for multiple joint types (T-joint, butt-joint, corner joint, lap joint, edge joint)\n\n## Architecture\n\n![System Architecture](docs/hold_and_weld.png)\n\n## Packages\n\n- **hold_and_weld_description** - Robot URDFs, meshes, and models\n- **hold_and_weld_planning** - Python tools for weld path generation and geometry processing\n- **hold_and_weld_application** - C++ action servers and workflow coordination\n\n## Design Philosophy\n\nThis project is designed with the following principles in mind:\n\n- **Separation of concerns**\n  Planning, description, and application logic are split into independent packages to allow\n  iteration and testing without cross-coupling.\n\n- **Action-driven orchestration**\n  Long-running and stateful robot operations are modeled as ROS 2 actions to support\n  feedback, cancellation, and extensibility.\n\n- **Simulation-first development**\n  All core functionality is designed to be testable in simulation before deployment on real hardware.\n\n- **Robot-agnostic extensibility**\n  The system aims to support different robot models and configurations with minimal code changes,\n  relying on URDF and configuration files rather than hardcoded assumptions.\n\n- **Incremental autonomy**\n  Advanced components such as geometry reasoning and behavior trees are introduced progressively,\n  only after a stable execution pipeline is established.\n\n\n## Planned Milestones\n\n### Milestone 1 – Core Stability\n- [ ] Realistic models for external-axis torch and gripper\n- [ ] Action server for moving a robot to a target pose\n- [ ] Utilize execute action messages instead only triggering ones.\n- [ ] Making task yaml monolithic and main source for every package\n- [ ] Replacing time based delay\n\n### Milestone 2 – Configuration \u0026 Extensibility\n- [ ] Guidelines for adding robots and jobs\n- [ ] Test coverage for all supported weld joint types\n- [ ] Adding reachability test by adding jacobian calculations\n\n### Milestone 3 – Advanced Autonomy\n- [ ] Behavior Tree–based task orchestration\n- [ ] URDF-driven geometry engine\n\n## Conceptual Design Notes (Future Work)\n\nThis section documents design considerations and architectural directions explored during development and is not a commitment to specific implementations.\n\n\n### Geometry Engine\n\nCurrently the system can extract weld line coordinates and workpiece poses from URDFs alone.\nThis iteration depends on defining weld geometry from URDFs and only calculates flat surfaces.\n\nFuture work includes making this geometry independent from joint types, choosing non-colliding\norientations from multiple possibilities, extending to curved surfaces while maintaining\nwork/travel angles, and being able to work with mesh files. Eventually this system should be\ncapable of creating contemporary art installations with arbitrary weld geometries.\n\n\n### Behavior Tree\n\nCurrently there is a `dual_robot_coordinator` node that is responsible for orchestrating nodes.\nA behavior tree integration and making current action servers, node will help user to create\nmultiple step, arbitrary number of robot and object scenes. On top of this a behavior tree can\nhelp user to create conditional check nodes to avoid failure situations of real life like a\ngripping failure mid mission.\n\n## Known Issues\n\n- Currently gripper system is showing inconsistencies due to model problems.\n- JSON system can create problems that can be solved by building from cache after creating json. This problem\nwill be solved by adding json parserer independent from colcon.\n- Current version is tested in in butt_joint and T-joint only more test cases from contributors are welcomed\nlap_joint's logic could be better in urdf generator.\n\n## License\n\nApache-2.0\n\n## Author\n\nBerkan Tali (berkantali23@outlook.com)\n\nGitHub: @silanus23\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsilanus23%2Fhold_and_weld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsilanus23%2Fhold_and_weld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsilanus23%2Fhold_and_weld/lists"}