├── prbt_hardware_support
├── .gitignore
├── msg
│ ├── ModbusMsgInStamped.msg
│ ├── ModbusRegisterBlock.msg
│ └── BrakeTestErrorCodes.msg
├── test
│ ├── config
│ │ ├── joint_names.yaml
│ │ ├── prbt_manipulator_driver_nodes.yaml
│ │ └── speed_observer_test.xacro
│ ├── include
│ │ └── prbt_hardware_support
│ │ │ ├── client_tests_common.h
│ │ │ └── pilz_modbus_client_mock.h
│ ├── unit_tests
│ │ ├── unittest_filter_pipeline.test
│ │ ├── unittest_update_filter.test
│ │ ├── unittest_pilz_modbus_client.test
│ │ ├── unittest_modbus_adapter_operation_mode.test
│ │ ├── unittest_disable_speed_monitoring.test
│ │ ├── unittest_brake_test_utils.test
│ │ ├── unittest_fake_speed_override.test
│ │ ├── unittest_canopen_braketest_adapter.test
│ │ ├── unittest_pilz_modbus_exception.cpp
│ │ ├── unittest_utils.cpp
│ │ ├── unittest_pilz_modbus_client_exception.cpp
│ │ ├── unittest_filter_pipeline.cpp
│ │ ├── unittest_modbus_msg_in_builder.cpp
│ │ └── unittest_modbus_msg_wrapper.cpp
│ ├── integration_tests
│ │ ├── integrationtest_operation_mode_setup.test
│ │ ├── integrationtest_operation_mode.test
│ │ └── integrationtest_brake_test_required.test
│ └── acceptance_tests
│ │ ├── acceptancetest_execute_brake_test.md
│ │ └── acceptancetest_execute_brake_test_with_gripper.md
├── doc
│ ├── diag_state_stop1_executor.png
│ ├── diag_comp_overall_architecture.png
│ └── architecture_overview.md
├── config
│ ├── modbus_write_api_spec_pss4000.yaml
│ ├── modbus_read_api_spec_pss4000.yaml
│ └── modbus_read_api_spec_pnoz.yaml
├── rosdoc.yaml
├── srv
│ ├── WriteModbusRegister.srv
│ ├── BrakeTest.srv
│ └── SendBrakeTestResult.srv
├── launch
│ ├── fake_safety_interface.launch
│ ├── stop1_executor_node.launch
│ ├── brake_test_executor_node.launch
│ ├── modbus_adapter_brake_test_node.launch
│ ├── canopen_braketest_adapter_node.launch
│ ├── modbus_adapter_operation_mode_node.launch
│ ├── operation_mode_setup_executor_node.launch
│ ├── operation_mode.launch
│ ├── modbus_adapter_run_permitted_node.launch
│ ├── brake_test.launch
│ └── fake_operation_mode_setup.launch
├── include
│ └── prbt_hardware_support
│ │ ├── service_function_decl.h
│ │ ├── monitor_cartesian_speed_func_decl.h
│ │ ├── get_operation_mode_func_decl.h
│ │ ├── utils.h
│ │ ├── register_container.h
│ │ ├── modbus_topic_definitions.h
│ │ ├── pilz_modbus_exceptions.h
│ │ ├── pilz_modbus_client_exception.h
│ │ ├── modbus_adapter_brake_test_exception.h
│ │ ├── modbus_check_ip_connection.h
│ │ ├── modbus_msg_wrapper_exception.h
│ │ ├── modbus_msg_brake_test_wrapper_exception.h
│ │ ├── operation_mode_setup_executor_node_service_calls.h
│ │ ├── modbus_msg_operation_mode_wrapper_exception.h
│ │ ├── modbus_msg_run_permitted_wrapper_exception.h
│ │ ├── brake_test_utils_exception.h
│ │ ├── canopen_braketest_adapter_exception.h
│ │ ├── modbus_api_definitions.h
│ │ ├── param_names.h
│ │ ├── write_modbus_register_call.h
│ │ ├── libmodbus_client.h
│ │ └── modbus_adapter_run_permitted.h
├── cfg
│ └── FakeSpeedOverride.cfg
├── src
│ ├── canopen_braketest_adapter_exception.cpp
│ ├── canopen_braketest_adapter_node.cpp
│ ├── modbus_adapter_operation_mode_node.cpp
│ ├── modbus_msg_run_permitted_wrapper.cpp
│ └── fake_speed_override_node.cpp
└── package.xml
├── pilz_status_indicator_rqt
├── src
│ └── pilz_status_indicator_rqt
│ │ └── __init__.py
├── resource
│ ├── t1.png
│ ├── t2.png
│ ├── auto.png
│ └── unknown.png
├── doc
│ └── widget_screenshot.png
├── setup.py
├── scripts
│ └── pilz_status_indicator_rqt
├── plugin.xml
├── CMakeLists.txt
├── package.xml
└── CHANGELOG.rst
├── prbt_moveit_config
├── launch
│ ├── prbt_moveit_sensor_manager.launch.xml
│ ├── prbt_moveit_controller_manager.launch.xml
│ ├── warehouse.launch
│ ├── setup_assistant.launch
│ ├── fake_moveit_controller_manager.launch.xml
│ ├── joystick_control.launch
│ ├── sensor_manager.launch.xml
│ ├── moveit_rviz.launch
│ ├── warehouse_settings.launch.xml
│ ├── default_warehouse_db.launch
│ ├── planning_pipeline.launch.xml
│ ├── run_benchmark_ompl.launch
│ ├── trapezoidal_command_planner_planning_pipeline.launch.xml
│ ├── pilz_industrial_motion_planner_planning_pipeline.launch.xml
│ ├── ompl_planning_pipeline.launch.xml
│ ├── trajectory_execution.launch.xml
│ └── planning_context.launch
├── img
│ └── prbt_rviz_planning_screenshot.png
├── config
│ ├── kinematics.yaml
│ ├── joint_names.yaml
│ ├── cartesian_limits.yaml
│ ├── fake_controllers.yaml
│ ├── controllers_manipulator.yaml
│ ├── prbt.srdf.xacro
│ └── joint_limits.yaml
├── .setup_assistant
├── test
│ └── integrationtest_prbt_ikfast_manipulator_plugin.test
├── package.xml
└── CMakeLists.txt
├── prbt_ikfast_manipulator_plugin
├── .clang-format
├── patches
│ ├── series
│ ├── compiler-flags.patch
│ ├── add-clang-tidy.patch
│ ├── add-unittests.patch
│ └── drop-lapack.patch
├── prbt_update_ikfast_plugin.sh
├── prbt_manipulator_moveit_ikfast_plugin_description.xml
├── update_ikfast_plugin.sh
├── package.xml
└── CMakeLists.txt
├── prbt_support
├── img
│ ├── joints.png
│ ├── prbt.jpg
│ └── pilz-logo.png
├── meshes
│ ├── foot.stl
│ ├── flange.stl
│ ├── link_1.stl
│ ├── link_2.stl
│ ├── link_3.stl
│ ├── link_4.stl
│ └── link_5.stl
├── README.md
├── test
│ ├── unit_tests
│ │ └── unittest_system_info.test
│ ├── test_urdf.launch
│ ├── urdf_tests.test
│ └── acceptance_tests
│ │ ├── acceptance_test_tcp.md
│ │ ├── acceptance_test_joint_limits.md
│ │ └── acceptance_test_gripper.md
├── launch
│ └── system_info.launch
├── src
│ ├── system_info_exception.cpp
│ └── system_info_node.cpp
├── include
│ └── prbt_support
│ │ ├── system_info_exception.h
│ │ └── system_info.h
├── config
│ └── manipulator_driver.yaml
└── package.xml
├── .gitignore
├── pilz_control
├── test
│ ├── config
│ │ ├── joint_names.yaml
│ │ ├── robot_mock_monitored_links.yaml
│ │ ├── prbt_monitored_links.yaml
│ │ └── test_controller.yaml
│ ├── urdf
│ │ ├── robot_mock.srdf
│ │ └── robot_mock.launch
│ ├── unittest_get_joint_acceleration_limits.test
│ ├── unittest_pilz_joint_trajectory_controller.test
│ ├── unittest_pilz_joint_trajectory_controller_is_executing.test
│ ├── robot_mock_node.cpp
│ ├── unittest_joint_states_speed_observer.test
│ ├── robot_mock.cpp
│ ├── robot_mock.h
│ ├── unittest_hold_mode_listener.cpp
│ └── integrationtest_pilz_joint_trajectory_controller.test
├── rosdoc.yaml
├── test_utils
│ ├── launch
│ │ └── joint_states_speed_observer.launch
│ └── include
│ │ └── pilz_control
│ │ └── joint_states_speed_observer.h
├── pilz_control_plugins.xml
├── include
│ └── pilz_control
│ │ └── cartesian_speed_monitor_exception.h
├── src
│ └── pilz_joint_trajectory_controller.cpp
├── package.xml
└── README.md
├── pilz_robots
├── CMakeLists.txt
└── package.xml
├── prbt_gazebo
├── config
│ └── gazebo_pid_gains.yaml
├── README.md
├── test
│ └── integrationtest_gazebo_bringup.test
├── package.xml
├── CMakeLists.txt
└── CHANGELOG.rst
├── .github
└── workflows
│ ├── industrial_ci_prerelease.yml
│ └── industrial_ci_action.yml
└── .clang-format
/prbt_hardware_support/.gitignore:
--------------------------------------------------------------------------------
1 | doc/html
2 | manifest.yaml
3 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/src/pilz_status_indicator_rqt/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/prbt_moveit_sensor_manager.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/.clang-format:
--------------------------------------------------------------------------------
1 | ---
2 | SortIncludes: false
3 | DisableFormat: true
4 | ...
5 |
--------------------------------------------------------------------------------
/prbt_support/img/joints.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/img/joints.png
--------------------------------------------------------------------------------
/prbt_support/img/prbt.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/img/prbt.jpg
--------------------------------------------------------------------------------
/prbt_support/meshes/foot.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/meshes/foot.stl
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.autosave
2 | *.swp
3 | *.pyc
4 | .idea/
5 | *.bag
6 | .vscode/
7 | doc/html
8 | doc/manifest.yaml
9 |
--------------------------------------------------------------------------------
/pilz_control/test/config/joint_names.yaml:
--------------------------------------------------------------------------------
1 | controller_joint_names: [shoulder_to_right_arm, shoulder_to_left_arm]
2 |
--------------------------------------------------------------------------------
/prbt_support/img/pilz-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/img/pilz-logo.png
--------------------------------------------------------------------------------
/prbt_support/meshes/flange.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/meshes/flange.stl
--------------------------------------------------------------------------------
/prbt_support/meshes/link_1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/meshes/link_1.stl
--------------------------------------------------------------------------------
/prbt_support/meshes/link_2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/meshes/link_2.stl
--------------------------------------------------------------------------------
/prbt_support/meshes/link_3.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/meshes/link_3.stl
--------------------------------------------------------------------------------
/prbt_support/meshes/link_4.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/meshes/link_4.stl
--------------------------------------------------------------------------------
/prbt_support/meshes/link_5.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_support/meshes/link_5.stl
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/resource/t1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/pilz_status_indicator_rqt/resource/t1.png
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/resource/t2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/pilz_status_indicator_rqt/resource/t2.png
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/resource/auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/pilz_status_indicator_rqt/resource/auto.png
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/patches/series:
--------------------------------------------------------------------------------
1 | compiler-flags.patch
2 | add-unittests.patch
3 | drop-lapack.patch
4 | add-clang-tidy.patch
5 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/resource/unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/pilz_status_indicator_rqt/resource/unknown.png
--------------------------------------------------------------------------------
/pilz_robots/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.0.2)
2 | project(pilz_robots)
3 | find_package(catkin REQUIRED)
4 | catkin_metapackage()
5 |
--------------------------------------------------------------------------------
/prbt_hardware_support/msg/ModbusMsgInStamped.msg:
--------------------------------------------------------------------------------
1 | std_msgs/Header header
2 | std_msgs/UInt16MultiArray holding_registers
3 | std_msgs/Bool disconnect
4 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/doc/widget_screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/pilz_status_indicator_rqt/doc/widget_screenshot.png
--------------------------------------------------------------------------------
/prbt_hardware_support/test/config/joint_names.yaml:
--------------------------------------------------------------------------------
1 | controller_joint_names: [prbt_joint_1, prbt_joint_2, prbt_joint_3, prbt_joint_4, prbt_joint_5, prbt_joint_6]
2 |
--------------------------------------------------------------------------------
/prbt_hardware_support/doc/diag_state_stop1_executor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_hardware_support/doc/diag_state_stop1_executor.png
--------------------------------------------------------------------------------
/prbt_moveit_config/img/prbt_rviz_planning_screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_moveit_config/img/prbt_rviz_planning_screenshot.png
--------------------------------------------------------------------------------
/pilz_control/test/config/robot_mock_monitored_links.yaml:
--------------------------------------------------------------------------------
1 | monitored_link_names:
2 | [arm_right_link,
3 | hand_right_link,
4 | arm_left_link,
5 | hand_left_link]
6 |
--------------------------------------------------------------------------------
/prbt_hardware_support/doc/diag_comp_overall_architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PilzDE/pilz_robots/HEAD/prbt_hardware_support/doc/diag_comp_overall_architecture.png
--------------------------------------------------------------------------------
/pilz_control/test/config/prbt_monitored_links.yaml:
--------------------------------------------------------------------------------
1 | monitored_link_names:
2 | [prbt_link_1,
3 | prbt_link_2,
4 | prbt_link_3,
5 | prbt_link_4,
6 | prbt_link_5,
7 | prbt_flange,
8 | prbt_tcp]
9 |
--------------------------------------------------------------------------------
/prbt_moveit_config/config/kinematics.yaml:
--------------------------------------------------------------------------------
1 | manipulator:
2 | kinematics_solver: prbt_manipulator/IKFastKinematicsPlugin
3 | kinematics_solver_search_resolution: 0.005
4 | kinematics_solver_timeout: 0.005
5 | link_prefix: prbt_
6 |
--------------------------------------------------------------------------------
/pilz_control/rosdoc.yaml:
--------------------------------------------------------------------------------
1 | - builder: doxygen
2 | name: Documentation of pilz_control package
3 | output_dir: pilz_control
4 | file_patterns: '*.c *.cpp *.h *.cc *.hh *.dox *.md'
5 | exclude_patterns: 'test'
6 | aliases: '
7 | definereq{1}="\b Spec - \b \1
8 | '
9 | use_mdfile_as_mainpage: 'README.md'
10 |
--------------------------------------------------------------------------------
/prbt_moveit_config/.setup_assistant:
--------------------------------------------------------------------------------
1 | moveit_setup_assistant_config:
2 | URDF:
3 | package: prbt_support
4 | relative_path: urdf/prbt.xacro
5 | SRDF:
6 | relative_path: config/prbt.srdf.xacro
7 | CONFIG:
8 | author_name: Pilz GmbH and Co. KG
9 | author_email: ros@pilz.de
10 | generated_timestamp: 1495550770
11 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/prbt_update_ikfast_plugin.sh:
--------------------------------------------------------------------------------
1 | # unapply all patches
2 | quilt pop -a
3 |
4 | robot_name=prbt
5 | srdf_path="$(rospack find ${robot_name}_moveit_config)/config/${robot_name}.srdf"
6 | xacro $srdf_path.xacro > $srdf_path
7 | ./update_ikfast_plugin.sh
8 | rm $srdf_path
9 |
10 | # apply all patches
11 | quilt push -a
12 |
13 |
--------------------------------------------------------------------------------
/prbt_gazebo/config/gazebo_pid_gains.yaml:
--------------------------------------------------------------------------------
1 | gazebo_ros_control:
2 | pid_gains:
3 | prbt_joint_1: {p: 50000.0, i: 1, d: 0.0}
4 | prbt_joint_2: {p: 50000.0, i: 1, d: 0.0}
5 | prbt_joint_3: {p: 50000.0, i: 1, d: 0.0}
6 | prbt_joint_4: {p: 5000.0, i: 0.1, d: 0.0}
7 | prbt_joint_5: {p: 5000.0, i: 0.1, d: 0.0}
8 | prbt_joint_6: {p: 5000.0, i: 0.1, d: 0.0}
--------------------------------------------------------------------------------
/prbt_gazebo/README.md:
--------------------------------------------------------------------------------
1 | # prbt_gazebo
2 | Package providing a launch file which can be used to launch Gazebo with the
3 | Pilz PRBT robot and an empty world.
4 |
5 | To start Gazebo in combination with the Pilz PRBT robot type:
6 | `roslaunch prbt_gazebo sim_prbt_gazebo.launch`.
7 |
8 | For the execution of commands see [here](https://github.com/PilzDE/pilz_robots#package-prbt_moveit_config).
9 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/setup.py:
--------------------------------------------------------------------------------
1 | # ! DO NOT MANUALLY INVOKE THIS setup.py, USE CATKIN INSTEAD
2 |
3 | from distutils.core import setup
4 | from catkin_pkg.python_setup import generate_distutils_setup
5 |
6 | # fetch values from package.xml
7 | setup_args = generate_distutils_setup(
8 | packages=['pilz_status_indicator_rqt'],
9 | package_dir={'': 'src'}
10 | )
11 |
12 | setup(**setup_args)
13 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/include/prbt_hardware_support/client_tests_common.h:
--------------------------------------------------------------------------------
1 | #ifndef PRBT_HARDWARE_SUPPORT_CLIENT_TESTS_COMMON_H
2 | #define PRBT_HARDWARE_SUPPORT_CLIENT_TESTS_COMMON_H
3 |
4 | // This file contains constants used by all client tests.
5 | namespace prbt_hardware_support
6 | {
7 | constexpr const char* const LOCALHOST = "127.0.0.1";
8 | }
9 |
10 | #endif // PRBT_HARDWARE_SUPPORT_CLIENT_TESTS_COMMON_H
--------------------------------------------------------------------------------
/prbt_support/README.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | The prbt_support package contains files to start the PRBT manipulator. To start the robot run `roslaunch prbt_support robot.launch`.
4 |
5 | # ROS API
6 |
7 | ## SystemInfoNode
8 |
9 | Logs important system information.
10 |
11 | ### Used Services
12 |
13 | - /prbt/driver/get_object (canopen_chain_node/GetObject)
14 | - Read CANOpen object holding firmware information.
15 |
--------------------------------------------------------------------------------
/prbt_hardware_support/config/modbus_write_api_spec_pss4000.yaml:
--------------------------------------------------------------------------------
1 | # Braketest: Disabled per default, can be enabled in robot.launch with parameter "has_braketest_support"
2 | ENABLE_TEMPORARY_MOVEMENT: 979 # 1 = Enable temporary movement for 20 min when brake test wasn't successfull
3 | BRAKETEST_PERFORMED: 982 # 1 = Test not performed, 2 = Test performed
4 | BRAKETEST_RESULT: 983 # 1 = Test not passed, 2 = Test passed
5 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/prbt_manipulator_moveit_ikfast_plugin_description.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | IKFast61 plugin for closed-form kinematics of prbt manipulator
5 |
6 |
7 |
--------------------------------------------------------------------------------
/prbt_hardware_support/doc/architecture_overview.md:
--------------------------------------------------------------------------------
1 | ## Overall system architecture
2 | The following diagram shows all components of the system and the connections
3 | between them.
4 |
5 | 
6 |
7 | ## State machine of stop 1 executor
8 | The following diagram shows the internal state machine of the stop 1 executor.
9 |
10 | 
11 |
--------------------------------------------------------------------------------
/pilz_control/test/urdf/robot_mock.srdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/scripts/pilz_status_indicator_rqt:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | import sys
4 |
5 | from pilz_status_indicator_rqt.status_indicator import PilzStatusIndicatorRqt
6 | from rqt_gui.main import Main
7 |
8 | plugin = 'pilz_status_indicator_rqt.status_indicator.PilzStatusIndicatorRqt'
9 | main = Main(filename=plugin)
10 | # starting and rqt instance with the -t flag to make it float on top of other windows.
11 | sys.exit(main.main(standalone=plugin, argv=sys.argv + ['-t']))
12 |
--------------------------------------------------------------------------------
/.github/workflows/industrial_ci_prerelease.yml:
--------------------------------------------------------------------------------
1 | name: CI-Noetic-Prerelease
2 |
3 | on: pull_request
4 |
5 | jobs:
6 | prerelease:
7 | name: "Build + Test with package dependencies with Testing Repo of noetic (http://packages.ros.org/ros-testing/ubuntu)"
8 | runs-on: ubuntu-20.04
9 | steps:
10 | - uses: actions/checkout@v1
11 | - uses: 'ros-industrial/industrial_ci@master'
12 | env:
13 | PRERELEASE: true
14 | ROS_REPO: testing
15 | ROS_DISTRO: noetic
16 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/prbt_moveit_controller_manager.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/prbt_hardware_support/rosdoc.yaml:
--------------------------------------------------------------------------------
1 | - builder: doxygen
2 | name: Documentation of prbt_hardware_support package
3 | output_dir: prbt_hardware_support
4 | file_patterns: '*.c *.cpp *.h *.cc *.hh *.dox *.md'
5 | aliases: '
6 | definereq{1}="\b Spec - \b \1 (\ref test_list_\1 \"Tests\") \anchor spec_def_\1"
7 | refspec{1}="\ref spec_def_\1 \"Spec - \1\""
8 | tests{2}="\xrefitem test_list_\1 \"\" \"Test list for specification: \1\" - \2 (\ref spec_def_\1 \"Spec\")"
9 | '
10 | exclude_patterns: '*/test/acceptance_tests/*'
11 | use_mdfile_as_mainpage: 'README.md'
12 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | A status indicator to show e.g. operation modes
5 |
6 |
7 |
8 | applications-other
9 | Showing information about operation mode, status and speed override of the robot.
10 |
11 |
12 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/warehouse.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/setup_assistant.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/prbt_hardware_support/config/modbus_read_api_spec_pss4000.yaml:
--------------------------------------------------------------------------------
1 | # Operation mode: Disabled per default, can be enabled in robot.launch with parameter "has_operation_mode_support"
2 | OPERATION_MODE: 970 # 0 = No Operation mode, 1 = T1, 2 = T2, 3 = Automatik, Operation modes according to EN ISO 10218
3 |
4 | # Braketest: Disabled per default, can be enabled in robot.launch with parameter "has_braketest_support"
5 | BRAKETEST_REQUEST: 973 # 0 = Test not required, 1 = Test required
6 |
7 | # Generic: Enabled the whole time
8 | RUN_PERMITTED: 974 # robot is only allowed to move when the signal is 1
9 | VERSION: 977 # version of modbus register specification
10 |
--------------------------------------------------------------------------------
/prbt_hardware_support/config/modbus_read_api_spec_pnoz.yaml:
--------------------------------------------------------------------------------
1 | # PNOZMulti Software V2.1dev
2 | # Generic: Enabled the whole time
3 | RUN_PERMITTED: 512 # robot is only allowed to move when the signal is 1
4 | VERSION: 513 # version of modbus register specification
5 |
6 | # Braketest: This is used to signalize that a brake test is requested by the safety controller
7 | BRAKETEST_REQUEST: 514 # 0 = Test not required, 1 = Test required
8 |
9 | # Operation mode: Disabled per default, can be enabled in robot.launch with parameter "has_operation_mode_support"
10 | OPERATION_MODE: 515 # 0 = No Operation mode, 1 = T1, 2 = T2, 3 = Automatik, Operation modes according to EN ISO 10218
11 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/fake_moveit_controller_manager.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/joystick_control.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/sensor_manager.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/moveit_rviz.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/warehouse_settings.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/prbt_moveit_config/config/joint_names.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright © 2018 Pilz GmbH & Co. KG
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 |
17 | controller_joint_names: [prbt_joint_1, prbt_joint_2, prbt_joint_3, prbt_joint_4, prbt_joint_5, prbt_joint_6]
18 |
--------------------------------------------------------------------------------
/prbt_moveit_config/config/cartesian_limits.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright © 2018 Pilz GmbH & Co. KG
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | cartesian_limits:
17 | max_trans_vel: 1
18 | max_trans_acc: 2.25
19 | max_trans_dec: -5
20 | max_rot_vel: 1.57
21 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/default_warehouse_db.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/planning_pipeline.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/update_ikfast_plugin.sh:
--------------------------------------------------------------------------------
1 | search_mode=OPTIMIZE_MAX_JOINT
2 | srdf_filename=prbt.srdf
3 | robot_name_in_srdf=prbt
4 | moveit_config_pkg=prbt_moveit_config
5 | robot_name=prbt
6 | planning_group_name=manipulator
7 | ikfast_plugin_pkg=prbt_ikfast_manipulator_plugin
8 | base_link_name=base_link
9 | eef_link_name=flange
10 | ikfast_output_path=$(rospack find ${robot_name}_ikfast_manipulator_plugin)/src/prbt_manipulator_ikfast_solver.cpp
11 |
12 | rosrun moveit_kinematics create_ikfast_moveit_plugin.py\
13 | --search_mode=$search_mode\
14 | --srdf_filename=$srdf_filename\
15 | --robot_name_in_srdf=$robot_name_in_srdf\
16 | --moveit_config_pkg=$moveit_config_pkg\
17 | $robot_name\
18 | $planning_group_name\
19 | $ikfast_plugin_pkg\
20 | $base_link_name\
21 | $eef_link_name\
22 | $ikfast_output_path
23 |
--------------------------------------------------------------------------------
/prbt_hardware_support/srv/WriteModbusRegister.srv:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2019 Pilz GmbH & Co. KG
3 | #
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU Lesser General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU Lesser General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU Lesser General Public License
15 | # along with this program. If not, see .
16 |
17 | ModbusRegisterBlock holding_register_block
18 |
19 | ---
20 | bool success
21 |
--------------------------------------------------------------------------------
/prbt_moveit_config/config/fake_controllers.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright © 2018 Pilz GmbH & Co. KG
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | controller_list:
17 | - name: fake_manipulator_controller
18 | joints:
19 | - prbt_joint_1
20 | - prbt_joint_2
21 | - prbt_joint_3
22 | - prbt_joint_4
23 | - prbt_joint_5
24 | - prbt_joint_6
25 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/fake_safety_interface.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/prbt_support/test/unit_tests/unittest_system_info.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/stop1_executor_node.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/prbt_moveit_config/config/controllers_manipulator.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright © 2018 Pilz GmbH & Co. KG
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 |
17 | controller_list:
18 | - name: "prbt/manipulator_joint_trajectory_controller/"
19 | action_ns: follow_joint_trajectory
20 | type: FollowJointTrajectory
21 | joints: [prbt_joint_1, prbt_joint_2, prbt_joint_3, prbt_joint_4, prbt_joint_5, prbt_joint_6]
22 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_filter_pipeline.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_update_filter.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/prbt_support/test/test_urdf.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/patches/compiler-flags.patch:
--------------------------------------------------------------------------------
1 | Enable more restrictive compiler flags
2 | Index: prbt_ikfast_manipulator_plugin/CMakeLists.txt
3 | ===================================================================
4 | --- prbt_ikfast_manipulator_plugin.orig/CMakeLists.txt
5 | +++ prbt_ikfast_manipulator_plugin/CMakeLists.txt
6 | @@ -4,6 +4,19 @@ project(prbt_ikfast_manipulator_plugin)
7 | set(CMAKE_CXX_STANDARD 14)
8 | set(CMAKE_CXX_EXTENSIONS OFF)
9 |
10 | +add_compile_options(-Wall)
11 | +add_compile_options(-Wextra)
12 | +add_compile_options(-Wno-unused-parameter)
13 | +add_compile_options(-Wno-unused-variable)
14 | +add_compile_options(-Werror)
15 | +
16 | +# enable aligned new in gcc7+
17 | +if(CMAKE_COMPILER_IS_GNUCXX)
18 | + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
19 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-new")
20 | + endif()
21 | +endif()
22 | +
23 | find_package(catkin REQUIRED COMPONENTS
24 | moveit_core
25 | pluginlib
26 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_pilz_modbus_client.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/prbt_support/launch/system_info.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/brake_test_executor_node.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/modbus_adapter_brake_test_node.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/canopen_braketest_adapter_node.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/prbt_hardware_support/msg/ModbusRegisterBlock.msg:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2019 Pilz GmbH & Co. KG
3 | #
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU Lesser General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU Lesser General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU Lesser General Public License
15 | # along with this program. If not, see .
16 |
17 | # Defines the start index of the Modbus register block. A block can consist
18 | # of one or more registers.
19 | uint16 start_idx
20 |
21 | # The values of the registers (in order).
22 | uint16[] values
23 |
--------------------------------------------------------------------------------
/prbt_hardware_support/srv/BrakeTest.srv:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2019 Pilz GmbH & Co. KG
3 | #
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU Lesser General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU Lesser General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU Lesser General Public License
15 | # along with this program. If not, see .
16 |
17 |
18 | ---
19 | bool success
20 |
21 | # Number representing failure of the brake test
22 | BrakeTestErrorCodes error_code
23 |
24 | # Contains message explaining failure of the brake test execution
25 | string error_msg
26 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_modbus_adapter_operation_mode.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/modbus_adapter_operation_mode_node.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/operation_mode_setup_executor_node.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
22 |
23 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/operation_mode.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/run_benchmark_ompl.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/modbus_adapter_run_permitted_node.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/prbt_moveit_config/config/prbt.srdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/prbt_hardware_support/srv/SendBrakeTestResult.srv:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2019 Pilz GmbH & Co. KG
3 | #
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU Lesser General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU Lesser General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU Lesser General Public License
15 | # along with this program. If not, see .
16 |
17 | # Variable to state the result of the last brake test.
18 | # TRUE <-> Brake test successful
19 | # FALSE <-> Brake test failed
20 | bool result
21 |
22 | ---
23 | bool success
24 |
25 | # Contains message explaining failure
26 | string error_msg
27 |
--------------------------------------------------------------------------------
/prbt_support/test/urdf_tests.test:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/prbt_gazebo/test/integrationtest_gazebo_bringup.test:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/prbt_support/src/system_info_exception.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 |
20 | namespace prbt_support
21 | {
22 | SystemInfoException::SystemInfoException(const std::string& what_arg) : std::runtime_error(what_arg)
23 | {
24 | }
25 |
26 | } // namespace prbt_support
27 |
--------------------------------------------------------------------------------
/pilz_robots/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | pilz_robots
4 | 0.6.0
5 | The metapackage
6 |
7 | http://ros.org/wiki/pilz_robots
8 |
9 | Immanuel Martini
10 |
11 | Apache 2.0
12 |
13 | https://wiki.ros.org/pilz_robots
14 | https://github.com/PilzDE/pilz_robots/issues
15 | https://github.com/PilzDE/pilz_robots
16 |
17 | catkin
18 |
19 | prbt_support
20 | prbt_ikfast_manipulator_plugin
21 | prbt_moveit_config
22 | pilz_control
23 | prbt_hardware_support
24 | pilz_status_indicator_rqt
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/prbt_gazebo/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | prbt_gazebo
4 | 0.6.0
5 | Launch prbt robot in an empty Gazebo world.
6 |
7 | Immanuel Martini
8 |
9 | Apache 2.0
10 |
11 | https://wiki.ros.org/prbt_gazebo
12 | https://github.com/PilzDE/pilz_robots/issues
13 | https://github.com/PilzDE/pilz_robots
14 |
15 | catkin
16 |
17 |
18 | xacro
19 | roslaunch
20 | gazebo_ros
21 | prbt_moveit_config
22 | prbt_support
23 | gazebo_ros_control
24 |
25 | rostest
26 | roscpp
27 | actionlib
28 | trajectory_msgs
29 |
30 |
31 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_disable_speed_monitoring.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
23 |
24 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/service_function_decl.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef SERVICE_FUNCTION_DECL_H
19 | #define SERVICE_FUNCTION_DECL_H
20 |
21 | #include
22 |
23 | namespace prbt_hardware_support
24 | {
25 | using TServiceCallFunc = std::function;
26 | }
27 |
28 | #endif // SERVICE_FUNCTION_DECL_H
29 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/brake_test.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_brake_test_utils.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_fake_speed_override.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/pilz_control/test_utils/launch/joint_states_speed_observer.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/pilz_control/test/unittest_get_joint_acceleration_limits.test:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
22 |
23 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/prbt_hardware_support/cfg/FakeSpeedOverride.cfg:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | # Copyright (c) 2018 Pilz GmbH & Co. KG
4 | #
5 | # This program is free software: you can redistribute it and/or modify
6 | # it under the terms of the GNU Lesser General Public License as published by
7 | # the Free Software Foundation, either version 3 of the License, or
8 | # (at your option) any later version.
9 | #
10 | # This program is distributed in the hope that it will be useful,
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | # GNU Lesser General Public License for more details.
14 | #
15 | # You should have received a copy of the GNU Lesser General Public License
16 | # along with this program. If not, see .
17 |
18 | PACKAGE = "prbt_hardware_support"
19 |
20 | from dynamic_reconfigure.parameter_generator_catkin import *
21 |
22 | gen = ParameterGenerator()
23 |
24 | gen.add("speed_override", double_t, 0, "A fake speed override", 1.0, 0.1, 1.0)
25 |
26 | exit(gen.generate(PACKAGE, "prbt_hardware_support", "FakeSpeedOverride"))
27 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/patches/add-clang-tidy.patch:
--------------------------------------------------------------------------------
1 | Add clang-tidy to CMakeLists.txt
2 | Index: prbt_ikfast_manipulator_plugin/CMakeLists.txt
3 | ===================================================================
4 | --- prbt_ikfast_manipulator_plugin.orig/CMakeLists.txt
5 | +++ prbt_ikfast_manipulator_plugin/CMakeLists.txt
6 | @@ -34,6 +34,23 @@ target_link_libraries(${IKFAST_LIBRARY_N
7 | # suppress warnings about unused variables in OpenRave's solver code
8 | target_compile_options(${IKFAST_LIBRARY_NAME} PRIVATE -Wno-unused-variable)
9 |
10 | +################
11 | +## Clang tidy ##
12 | +################
13 | +if(CATKIN_ENABLE_CLANG_TIDY)
14 | + find_program(
15 | + CLANG_TIDY_EXE
16 | + NAMES "clang-tidy"
17 | + DOC "Path to clang-tidy executable"
18 | + )
19 | + if(NOT CLANG_TIDY_EXE)
20 | + message(FATAL_ERROR "clang-tidy not found.")
21 | + else()
22 | + message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
23 | + set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}")
24 | + endif()
25 | +endif()
26 | +
27 | install(TARGETS
28 | ${IKFAST_LIBRARY_NAME}
29 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
30 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/monitor_cartesian_speed_func_decl.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 | #ifndef MONITOR_CARTESIAN_SPEED_FUNC_DECL_H
18 | #define MONITOR_CARTESIAN_SPEED_FUNC_DECL_H
19 |
20 | #include
21 |
22 | namespace prbt_hardware_support
23 | {
24 | using MonitorCartesianSpeedFunc = std::function;
25 | }
26 |
27 | #endif // MONITOR_CARTESIAN_SPEED_FUNC_DECL_H
28 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.0.2)
2 | project(pilz_status_indicator_rqt)
3 |
4 | find_package(catkin REQUIRED COMPONENTS
5 | rospy
6 | rqt_gui
7 | rqt_gui_py
8 | )
9 | catkin_package()
10 | catkin_python_setup()
11 |
12 | install(PROGRAMS scripts/${PROJECT_NAME}
13 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
14 | )
15 |
16 | install(DIRECTORY
17 | resource
18 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
19 | )
20 |
21 | install(FILES
22 | plugin.xml
23 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
24 | )
25 |
26 | #############
27 | ## Testing ##
28 | #############
29 |
30 | if(CATKIN_ENABLE_TESTING)
31 | find_package(rostest REQUIRED)
32 |
33 | catkin_add_nosetests(test/unit_tests/status_indicator_unit_test.py)
34 | catkin_add_nosetests(test/unit_tests/status_indicator_widget_unit_test.py)
35 |
36 | # To generate coverage run:
37 | # python-coverage run -a --source src test/unit_tests/status_indicator_unit_test.py && \
38 | # python-coverage run -a --source src test/unit_tests/status_indicator_widget_unit_test.py && \
39 | # python-coverage html && see htmlcov/index.html
40 | endif()
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_canopen_braketest_adapter.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
22 |
23 |
24 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/get_operation_mode_func_decl.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef GET_OPERATION_MODE_FUNC_DECL_H
19 | #define GET_OPERATION_MODE_FUNC_DECL_H
20 |
21 | #include
22 | #include
23 |
24 | namespace prbt_hardware_support
25 | {
26 | using GetOpModeFunc = std::function;
27 | }
28 |
29 | #endif // GET_OPERATION_MODE_FUNC_DECL_H
30 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/utils.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef UTILS_H
19 | #define UTILS_H
20 |
21 | namespace prbt_hardware_support
22 | {
23 | // Extract pure class name from full class name (foo::Foo -> Foo)
24 | inline std::string className(std::string full_name)
25 | {
26 | return full_name.substr(full_name.rfind("::") + 2);
27 | }
28 |
29 | } // namespace prbt_hardware_support
30 |
31 | #endif // UTILS_H
32 |
--------------------------------------------------------------------------------
/prbt_hardware_support/launch/fake_operation_mode_setup.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
24 |
--------------------------------------------------------------------------------
/pilz_control/pilz_control_plugins.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
22 |
23 | The PilzJointTrajectoryController is directly derived from ros_controllers::PilzJointTrajectoryController.
24 | It extends its base class by services to switch the controller into and out of a holding mode.
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/register_container.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 | #ifndef REGISTER_CONTAINER_H
18 | #define REGISTER_CONTAINER_H
19 |
20 | #include
21 | #include
22 |
23 | namespace prbt_hardware_support
24 | {
25 | //! Convenience data type defining the data type for a collection of registers.
26 | using RegCont = std::vector;
27 |
28 | } // namespace prbt_hardware_support
29 |
30 | #endif // REGISTER_CONTAINER_H
31 |
--------------------------------------------------------------------------------
/prbt_hardware_support/src/canopen_braketest_adapter_exception.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 |
20 | namespace prbt_hardware_support
21 | {
22 | CANOpenBrakeTestAdapterException::CANOpenBrakeTestAdapterException(const std::string& what_arg,
23 | const int8_t error_value)
24 | : std::runtime_error(what_arg), error_value_(error_value)
25 | {
26 | }
27 |
28 | } // namespace prbt_hardware_support
29 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/config/prbt_manipulator_driver_nodes.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2019 Pilz GmbH & Co. KG
3 | #
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU Lesser General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU Lesser General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU Lesser General Public License
15 | # along with this program. If not, see .
16 |
17 | nodes:
18 | prbt_joint_1:
19 | id: 3
20 | braketest_required: true
21 | prbt_joint_2:
22 | id: 4
23 | braketest_required: true
24 | prbt_joint_3:
25 | id: 5
26 | braketest_required: true
27 | prbt_joint_4:
28 | id: 6
29 | braketest_required: true
30 | gripper_joint:
31 | id: 99
32 | prbt_joint_5:
33 | id: 7
34 | braketest_required: true
35 | prbt_joint_6:
36 | id: 8
37 | braketest_required: true
38 |
--------------------------------------------------------------------------------
/prbt_hardware_support/src/canopen_braketest_adapter_node.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 | #include
20 |
21 | /**
22 | * @brief Provides service to execute a braketest
23 | */
24 | int main(int argc, char** argv)
25 | {
26 | ros::init(argc, argv, "canopen_braketest_adapter_node");
27 | ros::NodeHandle nh{ "~" };
28 |
29 | prbt_hardware_support::CANOpenBrakeTestAdapter brake_test_adapter(nh);
30 |
31 | ros::spin();
32 |
33 | return EXIT_FAILURE;
34 | }
35 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | prbt_ikfast_manipulator_plugin
4 | 0.6.0
5 | The prbt_ikfast_manipulator_plugin package
6 | Immanuel Martini
7 | Apache 2.0
8 | catkin
9 | https://wiki.ros.org/prbt_ikfast_manipulator_plugin
10 | https://github.com/PilzDE/pilz_robots/issues
11 | https://github.com/PilzDE/pilz_robots
12 |
13 |
14 |
15 | eigen_conversions
16 | moveit_core
17 | pluginlib
18 | roscpp
19 | tf2_eigen
20 | tf2_kdl
21 | eigen_conversions
22 | moveit_core
23 | pluginlib
24 | roscpp
25 | tf2_kdl
26 |
27 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | pilz_status_indicator_rqt
4 | 0.6.0
5 | Showing information about operation mode, status and speed override of the robot.
6 |
7 | Immanuel Martini
8 |
9 | Apache 2.0
10 |
11 | https://github.com/PilzDE/pilz_robots/issues
12 | https://github.com/PilzDE/pilz_robots
13 |
14 | catkin
15 |
16 | pilz_msgs
17 | rospy
18 | rqt_gui
19 | rqt_gui_py
20 | std_msgs
21 |
22 | rospy
23 | rqt_gui
24 | rqt_gui_py
25 |
26 | rostest
27 | python-mock
28 | python3-mock
29 | rosunit
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/modbus_topic_definitions.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PRBT_HARDWARE_SUPPORT_COMMON_H
19 | #define PRBT_HARDWARE_SUPPORT_COMMON_H
20 |
21 | #include
22 |
23 | namespace prbt_hardware_support
24 | {
25 | // Topic names
26 | static const std::string TOPIC_MODBUS_READ = "/pilz_modbus_client_node/modbus_read";
27 | static const std::string SERVICE_MODBUS_WRITE = "/pilz_modbus_client_node/modbus_write";
28 |
29 | } // namespace prbt_hardware_support
30 | #endif // PRBT_HARDWARE_SUPPORT_COMMON_H
31 |
--------------------------------------------------------------------------------
/prbt_support/include/prbt_support/system_info_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PRBT_SUPPORT_SYSTEM_INFO_EXCEPTION_H
19 | #define PRBT_SUPPORT_SYSTEM_INFO_EXCEPTION_H
20 |
21 | #include
22 |
23 | namespace prbt_support
24 | {
25 | /**
26 | * @brief Exception thrown by the SystemInfo class in case of an error.
27 | */
28 | class SystemInfoException : public std::runtime_error
29 | {
30 | public:
31 | SystemInfoException(const std::string& what_arg);
32 | };
33 |
34 | } // namespace prbt_support
35 |
36 | #endif // PRBT_SUPPORT_SYSTEM_INFO_EXCEPTION_H
37 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/pilz_modbus_exceptions.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PILZ_MODBUS_EXCEPTIONS_H
19 | #define PILZ_MODBUS_EXCEPTIONS_H
20 |
21 | #include
22 |
23 | /**
24 | * @brief Expection thrown by prbt_hardware_support::LibModbusClient::readHoldingRegister
25 | * if a disconnect from the server occured.
26 | *
27 | */
28 | class ModbusExceptionDisconnect : public std::runtime_error
29 | {
30 | public:
31 | ModbusExceptionDisconnect(const std::string& what_arg) : std::runtime_error(what_arg){};
32 | };
33 |
34 | #endif // PILZ_MODBUS_EXCEPTIONS_H
35 |
--------------------------------------------------------------------------------
/pilz_control/test/unittest_pilz_joint_trajectory_controller.test:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
26 |
27 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/trapezoidal_command_planner_planning_pipeline.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/pilz_industrial_motion_planner_planning_pipeline.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/pilz_status_indicator_rqt/CHANGELOG.rst:
--------------------------------------------------------------------------------
1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 | Changelog for package pilz_status_indicator_rqt
3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 |
5 | 0.6.0 (2021-04-19)
6 | ------------------
7 | * Ports the driver to noetic. Includes moveing the trajectory planner to moveit
8 | * changes the references of the pilz_command_planner to the pilz_industrial_command_planner in moveit
9 | * fixes compatibility with ubuntu 20, noetic and colcon
10 | * changes CI to noetic and ubuntu 20
11 | * Contributors: Pilz GmbH and Co. KG
12 |
13 | 0.5.21 (2020-11-23)
14 | -------------------
15 | * Update references to OperationMode msg and GetOperationMode srv (moved to pilz_msgs)
16 | * Contributors: Pilz GmbH and Co. KG
17 |
18 | 0.5.20 (2020-11-17)
19 | -------------------
20 | * Update package.xml for python 3
21 | * Contributors: Pilz GmbH and Co. KG
22 |
23 | 0.5.19 (2020-09-07)
24 | -------------------
25 | * Hide currently unsupported ui elements
26 | * Contributors: Pilz GmbH and Co. KG
27 |
28 | 0.5.18 (2020-07-02)
29 | -------------------
30 |
31 | 0.5.17 (2020-06-22)
32 | -------------------
33 |
34 | 0.5.16 (2020-05-15)
35 | -------------------
36 |
37 | 0.5.15 (2020-05-03)
38 | -------------------
39 |
40 | 0.5.14 (2020-03-11)
41 | -------------------
42 | * Adds basic view for operation_mode, status, speed
43 | * Contributors: Pilz GmbH and Co. KG
44 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/pilz_modbus_client_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PILZ_MODBUS_CLIENT_EXCEPTION_H
19 | #define PILZ_MODBUS_CLIENT_EXCEPTION_H
20 |
21 | #include
22 |
23 | namespace prbt_hardware_support
24 | {
25 | /**
26 | * @brief Expection thrown by prbt_hardware_support::PilzModbusClient
27 | */
28 | class PilzModbusClientException : public std::runtime_error
29 | {
30 | public:
31 | PilzModbusClientException(const std::string& what_arg) : std::runtime_error(what_arg)
32 | {
33 | }
34 | };
35 | } // namespace prbt_hardware_support
36 |
37 | #endif // PILZ_MODBUS_CLIENT_EXCEPTION_H
38 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/integration_tests/integrationtest_operation_mode_setup.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
26 |
27 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/pilz_control/include/pilz_control/cartesian_speed_monitor_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Pilz GmbH & Co. KG
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #ifndef PILZ_CONTROL_CARTESIAN_SPEED_MONITOR_EXCEPTION_H
18 | #define PILZ_CONTROL_CARTESIAN_SPEED_MONITOR_EXCEPTION_H
19 |
20 | #include
21 | #include
22 |
23 | namespace pilz_control
24 | {
25 | /**
26 | * @brief Throw this exception when given names do not match the robot model variable names.
27 | */
28 | class RobotModelVariableNamesMismatch : public std::invalid_argument
29 | {
30 | public:
31 | RobotModelVariableNamesMismatch()
32 | : std::invalid_argument("The given names do not match the robot model variable names.")
33 | {
34 | }
35 | };
36 |
37 | } // namespace pilz_control
38 |
39 | #endif // PILZ_CONTROL_CARTESIAN_SPEED_MONITOR_EXCEPTION_H
40 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/patches/add-unittests.patch:
--------------------------------------------------------------------------------
1 | Add compilation instructions for test cases and coverage
2 | Index: prbt_ikfast_manipulator_plugin/CMakeLists.txt
3 | ===================================================================
4 | --- prbt_ikfast_manipulator_plugin.orig/CMakeLists.txt
5 | +++ prbt_ikfast_manipulator_plugin/CMakeLists.txt
6 | @@ -45,3 +45,35 @@ install(
7 | DESTINATION
8 | ${CATKIN_PACKAGE_SHARE_DESTINATION}
9 | )
10 | +
11 | +# unittest of ikfast plugin
12 | +if(CATKIN_ENABLE_TESTING)
13 | +
14 | + find_package(rostest REQUIRED)
15 | + find_package(code_coverage REQUIRED)
16 | + find_package(moveit_ros_planning REQUIRED)
17 | +
18 | + include_directories(include ${catkin_INCLUDE_DIR})
19 | +
20 | + add_rostest_gtest(unittest_${PROJECT_NAME}
21 | + test/unit_tests/tst_${PROJECT_NAME}.test
22 | + test/unit_tests/tst_${PROJECT_NAME}.cpp
23 | + )
24 | +
25 | + target_link_libraries(unittest_${PROJECT_NAME}
26 | + ${catkin_LIBRARIES}
27 | + ${moveit_ros_planning_LIBRARIES}
28 | + )
29 | +
30 | + # run: catkin_make -DENABLE_COVERAGE_TESTING=ON package_name_coverage
31 | + if(ENABLE_COVERAGE_TESTING)
32 | + include(CodeCoverage)
33 | + APPEND_COVERAGE_COMPILER_FLAGS()
34 | + set(COVERAGE_EXCLUDES "*/${PROJECT_NAME}/test*")
35 | + add_code_coverage(
36 | + NAME ${PROJECT_NAME}_coverage
37 | + DEPENDS tests
38 | + )
39 | + endif()
40 | +
41 | +endif()
42 |
--------------------------------------------------------------------------------
/pilz_control/test/unittest_pilz_joint_trajectory_controller_is_executing.test:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
25 |
26 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/modbus_adapter_brake_test_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef MODBUS_ADAPTER_BRAKE_TEST_EXCEPTION_H
19 | #define MODBUS_ADAPTER_BRAKE_TEST_EXCEPTION_H
20 |
21 | #include
22 |
23 | namespace prbt_hardware_support
24 | {
25 | /**
26 | * @brief Exception thrown by the ModbusAdapterBrakeTest class.
27 | */
28 | class ModbusAdapterBrakeTestException : public std::runtime_error
29 | {
30 | public:
31 | ModbusAdapterBrakeTestException(const std::string& what_arg) : std::runtime_error(what_arg)
32 | {
33 | }
34 | };
35 | } // namespace prbt_hardware_support
36 |
37 | #endif // MODBUS_ADAPTER_BRAKE_TEST_EXCEPTION_H
38 |
--------------------------------------------------------------------------------
/prbt_gazebo/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.0.2)
2 | project(prbt_gazebo)
3 |
4 | add_definitions(-std=c++11)
5 |
6 | find_package(catkin REQUIRED COMPONENTS actionlib roscpp trajectory_msgs)
7 |
8 | catkin_package()
9 |
10 | ################
11 | ## Clang tidy ##
12 | ################
13 | if(CATKIN_ENABLE_CLANG_TIDY)
14 | find_program(
15 | CLANG_TIDY_EXE
16 | NAMES "clang-tidy"
17 | DOC "Path to clang-tidy executable"
18 | )
19 | if(NOT CLANG_TIDY_EXE)
20 | message(FATAL_ERROR "clang-tidy not found.")
21 | else()
22 | message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
23 | set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}")
24 | endif()
25 | endif()
26 |
27 | #############
28 | ## Install ##
29 | #############
30 |
31 | ## Install launch and config files
32 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
33 | install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
34 |
35 | #############
36 | ## Testing ##
37 | #############
38 |
39 | if(CATKIN_ENABLE_TESTING)
40 |
41 | find_package(rostest REQUIRED)
42 |
43 | include_directories(${catkin_INCLUDE_DIRS})
44 |
45 | add_rostest_gtest(integrationtest_gazebo_bringup
46 | test/integrationtest_gazebo_bringup.test
47 | test/integrationtest_gazebo_bringup.cpp)
48 | target_link_libraries(integrationtest_gazebo_bringup ${catkin_LIBRARIES})
49 |
50 | endif()
51 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/modbus_check_ip_connection.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef MODBUS_SOCKET_CONNECTION_CHECK_H
19 | #define MODBUS_SOCKET_CONNECTION_CHECK_H
20 |
21 | namespace prbt_hardware_support
22 | {
23 | /**
24 | * @brief Test the ip connection by connecting to the modbus server
25 | *
26 | * @param ip of the modbus server
27 | * @param port of the modbus server
28 | * @return true if the connection to the server succeeded
29 | * @return false if the connection to the server failed
30 | */
31 | bool checkIPConnection(const char* ip, const unsigned int& port);
32 |
33 | } // namespace prbt_hardware_support
34 |
35 | #endif // MODBUS_SOCKET_CONNECTION_CHECK_H
36 |
--------------------------------------------------------------------------------
/prbt_support/test/acceptance_tests/acceptance_test_tcp.md:
--------------------------------------------------------------------------------
1 | Copyright © 2018 Pilz GmbH & Co. KG
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
15 | ---
16 |
17 | # Acceptance Test TCP
18 |
19 | ## Prerequisites
20 |
21 | ## Test Sequence:
22 | 1. Open the model in rviz `roslaunch prbt_support test_urdf.launch`.
23 | 2. In Rviz display the tf-frames (Add->rviz->tf).
24 | 3. Close everything.
25 | 4. prbt_support/urdf/prbt.xacro
26 |
27 | Edit the lines
28 | ```
29 |
30 |
31 | ```
32 | to some desired offset
33 | 5. Open again like before.
34 |
35 | ## Expected Results:
36 | 1. Everything opens with no errors.
37 | 2. You see a tf-frame named: "[robotname]_tcp".
38 | 3. -
39 | 4. -
40 | 5. Check that the tcp frame now has the desired offset from its preceiding frame.
41 |
42 |
43 | ---
44 |
--------------------------------------------------------------------------------
/prbt_support/src/system_info_node.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 | #include
20 |
21 | using namespace prbt_support;
22 |
23 | /**
24 | * @brief Logs important system information.
25 | */
26 | // LCOV_EXCL_START
27 | int main(int argc, char** argv)
28 | {
29 | ros::init(argc, argv, "system_info");
30 | ros::NodeHandle nh{ "~" };
31 |
32 | prbt_support::SystemInfo system_info(nh);
33 | FirmwareCont versions{ system_info.getFirmwareVersions() };
34 | for (const auto& curr_elem : versions)
35 | {
36 | ROS_INFO("Firmware version [%s]: %s", curr_elem.first.c_str(), curr_elem.second.c_str());
37 | }
38 | return EXIT_SUCCESS;
39 | }
40 | // LCOV_EXCL_STOP
41 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/ompl_planning_pipeline.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
14 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/prbt_moveit_config/test/integrationtest_prbt_ikfast_manipulator_plugin.test:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | [prbt_joint_1, prbt_joint_2, prbt_joint_3, prbt_joint_4, prbt_joint_5, prbt_joint_6]
14 |
15 |
17 |
18 |
19 |
20 |
21 | [prbt_joint_1, prbt_joint_2, prbt_joint_3, prbt_joint_4, prbt_joint_5, prbt_joint_6]
22 |
23 |
24 |
--------------------------------------------------------------------------------
/prbt_support/config/manipulator_driver.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright © 2018 Pilz GmbH & Co. KG
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | # FILE DESCRIPTION:
17 | #
18 | # This file mappes the robot joints to the corresponding CAN-IDs. In this file
19 | # only the robot joints are considered (no gripper joint).
20 | #
21 |
22 | name: manipulator
23 |
24 | bus:
25 | device: can0
26 | sync:
27 | interval_ms: 10
28 | overflow: 0
29 |
30 | defaults:
31 | eds_pkg: prbt_support
32 | eds_file: "config/prbt_0_1.dcf"
33 |
34 | nodes:
35 | prbt_joint_1:
36 | id: 3
37 | braketest_required: true
38 | prbt_joint_2:
39 | id: 4
40 | braketest_required: true
41 | prbt_joint_3:
42 | id: 5
43 | braketest_required: true
44 | prbt_joint_4:
45 | id: 6
46 | braketest_required: true
47 | prbt_joint_5:
48 | id: 7
49 | braketest_required: true
50 | prbt_joint_6:
51 | id: 8
52 | braketest_required: true
53 |
--------------------------------------------------------------------------------
/prbt_hardware_support/src/modbus_adapter_operation_mode_node.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 |
20 | #include
21 | #include
22 |
23 | /**
24 | * @brief Starts a modbus operation mode adapter and runs it until a failure occurs.
25 | */
26 | int main(int argc, char** argv)
27 | {
28 | ros::init(argc, argv, "modbus_adapter_operation_mode");
29 | ros::NodeHandle pnh{ "~" };
30 | ros::NodeHandle nh{};
31 |
32 | prbt_hardware_support::ModbusApiSpec api_spec(nh);
33 |
34 | prbt_hardware_support::ModbusAdapterOperationMode adapter_operation_mode(pnh, api_spec);
35 |
36 | ros::spin();
37 |
38 | return EXIT_FAILURE;
39 | }
40 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/modbus_msg_wrapper_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef MODBUS_MSG_WRAPPER_EXCEPTION_H
19 | #define MODBUS_MSG_WRAPPER_EXCEPTION_H
20 |
21 | #include
22 | #include
23 |
24 | namespace prbt_hardware_support
25 | {
26 | /**
27 | * @brief Expection thrown upon construction of ModbusMsgWrapperBase
28 | * of the message does not contain the required information.
29 | *
30 | */
31 | class ModbusMsgWrapperException : public std::runtime_error
32 | {
33 | public:
34 | ModbusMsgWrapperException(const std::string& what_arg) : std::runtime_error(what_arg)
35 | {
36 | }
37 | };
38 |
39 | } // namespace prbt_hardware_support
40 |
41 | #endif // MODBUS_MSG_WRAPPER_EXCEPTION_H
42 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/config/speed_observer_test.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/pilz_control/src/pilz_joint_trajectory_controller.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | // Pluginlib
18 | #include
19 |
20 | // Project
21 | #include
22 | #include
23 |
24 | namespace position_controllers
25 | {
26 | /**
27 | * \brief Joint trajectory controller that represents trajectory segments as quintic splines and sends
28 | * commands to a \b position interface.
29 | */
30 | typedef pilz_joint_trajectory_controller::PilzJointTrajectoryController<
31 | trajectory_interface::QuinticSplineSegment, hardware_interface::PositionJointInterface>
32 | PilzJointTrajectoryController;
33 |
34 | } // namespace position_controllers
35 |
36 | PLUGINLIB_EXPORT_CLASS(position_controllers::PilzJointTrajectoryController, controller_interface::ControllerBase)
37 |
--------------------------------------------------------------------------------
/prbt_hardware_support/msg/BrakeTestErrorCodes.msg:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2019 Pilz GmbH & Co. KG
3 | #
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU Lesser General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU Lesser General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU Lesser General Public License
15 | # along with this program. If not, see .
16 |
17 | int8 value
18 |
19 | # values of CANopen object brake_test_status, see
20 | # https://www.pilz.com/download/open/PRBT_6_Operat_Manual_1004685-EN-02.pdf (p.100)
21 | int8 STATUS_UNKNOWN = 0
22 | int8 STATUS_PERFORMING = 1
23 | int8 STATUS_SUCCESS = 2
24 | int8 STATUS_NO_SUCCESS = 3
25 | int8 STATUS_NO_CONTROL = 4
26 |
27 | # service call failures
28 | int8 TRIGGER_BRAKETEST_SERVICE_FAILURE = 50
29 | int8 GET_NODE_NAMES_FAILURE = 51
30 | int8 GET_DURATION_FAILURE = 52
31 | int8 GET_STATUS_FAILURE = 53
32 | int8 START_BRAKE_TEST_FAILURE = 54
33 |
34 | # other reasons for blocking the execution of brake tests
35 | int8 BRAKETEST_ALREADY_EXECUTING = 70
36 | int8 ROBOT_MOTION_DETECTED = 71
37 |
38 | # other
39 | int8 FAILURE = 99
40 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_pilz_modbus_exception.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 | #include
20 | #include
21 |
22 | #include
23 |
24 | namespace pilz_modbus_exception_test
25 | {
26 | /**
27 | * @brief Test message setting
28 | */
29 | TEST(PilzModbusExceptionTests, testMsgWhat)
30 | {
31 | const std::string test_string{ "TEST_STRING" };
32 | std::shared_ptr exception(new ModbusExceptionDisconnect(test_string));
33 | EXPECT_EQ(test_string, exception->what());
34 | }
35 |
36 | } // namespace pilz_modbus_exception_test
37 |
38 | int main(int argc, char* argv[])
39 | {
40 | testing::InitGoogleTest(&argc, argv);
41 | return RUN_ALL_TESTS();
42 | }
43 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/trajectory_execution.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_utils.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 |
20 | #include
21 | #include
22 |
23 | using namespace prbt_hardware_support;
24 |
25 | namespace test_namespace
26 | {
27 | class TestClass
28 | {
29 | };
30 | } // namespace test_namespace
31 |
32 | /**
33 | * @brief Test the function turning a given instance into a string of its classname
34 | */
35 | TEST(ClassNameTest, testGettingClassName)
36 | {
37 | test_namespace::TestClass test_instance;
38 | auto full_name = boost::core::demangle(typeid(test_instance).name());
39 | EXPECT_EQ("TestClass", className(full_name));
40 | }
41 |
42 | int main(int argc, char* argv[])
43 | {
44 | testing::InitGoogleTest(&argc, argv);
45 | return RUN_ALL_TESTS();
46 | }
47 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/patches/drop-lapack.patch:
--------------------------------------------------------------------------------
1 | Drop unused lapack dependency
2 | Index: prbt_ikfast_manipulator_plugin/CMakeLists.txt
3 | ===================================================================
4 | --- prbt_ikfast_manipulator_plugin.orig/CMakeLists.txt
5 | +++ prbt_ikfast_manipulator_plugin/CMakeLists.txt
6 | @@ -23,7 +23,6 @@ find_package(catkin REQUIRED COMPONENTS
7 | tf2_eigen
8 | eigen_conversions
9 | )
10 | -find_package(LAPACK REQUIRED)
11 |
12 | include_directories(${catkin_INCLUDE_DIRS} include)
13 |
14 | @@ -31,7 +30,7 @@ catkin_package()
15 |
16 | set(IKFAST_LIBRARY_NAME prbt_manipulator_moveit_ikfast_plugin)
17 | add_library(${IKFAST_LIBRARY_NAME} src/prbt_manipulator_ikfast_moveit_plugin.cpp)
18 | -target_link_libraries(${IKFAST_LIBRARY_NAME} ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${LAPACK_LIBRARIES})
19 | +target_link_libraries(${IKFAST_LIBRARY_NAME} ${catkin_LIBRARIES} ${Boost_LIBRARIES})
20 | # suppress warnings about unused variables in OpenRave's solver code
21 | target_compile_options(${IKFAST_LIBRARY_NAME} PRIVATE -Wno-unused-variable)
22 |
23 | Index: prbt_ikfast_manipulator_plugin/package.xml
24 | ===================================================================
25 | --- prbt_ikfast_manipulator_plugin.orig/package.xml
26 | +++ prbt_ikfast_manipulator_plugin/package.xml
27 | @@ -31,6 +31,4 @@
28 | rostest
29 | rosunit
30 | code_coverage
31 | - liblapack-dev
32 | - liblapack-dev
33 |
34 |
--------------------------------------------------------------------------------
/prbt_support/test/acceptance_tests/acceptance_test_joint_limits.md:
--------------------------------------------------------------------------------
1 | Copyright © 2018 Pilz GmbH & Co. KG
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
15 | ---
16 |
17 | # Acceptance Test Joint Limits using the real robot
18 |
19 | ## Prerequisites
20 | - Properly connect and startup the robot. Make sure an emergency stop is within reach and the operation mode is T1.
21 | - Note that the robot will try to move exactly to the limits of each joint. Make sure that collisions are avoided or
22 | skip the test for certain joints.
23 |
24 | ## Starting the joint limit acceptance tests
25 | - Run `roslaunch prbt_support robot.launch`. Once the startup is complete press the enabling switch.
26 | - Run `rosrun prbt_support acceptance_test_joint_limits.py`.
27 | - Please note: Each test must be confirmed before it is executed. Confirm by entering `y` or `n` to skip test.
28 |
29 | ## Test descriptions
30 | - The concrete test descriptions consisting of test-summary, test-sequence and expected results can be found in
31 | `acceptance_test_joint_limits.py`.
32 |
33 | ---
34 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_pilz_modbus_client_exception.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 | #include
20 | #include
21 |
22 | #include
23 |
24 | using namespace prbt_hardware_support;
25 |
26 | namespace pilz_modbus_client_exception
27 | {
28 | /**
29 | * @brief Test message setting
30 | */
31 | TEST(PilzModbusClientExceptionTests, testMsgWhat)
32 | {
33 | const std::string test_string{ "TEST_STRING" };
34 | std::shared_ptr exception(new PilzModbusClientException(test_string));
35 | EXPECT_EQ(test_string, exception->what());
36 | }
37 |
38 | } // namespace pilz_modbus_client_exception
39 |
40 | int main(int argc, char* argv[])
41 | {
42 | testing::InitGoogleTest(&argc, argv);
43 | return RUN_ALL_TESTS();
44 | }
45 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/modbus_msg_brake_test_wrapper_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef MODBUS_MSG_BRAKE_TEST_WRAPPER_EXCEPTION_H
19 | #define MODBUS_MSG_BRAKE_TEST_WRAPPER_EXCEPTION_H
20 |
21 | #include
22 | #include
23 |
24 | namespace prbt_hardware_support
25 | {
26 | /**
27 | * @brief Expection thrown upon construction of ModbusMsgBrakeTestWrapper
28 | * of the message does not contain the required information.
29 | */
30 | class ModbusMsgBrakeTestWrapperException : public ModbusMsgWrapperException
31 | {
32 | public:
33 | ModbusMsgBrakeTestWrapperException(const std::string& what_arg) : ModbusMsgWrapperException(what_arg)
34 | {
35 | }
36 | };
37 |
38 | } // namespace prbt_hardware_support
39 |
40 | #endif // MODBUS_MSG_BRAKE_TEST_WRAPPER_EXCEPTION_H
41 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_filter_pipeline.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 |
20 | #include
21 |
22 | #include
23 |
24 | namespace prbt_hardware_support
25 | {
26 | /**
27 | * @brief Tests that exception is thrown if empty callback function is
28 | * specified.
29 | */
30 | TEST(FilterPipelineTest, testEmptyCallbackFunction)
31 | {
32 | {
33 | ros::NodeHandle nh{ "~" };
34 | FilterPipeline::TCallbackFunc cb;
35 | EXPECT_THROW(FilterPipeline(nh, cb), std::invalid_argument);
36 | }
37 | }
38 |
39 | } // namespace prbt_hardware_support
40 |
41 | int main(int argc, char** argv)
42 | {
43 | ros::init(argc, argv, "unittest_filter_pipeline");
44 | ros::NodeHandle nh;
45 |
46 | testing::InitGoogleTest(&argc, argv);
47 | return RUN_ALL_TESTS();
48 | }
49 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/operation_mode_setup_executor_node_service_calls.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef OPERATION_MODE_SETUP_EXECUTOR_NODE_SERVICE_CALLS_H
19 | #define OPERATION_MODE_SETUP_EXECUTOR_NODE_SERVICE_CALLS_H
20 |
21 | #include
22 |
23 | #include
24 |
25 | namespace prbt_hardware_support
26 | {
27 | template
28 | static bool monitorCartesianSpeedSrv(T& srv_client, const bool active)
29 | {
30 | std_srvs::SetBool srv_msg;
31 | srv_msg.request.data = active;
32 | bool call_success = srv_client.call(srv_msg);
33 | if (!call_success)
34 | {
35 | ROS_ERROR_STREAM("No success calling service: " << srv_client.getService());
36 | }
37 | return call_success;
38 | }
39 |
40 | } // namespace prbt_hardware_support
41 |
42 | #endif // OPERATION_MODE_SETUP_EXECUTOR_NODE_SERVICE_CALLS_H
43 |
--------------------------------------------------------------------------------
/pilz_control/test/robot_mock_node.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Pilz GmbH & Co. KG
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #include
18 |
19 | #include "robot_mock.h"
20 |
21 | static const std::string CONTROLLER_NS_PARAM_NAME{ "controller_ns_string" };
22 | static constexpr double UPDATE_PERIOD{ 0.01 };
23 |
24 | int main(int argc, char** argv)
25 | {
26 | ros::init(argc, argv, "robot_mock");
27 |
28 | std::string controller_ns;
29 | ros::param::get(CONTROLLER_NS_PARAM_NAME, controller_ns);
30 | ros::NodeHandle nh{ controller_ns };
31 |
32 | RobotMock robot;
33 | controller_manager::ControllerManager cm(&robot, nh);
34 |
35 | ros::Rate rate(1.0 / UPDATE_PERIOD);
36 | ros::Duration update_period{ UPDATE_PERIOD };
37 | ros::AsyncSpinner spinner(1);
38 | spinner.start();
39 |
40 | while (ros::ok())
41 | {
42 | robot.read();
43 | cm.update(ros::Time::now(), update_period);
44 | robot.write(update_period);
45 | rate.sleep();
46 | }
47 | spinner.stop();
48 |
49 | return 0;
50 | }
51 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/modbus_msg_operation_mode_wrapper_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef MODBUS_MSG_OPERATION_MODE_WRAPPER_EXCEPTION_H
19 | #define MODBUS_MSG_OPERATION_MODE_WRAPPER_EXCEPTION_H
20 |
21 | #include
22 | #include
23 |
24 | namespace prbt_hardware_support
25 | {
26 | /**
27 | * @brief Expection thrown upon construction of ModbusMsgOperationModeWrapper
28 | * of the message does not contain the required information.
29 | *
30 | */
31 | class ModbusMsgOperationModeWrapperException : public ModbusMsgWrapperException
32 | {
33 | public:
34 | ModbusMsgOperationModeWrapperException(const std::string& what_arg) : ModbusMsgWrapperException(what_arg)
35 | {
36 | }
37 | };
38 |
39 | } // namespace prbt_hardware_support
40 |
41 | #endif // MODBUS_MSG_OPERATION_MODE_WRAPPER_EXCEPTION_H
42 |
--------------------------------------------------------------------------------
/prbt_hardware_support/src/modbus_msg_run_permitted_wrapper.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 |
20 | #include
21 | #include
22 |
23 | using namespace prbt_hardware_support;
24 |
25 | ModbusMsgRunPermittedWrapper::ModbusMsgRunPermittedWrapper(const ModbusMsgInStampedConstPtr& modbus_msg_raw,
26 | const ModbusApiSpec& api_spec)
27 | : ModbusMsgWrapper(modbus_msg_raw, api_spec)
28 | {
29 | }
30 |
31 | void ModbusMsgRunPermittedWrapper::checkStructuralIntegrity() const
32 | {
33 | ModbusMsgWrapper::checkStructuralIntegrity();
34 |
35 | if (!hasRunPermitted())
36 | {
37 | throw ModbusMsgRunPermittedStatusMissing("Received message does not contain a RUN_PERMITTED status.");
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/prbt_ikfast_manipulator_plugin/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.1.3)
2 | project(prbt_ikfast_manipulator_plugin)
3 |
4 | set(CMAKE_CXX_STANDARD 14)
5 | set(CMAKE_CXX_EXTENSIONS OFF)
6 |
7 | add_compile_options(-Wall)
8 | add_compile_options(-Wextra)
9 | add_compile_options(-Wno-unused-parameter)
10 | add_compile_options(-Wno-unused-variable)
11 | add_compile_options(-Werror)
12 |
13 | # enable aligned new in gcc7+
14 | if(CMAKE_COMPILER_IS_GNUCXX)
15 | if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
16 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-new")
17 | endif()
18 | endif()
19 |
20 | find_package(catkin REQUIRED COMPONENTS
21 | moveit_core
22 | pluginlib
23 | roscpp
24 | tf2_kdl
25 | tf2_eigen
26 | eigen_conversions
27 | )
28 |
29 | include_directories(${catkin_INCLUDE_DIRS} include)
30 |
31 | catkin_package()
32 |
33 | set(IKFAST_LIBRARY_NAME prbt_manipulator_moveit_ikfast_plugin)
34 | add_library(${IKFAST_LIBRARY_NAME} src/prbt_manipulator_ikfast_moveit_plugin.cpp)
35 | target_link_libraries(${IKFAST_LIBRARY_NAME} ${catkin_LIBRARIES} ${Boost_LIBRARIES})
36 | # suppress warnings about unused variables in OpenRave's solver code
37 | target_compile_options(${IKFAST_LIBRARY_NAME} PRIVATE -Wno-unused-variable)
38 |
39 | install(TARGETS
40 | ${IKFAST_LIBRARY_NAME}
41 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
42 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
43 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION})
44 |
45 | install(
46 | FILES
47 | prbt_manipulator_moveit_ikfast_plugin_description.xml
48 | DESTINATION
49 | ${CATKIN_PACKAGE_SHARE_DESTINATION}
50 | )
51 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/modbus_msg_run_permitted_wrapper_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef MODBUS_MSG_RUN_PERMITTED_WRAPPER_EXCEPTION_H
19 | #define MODBUS_MSG_RUN_PERMITTED_WRAPPER_EXCEPTION_H
20 |
21 | #include
22 | #include
23 |
24 | #include
25 |
26 | namespace prbt_hardware_support
27 | {
28 | /**
29 | * @brief Expection thrown upon construction of ModbusMsgRunPermittedWrapper if the message
30 | * does not contain the required information.
31 | *
32 | */
33 | class ModbusMsgRunPermittedStatusMissing : public ModbusMsgWrapperException
34 | {
35 | public:
36 | ModbusMsgRunPermittedStatusMissing(const std::string& what_arg) : ModbusMsgWrapperException(what_arg)
37 | {
38 | }
39 | };
40 |
41 | } // namespace prbt_hardware_support
42 |
43 | #endif // MODBUS_MSG_RUN_PERMITTED_WRAPPER_EXCEPTION_H
44 |
--------------------------------------------------------------------------------
/pilz_control/test/unittest_joint_states_speed_observer.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
32 |
34 |
35 |
--------------------------------------------------------------------------------
/pilz_control/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | pilz_control
4 | 0.6.0
5 |
6 | This package provides a specialized joint_trajectory_controller that can be moved into holding state via service call.
7 | No further trajectories will be accepted/followed in this state.
8 |
9 |
10 | http://ros.org/wiki/pilz_control
11 | https://github.com/PilzDE/pilz_robots/issues
12 | https://github.com/PilzDE/pilz_robots
13 |
14 | Immanuel Martini
15 |
16 | Apache 2.0
17 |
18 | catkin
19 |
20 | cmake_modules
21 | roslint
22 |
23 | roscpp
24 | joint_trajectory_controller
25 | std_srvs
26 | controller_manager
27 | controller_interface
28 | moveit_core
29 | moveit_ros_planning
30 | pilz_msgs
31 |
32 | rostest
33 | rosunit
34 | code_coverage
35 | geometry_msgs
36 | tf2
37 | tf2_geometry_msgs
38 | pilz_utils
39 | pilz_testutils
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/prbt_moveit_config/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | prbt_moveit_config
4 | 0.6.0
5 |
6 | An automatically generated package with all the configuration and launch files for using the prbt with the MoveIt! Motion Planning Framework
7 |
8 |
9 | Immanuel Martini
10 |
11 | Apache 2.0
12 |
13 | https://wiki.ros.org/prbt_moveit_config
14 | https://github.com/PilzDE/pilz_robots/issues
15 | https://github.com/PilzDE/pilz_robots
16 |
17 | catkin
18 |
19 | moveit_ros_move_group
20 | moveit_kinematics
21 | moveit_planners_ompl
22 | moveit_ros_visualization
23 | moveit_fake_controller_manager
24 | moveit_simple_controller_manager
25 | joint_state_publisher
26 | robot_state_publisher
27 | xacro
28 | rviz
29 | prbt_support
30 | prbt_ikfast_manipulator_plugin
31 | prbt_hardware_support
32 |
33 | roslaunch
34 | moveit_core
35 | moveit_ros_planning
36 | pluginlib
37 | roscpp
38 | rostest
39 | rosunit
40 |
41 |
42 |
--------------------------------------------------------------------------------
/pilz_control/README.md:
--------------------------------------------------------------------------------
1 | # Overview
2 | This package provides a joint trajectory controller which can be put into a holding mode through a service call.
3 | It contains a specialized version of `ros_controllers::JointTrajectoryController` providing the holding mode functionality.
4 | A controlled stop using a hold trajectory is performed thus stopping the manipulator without the mechanical stress of a hard brake.
5 |
6 | **Topic interface deprecated:**
7 | Due to safety reasons, the command interface of the `PilzJointTrajectoryController` is deactivated. For more information
8 | see issue [#493](https://github.com/ros-controls/ros_controllers/issues/493) on ros-controls/ros_controllers.
9 |
10 | ## Speed monitoring
11 | The controller can perform a speed monitoring of the robot links in cartesian space. If one or more robot links move faster than 250 mm/s, a controlled stop is executed. This is a requirement in operation mode T1 from DIN EN ISO 10218-1. See [prbt_hardware_support](https://github.com/PilzDE/pilz_robots/blob/melodic-devel/prbt_hardware_support).
12 |
13 | The speed monitoring is activated by default.
14 |
15 | Additionally the controller limits the joint acceleration of the performed trajectories. In the file [manipulator_controller.yaml](https://github.com/PilzDE/pilz_robots/blob/melodic-devel/prbt_support/config/manipulator_controller.yaml) these limits can be adjusted.
16 |
17 | # ROS API
18 | ## Advertised service
19 | - `is_executing` (std_srvs/Trigger)
20 | - Detect if the controller is currently executing a trajectory
21 | - `monitor_cartesian_speed` (std_srvs/SetBool)
22 | - Activate/deactivate speed monitoring
23 | - `hold` (std_srvs/Trigger)
24 | - Switch into holding mode
25 | - `unhold` (std_srvs/Trigger)
26 | - Leave holding mode
27 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/brake_test_utils_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PRBT_HARDWARE_SUPPORT_BRAKE_TEST_UTILS_EXCEPTION_H
19 | #define PRBT_HARDWARE_SUPPORT_BRAKE_TEST_UTILS_EXCEPTION_H
20 |
21 | #include
22 |
23 | namespace prbt_hardware_support
24 | {
25 | /**
26 | * @brief Exception thrown by a BrakeTestUtils function.
27 | */
28 | class BrakeTestUtilsException : public std::runtime_error
29 | {
30 | public:
31 | BrakeTestUtilsException(const std::string& what_arg) : std::runtime_error(what_arg)
32 | {
33 | }
34 | };
35 |
36 | /**
37 | * @brief Expection thrown by BrakeTestUtils::getCurrentJointStates().
38 | */
39 | class GetCurrentJointStatesException : public BrakeTestUtilsException
40 | {
41 | public:
42 | GetCurrentJointStatesException(const std::string& what_arg) : BrakeTestUtilsException(what_arg)
43 | {
44 | }
45 | };
46 | } // namespace prbt_hardware_support
47 |
48 | #endif // PRBT_HARDWARE_SUPPORT_BRAKE_TEST_UTILS_EXCEPTION_H
49 |
--------------------------------------------------------------------------------
/pilz_control/test/urdf/robot_mock.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
26 |
27 |
28 |
29 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/prbt_support/test/acceptance_tests/acceptance_test_gripper.md:
--------------------------------------------------------------------------------
1 | Copyright © 2018 Pilz GmbH & Co. KG
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
15 | ---
16 |
17 | # Acceptance Test Gripper
18 |
19 | ## Prerequisites
20 |
21 | ## Test Sequence:
22 | 1. Open the model in rviz `roslaunch prbt_support test_urdf.launch gripper:=pg70`.
23 | 2. In Rviz display the robot model (Add->rviz->RobotModel).
24 | 3. Move the sliders of the "joint_state_publisher" window.
25 | 4. Close everything.
26 | 5. Open the model in rviz `roslaunch prbt_support test_urdf.launch`.
27 | 6. In Rviz display the robot model (Add->rviz->RobotModel).
28 | 7. Close everything.
29 | 8. Open the model in rviz `roslaunch prbt_support test_urdf.launch`.
30 | 9. In Rviz display the robot model (Add->rviz->RobotModel).
31 |
32 | ## Expected Results:
33 | 1. Everything opens with no errors. A window for a rviz and a window "joint_state_publisher" has appeared.
34 | 2. You see a gripper attached to the end of the robot.
35 | 3. The gripper should move along with the robot in a physical possible manner.
36 | 4. -
37 | 5. Everything opens with no errors.
38 | 6. You don't see the gripper anymore.
39 | 7. -
40 | 8. Everything opens with no errors.
41 | 9. You don't see the gripper anymore.
42 |
43 | ---
44 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/canopen_braketest_adapter_exception.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PRBT_HARDWARE_SUPPORT_CANOPEN_BRAKETEST_ADAPTER_EXCEPTION_H
19 | #define PRBT_HARDWARE_SUPPORT_CANOPEN_BRAKETEST_ADAPTER_EXCEPTION_H
20 |
21 | #include
22 |
23 | #include
24 |
25 | namespace prbt_hardware_support
26 | {
27 | /**
28 | * @brief Exception thrown by the CANOpenBrakeTestAdapter.
29 | */
30 | class CANOpenBrakeTestAdapterException : public std::runtime_error
31 | {
32 | public:
33 | CANOpenBrakeTestAdapterException(const std::string& what_arg,
34 | const int8_t error_value = BrakeTestErrorCodes::FAILURE);
35 |
36 | public:
37 | int8_t getErrorValue() const;
38 |
39 | private:
40 | int8_t error_value_;
41 | };
42 |
43 | inline int8_t CANOpenBrakeTestAdapterException::getErrorValue() const
44 | {
45 | return error_value_;
46 | }
47 |
48 | } // namespace prbt_hardware_support
49 |
50 | #endif // PRBT_HARDWARE_SUPPORT_CANOPEN_BRAKETEST_ADAPTER_EXCEPTION_H
51 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_modbus_msg_in_builder.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 | #include
20 |
21 | #include
22 |
23 | #include
24 |
25 | namespace pilz_modbus_msg_in_utils_test
26 | {
27 | using namespace prbt_hardware_support;
28 |
29 | /**
30 | * @brief Tests that exception is thrown if the register container size
31 | * exceeds the size allowed by the std_msgs::MultiArrayLayout class.
32 | */
33 | TEST(ModbusMsgInBuilderTest, testOutOfRangeRegister)
34 | {
35 | std::unique_ptr layout{ new std_msgs::MultiArrayLayout() };
36 | const RegCont::size_type n{
37 | static_cast(std::numeric_limits::max()) + 1
38 | };
39 | EXPECT_THROW(ModbusMsgInBuilder::setDefaultLayout(layout.get(), 1, n), std::invalid_argument);
40 | }
41 |
42 | } // namespace pilz_modbus_msg_in_utils_test
43 |
44 | int main(int argc, char* argv[])
45 | {
46 | testing::InitGoogleTest(&argc, argv);
47 | return RUN_ALL_TESTS();
48 | }
49 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/include/prbt_hardware_support/pilz_modbus_client_mock.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PRBT_HARDWARE_SUPPORT_PILZ_MODBUS_SERVER_MOCK_H
19 | #define PRBT_HARDWARE_SUPPORT_PILZ_MODBUS_SERVER_MOCK_H
20 |
21 | #include
22 |
23 | #include
24 |
25 | /**
26 | * @brief Mock used in the unittest of the PilzModbusClient
27 | */
28 |
29 | class PilzModbusClientMock : public prbt_hardware_support::ModbusClient
30 | {
31 | public:
32 | MOCK_METHOD2(init, bool(const char* ip, unsigned int port));
33 | MOCK_METHOD0(connect, void());
34 | MOCK_METHOD1(setResponseTimeoutInMs, void(unsigned long timeout_ms));
35 | MOCK_METHOD2(readHoldingRegister, std::vector(int addr, int nb));
36 | MOCK_METHOD4(writeReadHoldingRegister,
37 | std::vector(const int write_addr, const std::vector& write_reg, const int read_addr,
38 | const int read_nb));
39 | MOCK_METHOD0(getResponseTimeoutInMs, unsigned long());
40 | };
41 |
42 | #endif // PRBT_HARDWARE_SUPPORT_PILZ_MODBUS_SERVER_MOCK_H
43 |
--------------------------------------------------------------------------------
/prbt_moveit_config/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.0.2)
2 | project(prbt_moveit_config)
3 |
4 | add_compile_options(-Wall)
5 | add_compile_options(-Wextra)
6 | add_compile_options(-Wno-unused-parameter)
7 | add_compile_options(-Wno-unused-variable)
8 | add_compile_options(-Werror)
9 |
10 | find_package(catkin REQUIRED COMPONENTS)
11 |
12 | catkin_package()
13 |
14 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
15 | PATTERN "setup_assistant.launch" EXCLUDE)
16 | install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
17 |
18 | if (CATKIN_ENABLE_TESTING)
19 | find_package(roslaunch REQUIRED)
20 | find_package(Eigen3 REQUIRED)
21 | find_package(moveit_core REQUIRED)
22 | find_package(moveit_ros_planning REQUIRED)
23 | find_package(pluginlib REQUIRED)
24 | find_package(roscpp REQUIRED)
25 | find_package(rostest REQUIRED)
26 |
27 | include_directories(SYSTEM ${EIGEN3_INCLUDE_DIRS})
28 | include_directories(${roscpp_INCLUDE_DIRS})
29 |
30 | if (CATKIN_ENABLE_CLANG_TIDY)
31 | find_program(
32 | CLANG_TIDY_EXE
33 | NAMES "clang-tidy"
34 | DOC "Path to clang-tidy executable"
35 | )
36 | if(NOT CLANG_TIDY_EXE)
37 | message(FATAL_ERROR "clang-tidy not found.")
38 | else()
39 | message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
40 | set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE}")
41 | endif()
42 | endif()
43 |
44 | add_rostest_gtest(integrationtest_prbt_ikfast_manipulator_plugin
45 | test/integrationtest_prbt_ikfast_manipulator_plugin.test
46 | test/integrationtest_prbt_ikfast_manipulator_plugin.cpp
47 | )
48 | target_link_libraries(integrationtest_prbt_ikfast_manipulator_plugin
49 | ${catkin_LIBRARIES}
50 | ${moveit_ros_planning_LIBRARIES}
51 | )
52 |
53 | roslaunch_add_file_check(launch/moveit_planning_execution.launch)
54 | endif()
55 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/modbus_api_definitions.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef MODBUS_API_DEFINITIONS_H
19 | #define MODBUS_API_DEFINITIONS_H
20 |
21 | #include
22 |
23 | namespace prbt_hardware_support
24 | {
25 | namespace modbus_api
26 | {
27 | namespace v3
28 | {
29 | static constexpr uint16_t MODBUS_API_VERSION_REQUIRED{ 3 };
30 |
31 | static constexpr uint16_t MODBUS_BRAKE_TEST_PASSED{ 2 };
32 | static constexpr uint16_t MODBUS_BRAKE_TEST_NOT_PASSED{ 1 };
33 | static constexpr uint16_t MODBUS_BRAKE_TEST_PERFORMED{ 2 };
34 | static constexpr uint16_t MODBUS_BRAKE_TEST_NOT_PERFORMED{ 1 };
35 |
36 | static constexpr uint16_t MODBUS_OPERATION_MODE_NONE{ 0 };
37 | static constexpr uint16_t MODBUS_OPERATION_MODE_T1{ 1 };
38 | static constexpr uint16_t MODBUS_OPERATION_MODE_T2{ 2 };
39 | static constexpr uint16_t MODBUS_OPERATION_MODE_AUTO{ 3 };
40 |
41 | static constexpr uint16_t MODBUS_RUN_PERMITTED_TRUE{ 1 };
42 | static constexpr uint16_t MODBUS_RUN_PERMITTED_FALSE{ 0 };
43 | } // namespace v3
44 | } // namespace modbus_api
45 |
46 | } // namespace prbt_hardware_support
47 | #endif // MODBUS_API_DEFINITIONS_H
48 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/param_names.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PRBT_HARDWARE_SUPPORT_PARAM_NAMES_H
19 | #define PRBT_HARDWARE_SUPPORT_PARAM_NAMES_H
20 |
21 | #include
22 |
23 | namespace prbt_hardware_support
24 | {
25 | static const std::string PARAM_MODBUS_SERVER_IP_STR{ "modbus_server_ip" };
26 | static const std::string PARAM_MODBUS_SERVER_PORT_STR{ "modbus_server_port" };
27 | static const std::string PARAM_MODBUS_RESPONSE_TIMEOUT_STR{ "modbus_response_timeout" };
28 | static const std::string PARAM_MODBUS_READ_TOPIC_NAME_STR{ "modbus_read_topic_name" };
29 | static const std::string PARAM_MODBUS_WRITE_SERVICE_NAME_STR{ "modbus_write_service_name" };
30 | static const std::string PARAM_INDEX_OF_FIRST_REGISTER_TO_READ_STR{ "index_of_first_register_to_read" };
31 | static const std::string PARAM_NUM_REGISTERS_TO_READ_STR{ "num_registers_to_read" };
32 | static const std::string PARAM_MODBUS_CONNECTION_RETRIES{ "modbus_connection_retries" };
33 | static const std::string PARAM_MODBUS_CONNECTION_RETRY_TIMEOUT{ "modbus_connection_retry_timeout" };
34 |
35 | } // namespace prbt_hardware_support
36 |
37 | #endif // PARAM_NAMES_H
38 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/integration_tests/integrationtest_operation_mode.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/prbt_moveit_config/config/joint_limits.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright © 2018 Pilz GmbH & Co. KG
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | # joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed
17 | # Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration]
18 | # Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits]
19 | joint_limits:
20 | prbt_joint_1:
21 | has_velocity_limits: true
22 | max_velocity: 1.57
23 | has_acceleration_limits: true
24 | max_acceleration: 3.49
25 | prbt_joint_2:
26 | has_velocity_limits: true
27 | max_velocity: 1.57
28 | has_acceleration_limits: true
29 | max_acceleration: 3.49
30 | prbt_joint_3:
31 | has_velocity_limits: true
32 | max_velocity: 1.57
33 | has_acceleration_limits: true
34 | max_acceleration: 3.49
35 | prbt_joint_4:
36 | has_velocity_limits: true
37 | max_velocity: 1.57
38 | has_acceleration_limits: true
39 | max_acceleration: 3.49
40 | prbt_joint_5:
41 | has_velocity_limits: true
42 | max_velocity: 1.57
43 | has_acceleration_limits: true
44 | max_acceleration: 3.49
45 | prbt_joint_6:
46 | has_velocity_limits: true
47 | max_velocity: 1.57
48 | has_acceleration_limits: true
49 | max_acceleration: 3.49
50 |
--------------------------------------------------------------------------------
/prbt_hardware_support/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | prbt_hardware_support
4 | 0.6.0
5 | Control hardware functions of the PRBT manipulator like RUN_PERMITTED for Stop1 functionality.
6 |
7 | Immanuel Martini
8 |
9 | LGPLv3
10 |
11 | https://wiki.ros.org/prbt_hardware_support
12 | https://github.com/PilzDE/pilz_robots/issues
13 | https://github.com/PilzDE/pilz_robots
14 |
15 | catkin
16 |
17 | canopen_chain_node
18 | roscpp
19 | libmodbus-dev
20 | message_generation
21 | std_msgs
22 | std_srvs
23 | sensor_msgs
24 | message_filters
25 | tf2
26 | tf2_geometry_msgs
27 | tf2_ros
28 | urdf
29 | dynamic_reconfigure
30 | pilz_utils
31 | pilz_msgs
32 |
33 | roscpp
34 | message_runtime
35 | std_msgs
36 | std_srvs
37 | sensor_msgs
38 | pilz_msgs
39 | rosservice
40 |
41 |
42 | rostest
43 | rosunit
44 | cmake_modules
45 | code_coverage
46 | pilz_testutils
47 |
48 |
49 |
--------------------------------------------------------------------------------
/prbt_hardware_support/include/prbt_hardware_support/write_modbus_register_call.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef WRITE_MODBUS_REGISTER_CALL_H
19 | #define WRITE_MODBUS_REGISTER_CALL_H
20 |
21 | #include
22 |
23 | #include
24 | #include
25 |
26 | namespace prbt_hardware_support
27 | {
28 | template
29 | static bool writeModbusRegisterCall(T& modbus_service, const uint16_t& start_idx, const RegCont& values)
30 | {
31 | WriteModbusRegister srv;
32 | srv.request.holding_register_block.start_idx = start_idx;
33 | srv.request.holding_register_block.values = values;
34 |
35 | ROS_DEBUG_STREAM("Calling service: " << modbus_service.getService());
36 | bool call_success = modbus_service.call(srv);
37 | if (!call_success)
38 | {
39 | ROS_ERROR_STREAM("Service call " << modbus_service.getService() << " failed.");
40 | return false;
41 | }
42 |
43 | if (!srv.response.success)
44 | {
45 | ROS_ERROR_STREAM("Writing of modbus register failed.");
46 | return false;
47 | }
48 |
49 | return true;
50 | }
51 |
52 | } // namespace prbt_hardware_support
53 |
54 | #endif // WRITE_MODBUS_REGISTER_CALL_H
55 |
--------------------------------------------------------------------------------
/pilz_control/test/robot_mock.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2018 Pilz GmbH & Co. KG
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #include
18 |
19 | #include "robot_mock.h"
20 |
21 | RobotMock::RobotMock()
22 | {
23 | for (unsigned int i = 0; i < NUM_JOINTS; ++i)
24 | {
25 | std::ostringstream os;
26 | os << JOINT_NAMES.at(i);
27 | hardware_interface::JointStateHandle jnt_state_handle{ os.str(), &(data_.at(i).pos), &(data_.at(i).vel),
28 | &(data_.at(i).eff) };
29 | hardware_interface::JointHandle jnt_handle{ jnt_state_handle, &(data_.at(i).cmd) };
30 | pos_jnt_interface_.registerHandle(jnt_handle);
31 | jnt_state_interface_.registerHandle(jnt_handle);
32 | }
33 |
34 | registerInterface(&pos_jnt_interface_);
35 | registerInterface(&jnt_state_interface_);
36 | }
37 |
38 | std::array RobotMock::read() const
39 | {
40 | return data_;
41 | }
42 |
43 | void RobotMock::write(const ros::Duration& period)
44 | {
45 | for (unsigned int i = 0; i < NUM_JOINTS; ++i)
46 | {
47 | data_.at(i).vel = (data_.at(i).cmd - data_.at(i).pos) / period.toSec();
48 | data_.at(i).pos = data_.at(i).cmd;
49 | }
50 | }
51 |
52 | bool RobotMock::isMoving(const double& eps) const
53 | {
54 | return std::any_of(data_.begin(), data_.end(), [eps](const JointData& data) { return std::abs(data.vel) > eps; });
55 | }
56 |
--------------------------------------------------------------------------------
/prbt_moveit_config/launch/planning_context.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
16 |
17 |
18 |
20 |
21 |
22 |
23 |
24 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/pilz_control/test/config/test_controller.yaml:
--------------------------------------------------------------------------------
1 | # Copyright (c) 2018 Pilz GmbH & Co. KG
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # FILE DESCRIPTION:
16 | #
17 | # This file declares the different controller types which can then be
18 | # instanciated by the controller manager. In this file only controllers
19 | # for the arm are declared (no gripper).
20 | #
21 | # See also: http://wiki.ros.org/joint_trajectory_controller?distro=lunar
22 | #
23 |
24 | ## joint_names
25 | joint_names:
26 | - shoulder_to_right_arm
27 | - shoulder_to_left_arm
28 |
29 | test_joint_state_controller:
30 | type: joint_state_controller/JointStateController
31 | publish_rate: 50
32 |
33 | ## joint trajectory controller
34 | test_joint_trajectory_controller:
35 | type: position_controllers/PilzJointTrajectoryController
36 | joints:
37 | - shoulder_to_right_arm
38 | - shoulder_to_left_arm
39 | constraints:
40 | goal_time: 0.6
41 | stopped_velocity_tolerance: 0.05
42 | shoulder_to_right_arm: {trajectory: 0.157, goal: 0.01}
43 | shoulder_to_left_arm: {trajectory: 0.157, goal: 0.01}
44 | stop_trajectory_duration: 0.2
45 | state_publish_rate: 25
46 | action_monitor_rate: 10
47 | required_drive_mode: 7
48 | limits:
49 | shoulder_to_right_arm:
50 | has_acceleration_limits: true
51 | max_acceleration: 4.0
52 | shoulder_to_left_arm:
53 | has_acceleration_limits: true
54 | max_acceleration: 4.0
55 |
--------------------------------------------------------------------------------
/prbt_hardware_support/test/integration_tests/integrationtest_brake_test_required.test:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/prbt_support/package.xml:
--------------------------------------------------------------------------------
1 |
2 | prbt_support
3 | 0.6.0
4 | Mechanical, kinematic and visual description
5 | of the Pilz light weight arm PRBT.
6 |
7 | Immanuel Martini
8 |
9 | Apache 2.0
10 |
11 | https://wiki.ros.org/prbt_support
12 | https://github.com/PilzDE/pilz_robots/issues
13 | https://github.com/PilzDE/pilz_robots
14 |
15 | catkin
16 |
17 | roscpp
18 |
19 | canopen_chain_node
20 | pilz_utils
21 | roslint
22 | sensor_msgs
23 |
24 | canopen_motor_node
25 | joint_state_controller
26 | robot_state_publisher
27 | topic_tools
28 | rosservice
29 | xacro
30 | controller_manager
31 | pilz_control
32 | pilz_status_indicator_rqt
33 | prbt_hardware_support
34 |
35 | rostest
36 | moveit_core
37 | moveit_ros_planning
38 | cmake_modules
39 | eigen
40 | roslaunch
41 | rviz
42 | joint_state_publisher
43 | prbt_hardware_support
44 | rosunit
45 | code_coverage
46 | pilz_testutils
47 |
48 |
--------------------------------------------------------------------------------
/prbt_hardware_support/src/fake_speed_override_node.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 |
20 | #include
21 |
22 | #include
23 | #include
24 | #include
25 |
26 | std::atomic SPEED_OVERRIDE{ 1.0 };
27 |
28 | void dynamic_set_speed_override(prbt_hardware_support::FakeSpeedOverrideConfig& config, uint32_t level)
29 | {
30 | ROS_INFO("Reconfigure Request: %f", config.speed_override);
31 | SPEED_OVERRIDE = config.speed_override;
32 | }
33 |
34 | bool getSpeedOverride(pilz_msgs::GetSpeedOverride::Request& /*req*/, pilz_msgs::GetSpeedOverride::Response& res)
35 | {
36 | res.speed_override = SPEED_OVERRIDE;
37 | return true;
38 | }
39 |
40 | int main(int argc, char** argv)
41 | {
42 | ros::init(argc, argv, "fake_speed_override");
43 | ros::NodeHandle n;
44 |
45 | ros::ServiceServer service = n.advertiseService("/prbt/get_speed_override", getSpeedOverride);
46 |
47 | dynamic_reconfigure::Server server;
48 | dynamic_reconfigure::Server::CallbackType f;
49 |
50 | f = boost::bind(&dynamic_set_speed_override, _1, _2);
51 | server.setCallback(f);
52 |
53 | ros::spin();
54 | return 0;
55 | }
--------------------------------------------------------------------------------
/prbt_hardware_support/test/unit_tests/unittest_modbus_msg_wrapper.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #include
19 |
20 | #include
21 | #include
22 |
23 | #include
24 | #include
25 | #include
26 | #include
27 |
28 | using namespace prbt_hardware_support;
29 |
30 | namespace modbus_msg_wrapper
31 | {
32 | static const ModbusApiSpec TEST_API_SPEC{ { modbus_api_spec::VERSION, 0 } };
33 |
34 | /**
35 | * @brief Test increases function coverage by ensuring that all Dtor variants
36 | * are called.
37 | */
38 | TEST(ModbusMsgWrapperTest, testModbusMsgWrapperDtor)
39 | {
40 | uint32_t offset{ 0 };
41 | const uint16_t modbus_api_version{ 1 };
42 | RegCont holding_register{ modbus_api_version };
43 | ModbusMsgInStampedPtr msg{ ModbusMsgInBuilder::createDefaultModbusMsgIn(offset, holding_register) };
44 |
45 | ModbusMsgInStampedConstPtr msg_const_ptr{ msg };
46 | std::shared_ptr ex(new ModbusMsgWrapper(msg_const_ptr, TEST_API_SPEC));
47 | }
48 |
49 | } // namespace modbus_msg_wrapper
50 |
51 | int main(int argc, char* argv[])
52 | {
53 | testing::InitGoogleTest(&argc, argv);
54 | return RUN_ALL_TESTS();
55 | }
56 |
--------------------------------------------------------------------------------
/pilz_control/test/robot_mock.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Pilz GmbH & Co. KG
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #ifndef PILZ_CONTROL_ROBOT_MOCK_H
18 | #define PILZ_CONTROL_ROBOT_MOCK_H
19 |
20 | #include
21 |
22 | #include
23 | #include
24 | #include
25 |
26 | constexpr unsigned int NUM_JOINTS{ 2 };
27 | constexpr std::array JOINT_NAMES = { "shoulder_to_right_arm", "shoulder_to_left_arm" };
28 | constexpr double JOINT_VELOCITY_EPS{ 0.0001 };
29 |
30 | struct JointData
31 | {
32 | double pos{ 0.0 };
33 | double vel{ 0.0 };
34 | double eff{ 0.0 };
35 | double cmd{ 0.0 };
36 | };
37 |
38 | /**
39 | * @brief The RobotMock used by the unit- and integrationtest of the pilz_joint_trajectory_controller.
40 | * Registers NUM_JOINTS JointStateHandles with the interface to allow interaction with the controller_manager.
41 | */
42 | class RobotMock : public hardware_interface::RobotHW
43 | {
44 | public:
45 | RobotMock();
46 |
47 | std::array read() const;
48 | void write(const ros::Duration& period);
49 |
50 | bool isMoving(const double& eps = JOINT_VELOCITY_EPS) const;
51 |
52 | private:
53 | std::array data_{ JointData(), JointData() };
54 | hardware_interface::PositionJointInterface pos_jnt_interface_;
55 | hardware_interface::JointStateInterface jnt_state_interface_;
56 | };
57 |
58 | #endif // PILZ_CONTROL_ROBOT_MOCK_H
59 |
--------------------------------------------------------------------------------
/pilz_control/test/unittest_hold_mode_listener.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2020 Pilz GmbH & Co. KG
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #include
18 | #include
19 | #include
20 | #include
21 |
22 | #include
23 |
24 | #include
25 |
26 | namespace pilz_joint_trajectory_controller
27 | {
28 | static constexpr int WAIT_FOR_RESULT_TIMEOUT{ 1 };
29 |
30 | TEST(HoldModeListenerTest, testWaitAndTrigger)
31 | {
32 | HoldModeListener listener;
33 |
34 | std::future wait_future = std::async(std::launch::async, std::bind(&HoldModeListener::wait, &listener));
35 |
36 | std::chrono::seconds timeout{ std::chrono::seconds(WAIT_FOR_RESULT_TIMEOUT) };
37 | EXPECT_EQ(wait_future.wait_for(timeout), std::future_status::timeout);
38 |
39 | listener.triggerListener();
40 | EXPECT_EQ(wait_future.wait_for(timeout), std::future_status::ready);
41 | }
42 |
43 | TEST(HoldModeListenerTest, testTriggerBeforeWait)
44 | {
45 | HoldModeListener listener;
46 |
47 | listener.triggerListener();
48 |
49 | std::future wait_future = std::async(std::launch::async, std::bind(&HoldModeListener::wait, &listener));
50 |
51 | std::chrono::seconds timeout{ std::chrono::seconds(WAIT_FOR_RESULT_TIMEOUT) };
52 | EXPECT_EQ(wait_future.wait_for(timeout), std::future_status::ready);
53 | }
54 |
55 | } // namespace pilz_joint_trajectory_controller
56 |
57 | int main(int argc, char* argv[])
58 | {
59 | testing::InitGoogleTest(&argc, argv);
60 | return RUN_ALL_TESTS();
61 | }
62 |
--------------------------------------------------------------------------------
/.clang-format:
--------------------------------------------------------------------------------
1 | ---
2 | BasedOnStyle: Google
3 | AccessModifierOffset: -2
4 | ConstructorInitializerIndentWidth: 2
5 | AlignEscapedNewlinesLeft: false
6 | AlignTrailingComments: true
7 | AllowAllParametersOfDeclarationOnNextLine: false
8 | AllowShortIfStatementsOnASingleLine: false
9 | AllowShortLoopsOnASingleLine: false
10 | AllowShortFunctionsOnASingleLine: None
11 | AllowShortLoopsOnASingleLine: false
12 | AlwaysBreakTemplateDeclarations: true
13 | AlwaysBreakBeforeMultilineStrings: false
14 | BreakBeforeBinaryOperators: false
15 | BreakBeforeTernaryOperators: false
16 | BreakConstructorInitializersBeforeComma: true
17 | BinPackParameters: true
18 | ColumnLimit: 120
19 | ConstructorInitializerAllOnOneLineOrOnePerLine: true
20 | DerivePointerBinding: false
21 | PointerBindsToType: true
22 | ExperimentalAutoDetectBinPacking: false
23 | IndentCaseLabels: true
24 | MaxEmptyLinesToKeep: 1
25 | NamespaceIndentation: None
26 | ObjCSpaceBeforeProtocolList: true
27 | PenaltyBreakBeforeFirstCallParameter: 19
28 | PenaltyBreakComment: 60
29 | PenaltyBreakString: 100
30 | PenaltyBreakFirstLessLess: 1000
31 | PenaltyExcessCharacter: 1000
32 | PenaltyReturnTypeOnItsOwnLine: 70
33 | SpacesBeforeTrailingComments: 2
34 | Cpp11BracedListStyle: false
35 | Standard: Auto
36 | IndentWidth: 2
37 | TabWidth: 2
38 | UseTab: Never
39 | IndentFunctionDeclarationAfterType: false
40 | SpacesInParentheses: false
41 | SpacesInAngles: false
42 | SpaceInEmptyParentheses: false
43 | SpacesInCStyleCastParentheses: false
44 | SpaceAfterControlStatementKeyword: true
45 | SpaceBeforeAssignmentOperators: true
46 | ContinuationIndentWidth: 4
47 | SortIncludes: false
48 | SpaceAfterCStyleCast: false
49 |
50 | # Configure each individual brace in BraceWrapping
51 | BreakBeforeBraces: Custom
52 |
53 | # Control of individual brace wrapping cases
54 | BraceWrapping: {
55 | AfterClass: 'true'
56 | AfterControlStatement: 'true'
57 | AfterEnum : 'true'
58 | AfterFunction : 'true'
59 | AfterNamespace : 'true'
60 | AfterStruct : 'true'
61 | AfterUnion : 'true'
62 | BeforeCatch : 'true'
63 | BeforeElse : 'true'
64 | IndentBraces : 'false'
65 | }
66 | ...
67 |
--------------------------------------------------------------------------------
/prbt_support/include/prbt_support/system_info.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2019 Pilz GmbH & Co. KG
3 | *
4 | * This program is free software: you can redistribute it and/or modify
5 | * it under the terms of the GNU Lesser General Public License as published by
6 | * the Free Software Foundation, either version 3 of the License, or
7 | * (at your option) any later version.
8 |
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU Lesser General Public License for more details.
13 |
14 | * You should have received a copy of the GNU Lesser General Public License
15 | * along with this program. If not, see .
16 | */
17 |
18 | #ifndef PRBT_SUPPORT_SYSTEM_INFO_H
19 | #define PRBT_SUPPORT_SYSTEM_INFO_H
20 |
21 | #include
22 |
23 | #include
24 | #include
25 | #include