{"id":33116404,"url":"https://github.com/shadow-robot/ros_ethercat","last_synced_at":"2025-11-15T11:01:33.721Z","repository":{"id":13026816,"uuid":"15706418","full_name":"shadow-robot/ros_ethercat","owner":"shadow-robot","description":"Replace pr2_ethercat main loop with one based on ros_control","archived":false,"fork":false,"pushed_at":"2025-09-25T15:41:42.000Z","size":989,"stargazers_count":108,"open_issues_count":12,"forks_count":40,"subscribers_count":16,"default_branch":"noetic-devel","last_synced_at":"2025-09-25T16:12:22.821Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shadow-robot.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-01-07T14:20:04.000Z","updated_at":"2025-08-25T16:27:36.000Z","dependencies_parsed_at":"2024-01-06T01:03:28.704Z","dependency_job_id":"fdde29bf-e3d2-488d-b871-7a521f77b8dc","html_url":"https://github.com/shadow-robot/ros_ethercat","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/shadow-robot/ros_ethercat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shadow-robot%2Fros_ethercat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shadow-robot%2Fros_ethercat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shadow-robot%2Fros_ethercat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shadow-robot%2Fros_ethercat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shadow-robot","download_url":"https://codeload.github.com/shadow-robot/ros_ethercat/tar.gz/refs/heads/noetic-devel","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shadow-robot%2Fros_ethercat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284545264,"owners_count":27023524,"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","status":"online","status_checked_at":"2025-11-15T02:00:06.050Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-11-15T02:00:40.808Z","updated_at":"2025-11-15T11:01:33.712Z","avatar_url":"https://github.com/shadow-robot.png","language":"C++","funding_links":[],"categories":["Network and Middleware","System"],"sub_categories":["Ethernet and Wireless Networking","Network and Middleware"],"readme":"ros_ethercat\n------------\n## CI Statuses\n\nCheck | Status\n---|---\nBuild|[\u003cimg src=\"https://codebuild.eu-west-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiV3hOTFNNUFpEQ1JFWDhLWnNjT2V0bWNXTUoyVWxFRE0wbzZndE1hT1FNNEM4djZFSHh5djVtU09wclQ2QXFrNlZOWFQ2OG1DTHp0OHFxKzBVTHdTcmRzPSIsIml2UGFyYW1ldGVyU3BlYyI6ImZTVTJOVGl6VWt0b1FucFoiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D\u0026branch=noetic-devel\"/\u003e](https://eu-west-2.console.aws.amazon.com/codesuite/codebuild/projects/auto_ros_ethercat_noetic-devel_install_check/)\nStyle|[\u003cimg src=\"https://codebuild.eu-west-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiZXVNdXk5WmFBTjhQVjlUbHVvMmtuL1JCYXZpVjlMYkMwa0V5VDhjK1dpSDlTTjd4V053UFZQR3hrMGtPMTR4dWQvRncreGNFZExhemhRYVNKOEdwMkRBPSIsIml2UGFyYW1ldGVyU3BlYyI6IkdaUUorMGxUQVVMVldKbi8iLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D\u0026branch=noetic-devel\"/\u003e](https://eu-west-2.console.aws.amazon.com/codesuite/codebuild/projects/auto_ros_ethercat_noetic-devel_style_check/)\nCode Coverage|[\u003cimg src=\"https://codebuild.eu-west-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiMlFtcW92ZmhmR0JKbzdDVm5IYmd4VWtDb0VXNE1iYXFCWjZMMDdXOGNlZ01ZSTVYNlVtK1VqZlFZQUtLRWluZ2h2WWh4czFJK2NxeVFDbkJheHNzUWM0PSIsIml2UGFyYW1ldGVyU3BlYyI6ImNzOXN6NkhyLzl5U1gxMlMiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D\u0026branch=noetic-devel\"/\u003e](https://eu-west-2.console.aws.amazon.com/codesuite/codebuild/projects/auto_ros_ethercat_noetic-devel_code_coverage/)\n\n## Overview\n\n  This is a reimplementation of the main loop of pr2_ethercat without dependencies on PR2 software. It was mainly developed to be used by Shadow Robot Company. It may be useful to anyone people that has developed ROS software for their own robot and used etherCAT for communication. Most likely such software would be based on the software for Willow Garage's PR2. ros_ethercat reuses existing etherCAT drivers (eml package) and instantiates a ros_control controller manager. Part of the software in this repository comes from repositories pr2_mechanism, pr2_robot, pr2_ethercat_drivers. The parts specific to the pr2 robot only have been removed. Therefore, the same license (BSD) has been used.\n\n*pr2 packages no longer required*\n\n  1. ethercat_hardware\n  2. pr2_bringup\n  3. pr2_ethercat\n  4. pr2_mechanism\n  5. pr2_controller_interface\n  6. pr2_controller_manager\n  7. pr2_hardware_interface\n  8. pr2_mechanism_diagnostics\n  9. pr2_mechanism_model\n\nYou can find the architecture diagram below for a closer look at how this works.\n\n![Architecture Diagram](doc/RosEtherCAT.png)\n\n## Compatibility\n\nIn software with previous pr2 dependencies that is switched to this package, the following modifications are required.\n\n### Controllers\n\n 1. `#include \u003ccontroller_interface/controller.h\u003e`\u003cbr\u003e\ninstead of\u003cbr\u003e`#include \u003cpr2_controller_interface/controller.h\u003e`\n 2. `class MyController : public controller_interface::Controller\u003cros_ethercat_mechanism_model::RobotState\u003e`\u003cbr\u003e\ninstead of\u003cbr\u003e`class MyController : public pr2_controller_interface::Controller`\n 3. Controller's update function should be declared as \u003cbr\u003e`virtual void update(const ros::Time\u0026, const ros::Duration\u0026)`\u003cbr\u003e and starting function as \u003cbr\u003e `virtual void starting(const ros::Time\u0026 time)`,br.\n 4. `controller_manager` and `controller_interface` should be used as dependencies in `CMakeLists.txt` and `package.xml` files instead of `pr2_controller_manager` and `pr2_controller_interface` respectively.\n 5. In `package.xml` file in export tag use `\u003ccontroller_interface plugin=\"${prefix}/controller_plugins.xml\"/\u003e`\n 6. In `controller_plugins.xml` file use `base_class_type=\"controller_interface::ControllerBase\" /\u003e`\n\n### launch files\n\n 1. Replace `pr2_ethercat` with `ros_ethercat_loop` in launch files\n 2. Since pr2_controller_manager is no longer used, joint_states or mechanism_statistics are no longer published by it. Joint states are now  published with the join_state_controller from ros_controllers. To start this controller this line need to be added in the main launch file \u003cbr\u003e `\u003cinclude file=\"$(find ros_ethercat_model)/launch/joint_state_publisher.launch\"/\u003e`\n 3. `calibrate.py` file from pr2_bringup is now included in ros_ethercat_model package and renamed to just `calibrate` according to ROS convention. Launch files that execute `calibrate.py` should be modified to find it there.\n\n### transmissions\n\n Transmissions are still defined in urdf in the pr2 style and inherit from `ros_ethercat_model::Transmission`. This class will initialize the actuators associated with this transmission.\n\n## New features\n 1. ros_ethercat accepts a new argument `--period` which is the period of main ethercat loop in msec. If not given the default value is 1ms.\n 2. There is a helper bash script called ethercat_grant. This will grant to the ros_ethercat_loop executable the ability to be ran from a normal user without root privileges. E.g. of use\u003cbr\u003e`rosrun ros_ethercat_loop ethercat_grant`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshadow-robot%2Fros_ethercat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshadow-robot%2Fros_ethercat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshadow-robot%2Fros_ethercat/lists"}