{"id":27415449,"url":"https://github.com/danvlsv/coordinate_transformer","last_synced_at":"2025-04-14T09:26:50.254Z","repository":{"id":287451516,"uuid":"963183502","full_name":"danvlsv/coordinate_transformer","owner":"danvlsv","description":"A ROS 2 package for managing coordinate transforms and bounds checking between reference frames.","archived":false,"fork":false,"pushed_at":"2025-04-11T19:45:36.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T20:28:27.657Z","etag":null,"topics":["cpp17","ros2-jazzy","tf2","yaml-cpp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danvlsv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-04-09T09:34:48.000Z","updated_at":"2025-04-11T19:45:39.000Z","dependencies_parsed_at":"2025-04-11T20:39:14.539Z","dependency_job_id":null,"html_url":"https://github.com/danvlsv/coordinate_transformer","commit_stats":null,"previous_names":["danvlsv/coordinate_transformer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvlsv%2Fcoordinate_transformer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvlsv%2Fcoordinate_transformer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvlsv%2Fcoordinate_transformer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danvlsv%2Fcoordinate_transformer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danvlsv","download_url":"https://codeload.github.com/danvlsv/coordinate_transformer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248853245,"owners_count":21172090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cpp17","ros2-jazzy","tf2","yaml-cpp"],"created_at":"2025-04-14T09:26:49.768Z","updated_at":"2025-04-14T09:26:50.246Z","avatar_url":"https://github.com/danvlsv.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Coordinate Transformer\n\nA ROS 2 package for managing coordinate transforms and bounds checking between reference frames.\n\n## Prerequisites\n\n- **ROS 2 Jazzy** \n- **Workspace** configured with `colcon`\n- **C++17** compatible compiler\n- **Dependencies**:\n  - `tf2_ros`\n  - `geometry_msgs`\n  - `yaml-cpp`\n\n\n## Building\n\n1) source your ROS2 workspace and environment (source install/setup.bash)\n2) colcon build --packages-select coordinate_transformer\n\n## Testing\n\n1) source your ROS2 workspace and environment (source install/setup.bash)\n2) colcon test --packages-select coordinate_transformer --event-handlers console_direct+\n\n## Usage Example\n\n```cpp\n#include \"coordinate_transformer.hpp\"\n#include \u003crclcpp/rclcpp.hpp\u003e\n\nint main() {\n\n    rclcpp::Node::SharedPtr node;\n    std::shared_ptr\u003cCoordinateTransformer::CoordinateTransformer\u003e transformer;\n\n    rclcpp::init(0, nullptr);\n    node = rclcpp::Node::make_shared(\"coordinate_transformer_test\");\n    transformer = std::make_shared\u003cCoordinateTransformer::CoordinateTransformer\u003e(node);\n\n    // Load a valid configuration\n     transformer-\u003eloadConfig(getConfigPath(\"config.yaml\"));\n\n    // Create an input PoseStamped message\n    geometry_msgs::msg::PoseStamped input;\n    input.header.frame_id = \"robot_base\";\n    input.pose.position.x = 1.0;\n    input.pose.position.y = 2.0;\n    input.pose.position.z = 0.0;\n    input.pose.orientation.w = 1.0; // No rotation\n\n    // Prepare an output PoseStamped message\n    geometry_msgs::msg::PoseStamped output;\n\n    // Perform the coordinate transformation\n    auto status = transformer-\u003econvert(input, output, \"frame1\");\n\n    if (status)\n    {\n        output.pose.position.x = 4.25;\n\n        geometry_msgs::msg::PoseStamped newOutput;\n        // Perform the coordinate transformation\n        auto status2 = transformer-\u003econvert(output, newOutput, \"robot_base\");\n    }\n    \n\n}\n\n```\n\n## Config Example\n\nDefine transforms with proper frame names and normalized rotatation quaternion. \n\nAdd box bounds to defined frames, if your project need them\n\n```yaml\ntransforms:\n  - parent_frame: \"world\"\n    child_frame: \"robot_base\"\n    translation:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n    rotation:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n      w: 1.0\n  - parent_frame: \"robot_base\"\n    child_frame: \"frame1\"\n    translation:\n      x: 0.5\n      y: 0.5\n      z: 0.5\n    rotation:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n      w: 1.0\n\nbounds:\n  - frame: \"frame1\"\n    min_translation:\n      x: -10.0\n      y: -10.0\n      z: -10.0\n    max_translation:\n      x: 10.0\n      y: 10.0\n      z: 10.0\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanvlsv%2Fcoordinate_transformer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanvlsv%2Fcoordinate_transformer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanvlsv%2Fcoordinate_transformer/lists"}