gitextract_xhwsmvzo/ ├── .clang-format ├── .codespellignore ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── question.md │ ├── dependabot.yaml │ └── workflows/ │ ├── ci-format.yml │ ├── ci-ros-lint.yml.backup │ ├── docker.yml │ ├── humble.yml │ ├── humble_documentation.yml │ ├── prerelease-rolling.yml │ ├── rolling.yml │ └── rolling_documentation.yml ├── .gitignore ├── .pre-commit-config.yaml ├── Dockerfile ├── README.md ├── canopen/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── doxygen/ │ │ └── Doxyfile │ ├── package.xml │ └── sphinx/ │ ├── Makefile │ ├── _static/ │ │ └── css/ │ │ └── custom.css │ ├── application/ │ │ ├── prbt_robot.rst │ │ └── trinamic.rst │ ├── conf.py │ ├── developers-guide/ │ │ ├── architecture.rst │ │ ├── design-objectives.rst │ │ ├── new-device-manager.rst │ │ ├── new-driver.rst │ │ ├── new-master.rst │ │ └── overview.rst │ ├── index.rst │ ├── make.bat │ ├── quickstart/ │ │ ├── examples.rst │ │ ├── installation.rst │ │ └── operation.rst │ ├── software-tests/ │ │ ├── proxy-driver-test.rst │ │ └── ros2_control_system-test.rst │ └── user-guide/ │ ├── cia402-driver.rst │ ├── configuration.rst │ ├── how-to-create-a-cia301-system.rst │ ├── how-to-create-a-configuration.rst │ ├── how-to-create-a-robot-system.rst │ ├── master.rst │ ├── operation/ │ │ ├── managed-service-interface.rst │ │ ├── ros2-control-interface.rst │ │ └── service-interface.rst │ ├── operation.rst │ └── proxy-driver.rst ├── canopen_402_driver/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── include/ │ │ └── canopen_402_driver/ │ │ ├── base.hpp │ │ ├── cia402_driver.hpp │ │ ├── command.hpp │ │ ├── default_homing_mode.hpp │ │ ├── homing_mode.hpp │ │ ├── lifecycle_cia402_driver.hpp │ │ ├── mode.hpp │ │ ├── mode_forward_helper.hpp │ │ ├── mode_target_helper.hpp │ │ ├── motor.hpp │ │ ├── node_interfaces/ │ │ │ ├── node_canopen_402_driver.hpp │ │ │ └── node_canopen_402_driver_impl.hpp │ │ ├── profiled_position_mode.hpp │ │ ├── state.hpp │ │ ├── visibility_control.h │ │ └── word_accessor.hpp │ ├── package.xml │ ├── src/ │ │ ├── cia402_driver.cpp │ │ ├── command.cpp │ │ ├── default_homing_mode.cpp │ │ ├── lifecycle_cia402_driver.cpp │ │ ├── motor.cpp │ │ ├── node_interfaces/ │ │ │ └── node_canopen_402_driver.cpp │ │ └── state.cpp │ └── test/ │ ├── CMakeLists.txt │ ├── master.dcf │ └── test_driver_component.cpp ├── canopen_base_driver/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── include/ │ │ └── canopen_base_driver/ │ │ ├── base_driver.hpp │ │ ├── diagnostic_collector.hpp │ │ ├── lely_driver_bridge.hpp │ │ ├── lifecycle_base_driver.hpp │ │ ├── node_interfaces/ │ │ │ ├── node_canopen_base_driver.hpp │ │ │ └── node_canopen_base_driver_impl.hpp │ │ └── visibility_control.h │ ├── package.xml │ ├── src/ │ │ ├── base_driver.cpp │ │ ├── lely_driver_bridge.cpp │ │ ├── lifecycle_base_driver.cpp │ │ └── node_interfaces/ │ │ └── node_canopen_base_driver.cpp │ └── test/ │ ├── CMakeLists.txt │ ├── master.dcf │ ├── test_base_driver_component.cpp │ └── test_node_canopen_base_driver_ros.cpp ├── canopen_core/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── ConfigExtras.cmake │ ├── LICENSE │ ├── include/ │ │ └── canopen_core/ │ │ ├── configuration_manager.hpp │ │ ├── device_container.hpp │ │ ├── device_container_error.hpp │ │ ├── driver_error.hpp │ │ ├── driver_node.hpp │ │ ├── exchange.hpp │ │ ├── lifecycle_manager.hpp │ │ ├── master_error.hpp │ │ ├── master_node.hpp │ │ ├── node_interfaces/ │ │ │ ├── node_canopen_driver.hpp │ │ │ ├── node_canopen_driver_interface.hpp │ │ │ ├── node_canopen_master.hpp │ │ │ └── node_canopen_master_interface.hpp │ │ └── visibility_control.h │ ├── launch/ │ │ └── canopen.launch.py │ ├── package.xml │ ├── readme.md │ ├── scripts/ │ │ └── setup_vcan.sh │ ├── src/ │ │ ├── configuration_manager.cpp │ │ ├── device_container.cpp │ │ ├── device_container_error.cpp │ │ ├── device_container_node.cpp │ │ ├── driver_error.cpp │ │ ├── driver_node.cpp │ │ ├── lifecycle_manager.cpp │ │ ├── master_error.cpp │ │ ├── master_node.cpp │ │ └── node_interfaces/ │ │ ├── node_canopen_driver.cpp │ │ └── node_canopen_master.cpp │ └── test/ │ ├── CMakeLists.txt │ ├── bus_configs/ │ │ ├── bad_driver_duplicate.yml │ │ ├── bad_driver_no_driver.yml │ │ ├── bad_driver_no_id.yml │ │ ├── bad_driver_no_package.yml │ │ ├── bad_master_no_driver.yml │ │ ├── bad_master_no_id.yml │ │ ├── bad_master_no_package.yml │ │ ├── bad_no_master.yml │ │ ├── good_driver.yml │ │ ├── good_master.yml │ │ └── good_master_and_two_driver.yml │ ├── master.dcf │ ├── simple.eds │ ├── test_canopen_driver.cpp │ ├── test_canopen_master.cpp │ ├── test_device_container.cpp │ ├── test_errors.cpp │ ├── test_lifecycle_canopen_driver.cpp │ ├── test_lifecycle_canopen_master.cpp │ ├── test_lifecycle_manager.cpp │ ├── test_node_canopen_driver.cpp │ └── test_node_canopen_master.cpp ├── canopen_fake_slaves/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── Readme.md │ ├── config/ │ │ ├── cia402_slave.eds │ │ └── simple_slave.eds │ ├── include/ │ │ └── canopen_fake_slaves/ │ │ ├── base_slave.hpp │ │ ├── basic_slave.hpp │ │ ├── cia402_slave.hpp │ │ └── motion_generator.hpp │ ├── launch/ │ │ ├── basic_slave.launch.py │ │ └── cia402_slave.launch.py │ ├── package.xml │ └── src/ │ ├── basic_slave.cpp │ ├── cia402_slave.cpp │ └── motion_generator.cpp ├── canopen_interfaces/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── msg/ │ │ └── COData.msg │ ├── package.xml │ └── srv/ │ ├── COHeartbeatID.srv │ ├── CONmtID.srv │ ├── CONode.srv │ ├── CORead.srv │ ├── COReadID.srv │ ├── COTargetDouble.srv │ ├── COWrite.srv │ └── COWriteID.srv ├── canopen_master_driver/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── include/ │ │ └── canopen_master_driver/ │ │ ├── lely_master_bridge.hpp │ │ ├── lifecycle_master_driver.hpp │ │ ├── master_driver.hpp │ │ ├── node_interfaces/ │ │ │ ├── node_canopen_basic_master.hpp │ │ │ └── node_canopen_basic_master_impl.hpp │ │ └── visibility_control.h │ ├── package.xml │ ├── src/ │ │ ├── lely_master_bridge.cpp │ │ ├── lifecycle_master_driver.cpp │ │ ├── master_driver.cpp │ │ └── node_interfaces/ │ │ └── node_canopen_basic_master.cpp │ └── test/ │ ├── CMakeLists.txt │ ├── master.dcf │ ├── test_master_driver_component.cpp │ ├── test_node_canopen_basic_master.cpp │ └── test_node_canopen_basic_master_ros.cpp ├── canopen_proxy_driver/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── config/ │ │ ├── concurrency_test/ │ │ │ └── master.dcf │ │ ├── nmt_test/ │ │ │ └── master.dcf │ │ ├── pdo_test/ │ │ │ └── master.dcf │ │ └── sdo_test/ │ │ └── master.dcf │ ├── include/ │ │ └── canopen_proxy_driver/ │ │ ├── lifecycle_proxy_driver.hpp │ │ ├── node_interfaces/ │ │ │ ├── node_canopen_proxy_driver.hpp │ │ │ └── node_canopen_proxy_driver_impl.hpp │ │ ├── proxy_driver.hpp │ │ └── visibility_control.h │ ├── package.xml │ ├── readme.md │ ├── src/ │ │ ├── lifecycle_proxy_driver.cpp │ │ ├── node_interfaces/ │ │ │ └── node_canopen_proxy_driver.cpp │ │ └── proxy_driver.cpp │ └── test/ │ ├── CMakeLists.txt │ ├── master.dcf │ ├── test_driver_component.cpp │ └── test_node_interface.cpp ├── canopen_ros2_control/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── canopen_ros2_control.xml │ ├── include/ │ │ └── canopen_ros2_control/ │ │ ├── canopen_system.hpp │ │ ├── cia402_data.hpp │ │ ├── cia402_system.hpp │ │ ├── helpers.hpp │ │ ├── robot_system.hpp │ │ └── visibility_control.h │ ├── package.xml │ ├── src/ │ │ ├── canopen_system.cpp │ │ ├── cia402_system.cpp │ │ └── robot_system.cpp │ └── test/ │ └── test_canopen_system.cpp ├── canopen_ros2_controllers/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── canopen_ros2_controllers.xml │ ├── include/ │ │ └── canopen_ros2_controllers/ │ │ ├── canopen_proxy_controller.hpp │ │ ├── cia402_device_controller.hpp │ │ └── visibility_control.h │ ├── package.xml │ ├── src/ │ │ ├── canopen_proxy_controller.cpp │ │ └── cia402_device_controller.cpp │ └── test/ │ ├── test_canopen_proxy_controller.cpp │ ├── test_canopen_proxy_controller.hpp │ ├── test_load_canopen_proxy_controller.cpp │ ├── test_load_cia402_device_controller.cpp │ └── test_load_cia402_robot_controller.cpp ├── canopen_tests/ │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README.md │ ├── ROS_NAMESPACES.md │ ├── config/ │ │ ├── canopen_system/ │ │ │ ├── bus.yml │ │ │ ├── ros2_controllers.yaml │ │ │ └── simple.eds │ │ ├── cia402/ │ │ │ ├── bus.yml │ │ │ └── cia402_slave.eds │ │ ├── cia402_diagnostics/ │ │ │ ├── bus.yml │ │ │ └── cia402_slave.eds │ │ ├── cia402_lifecycle/ │ │ │ ├── bus.yml │ │ │ └── cia402_slave.eds │ │ ├── cia402_multichannel_system/ │ │ │ ├── README.md │ │ │ ├── bus.yml │ │ │ └── ros2_controllers.yaml │ │ ├── cia402_namespaced_system/ │ │ │ ├── bus.yml │ │ │ ├── cia402_slave.eds │ │ │ └── ros2_controllers.yaml │ │ ├── cia402_system/ │ │ │ ├── bus.yml │ │ │ ├── cia402_slave.eds │ │ │ └── ros2_controllers.yaml │ │ ├── robot_control/ │ │ │ ├── bus.yml │ │ │ ├── cia402_slave.eds │ │ │ ├── prbt_0_1.dcf │ │ │ └── ros2_controllers.yaml │ │ ├── simple/ │ │ │ ├── bus.yml │ │ │ └── simple.eds │ │ ├── simple_diagnostics/ │ │ │ ├── bus.yml │ │ │ └── simple.eds │ │ └── simple_lifecycle/ │ │ ├── bus.yml │ │ └── simple.eds │ ├── launch/ │ │ ├── analyzers/ │ │ │ ├── cia402_diagnostic_analyzer.yaml │ │ │ └── proxy_diagnostic_analyzer.yaml │ │ ├── canopen_system.launch.py │ │ ├── cia402_diagnostics_setup.launch.py │ │ ├── cia402_lifecycle_setup.launch.py │ │ ├── cia402_namespaced_system.launch.py │ │ ├── cia402_setup.launch.py │ │ ├── cia402_system.launch.py │ │ ├── proxy_diagnostics_setup.launch.py │ │ ├── proxy_lifecycle_setup.launch.py │ │ ├── proxy_setup.launch.py │ │ ├── proxy_setup_namespaced.launch.py │ │ ├── robot_control_setup.launch.py │ │ └── view_urdf.launch.py │ ├── launch_tests/ │ │ ├── test_cia402_driver.py │ │ ├── test_proxy_driver.py │ │ ├── test_proxy_driver_namespaced.py │ │ ├── test_proxy_lifecycle_driver.py │ │ └── test_robot_control.py │ ├── package.xml │ ├── rviz/ │ │ └── robot_controller.rviz │ └── urdf/ │ ├── canopen_system/ │ │ ├── canopen_system.ros2_control.xacro │ │ └── canopen_system.urdf.xacro │ ├── cia402_system/ │ │ ├── cia402_system.ros2_control.xacro │ │ └── cia402_system.urdf.xacro │ └── robot_controller/ │ ├── robot_controller.macro.xacro │ ├── robot_controller.ros2_control.xacro │ └── robot_controller.urdf.xacro ├── canopen_utils/ │ ├── CHANGELOG.rst │ ├── LICENSE │ ├── canopen_utils/ │ │ ├── __init__.py │ │ ├── cyclic_tester.py │ │ ├── launch_test_node.py │ │ ├── simple_rpdo_tpdo_tester.py │ │ └── test_node.py │ ├── no_tests/ │ │ ├── _test_copyright.py │ │ ├── _test_flake8.py │ │ └── _test_pep257.py │ ├── package.xml │ ├── resource/ │ │ └── canopen_utils │ ├── setup.cfg │ └── setup.py └── lely_core_libraries/ ├── CHANGELOG.rst ├── CMakeLists.txt ├── LICENSE ├── cmake/ │ └── lely_core_libraries-extras.cmake ├── cogen/ │ ├── __init__.py │ └── cogen.py ├── package.xml ├── patches/ │ └── 0001-Fix-dcf-tools.patch └── setup.cfg