{"id":19855169,"url":"https://github.com/leggedrobotics/soem_interface","last_synced_at":"2025-05-02T01:30:44.730Z","repository":{"id":52850308,"uuid":"262056441","full_name":"leggedrobotics/soem_interface","owner":"leggedrobotics","description":"This software package serves as a C++ interface for one or more EtherCAT devices running on the same bus. The lower level EtherCAT communication is handled by the SOEM library.","archived":false,"fork":false,"pushed_at":"2024-12-20T18:19:52.000Z","size":611,"stargazers_count":36,"open_issues_count":3,"forks_count":31,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-04-06T20:46:27.870Z","etag":null,"topics":["ethercat","soem"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leggedrobotics.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}},"created_at":"2020-05-07T13:22:45.000Z","updated_at":"2025-04-04T04:20:30.000Z","dependencies_parsed_at":"2023-02-08T09:31:42.583Z","dependency_job_id":"50979e0f-1c4e-48a3-9619-91077e35abd8","html_url":"https://github.com/leggedrobotics/soem_interface","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leggedrobotics%2Fsoem_interface","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leggedrobotics%2Fsoem_interface/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leggedrobotics%2Fsoem_interface/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leggedrobotics%2Fsoem_interface/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leggedrobotics","download_url":"https://codeload.github.com/leggedrobotics/soem_interface/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251969272,"owners_count":21673183,"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":["ethercat","soem"],"created_at":"2024-11-12T14:11:55.439Z","updated_at":"2025-05-02T01:30:40.987Z","avatar_url":"https://github.com/leggedrobotics.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SOEM Interface\n\n## Overview\nThis software package serves as a C++ interface for one or more EtherCAT devices running on the same bus.\nThe lower level EtherCAT communication is handled by the [SOEM](https://github.com/OpenEtherCATsociety/soem) library.\n\nThe soem_interface has been developed on Ubuntu 18.04 LTS with ROS Melodic.\n\nThe source code is released under the GPLv3 license.\nA copy of the license is available in the *COPYING* file.\n\n**Author:** Markus Staeuble\n\n**Affiliation:** Robotic Systems Lab - ETH Zurich\n\n**Maintainer:** Johannes Pankert, johannes.pankert@mavt.ethz.ch\n\n**Contributors:** Johannes Pankert, Jonas Junger, Lennart Nachtigall\n\n\n## Installation\n\n### Dependencies\n#### Catkin Packages\n\n| Repo           | url                                                  | license      | content            |\n|:--------------:|:----------------------------------------------------:|:------------:|:------------------:|\n| message_logger | https://github.com/leggedrobotics/message_logger.git | BSD 3-Clause | simple log streams |\n\n#### System Dependencies (Ubuntu 18.04 LTS)\n- [ROS Melodic](https://wiki.ros.org/melodic) (full installation)\n- [catkin](https://wiki.ros.org/catkin)\n\n### Building from Source\n\nTo build the library from source, clone the latest version from this repository into your catkin workspace and compile the package using\n\n\tcd catkin_workspace/src\n\tgit clone https://github.com/leggedrobotics/message_logger.git\n\tgit clone https://github.com/leggedrobotics/soem_interface.git\n\tcd ../\n\tcatkin build soem_interface\n\nTo build the examples, execute the following command inside of your catkin workspace:\n\t\n\tcatkin build soem_interface_examples\n\t\n## Classes\n\n#### EthercatSlaveBase\nThis is an abstract base class for an ethercat slave. The ethercat slave class holds a non owning reference to the EthercatBusBase it is on (bus_). \nEthercatSlaves should stage their tx messages before writing to the ethercat bus in the updateWrite() method using the bus_ writeRxPdo() method.\nSimilarly, the slaves can retrieve the buffered read messages from the bus with the readTxPdo() method in updateRead().\n\n#### EthercatBusBase\nThis class represents a physical ethercat bus containing multiple ethercat slaves. \nIt manages the slaves on the bus using the methods from soem.  With updateRead() and updatewrite() the staged slave messages are written/read to/from all the slaves on the bus simultaneously. \nEthercatSlaves can be added with addSlave(). After all the slaves have been added the startup() method to actually start the communication of the bus.\n\n#### EthercatBusManagerBase\nIf multiple buses are connected to the same master then the buses are managed by the EthercatBusManagerBase.\n\n## Note\nDue to the current pandemic we could not test this version of the soem_interface.\n\nTests will be conducted as soon as possible.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleggedrobotics%2Fsoem_interface","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleggedrobotics%2Fsoem_interface","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleggedrobotics%2Fsoem_interface/lists"}