├── .github └── workflows │ ├── ci_bionic.yml │ └── ci_focal.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── kuka_eki_hw_interface ├── CMakeLists.txt ├── config │ ├── controller_joint_names.yaml │ └── hardware_controllers.yaml ├── include │ └── kuka_eki_hw_interface │ │ └── kuka_eki_hw_interface.h ├── krl │ ├── EkiHwInterface.xml │ ├── README.md │ ├── kuka_eki_hw_interface.dat │ └── kuka_eki_hw_interface.src ├── launch │ ├── controller_spawner.launch │ └── robot_interface_streaming.launch ├── package.xml ├── src │ ├── kuka_eki_hw_interface.cpp │ └── kuka_eki_hw_interface_node.cpp └── test │ ├── test_hardware_interface.launch │ └── test_params.yaml ├── kuka_experimental ├── CMakeLists.txt └── package.xml ├── kuka_kr10_support ├── CMakeLists.txt ├── config │ ├── joint_names_kr10r1100sixx.yaml │ ├── joint_names_kr10r1420.yaml │ ├── joint_names_kr10r900_2.yaml │ └── opw_parameters_kr10r1420.yaml ├── launch │ ├── load_kr10r1100sixx.launch │ ├── load_kr10r1420.launch │ ├── load_kr10r900_2.launch │ ├── test_kr10r1100sixx.launch │ ├── test_kr10r1420.launch │ └── test_kr10r900_2.launch ├── meshes │ ├── kr10r1100sixx │ │ ├── collision │ │ │ ├── base_link.stl │ │ │ ├── link_1.stl │ │ │ ├── link_2.stl │ │ │ ├── link_3.stl │ │ │ ├── link_4.stl │ │ │ ├── link_5.stl │ │ │ └── link_6.stl │ │ └── visual │ │ │ ├── base_link.stl │ │ │ ├── link_1.stl │ │ │ ├── link_2.stl │ │ │ ├── link_3.stl │ │ │ ├── link_4.stl │ │ │ ├── link_5.stl │ │ │ └── link_6.stl │ ├── kr10r1420 │ │ ├── collision │ │ │ ├── base_link.stl │ │ │ ├── link_1.stl │ │ │ ├── link_2.stl │ │ │ ├── link_3.stl │ │ │ ├── link_4.stl │ │ │ ├── link_5.stl │ │ │ └── link_6.stl │ │ └── visual │ │ │ ├── base_link.stl │ │ │ ├── link_1.stl │ │ │ ├── link_2.stl │ │ │ ├── link_3.stl │ │ │ ├── link_4.stl │ │ │ ├── link_5.stl │ │ │ └── link_6.stl │ └── kr10r900_2 │ │ ├── collision │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl │ │ └── visual │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl ├── package.xml ├── test │ ├── roslaunch_test_kr10r1100sixx.xml │ ├── roslaunch_test_kr10r1420.xml │ └── roslaunch_test_kr10r900_2.xml └── urdf │ ├── kr10r1100sixx.xacro │ ├── kr10r1100sixx_macro.xacro │ ├── kr10r1420.xacro │ ├── kr10r1420_macro.xacro │ ├── kr10r900_2.xacro │ └── kr10r900_2_macro.xacro ├── kuka_kr120_support ├── CMakeLists.txt ├── config │ └── joint_names_kr120r2500pro.yaml ├── launch │ ├── load_kr120r2500pro.launch │ └── test_kr120r2500pro.launch ├── meshes │ └── kr120r2500pro │ │ ├── collision │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl │ │ └── visual │ │ ├── base_link.dae │ │ ├── link_1.dae │ │ ├── link_2.dae │ │ ├── link_3.dae │ │ ├── link_4.dae │ │ ├── link_5.dae │ │ └── link_6.dae ├── package.xml ├── test │ └── roslaunch_test.xml └── urdf │ ├── kr120r2500pro.urdf │ ├── kr120r2500pro.xacro │ └── kr120r2500pro_macro.xacro ├── kuka_kr150_support ├── CMakeLists.txt ├── config │ ├── joint_names_kr150.yaml │ └── opw_parameters_kr150r3100_2.yaml ├── launch │ ├── load_kr150_2.launch │ ├── load_kr150r3100_2.launch │ ├── test_kr150_2.launch │ └── test_kr150r3100_2.launch ├── meshes │ ├── kr150_2 │ │ ├── collision │ │ │ ├── base_link.stl │ │ │ ├── link_1.stl │ │ │ ├── link_2.stl │ │ │ ├── link_3.stl │ │ │ ├── link_4.stl │ │ │ ├── link_5.stl │ │ │ └── link_6.stl │ │ └── visual │ │ │ ├── base_link.dae │ │ │ ├── link_1.dae │ │ │ ├── link_2.dae │ │ │ ├── link_3.dae │ │ │ ├── link_4.dae │ │ │ ├── link_5.dae │ │ │ └── link_6.dae │ └── kr150r3100_2 │ │ ├── collision │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl │ │ └── visual │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl ├── package.xml ├── test │ ├── roslaunch_test.xml │ └── roslaunch_test_kr150r3100_2.xml └── urdf │ ├── kr150_2.xacro │ ├── kr150_2_macro.xacro │ ├── kr150r3100_2.xacro │ └── kr150r3100_2_macro.xacro ├── kuka_kr16_support ├── CMakeLists.txt ├── config │ └── joint_names_kr16.yaml ├── launch │ ├── load_kr16_2.launch │ └── test_kr16_2.launch ├── meshes │ └── kr16_2 │ │ ├── collision │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl │ │ └── visual │ │ ├── base_link.dae │ │ ├── link_1.dae │ │ ├── link_2.dae │ │ ├── link_3.dae │ │ ├── link_4.dae │ │ ├── link_5.dae │ │ └── link_6.dae ├── package.xml ├── test │ └── roslaunch_test.xml └── urdf │ ├── kr16_2.urdf │ ├── kr16_2.xacro │ └── kr16_2_macro.xacro ├── kuka_kr210_support ├── CMakeLists.txt ├── config │ └── joint_names_kr210l150.yaml ├── launch │ ├── load_kr210l150.launch │ └── test_kr210l150.launch ├── meshes │ └── kr210l150 │ │ ├── collision │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl │ │ └── visual │ │ ├── base_link.dae │ │ ├── link_1.dae │ │ ├── link_2.dae │ │ ├── link_3.dae │ │ ├── link_4.dae │ │ ├── link_5.dae │ │ └── link_6.dae ├── package.xml ├── test │ └── roslaunch_test.xml └── urdf │ ├── kr210l150.urdf │ ├── kr210l150.xacro │ └── kr210l150_macro.xacro ├── kuka_kr3_support ├── CMakeLists.txt ├── config │ └── joint_names_kr3r540.yaml ├── launch │ ├── load_kr3r540.launch │ └── test_kr3r540.launch ├── meshes │ └── kr3r540 │ │ ├── collision │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl │ │ └── visual │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl ├── package.xml ├── test │ └── roslaunch_test_kr3r540.xml └── urdf │ ├── kr3r540.xacro │ └── kr3r540_macro.xacro ├── kuka_kr5_support ├── CMakeLists.txt ├── config │ ├── joint_names_kr5.yaml │ └── opw_kinematics_kr5.yaml ├── launch │ ├── load_kr5_arc.launch │ └── test_kr5_arc.launch ├── meshes │ └── kr5_arc │ │ ├── collision │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ └── link_6.stl │ │ └── visual │ │ ├── base_link.dae │ │ ├── link_1.dae │ │ ├── link_2.dae │ │ ├── link_3.dae │ │ ├── link_4.dae │ │ ├── link_5.dae │ │ └── link_6.dae ├── package.xml ├── test │ └── roslaunch_test.xml └── urdf │ ├── kr5_arc.xacro │ └── kr5_arc_macro.xacro ├── kuka_kr6_support ├── CMakeLists.txt ├── config │ ├── joint_names_kr6r700sixx.yaml │ ├── joint_names_kr6r900sixx.yaml │ ├── joint_names_kuka_kr6_r900_2.yaml │ ├── opw_kinematics_kr6r700sixx.yaml │ └── opw_parameters_kr6r900_2.yaml ├── launch │ ├── load_kr6r700sixx.launch │ ├── load_kr6r900_2.launch │ ├── load_kr6r900sixx.launch │ ├── test_kr6r700sixx.launch │ ├── test_kr6r900_2.launch │ └── test_kr6r900sixx.launch ├── meshes │ ├── kr6_agilus │ │ ├── collision │ │ │ ├── base_link.stl │ │ │ ├── link_1.stl │ │ │ ├── link_3.stl │ │ │ ├── link_5.stl │ │ │ └── link_6.stl │ │ └── visual │ │ │ ├── base_link.dae │ │ │ ├── link_1.dae │ │ │ ├── link_3.dae │ │ │ ├── link_5.dae │ │ │ └── link_6.dae │ ├── kr6r700sixx │ │ ├── collision │ │ │ ├── link_2.stl │ │ │ └── link_4.stl │ │ └── visual │ │ │ ├── link_2.dae │ │ │ └── link_4.dae │ └── kr6r900sixx │ │ ├── collision │ │ ├── link_2.stl │ │ └── link_4.stl │ │ └── visual │ │ ├── link_2.dae │ │ └── link_4.dae ├── package.xml ├── test │ ├── roslaunch_test_kr6r700sixx.xml │ ├── roslaunch_test_kr6r900_2.xml │ └── roslaunch_test_kr6r900sixx.xml └── urdf │ ├── kr6r700sixx.xacro │ ├── kr6r700sixx_macro.xacro │ ├── kr6r900_2.xacro │ ├── kr6r900_2_macro.xacro │ ├── kr6r900sixx.xacro │ └── kr6r900sixx_macro.xacro ├── kuka_lbr_iiwa_support ├── CMakeLists.txt ├── config │ └── joint_names_lbr_iiwa.yaml ├── launch │ ├── load_lbr_iiwa_14_r820.launch │ └── test_lbr_iiwa_14_r820.launch ├── meshes │ └── lbr_iiwa_14_r820 │ │ ├── collision │ │ ├── base_link.stl │ │ ├── link_1.stl │ │ ├── link_2.stl │ │ ├── link_3.stl │ │ ├── link_4.stl │ │ ├── link_5.stl │ │ ├── link_6.stl │ │ └── link_7.stl │ │ └── visual │ │ ├── base_link.dae │ │ ├── link_1.dae │ │ ├── link_2.dae │ │ ├── link_3.dae │ │ ├── link_4.dae │ │ ├── link_5.dae │ │ ├── link_6.dae │ │ └── link_7.dae ├── package.xml └── urdf │ ├── lbr_iiwa_14_r820.urdf │ ├── lbr_iiwa_14_r820.xacro │ └── lbr_iiwa_14_r820_macro.xacro ├── kuka_resources ├── CMakeLists.txt ├── package.xml └── urdf │ ├── common_colours.xacro │ ├── common_constants.xacro │ └── common_materials.xacro ├── kuka_rsi_hw_interface ├── CMakeLists.txt ├── config │ ├── controller_joint_names.yaml │ └── hardware_controllers.yaml ├── include │ └── kuka_rsi_hw_interface │ │ ├── kuka_hardware_interface.h │ │ ├── rsi_command.h │ │ ├── rsi_state.h │ │ └── udp_server.h ├── krl │ ├── KR_C2 │ │ ├── README.md │ │ ├── ros_rsi.src │ │ └── ros_rsi_ethernet.xml │ └── KR_C4 │ │ ├── README.md │ │ ├── ros_rsi.rsi │ │ ├── ros_rsi.rsi.diagram │ │ ├── ros_rsi.rsi.xml │ │ ├── ros_rsi.src │ │ └── ros_rsi_ethernet.xml ├── launch │ └── controller_spawner.launch ├── package.xml ├── src │ ├── kuka_hardware_interface.cpp │ └── kuka_hardware_interface_node.cpp └── test │ ├── ag1_controller_joint_names.yaml │ ├── ag1_hw_controllers.yaml │ ├── ag1_params.yaml │ ├── ag2_controller_joint_names.yaml │ ├── ag2_hw_controllers.yaml │ ├── ag2_params.yaml │ ├── test_hardware_interface.launch │ ├── test_params.yaml │ ├── test_params_sim.yaml │ └── test_two_robots.launch └── kuka_rsi_simulator ├── CMakeLists.txt ├── README.md ├── launch └── kuka_rsi_simulator.launch ├── package.xml └── scripts └── kuka_rsi_simulator /.github/workflows/ci_bionic.yml: -------------------------------------------------------------------------------- 1 | name: CI - Ubuntu Bionic 2 | 3 | on: 4 | # direct pushes to protected branches are not supported 5 | pull_request: 6 | # run every day, at 6am UTC 7 | schedule: 8 | - cron: '0 6 * * *' 9 | # allow manually starting this workflow 10 | workflow_dispatch: 11 | 12 | jobs: 13 | industrial_ci: 14 | name: ROS Melodic (${{ matrix.ros_repo }}) 15 | runs-on: ubuntu-24.04 16 | 17 | strategy: 18 | fail-fast: false 19 | matrix: 20 | ros_distro: [ melodic ] 21 | ros_repo: [ main, testing ] 22 | 23 | env: 24 | CCACHE_DIR: "${{ github.workspace }}/.ccache" 25 | CATKIN_LINT: true 26 | 27 | steps: 28 | - name: Fetch repository 29 | uses: actions/checkout@v4 30 | 31 | - name: ccache cache 32 | uses: actions/cache@v4 33 | with: 34 | path: ${{ env.CCACHE_DIR }} 35 | # we always want the ccache cache to be persisted, as we cannot easily 36 | # determine whether dependencies have changed, and ccache will manage 37 | # updating the cache for us. Adding 'run_id' to the key will force an 38 | # upload at the end of the job. 39 | key: ccache-${{ matrix.ros_distro }}-${{ matrix.ros_repo }}-${{github.run_id}} 40 | restore-keys: | 41 | ccache-${{ matrix.ros_distro }}-${{ matrix.ros_repo }} 42 | 43 | - name: Run industrial_ci 44 | uses: ros-industrial/industrial_ci@master 45 | env: 46 | ROS_DISTRO: ${{ matrix.ros_distro }} 47 | ROS_REPO: ${{ matrix.ros_repo }} 48 | -------------------------------------------------------------------------------- /.github/workflows/ci_focal.yml: -------------------------------------------------------------------------------- 1 | name: CI - Ubuntu Focal 2 | 3 | on: 4 | # direct pushes to protected branches are not supported 5 | pull_request: 6 | # run every day, at 6am UTC 7 | schedule: 8 | - cron: '0 6 * * *' 9 | # allow manually starting this workflow 10 | workflow_dispatch: 11 | 12 | jobs: 13 | industrial_ci: 14 | name: ROS Noetic (${{ matrix.ros_repo }}) 15 | runs-on: ubuntu-24.04 16 | 17 | strategy: 18 | fail-fast: false 19 | matrix: 20 | ros_distro: [ noetic ] 21 | ros_repo: [ main, testing ] 22 | 23 | env: 24 | CCACHE_DIR: "${{ github.workspace }}/.ccache" 25 | CATKIN_LINT: true 26 | 27 | steps: 28 | - name: Fetch repository 29 | uses: actions/checkout@v4 30 | 31 | - name: ccache cache 32 | uses: actions/cache@v4 33 | with: 34 | path: ${{ env.CCACHE_DIR }} 35 | # we always want the ccache cache to be persisted, as we cannot easily 36 | # determine whether dependencies have changed, and ccache will manage 37 | # updating the cache for us. Adding 'run_id' to the key will force an 38 | # upload at the end of the job. 39 | key: ccache-${{ matrix.ros_distro }}-${{ matrix.ros_repo }}-${{github.run_id}} 40 | restore-keys: | 41 | ccache-${{ matrix.ros_distro }}-${{ matrix.ros_repo }} 42 | 43 | - name: Run industrial_ci 44 | uses: ros-industrial/industrial_ci@master 45 | env: 46 | ROS_DISTRO: ${{ matrix.ros_distro }} 47 | ROS_REPO: ${{ matrix.ros_repo }} 48 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ~$ 2 | .swp$ 3 | build/ 4 | bin/ 5 | lib/ 6 | msg_gen/ 7 | srv_gen/ 8 | msg/.*Action\.msg$ 9 | msg/.*ActionFeedback\.msg$ 10 | msg/.*ActionGoal\.msg$ 11 | msg/.*ActionResult\.msg$ 12 | msg/.*Feedback\.msg$ 13 | msg/.*Goal\.msg$ 14 | msg/.*Result\.msg$ 15 | msg/_.*\.py$ 16 | 17 | \.pcd$ 18 | .pyc$ 19 | 20 | # Generated by dynamic reconfigure 21 | \.cfgc$ 22 | /cfg/cpp/ 23 | /cfg/.*\.py$ 24 | 25 | # Ignore generated docs 26 | .dox$ 27 | .wikidoc$ 28 | 29 | # eclipse stuff 30 | .project 31 | .cproject 32 | 33 | # qcreator stuff 34 | CMakeLists.txt.user 35 | 36 | srv/_.*\.py$ 37 | \.pcd$ 38 | .pyc$ 39 | qtcreator-* 40 | *.user 41 | 42 | /planning/cfg 43 | /planning/docs 44 | /planning/src 45 | 46 | *~$ 47 | 48 | # Emacs 49 | .#* 50 | 51 | # Catkin custom files 52 | CATKIN_IGNORE 53 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ROS-Industrial is a community project. We welcome contributions from any source, from those who are extremely active to casual users. The following sections outline the steps on how to contribute to ROS-Industrial. It assumes there is an existing repository to which one would like to contribute (item 1 in the figure above) and one is familiar with the Git "Fork and Branch" workflow, detailed [here](http://blog.scottlowe.org/2015/01/27/using-fork-branch-git-workflow/). 2 | 3 | 1. Before any development is undertaken, a contributor would communicate a need and/or issue to the ROS-Industrial community. This can be done by submitting an issue on the appropriate GitHub repo, the [issues repo](https://github.com/ros-industrial/ros_industrial_issues), or by posting a message in the [ROS-Industrial category on ROS Discourse](//swri-ros-pkg-dev@googlegroups.com). . Doing so may save you time if similar development is underway and ensure that whatever approach you take is acceptable to the community of reviewers once it is submitted. 4 | 2. The second step (item 2) is to implement your change. If you are working on a code contribution, we highly recommend you utilize the [ROS Qt-Creator Plug-in](http://rosindustrial.org/news/2016/6/9/ros-qt-ide-plugin). Verify that your change successfully builds and passes all tests. 5 | 3. Next, push your changes to a "feature" branch in your personal fork of the repo and issue a pull request (PR)(item 3). The PR allows maintainers to review the submitted code. Before the PR can be accepted, the maintainer and contributor must agree that the contribution is implemented appropriately. This process can take several back-and-forth steps (see [example](https://github.com/ros-industrial/motoman/pull/89)). Contributors should expect to spend as much time reviewing/changing the code as on the initial implementation. This time can be minimized by communicating with the ROS-Industrial community before any contribution is made. 6 | 4. Issuing a Pull Request (PR) triggers the [Travis Continuous Integrations (CI)](https://github.com/ros-industrial/industrial_ci) step (item 4) which happens automatically in the background. The Travis CI performs several operations, and if any of the steps below fail, then the PR is marked accordingly for the maintainer. 7 | * Travis Workflow: 8 | * Installs a barebones ROS distribution on a fresh Ubuntu virtual machine. 9 | * Creates a catkin workspace and puts the repository in it. 10 | * Uses wstool to check out any from-source dependencies (i.e. other repositories). 11 | * Resolves package dependencies using rosdep (i.e. install packages using apt-get). 12 | * Compiles the catkin workspace. 13 | * Runs all available unit tests. 14 | 5. If the PR passes Travis CI and one of the maintainers is satisfied with the changes, they post a +1 as a comment on the PR (item 5). The +1 signifies that the PR is ready to be merged. All PRs require at least one +1 and pass Travis CI before it can be merged. 15 | 6. The next step (item 6) is for the PR to be merged into the main branch. This is done through the GitHub web interface by selecting the “Merge pull request” button. After the PR is merged, all status badges are updated automatically. 16 | 7. Periodically, the maintainer will release the package (item 7), which then gets sent to the [ROS Build Farm](http://wiki.ros.org/build.ros.org) for Debian creation. 17 | 8. The publishing of the released packages (item 8) is managed by OSRF and is not on a set schedule. This usually happens when all packages for a given distro are built successfully and stable. The current status for the distro kinetic can be found [here](http://repositories.ros.org/status_page/ros_kinetic_default.html) . Navigating to other distros can be done by changing the distro name in the link. 18 | 9. Once the package has been published, it is available to be installed by the developer (item 9). 19 | 10. After the install of a new version, the developer may have questions, experience issues or it may not have the necessary functionality which should all be reported on the packages GitHub repository as an issue (item 10). If an issue is identified or there is missing functionality that the developer requires, the cycle starts back at (item 2). 20 | 21 | For more details, please refer to the [ROS-I wiki](http://wiki.ros.org/Industrial/DevProcess). 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kuka experimental 2 | 3 | [![Build Status: Ubuntu Bionic (Actions)](https://github.com/ros-industrial/kuka_experimental/workflows/CI%20-%20Ubuntu%20Bionic/badge.svg?branch=melodic-devel)](https://github.com/ros-industrial/kuka_experimental/actions?query=workflow%3A%22CI+-+Ubuntu+Bionic%22) 4 | [![Build Status: Ubuntu Focal (Actions)](https://github.com/ros-industrial/kuka_experimental/workflows/CI%20-%20Ubuntu%20Focal/badge.svg?branch=melodic-devel)](https://github.com/ros-industrial/kuka_experimental/actions?query=workflow%3A%22CI+-+Ubuntu+Focal%22) 5 | 6 | 7 | [![support level: community](https://img.shields.io/badge/support%20level-community-lightgray.svg)](http://rosindustrial.org/news/2016/10/7/better-supporting-a-growing-ros-industrial-software-platform) 8 | 9 | Experimental packages for Kuka manipulators within [ROS-Industrial][]. 10 | See the [ROS wiki][] page for more information. 11 | 12 | 13 | ## Contents 14 | 15 | This repository contains packages that will be migrated to the [kuka][] 16 | repository after they have received sufficient testing. The contents of 17 | these packages are subject to change, without prior notice. Any available 18 | APIs are to be considered unstable and are not guaranteed to be complete 19 | and / or functional. 20 | 21 | 22 | [ROS-Industrial]: http://wiki.ros.org/Industrial 23 | [ROS wiki]: http://wiki.ros.org/kuka_experimental 24 | [kuka]: https://github.com/ros-industrial/kuka 25 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.1.0) 2 | project(kuka_eki_hw_interface) 3 | 4 | set(CMAKE_CXX_STANDARD 11) 5 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 6 | 7 | find_package(catkin REQUIRED COMPONENTS 8 | angles 9 | cmake_modules 10 | controller_manager 11 | hardware_interface 12 | joint_limits_interface 13 | roscpp 14 | ) 15 | 16 | find_package(Boost REQUIRED COMPONENTS system) 17 | find_package(TinyXML REQUIRED) 18 | 19 | 20 | catkin_package( 21 | CATKIN_DEPENDS 22 | controller_manager 23 | hardware_interface 24 | joint_limits_interface 25 | roscpp 26 | DEPENDS 27 | TinyXML 28 | ) 29 | 30 | 31 | include_directories( 32 | include 33 | ${catkin_INCLUDE_DIRS} 34 | ${Boost_INCLUDE_DIRS} 35 | ${TinyXML_INCLUDE_DIRS} 36 | ) 37 | 38 | add_library(kuka_eki_hw_interface 39 | src/kuka_eki_hw_interface.cpp 40 | ) 41 | 42 | target_link_libraries(kuka_eki_hw_interface 43 | ${catkin_LIBRARIES} 44 | ${Boost_LIBRARIES} 45 | ${TinyXML_LIBRARIES} 46 | ) 47 | 48 | add_executable(kuka_eki_hw_interface_node 49 | src/kuka_eki_hw_interface_node.cpp 50 | ) 51 | 52 | target_link_libraries(kuka_eki_hw_interface_node 53 | kuka_eki_hw_interface 54 | ) 55 | 56 | install( 57 | TARGETS kuka_eki_hw_interface 58 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 59 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 60 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}) 61 | 62 | install( 63 | TARGETS kuka_eki_hw_interface_node 64 | RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 65 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/config/controller_joint_names.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ["joint_a1", "joint_a2", "joint_a3", "joint_a4", "joint_a5", "joint_a6"] 2 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/config/hardware_controllers.yaml: -------------------------------------------------------------------------------- 1 | #Publish all joint states 2 | joint_state_controller: 3 | type: joint_state_controller/JointStateController 4 | publish_rate: 50 5 | 6 | # Joint trajectory controller 7 | position_trajectory_controller: 8 | type: "position_controllers/JointTrajectoryController" 9 | joints: 10 | - joint_a1 11 | - joint_a2 12 | - joint_a3 13 | - joint_a4 14 | - joint_a5 15 | - joint_a6 16 | 17 | state_publish_rate: 50 # Defaults to 50 18 | action_monitor_rate: 20 # Defaults to 20 19 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/include/kuka_eki_hw_interface/kuka_eki_hw_interface.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2018, 3M 5 | * All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions are met: 9 | * 10 | * * Redistributions of source code must retain the above copyright 11 | * notice, this list of conditions and the following disclaimer. 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * * Neither the name of the copyright holder, nor the names of its 16 | * contributors may be used to endorse or promote products derived 17 | * from this software without specific prior written permission. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 | * POSSIBILITY OF SUCH DAMAGE. 30 | */ 31 | 32 | // Author: Brett Hemes (3M) 33 | 34 | 35 | #ifndef KUKA_EKI_HW_INTERFACE 36 | #define KUKA_EKI_HW_INTERFACE 37 | 38 | #include 39 | #include 40 | 41 | #include 42 | 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | 49 | 50 | namespace kuka_eki_hw_interface 51 | { 52 | 53 | class KukaEkiHardwareInterface : public hardware_interface::RobotHW 54 | { 55 | private: 56 | ros::NodeHandle nh_; 57 | 58 | const unsigned int n_dof_ = 6; 59 | std::vector joint_names_; 60 | std::vector joint_position_; 61 | std::vector joint_velocity_; 62 | std::vector joint_effort_; 63 | std::vector joint_position_command_; 64 | 65 | // EKI 66 | std::string eki_server_address_; 67 | std::string eki_server_port_; 68 | int eki_cmd_buff_len_; 69 | int eki_max_cmd_buff_len_ = 5; // by default, limit command buffer to 5 (size of advance run in KRL) 70 | 71 | // Timing 72 | ros::Duration control_period_; 73 | ros::Duration elapsed_time_; 74 | double loop_hz_; 75 | 76 | // Interfaces 77 | hardware_interface::JointStateInterface joint_state_interface_; 78 | hardware_interface::PositionJointInterface position_joint_interface_; 79 | 80 | // EKI socket read/write 81 | int eki_read_state_timeout_ = 5; // [s]; settable by parameter (default = 5) 82 | boost::asio::io_service ios_; 83 | boost::asio::deadline_timer deadline_; 84 | boost::asio::ip::udp::endpoint eki_server_endpoint_; 85 | boost::asio::ip::udp::socket eki_server_socket_; 86 | void eki_check_read_state_deadline(); 87 | static void eki_handle_receive(const boost::system::error_code &ec, size_t length, 88 | boost::system::error_code* out_ec, size_t* out_length); 89 | bool eki_read_state(std::vector &joint_position, std::vector &joint_velocity, 90 | std::vector &joint_effort, int &cmd_buff_len); 91 | bool eki_write_command(const std::vector &joint_position); 92 | 93 | public: 94 | 95 | KukaEkiHardwareInterface(); 96 | ~KukaEkiHardwareInterface(); 97 | 98 | void init(); 99 | void start(); 100 | void read(const ros::Time &time, const ros::Duration &period); 101 | void write(const ros::Time &time, const ros::Duration &period); 102 | }; 103 | 104 | } // namespace kuka_eki_hw_interface 105 | 106 | #endif // KUKA_EKI_HW_INTERFACE 107 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/krl/EkiHwInterface.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Client 5 | 6 | 7 | Program 8 | 9 | 10 | address.of.robot.controller 11 | 54600 12 | UDP 13 | 14 | 15 | 16 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/krl/README.md: -------------------------------------------------------------------------------- 1 | # Configuring EKI on the controller 2 | 3 | This guide highlights the steps needed in order to successfully configure the **EKI interface** on the controller to work with the **kuka_eki_hw_interface** on your PC with ROS. 4 | 5 | ## 1. Controller network configuration 6 | 7 | Windows runs behind the SmartHMI on the teach pad. Make sure that the **Windows interface** of the controller and the **PC with ROS** is connected to the same subnet. 8 | 9 | 1. Log in as **Expert** or **Administrator** on the teach pad and navigate to **Network configuration** (**Start-up > Network configuration > Activate advanced configuration**). 10 | 2. There should already be an interface checked out as the **Windows interface**. For example: 11 | * **IP**: `192.168.1.121` 12 | * **Subnet mask**: `255.255.255.0` 13 | * **Default gateway**: `192.168.1.121` 14 | * **Windows interface checkbox** should be checked. 15 | 3. Make note of the above IP address as you will need it later. 16 | 4. (Optional) Run **cmd.exe** and ping the PC you want to communicate with on the same subnet (e.g. 192.168.1.10). If your **PC** has an IP address on the same subnet as the **Windows interface** on the controller, the controller should receive answers from the PC. 17 | 18 | ## 2. KRL Files 19 | 20 | The files included in the `kuka_eki_hw_interface/krl` folder provide the KRL interface and Ethernet packet configurations. The XML files need to be modified to work for your specific configuration: 21 | 22 | ##### EkiHwInterface.xml 23 | 1. Edit the `IP` tag so that it corresponds to the IP address (`address.of.robot.controller`) corresponding to the **Windows interface** of the controller (noted earlier). 24 | 2. Keep the `PORT` tag as it is (`54600`) or change it if you want to use another port (must be in the range of `54600` to `54615`). 25 | 26 | Note that the `eki/robot_address` and `eki/robot_port` parameters of the `kuka_eki_hw_interface` must correspond to the `IP`and `PORT` set in this XML file. 27 | 28 | ##### Copy files to controller 29 | The files `kuka_eki_hw_interface.dat` and `kuke_eki_hw_interface.src` should not be edited. All files are now ready to be copied to the Kuka controller. Using WorkVisual or a USB drive (with appropriate privleges): 30 | 31 | 1. Copy `kuka_eki_hw_interface.dat` and `kuka_eki_hw_interface.src` files to `KRC:\R1\Program`. 32 | 2. Copy `EkiHwInterface.xml` to `C:\KRC\ROBOTER\Config\User\Common\EthernetKRL\`. 33 | 34 | ## 3. Configure the kuka_eki_hw_interface 35 | The **kuka_eki_hw_interface** needs to be configured in order to successfully communicate with EKI on the controller. Inside `/kuka_eki_hw_interface/test` and `/kuka_eki_hw_interface/config` in this repository is a set of `*.yaml` files. These configuration files may be loaded into a launch-file used to start the **kuka_eki_hw_interface** with correct parameters, such as: 36 | 37 | * **Joint names** corresponding to the robot description (URDF or .xacro). 38 | * **IP addresses** and **port numbers** corresponding to the EKI setup specified via the above XML files. 39 | 40 | We recommend that you copy the configuration files, edit the copies for your needs and use these files to create your own launch file. A template will be provided at a later time. However, at this time, have a look at `test_hardware_interface.launch`, `test_params.yaml`, `controller_joint_names.yaml` and `hardware_controllers.yaml` to achieve a working test-launch. 41 | 42 | In order to successfully launch the **kuka_eki_hw_interface** a parameter `robot_description` needs to be present on the ROS parameter server. This parameter can be set manually or by adding this line inside the launch file (replace support package and .xacro to match your application): 43 | 44 | ```xml 45 | 46 | ``` 47 | 48 | Make sure that the line is added before the `kuka_eki_hw_interface` itself is loaded. 49 | 50 | ##### Command Buffering Setup 51 | The driver currently limits the number of queued joint targets to prevent unbounded trajectory lag (error) that can occur when sufficiently dense target trajectories (temporal and/or spatial) are requested. The size of the buffer is set via the parameter `eki/max_cmd_buf_len`. When not present, the buffer defaults to five (5), which is the maximum number of instructions allowed in the controller's advance run (i.e., KRC internal interpolator lookahead). 52 | 53 | With the buffering active, overly dense trajectory points are dropped with the result being small and bounded trajectory lag at the expense of some positional deviation (dropped waypoints are not strictly enforced). For paths that require exact positional accuracy buffering can be disabled by setting the limit to a sufficiently large number (e.g., 512) with the caveat that dense trajectories might result in low-than-requested velocity and subsequent time lag. In other words, the buffering limit can be seen as a tradeoff between positional accuracy and time accuracy. 54 | 55 | ## 4. Testing 56 | At this point you are ready to test the EKI interface. Before the test, make sure that: 57 | 58 | * You have specified the `eki/robot_address` and `eki/robot_port` of the **kuka_eki_hw_interface** to correspond with the KRL files on the controller. 59 | * You have a launch-file loading the network parameters, robot description, kuka_hw_interface, hardware controller and controller joint names. 60 | 61 | The next steps describe how to launch the test file: 62 | 63 | * On the robot, start the servers 64 | 65 | 1. On the teach pad, enter mode **T1** for testing purposes. 66 | 2. Navigate to `KRC:\R1\Program` and select `kuka_eki_hw_interface.src`. 67 | 3. Press and hold an enabling switch and the run/play-button. The robot will release its breaks and a message like **Programmed path reached (BCO)** will be shown at the teach pad. 68 | 4. Press and hold again. The robot is now waiting for clients to connect. 69 | 70 | * On your ROS PC, in a new terminal: 71 | 72 | ``` 73 | $ roscore 74 | ``` 75 | 76 | * Open a new terminal and roslaunch the previously configured launch-file: 77 | 78 | ``` 79 | $ roslaunch kuka_eki_hw_interface test_hardware_interface.launch 80 | ``` 81 | 82 | The **kuka_eki_hw_interface** is now connected and streaming commands. 83 | 84 | 6. In a new terminal: 85 | 86 | ``` 87 | $ rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller 88 | ``` 89 | 90 | Choose **controller manager ns** and **controller** and you should be able to move each robot joint. 91 | 92 | * Note that T1-mode limits the robot movement velocity and is intended for testing purposes. 93 | 94 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/krl/kuka_eki_hw_interface.dat: -------------------------------------------------------------------------------- 1 | &ACCESS RVO 2 | defdat kuka_eki_hw_interface 3 | ext bas(bas_command :in,real :in ) 4 | enddat -------------------------------------------------------------------------------- /kuka_eki_hw_interface/launch/controller_spawner.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/launch/robot_interface_streaming.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 43 | 44 | 45 | 46 | 47 | eki: 48 | robot_address: "$(arg robot_ip)" 49 | robot_port: "$(arg port)" 50 | 51 | 52 | 56 | 57 | $(arg js_ctrlr): 58 | type: joint_state_controller/JointStateController 59 | publish_rate: 50 60 | 61 | # NOTE: these joint names MUST correspond to those specified in the 62 | # 'controller_joint_names' parameter (typically loaded by the 63 | # calling launch file) 64 | $(arg pos_ctrlr_name): 65 | type: "position_controllers/JointTrajectoryController" 66 | joints: 67 | - joint_a1 68 | - joint_a2 69 | - joint_a3 70 | - joint_a4 71 | - joint_a5 72 | - joint_a6 73 | 74 | state_publish_rate: 50 # Defaults to 50 75 | action_monitor_rate: 20 # Defaults to 20 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 88 | 91 | 92 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_eki_hw_interface 4 | 0.0.1 5 | A ROS-Control hardware interface for use with KUKA EKI 6 | Brett Hemes (3M) 7 | Brett Hemes (3M) 8 | G.A. vd. Hoorn (TU Delft Robotics Institute) 9 | BSD 10 | 11 | http://wiki.ros.org/kuka_eki_hw_interface 12 | https://github.com/ros-industrial/kuka_experimental/issues 13 | https://github.com/ros-industrial/kuka_experimental 14 | 15 | catkin 16 | 17 | angles 18 | cmake_modules 19 | 20 | controller_manager 21 | hardware_interface 22 | joint_limits_interface 23 | roscpp 24 | 25 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/src/kuka_eki_hw_interface_node.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2018, 3M 5 | * All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions are met: 9 | * 10 | * * Redistributions of source code must retain the above copyright 11 | * notice, this list of conditions and the following disclaimer. 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * * Neither the name of the copyright holder, nor the names of its 16 | * contributors may be used to endorse or promote products derived 17 | * from this software without specific prior written permission. 18 | * 19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 | * POSSIBILITY OF SUCH DAMAGE. 30 | */ 31 | 32 | // Author: Brett Hemes (3M) 33 | 34 | #include 35 | 36 | #include 37 | 38 | int main(int argc, char** argv) 39 | { 40 | ros::init(argc, argv, "kuka_eki_hw_interface"); 41 | 42 | ros::AsyncSpinner spinner(2); 43 | spinner.start(); 44 | 45 | ros::NodeHandle nh; 46 | 47 | kuka_eki_hw_interface::KukaEkiHardwareInterface hardware_interface; 48 | hardware_interface.init(); 49 | 50 | // Set up timers 51 | ros::Time timestamp; 52 | ros::Duration period; 53 | auto stopwatch_last = std::chrono::steady_clock::now(); 54 | auto stopwatch_now = stopwatch_last; 55 | 56 | controller_manager::ControllerManager controller_manager(&hardware_interface, nh); 57 | 58 | hardware_interface.start(); 59 | 60 | // Get current time and elapsed time since last read 61 | timestamp = ros::Time::now(); 62 | stopwatch_now = std::chrono::steady_clock::now(); 63 | period.fromSec(std::chrono::duration_cast>(stopwatch_now - stopwatch_last).count()); 64 | stopwatch_last = stopwatch_now; 65 | 66 | while (ros::ok()) 67 | { 68 | // Receive current state from robot 69 | hardware_interface.read(timestamp, period); 70 | 71 | // Get current time and elapsed time since last read 72 | timestamp = ros::Time::now(); 73 | stopwatch_now = std::chrono::steady_clock::now(); 74 | period.fromSec(std::chrono::duration_cast>(stopwatch_now - stopwatch_last).count()); 75 | stopwatch_last = stopwatch_now; 76 | 77 | // Update the controllers 78 | controller_manager.update(timestamp, period); 79 | 80 | // Send new setpoint to robot 81 | hardware_interface.write(timestamp, period); 82 | } 83 | 84 | spinner.stop(); 85 | ROS_INFO_STREAM_NAMED("kuka_eki_hw_interface", "Shutting down."); 86 | 87 | return 0; 88 | } 89 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/test/test_hardware_interface.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /kuka_eki_hw_interface/test/test_params.yaml: -------------------------------------------------------------------------------- 1 | eki: 2 | robot_address: "address.of.robot.controller" 3 | robot_port: "54600" 4 | socket_timeout: 5 5 | -------------------------------------------------------------------------------- /kuka_experimental/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(kuka_experimental) 3 | find_package(catkin REQUIRED) 4 | catkin_metapackage() 5 | -------------------------------------------------------------------------------- /kuka_experimental/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_experimental 4 | 0.1.0 5 | Experimental packages for KUKA manipulators within ROS-Industrial. 6 | Shaun Edwards 7 | G.A. vd. Hoorn (TU Delft Robotics Institute) 8 | BSD 9 | 10 | http://wiki.ros.org/kuka_experimental 11 | https://github.com/ros-industrial/kuka_experimental/issues 12 | https://github.com/ros-industrial/kuka_experimental 13 | 14 | catkin 15 | 16 | kuka_kr10_support 17 | kuka_kr120_support 18 | kuka_kr150_support 19 | kuka_kr16_support 20 | kuka_kr210_support 21 | kuka_kr5_support 22 | kuka_kr6_support 23 | kuka_lbr_iiwa_support 24 | kuka_resources 25 | kuka_eki_hw_interface 26 | kuka_rsi_hw_interface 27 | kuka_rsi_simulator 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /kuka_kr10_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | 3 | project(kuka_kr10_support) 4 | 5 | find_package(catkin REQUIRED) 6 | 7 | catkin_package() 8 | 9 | if (CATKIN_ENABLE_TESTING) 10 | find_package(roslaunch REQUIRED) 11 | roslaunch_add_file_check(test/roslaunch_test_kr10r900_2.xml) 12 | roslaunch_add_file_check(test/roslaunch_test_kr10r1100sixx.xml) 13 | roslaunch_add_file_check(test/roslaunch_test_kr10r1420.xml) 14 | endif() 15 | 16 | install(DIRECTORY config launch meshes urdf 17 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 18 | -------------------------------------------------------------------------------- /kuka_kr10_support/config/joint_names_kr10r1100sixx.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr10_support/config/joint_names_kr10r1420.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr10_support/config/joint_names_kr10r900_2.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr10_support/config/opw_parameters_kr10r1420.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Parameters for use with IK solvers which support OPW (Ortho-Parallel Wrist) 3 | # kinematic configurations, as described in the paper "An Analytical Solution 4 | # of the Inverse Kinematics Problem of Industrial Serial Manipulators with an 5 | # Ortho-parallel Basis and a Spherical Wrist" by Mathias Brandstötter, Arthur 6 | # Angerer, and Michael Hofbaur (Proceedings of the Austrian Robotics Workshop 7 | # 2014, 22-23 May, 2014, Linz, Austria). 8 | # 9 | # The moveit_opw_kinematics_plugin package provides such a solver. 10 | # 11 | opw_kinematics_geometric_parameters: 12 | a1: 0.150 13 | a2: -0.020 14 | b: 0.0 15 | c1: 0.450 16 | c2: 0.610 17 | c3: 0.660 18 | c4: 0.080 19 | opw_kinematics_joint_offsets: [0.0, deg(-90.0), 0.0, 0.0, 0.0, 0.0] 20 | opw_kinematics_joint_sign_corrections: [-1, 1, 1, -1, 1, -1] 21 | 22 | -------------------------------------------------------------------------------- /kuka_kr10_support/launch/load_kr10r1100sixx.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /kuka_kr10_support/launch/load_kr10r1420.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /kuka_kr10_support/launch/load_kr10r900_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /kuka_kr10_support/launch/test_kr10r1100sixx.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr10_support/launch/test_kr10r1420.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr10_support/launch/test_kr10r900_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/visual/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/visual/base_link.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/visual/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/visual/link_1.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/visual/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/visual/link_2.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/visual/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/visual/link_3.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/visual/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/visual/link_4.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/visual/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/visual/link_5.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1100sixx/visual/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1100sixx/visual/link_6.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/visual/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/visual/base_link.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/visual/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/visual/link_1.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/visual/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/visual/link_2.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/visual/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/visual/link_3.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/visual/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/visual/link_4.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/visual/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/visual/link_5.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r1420/visual/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r1420/visual/link_6.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/visual/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/visual/base_link.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/visual/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/visual/link_1.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/visual/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/visual/link_2.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/visual/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/visual/link_3.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/visual/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/visual/link_4.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/visual/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/visual/link_5.stl -------------------------------------------------------------------------------- /kuka_kr10_support/meshes/kr10r900_2/visual/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr10_support/meshes/kr10r900_2/visual/link_6.stl -------------------------------------------------------------------------------- /kuka_kr10_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_kr10_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA KR 10 (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for KUKA KR 10 manipulators. This currently includes the R1100 sixx only. 12 | From Agilus-2 series it currently includes the R900-2 only. 13 |

14 |

Specifications:

15 |
    16 |
  • KR 10 R900-2 - Default
  • 17 |
  • KR 10 R1100 sixx - Default
  • 18 |
  • KR 10 R1420 - Default
  • 19 |
20 |

21 | Joint limits and maximum joint velocities for the Agilus-2 variants 22 | are based on the information in the Kuka Deutschland GmbH - Kuka Robots 23 | KR AGILUS-2 Spezifikation version Spez KR AGILUS-2 V4, 29.01.2019. 24 | All urdfs are based on the default motion and joint velocity limits, 25 | unless noted otherwise (ie: no support for high speed joints, 26 | extended / limited motion ranges or other options). 27 |

28 |

29 | Joint limits and maximum joint velocities are based on the information 30 | in the KUKA Roboter GmbH - KR AGILUS sixx - With W and C Variants - 31 | Specification version Spez KR AGILUS sixx V12, 26.03.2015. 32 | All urdfs are based on the default motion and joint velocity limits, 33 | unless noted otherwise (ie: no support for high speed joints, 34 | extended / limited motion ranges or other options). 35 |

36 |

37 | Joint limits and maximum joint velocities are based on the information 38 | in the KUKA Roboter GmbH - KR CYBERTECH nano version 39 | Spez KR CYBERTECH nano V1, 25.07.2016. 40 | All urdfs are based on the default motion and joint velocity limits, 41 | unless noted otherwise (ie: no support for high speed joints, 42 | extended / limited motion ranges or other options). 43 |

44 |

45 | Before using any of the configuration files and / or meshes included 46 | in this package, be sure to check they are correct for the particular 47 | robot model and configuration you intend to use them with. 48 |

49 |
50 | Thibault Brevet (AATB GmbH) 51 | Christopher Schindlbeck (University of Hanover) 52 | Simon Schmeisser (Optonic GmbH) 53 | G.A. vd. Hoorn (TU Delft Robotics Institute) 54 | BSD 55 | 56 | http://wiki.ros.org/kuka_kr10_support 57 | https://github.com/ros-industrial/kuka_experimental/issues 58 | https://github.com/ros-industrial/kuka_experimental 59 | 60 | catkin 61 | 62 | roslaunch 63 | 64 | industrial_robot_client 65 | joint_state_publisher 66 | kuka_resources 67 | robot_state_publisher 68 | rviz 69 | xacro 70 | 71 | 72 | 73 | 74 |
75 | -------------------------------------------------------------------------------- /kuka_kr10_support/test/roslaunch_test_kr10r1100sixx.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr10_support/test/roslaunch_test_kr10r1420.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr10_support/test/roslaunch_test_kr10r900_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr10_support/urdf/kr10r1100sixx.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr10_support/urdf/kr10r1420.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr10_support/urdf/kr10r900_2.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr120_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | 3 | project(kuka_kr120_support) 4 | 5 | find_package(catkin REQUIRED) 6 | 7 | catkin_package() 8 | 9 | if (CATKIN_ENABLE_TESTING) 10 | find_package(roslaunch REQUIRED) 11 | roslaunch_add_file_check(test/roslaunch_test.xml) 12 | endif() 13 | 14 | install(DIRECTORY config launch meshes urdf 15 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 16 | -------------------------------------------------------------------------------- /kuka_kr120_support/config/joint_names_kr120r2500pro.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr120_support/launch/load_kr120r2500pro.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr120_support/launch/test_kr120r2500pro.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /kuka_kr120_support/meshes/kr120r2500pro/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr120_support/meshes/kr120r2500pro/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr120_support/meshes/kr120r2500pro/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr120_support/meshes/kr120r2500pro/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr120_support/meshes/kr120r2500pro/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr120_support/meshes/kr120r2500pro/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr120_support/meshes/kr120r2500pro/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr120_support/meshes/kr120r2500pro/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr120_support/meshes/kr120r2500pro/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr120_support/meshes/kr120r2500pro/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr120_support/meshes/kr120r2500pro/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr120_support/meshes/kr120r2500pro/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr120_support/meshes/kr120r2500pro/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr120_support/meshes/kr120r2500pro/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr120_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_kr120_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA KR 120 (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for KUKA KR 120 manipulators. This currently includes the R2500 PRO 12 | (KR QUANTEC PRO) only. 13 |

14 |

Specifications:

15 |
    16 |
  • KR 120 R2500 PRO - Default
  • 17 |
18 |

19 | Joint limits and maximum joint velocities are based on the information 20 | found in the online 21 | http://www.kuka-robotics.com/res/sps/e6c77545-9030-49b1-93f5-4d17c92173aa_Spez_KR_QUANTEC_pro_en.pdf. 22 | All urdfs are based on the default motion and joint velocity limits, 23 | unless noted otherwise. 24 |

25 |

26 | Before using any of the configuration files and / or meshes included 27 | in this package, be sure to check they are correct for the particular 28 | robot model and configuration you intend to use them with. 29 |

30 |
31 | Lars Tingelstad 32 | Lars Tingelstad 33 | G.A. vd. Hoorn (TU Delft Robotics Institute) 34 | BSD 35 | 36 | http://wiki.ros.org/kuka_kr120_support 37 | https://github.com/ros-industrial/kuka_experimental/issues 38 | https://github.com/ros-industrial/kuka_experimental 39 | 40 | catkin 41 | 42 | roslaunch 43 | 44 | industrial_robot_client 45 | joint_state_publisher 46 | robot_state_publisher 47 | rviz 48 | xacro 49 | 50 | 51 | 52 | 53 |
54 | -------------------------------------------------------------------------------- /kuka_kr120_support/test/roslaunch_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr120_support/urdf/kr120r2500pro.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /kuka_kr150_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | 3 | project(kuka_kr150_support) 4 | 5 | find_package(catkin REQUIRED) 6 | 7 | catkin_package() 8 | 9 | if (CATKIN_ENABLE_TESTING) 10 | find_package(roslaunch REQUIRED) 11 | roslaunch_add_file_check(test/roslaunch_test.xml) 12 | roslaunch_add_file_check(test/roslaunch_test_kr150r3100_2.xml) 13 | endif() 14 | 15 | install(DIRECTORY config launch meshes urdf 16 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 17 | -------------------------------------------------------------------------------- /kuka_kr150_support/config/joint_names_kr150.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr150_support/config/opw_parameters_kr150r3100_2.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Parameters for use with IK solvers which support OPW (Ortho-Parallel Wrist) 3 | # kinematic configurations, as described in the paper "An Analytical Solution 4 | # of the Inverse Kinematics Problem of Industrial Serial Manipulators with an 5 | # Ortho-parallel Basis and a Spherical Wrist" by Mathias Brandstötter, Arthur 6 | # Angerer, and Michael Hofbaur (Proceedings of the Austrian Robotics Workshop 7 | # 2014, 22-23 May, 2014, Linz, Austria). 8 | # 9 | # The moveit_opw_kinematics_plugin package provides such a solver. 10 | # 11 | opw_kinematics_geometric_parameters: 12 | a1: 0.33 13 | a2: -0.115 14 | b: 0.0 15 | c1: 0.645 16 | c2: 1.35 17 | c3: 1.42 18 | c4: 0.215 19 | opw_kinematics_joint_offsets: [0.0, deg(-90.0), 0.0, 0.0, 0.0, 0.0] 20 | opw_kinematics_joint_sign_corrections: [-1, 1, 1, -1, 1, -1] 21 | -------------------------------------------------------------------------------- /kuka_kr150_support/launch/load_kr150_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr150_support/launch/load_kr150r3100_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr150_support/launch/test_kr150_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr150_support/launch/test_kr150r3100_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150_2/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150_2/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150_2/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150_2/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150_2/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150_2/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150_2/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150_2/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150_2/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150_2/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150_2/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150_2/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150_2/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150_2/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/visual/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/visual/base_link.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/visual/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/visual/link_1.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/visual/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/visual/link_2.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/visual/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/visual/link_3.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/visual/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/visual/link_4.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/visual/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/visual/link_5.stl -------------------------------------------------------------------------------- /kuka_kr150_support/meshes/kr150r3100_2/visual/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr150_support/meshes/kr150r3100_2/visual/link_6.stl -------------------------------------------------------------------------------- /kuka_kr150_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_kr150_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA KR 150 (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for KUKA KR 150 manipulators. This currently includes the -2 variant 12 | only. 13 |

14 |

Specifications:

15 |
    16 |
  • KR 150-2 - Default
  • 17 |
  • KR 150 R3100-2 - Default
  • 18 |
19 |

20 | Joint limits and maximum joint velocities are based on the information 21 | found in Series 2000 KR 150-2, version PF0020/E/1/0709. 22 | All urdfs are based on the default motion and joint velocity limits, 23 | unless noted otherwise. 24 |

25 |

26 | Joint limits and maximum joint velocities of KR 150 R3100-2 are based on the information 27 | found in the online datasheet KR 150 R3100-2, version 0000-346-515 / V22.1 / 26.03.2021. 28 | All urdfs are based on the default motion and joint velocity limits, 29 | unless noted otherwise. 30 |

31 |

32 | Before using any of the configuration files and / or meshes included 33 | in this package, be sure to check they are correct for the particular 34 | robot model and configuration you intend to use them with. 35 |

36 |
37 | Dennis Hartmann 38 | Dennis Hartmann (KIT, IAR-IPR) 39 | G.A. vd. Hoorn (TU Delft Robotics Institute) 40 | BSD 41 | 42 | http://wiki.ros.org/kuka_kr150_support 43 | https://github.com/ros-industrial/kuka_experimental/issues 44 | https://github.com/ros-industrial/kuka_experimental 45 | 46 | catkin 47 | 48 | roslaunch 49 | 50 | industrial_robot_client 51 | joint_state_publisher 52 | robot_state_publisher 53 | rviz 54 | xacro 55 | 56 | 57 | 58 | 59 |
60 | -------------------------------------------------------------------------------- /kuka_kr150_support/test/roslaunch_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr150_support/test/roslaunch_test_kr150r3100_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr150_support/urdf/kr150_2.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr150_support/urdf/kr150r3100_2.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr16_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | 3 | project(kuka_kr16_support) 4 | 5 | find_package(catkin REQUIRED) 6 | 7 | catkin_package() 8 | 9 | if (CATKIN_ENABLE_TESTING) 10 | find_package(roslaunch REQUIRED) 11 | roslaunch_add_file_check(test/roslaunch_test.xml) 12 | endif() 13 | 14 | install(DIRECTORY config launch meshes urdf 15 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 16 | -------------------------------------------------------------------------------- /kuka_kr16_support/config/joint_names_kr16.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr16_support/launch/load_kr16_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr16_support/launch/test_kr16_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr16_support/meshes/kr16_2/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr16_support/meshes/kr16_2/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr16_support/meshes/kr16_2/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr16_support/meshes/kr16_2/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr16_support/meshes/kr16_2/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr16_support/meshes/kr16_2/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr16_support/meshes/kr16_2/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr16_support/meshes/kr16_2/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr16_support/meshes/kr16_2/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr16_support/meshes/kr16_2/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr16_support/meshes/kr16_2/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr16_support/meshes/kr16_2/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr16_support/meshes/kr16_2/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr16_support/meshes/kr16_2/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr16_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_kr16_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA KR16 (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for KUKA KR 16 manipulators. This currently includes the KR 16-2 only. 12 |

13 |

Specifications:

14 |
    15 |
  • KR 16-2 - Default
  • 16 |
17 |

18 | Joint limits and maximum joint velocities are based on the information 19 | found in the online datasheet here. All urdfs are based on the default motion and joint velocity limits, 20 | unless noted otherwise. 21 |

22 |

23 | Before using any of the configuration files and / or meshes included 24 | in this package, be sure to check they are correct for the particular 25 | robot model and configuration you intend to use them with. 26 |

27 |

28 | NB: this package currently uses non-valid inertia parameters. 29 |

30 |
31 | Lars Tingelstad 32 | Lars Tingelstad 33 | G.A. vd. Hoorn (TU Delft Robotics Institute) 34 | BSD 35 | 36 | http://wiki.ros.org/kuka_kr16_support 37 | https://github.com/ros-industrial/kuka_experimental/issues 38 | https://github.com/ros-industrial/kuka_experimental 39 | 40 | catkin 41 | 42 | roslaunch 43 | 44 | industrial_robot_client 45 | joint_state_publisher 46 | robot_state_publisher 47 | rviz 48 | xacro 49 | 50 | 51 | 52 | 53 |
54 | -------------------------------------------------------------------------------- /kuka_kr16_support/test/roslaunch_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr16_support/urdf/kr16_2.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /kuka_kr210_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(kuka_kr210_support) 3 | 4 | find_package(catkin REQUIRED) 5 | 6 | catkin_package() 7 | 8 | if (CATKIN_ENABLE_TESTING) 9 | find_package(roslaunch REQUIRED) 10 | roslaunch_add_file_check(test/roslaunch_test.xml) 11 | endif() 12 | 13 | install(DIRECTORY config launch meshes urdf 14 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 15 | -------------------------------------------------------------------------------- /kuka_kr210_support/config/joint_names_kr210l150.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr210_support/launch/load_kr210l150.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /kuka_kr210_support/launch/test_kr210l150.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /kuka_kr210_support/meshes/kr210l150/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr210_support/meshes/kr210l150/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr210_support/meshes/kr210l150/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr210_support/meshes/kr210l150/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr210_support/meshes/kr210l150/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr210_support/meshes/kr210l150/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr210_support/meshes/kr210l150/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr210_support/meshes/kr210l150/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr210_support/meshes/kr210l150/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr210_support/meshes/kr210l150/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr210_support/meshes/kr210l150/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr210_support/meshes/kr210l150/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr210_support/meshes/kr210l150/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr210_support/meshes/kr210l150/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr210_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_kr210_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA KR 210 (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for KUKA KR 210 manipulators. This currently includes the L150 only. 12 |

13 |

Specifications:

14 |
    15 |
  • KR 210 L150 - Default
  • 16 |
17 |

18 | Joint limits and maximum joint velocities are based on the information 19 | found in the online datasheet. 20 | All urdfs are based on the default motion and joint velocity limits, 21 | unless noted otherwise. 22 |

23 |

24 | Before using any of the configuration files and / or meshes included 25 | in this package, be sure to check they are correct for the particular 26 | robot model and configuration you intend to use them with. 27 |

28 |

29 | NB: this package currently uses non-valid inertia parameters. 30 |

31 |
32 | Shaun Edwards 33 | Shaun Edwards 34 | BSD 35 | 36 | http://wiki.ros.org/kuka_kr210_support 37 | https://github.com/ros-industrial/kuka_experimental/issues 38 | https://github.com/ros-industrial/kuka_experimental 39 | 40 | catkin 41 | 42 | roslaunch 43 | 44 | industrial_robot_client 45 | joint_state_publisher 46 | robot_state_publisher 47 | rviz 48 | xacro 49 | 50 | 51 | 52 | 53 |
54 | -------------------------------------------------------------------------------- /kuka_kr210_support/test/roslaunch_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr210_support/urdf/kr210l150.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr3_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | 3 | project(kuka_kr3_support) 4 | 5 | find_package(catkin REQUIRED) 6 | 7 | catkin_package() 8 | 9 | if (CATKIN_ENABLE_TESTING) 10 | find_package(roslaunch REQUIRED) 11 | roslaunch_add_file_check(test/roslaunch_test_kr3r540.xml) 12 | endif() 13 | 14 | install(DIRECTORY config launch meshes urdf 15 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 16 | -------------------------------------------------------------------------------- /kuka_kr3_support/config/joint_names_kr3r540.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr3_support/launch/load_kr3r540.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /kuka_kr3_support/launch/test_kr3r540.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/visual/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/visual/base_link.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/visual/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/visual/link_1.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/visual/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/visual/link_2.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/visual/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/visual/link_3.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/visual/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/visual/link_4.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/visual/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/visual/link_5.stl -------------------------------------------------------------------------------- /kuka_kr3_support/meshes/kr3r540/visual/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr3_support/meshes/kr3r540/visual/link_6.stl -------------------------------------------------------------------------------- /kuka_kr3_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_kr3_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA KR 3 (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for the KUKA KR 3 manipulators. This currently includes the R540 only. 12 |

13 |

Specifications:

14 |
    15 |
  • KR 3 R540 - Default
  • 16 |
17 |

18 | Joint limits and maximum joint velocities are based on the information 19 | in the KUKA Roboter GmbH - KR 3 AGILUS Specification version 20 | Spez KR 3 AGILUS V3, 21.03.2017. 21 | All urdfs are based on the default motion and joint velocity limits, 22 | unless noted otherwise (ie: no support for high speed joints, 23 | extended / limited motion ranges or other options). 24 |

25 |

26 | Before using any of the configuration files and / or meshes included 27 | in this package, be sure to check they are correct for the particular 28 | robot model and configuration you intend to use them with. 29 |

30 |
31 | Brett Hemes (3M) 32 | G.A. vd. Hoorn (TU Delft Robotics Institute) 33 | BSD 34 | 35 | http://wiki.ros.org/kuka_kr3_support 36 | https://github.com/ros-industrial/kuka_experimental/issues 37 | https://github.com/ros-industrial/kuka_experimental 38 | 39 | catkin 40 | 41 | roslaunch 42 | 43 | industrial_robot_client 44 | joint_state_publisher 45 | kuka_resources 46 | robot_state_publisher 47 | rviz 48 | xacro 49 | 50 | 51 | 52 | 53 |
54 | -------------------------------------------------------------------------------- /kuka_kr3_support/test/roslaunch_test_kr3r540.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /kuka_kr3_support/urdf/kr3r540.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr5_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | 3 | project(kuka_kr5_support) 4 | 5 | find_package(catkin REQUIRED) 6 | 7 | catkin_package() 8 | 9 | if (CATKIN_ENABLE_TESTING) 10 | find_package(roslaunch REQUIRED) 11 | roslaunch_add_file_check(test/roslaunch_test.xml) 12 | endif() 13 | 14 | install(DIRECTORY config launch meshes urdf 15 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 16 | -------------------------------------------------------------------------------- /kuka_kr5_support/config/joint_names_kr5.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr5_support/config/opw_kinematics_kr5.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Parameters for use with IK solvers which support OPW (Ortho-Parallel Wrist) 3 | # kinematic configurations, as described in the paper "An Analytical Solution 4 | # of the Inverse Kinematics Problem of Industrial Serial Manipulators with an 5 | # Ortho-parallel Basis and a Spherical Wrist" by Mathias Brandstötter, Arthur 6 | # Angerer, and Michael Hofbaur (Proceedings of the Austrian Robotics Workshop 7 | # 2014, 22-23 May, 2014, Linz, Austria). 8 | # 9 | # The moveit_opw_kinematics_plugin package provides such a solver. 10 | # 11 | opw_kinematics_geometric_parameters: 12 | a1: 0.180 13 | a2: -0.120 14 | b: 0.000 15 | c1: 0.400 16 | c2: 0.600 17 | c3: 0.620 18 | c4: 0.115 19 | opw_kinematics_joint_offsets: [0.0, -1.57079632679, 0, 0, 0, 0] 20 | opw_kinematics_joint_sign_corrections: [-1, 1, 1, -1, 1, -1] 21 | -------------------------------------------------------------------------------- /kuka_kr5_support/launch/load_kr5_arc.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr5_support/launch/test_kr5_arc.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr5_support/meshes/kr5_arc/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr5_support/meshes/kr5_arc/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr5_support/meshes/kr5_arc/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr5_support/meshes/kr5_arc/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr5_support/meshes/kr5_arc/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr5_support/meshes/kr5_arc/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr5_support/meshes/kr5_arc/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr5_support/meshes/kr5_arc/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr5_support/meshes/kr5_arc/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr5_support/meshes/kr5_arc/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr5_support/meshes/kr5_arc/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr5_support/meshes/kr5_arc/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr5_support/meshes/kr5_arc/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr5_support/meshes/kr5_arc/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr5_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_kr5_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA KR5 (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for KUKA KR 5 manipulators. This currently includes the KR 5 arc only. 12 |

13 |

Specifications:

14 |
    15 |
  • KR 5 arc - Default
  • 16 |
17 |

18 | Joint limits and maximum joint velocities are based on the information 19 | found in the online datasheet here. All urdfs are based on the default motion and joint velocity limits, 20 | unless noted otherwise. 21 |

22 |

23 | Before using any of the configuration files and / or meshes included 24 | in this package, be sure to check they are correct for the particular 25 | robot model and configuration you intend to use them with. 26 |

27 |

28 | NB: this package currently uses non-valid inertia parameters. 29 |

30 |
31 | Denis Štogl 32 | Denis Štogl (KIT, IAR-IPR) 33 | G.A. vd. Hoorn (TU Delft Robotics Institute) 34 | BSD 35 | 36 | http://wiki.ros.org/kuka_kr5_support 37 | https://github.com/ros-industrial/kuka_experimental/issues 38 | https://github.com/ros-industrial/kuka_experimental 39 | 40 | catkin 41 | 42 | roslaunch 43 | 44 | industrial_robot_client 45 | joint_state_publisher 46 | robot_state_publisher 47 | rviz 48 | xacro 49 | 50 | 51 | 52 | 53 |
54 | -------------------------------------------------------------------------------- /kuka_kr5_support/test/roslaunch_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr5_support/urdf/kr5_arc.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr6_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | 3 | project(kuka_kr6_support) 4 | 5 | find_package(catkin REQUIRED) 6 | 7 | catkin_package() 8 | 9 | if (CATKIN_ENABLE_TESTING) 10 | find_package(roslaunch REQUIRED) 11 | roslaunch_add_file_check(test/roslaunch_test_kr6r700sixx.xml) 12 | roslaunch_add_file_check(test/roslaunch_test_kr6r900sixx.xml) 13 | roslaunch_add_file_check(test/roslaunch_test_kr6r900_2.xml) 14 | endif() 15 | 16 | install(DIRECTORY config launch meshes urdf 17 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 18 | -------------------------------------------------------------------------------- /kuka_kr6_support/config/joint_names_kr6r700sixx.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr6_support/config/joint_names_kr6r900sixx.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr6_support/config/joint_names_kuka_kr6_r900_2.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6'] 2 | -------------------------------------------------------------------------------- /kuka_kr6_support/config/opw_kinematics_kr6r700sixx.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Parameters for use with IK solvers which support OPW (Ortho-Parallel Wrist) 3 | # kinematic configurations, as described in the paper "An Analytical Solution 4 | # of the Inverse Kinematics Problem of Industrial Serial Manipulators with an 5 | # Ortho-parallel Basis and a Spherical Wrist" by Mathias Brandstötter, Arthur 6 | # Angerer, and Michael Hofbaur (Proceedings of the Austrian Robotics Workshop 7 | # 2014, 22-23 May, 2014, Linz, Austria). 8 | # 9 | # The moveit_opw_kinematics_plugin package provides such a solver. 10 | # 11 | opw_kinematics_geometric_parameters: 12 | a1: 0.025 13 | a2: -0.035 14 | b: 0.000 15 | c1: 0.400 16 | c2: 0.315 17 | c3: 0.365 18 | c4: 0.080 19 | opw_kinematics_joint_offsets: [0.0, -1.57079632679, 0, 0, 0, 0] 20 | opw_kinematics_joint_sign_corrections: [-1, 1, 1, -1, 1, -1] 21 | -------------------------------------------------------------------------------- /kuka_kr6_support/config/opw_parameters_kr6r900_2.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Parameters for use with IK solvers which support OPW (Ortho-Parallel Wrist) 3 | # kinematic configurations, as described in the paper "An Analytical Solution 4 | # of the Inverse Kinematics Problem of Industrial Serial Manipulators with an 5 | # Ortho-parallel Basis and a Spherical Wrist" by Mathias Brandstötter, Arthur 6 | # Angerer, and Michael Hofbaur (Proceedings of the Austrian Robotics Workshop 7 | # 2014, 22-23 May, 2014, Linz, Austria). 8 | # 9 | # The moveit_opw_kinematics_plugin package provides such a solver. 10 | # 11 | opw_kinematics_geometric_parameters: 12 | a1: 0.025 13 | a2: -0.025 14 | b: 0.000 15 | c1: 0.400 16 | c2: 0.455 17 | c3: 0.420 18 | c4: 0.090 19 | opw_kinematics_joint_offsets: [0.0, deg(-90.0), 0.0, 0.0, 0.0, 0.0] 20 | opw_kinematics_joint_sign_corrections: [-1, 1, 1, -1, 1, -1] 21 | -------------------------------------------------------------------------------- /kuka_kr6_support/launch/load_kr6r700sixx.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /kuka_kr6_support/launch/load_kr6r900_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /kuka_kr6_support/launch/load_kr6r900sixx.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /kuka_kr6_support/launch/test_kr6r700sixx.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr6_support/launch/test_kr6r900_2.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr6_support/launch/test_kr6r900sixx.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6_agilus/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6_agilus/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6_agilus/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6_agilus/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6_agilus/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6_agilus/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6_agilus/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6_agilus/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6_agilus/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6_agilus/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6r700sixx/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6r700sixx/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6r700sixx/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6r700sixx/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6r900sixx/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6r900sixx/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_kr6_support/meshes/kr6r900sixx/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_kr6_support/meshes/kr6r900sixx/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_kr6_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_kr6_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA KR 6 (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for KUKA KR 6 manipulators. This currently includes the R700 sixx, 12 | the R900 sixx and the R900-2. 13 |

14 |

Specifications:

15 |
    16 |
  • KR 6 R700 sixx - Default
  • 17 |
  • KR 6 R900 sixx - Default
  • 18 |
  • KR 6 R900-2 - Default
  • 19 |
20 |

21 | Joint limits and maximum joint velocities for sixx models are based on the information 22 | in the KUKA Roboter GmbH - KR AGILUS sixx - With W and C Variants - 23 | Specification version Spez KR AGILUS sixx V12, 26.03.2015. 24 | Joint limits and maximum joint velocities for R900-2 are based on the information 25 | in the KUKA Deutschland GmbH - Robots KR AGILUS-2 Specification version V4, 26.02.2019. 26 | All urdfs are based on the default motion and joint velocity limits, 27 | unless noted otherwise (ie: no support for high speed joints, 28 | extended / limited motion ranges or other options). 29 |

30 |

31 | Before using any of the configuration files and / or meshes included 32 | in this package, be sure to check they are correct for the particular 33 | robot model and configuration you intend to use them with. 34 |

35 |

36 | Note: the KR6 R900-2 urdf reuses meshes from the kuka_kr10_support package because of their identical appearance. 37 |

38 |
39 | G.A. vd. Hoorn (TU Delft Robotics Institute) 40 | Brett Hemes (3M) 41 | G.A. vd. Hoorn (TU Delft Robotics Institute) 42 | BSD 43 | 44 | http://wiki.ros.org/kuka_kr6_support 45 | https://github.com/ros-industrial/kuka_experimental/issues 46 | https://github.com/ros-industrial/kuka_experimental 47 | 48 | catkin 49 | 50 | roslaunch 51 | 52 | industrial_robot_client 53 | joint_state_publisher 54 | kuka_kr10_support 55 | kuka_resources 56 | robot_state_publisher 57 | rviz 58 | xacro 59 | 60 | 61 | 62 | 63 |
64 | -------------------------------------------------------------------------------- /kuka_kr6_support/test/roslaunch_test_kr6r700sixx.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr6_support/test/roslaunch_test_kr6r900_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr6_support/test/roslaunch_test_kr6r900sixx.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /kuka_kr6_support/urdf/kr6r700sixx.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /kuka_kr6_support/urdf/kr6r900_2.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_kr6_support/urdf/kr6r900sixx.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(kuka_lbr_iiwa_support) 3 | 4 | find_package(catkin REQUIRED) 5 | 6 | catkin_package() 7 | 8 | install(DIRECTORY config launch urdf 9 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 10 | 11 | # temporarily: until sources are moved to other org/rep 12 | install( 13 | DIRECTORY 14 | meshes/lbr_iiwa_14_r820/collision 15 | DESTINATION 16 | ${CATKIN_PACKAGE_SHARE_DESTINATION}/meshes/lbr_iiwa_14_r820/) 17 | 18 | # temporarily: until sources are moved to other org/rep 19 | install( 20 | DIRECTORY 21 | meshes/lbr_iiwa_14_r820/visual 22 | DESTINATION 23 | ${CATKIN_PACKAGE_SHARE_DESTINATION}/meshes/lbr_iiwa_14_r820/) 24 | -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/config/joint_names_lbr_iiwa.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ['joint_a1', 'joint_a2', 'joint_a3', 'joint_a4', 'joint_a5', 'joint_a6', 'joint_a7'] 2 | -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/launch/load_lbr_iiwa_14_r820.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/launch/test_lbr_iiwa_14_r820.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/base_link.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/base_link.stl -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_1.stl -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_2.stl -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_3.stl -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_4.stl -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_5.stl -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_6.stl -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_7.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-industrial/kuka_experimental/8d9292b04a22628b1b78d989e2ddd3abb913bf92/kuka_lbr_iiwa_support/meshes/lbr_iiwa_14_r820/collision/link_7.stl -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_lbr_iiwa_support 4 | 0.1.0 5 | 6 |

7 | ROS-Industrial support for the KUKA LBR IIWA (and variants). 8 |

9 |

10 | This package contains configuration data, 3D models and launch files 11 | for KUKA LBR IIWA manipulators. This currently includes the base model. 12 |

13 |

14 | Joint limits and max joint velocities are based on the information in 15 | the KUKA data sheets online. 16 | All urdf's / xacro's are based on the default motion and joint velocity 17 | limits, unless noted otherwise (ie: no support for high speed joints, 18 | extended / limited motion ranges or other options). 19 |

20 |

21 | Before using any of the configuration files and / or meshes included 22 | in this package, be sure to check they are correct for the particular 23 | robot model and configuration you intend to use them with. 24 |

25 |
26 | Levi Armstrong (Southwest Research Institute) 27 | Levi Armstrong (Southwest Research Institute) 28 | G.A. vd. Hoorn (TU Delft Robotics Institute) 29 | 30 | Apache 2.0 31 | 32 | http://wiki.ros.org/kuka_lbr_iiwa_support 33 | https://github.com/ros-industrial/kuka_experimental/issues 34 | https://github.com/ros-industrial/kuka_experimental 35 | 36 | catkin 37 | 38 | roslaunch 39 | 40 | industrial_robot_client 41 | joint_state_publisher 42 | robot_state_publisher 43 | rviz 44 | xacro 45 | 46 | 47 | 48 | 49 |
50 | -------------------------------------------------------------------------------- /kuka_lbr_iiwa_support/urdf/lbr_iiwa_14_r820.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /kuka_resources/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(kuka_resources) 3 | 4 | find_package(catkin REQUIRED) 5 | 6 | catkin_package() 7 | 8 | install(DIRECTORY urdf 9 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 10 | -------------------------------------------------------------------------------- /kuka_resources/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_resources 4 | 0.1.0 5 | 6 |

7 | Shared resources for KUKA manipulators within ROS-Industrial. 8 |

9 |

10 | This package contains common urdf / xacro resources used by KUKA robot 11 | support packages within the ROS-Industrial program. 12 |

13 |
14 | G.A. vd. Hoorn (TU Delft Robotics Institute) 15 | G.A. vd. Hoorn (TU Delft Robotics Institute) 16 | Apache2 17 | 18 | http://wiki.ros.org/kuka_resources 19 | https://github.com/ros-industrial/kuka_experimental/issues 20 | https://github.com/ros-industrial/kuka_experimental 21 | 22 | catkin 23 | 24 | 25 | 26 | 27 |
28 | -------------------------------------------------------------------------------- /kuka_resources/urdf/common_colours.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 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 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /kuka_resources/urdf/common_constants.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /kuka_resources/urdf/common_materials.xacro: -------------------------------------------------------------------------------- 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 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.1.0) 2 | project(kuka_rsi_hw_interface) 3 | 4 | set(CMAKE_CXX_STANDARD 11) 5 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 6 | 7 | find_package(catkin REQUIRED COMPONENTS 8 | cmake_modules 9 | controller_manager 10 | hardware_interface 11 | joint_limits_interface 12 | realtime_tools 13 | roscpp 14 | std_msgs 15 | ) 16 | 17 | find_package(Boost REQUIRED COMPONENTS system) 18 | find_package(TinyXML REQUIRED) 19 | 20 | 21 | catkin_package( 22 | CATKIN_DEPENDS 23 | controller_manager 24 | hardware_interface 25 | joint_limits_interface 26 | roscpp 27 | std_msgs 28 | DEPENDS 29 | TinyXML 30 | ) 31 | 32 | 33 | include_directories( 34 | include 35 | ${catkin_INCLUDE_DIRS} 36 | ${Boost_INCLUDE_DIRS} 37 | ${TinyXML_INCLUDE_DIRS} 38 | ) 39 | 40 | add_library(kuka_hardware_interface 41 | src/kuka_hardware_interface.cpp 42 | ) 43 | 44 | target_link_libraries(kuka_hardware_interface 45 | ${catkin_LIBRARIES} 46 | ${Boost_LIBRARIES} 47 | ${TinyXML_LIBRARIES} 48 | ) 49 | 50 | add_executable(kuka_hardware_interface_node 51 | src/kuka_hardware_interface_node.cpp 52 | ) 53 | 54 | target_link_libraries(kuka_hardware_interface_node 55 | kuka_hardware_interface 56 | ) 57 | 58 | install( 59 | TARGETS kuka_hardware_interface 60 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 61 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 62 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}) 63 | 64 | install( 65 | TARGETS kuka_hardware_interface_node 66 | RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 67 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/config/controller_joint_names.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ["joint_a1", "joint_a2", "joint_a3", "joint_a4", "joint_a5", "joint_a6"] 2 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/config/hardware_controllers.yaml: -------------------------------------------------------------------------------- 1 | #Publish all joint states 2 | joint_state_controller: 3 | type: joint_state_controller/JointStateController 4 | publish_rate: 50 5 | 6 | # Joint trajectory controller 7 | position_trajectory_controller: 8 | type: "position_controllers/JointTrajectoryController" 9 | joints: 10 | - joint_a1 11 | - joint_a2 12 | - joint_a3 13 | - joint_a4 14 | - joint_a5 15 | - joint_a6 16 | 17 | state_publish_rate: 50 # Defaults to 50 18 | action_monitor_rate: 20 # Defaults to 20 19 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/kuka_hardware_interface.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2014 Norwegian University of Science and Technology 5 | * All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions 9 | * are met: 10 | * 11 | * * Redistributions of source code must retain the above copyright 12 | * notice, this list of conditions and the following disclaimer. 13 | * * Redistributions in binary form must reproduce the above 14 | * copyright notice, this list of conditions and the following 15 | * disclaimer in the documentation and/or other materials provided 16 | * with the distribution. 17 | * * Neither the name of the Norwegian University of Science and 18 | * Technology, nor the names of its contributors may be used to 19 | * endorse or promote products derived from this software without 20 | * specific prior written permission. 21 | * 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 25 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 26 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 27 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 28 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 30 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 32 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33 | * POSSIBILITY OF SUCH DAMAGE. 34 | *********************************************************************/ 35 | 36 | /* 37 | * Author: Lars Tingelstad 38 | */ 39 | 40 | #ifndef KUKA_RSI_HARDWARE_INTERFACE_KUKA_HARDWARE_INTERFACE_ 41 | #define KUKA_RSI_HARDWARE_INTERFACE_KUKA_HARDWARE_INTERFACE_ 42 | 43 | // STL 44 | #include 45 | #include 46 | 47 | // ROS 48 | #include 49 | #include 50 | 51 | 52 | // ros_control 53 | #include 54 | #include 55 | #include 56 | #include 57 | #include 58 | 59 | // Timers 60 | #include 61 | 62 | // UDP server 63 | #include 64 | 65 | // RSI 66 | #include 67 | #include 68 | 69 | namespace kuka_rsi_hw_interface 70 | { 71 | 72 | static const double RAD2DEG = 57.295779513082323; 73 | static const double DEG2RAD = 0.017453292519943295; 74 | 75 | class KukaHardwareInterface : public hardware_interface::RobotHW 76 | { 77 | 78 | private: 79 | 80 | // ROS node handle 81 | ros::NodeHandle nh_; 82 | 83 | unsigned int n_dof_; 84 | 85 | std::vector joint_names_; 86 | 87 | std::vector joint_position_; 88 | std::vector joint_velocity_; 89 | std::vector joint_effort_; 90 | std::vector joint_position_command_; 91 | std::vector joint_velocity_command_; 92 | std::vector joint_effort_command_; 93 | 94 | // RSI 95 | RSIState rsi_state_; 96 | RSICommand rsi_command_; 97 | std::vector rsi_initial_joint_positions_; 98 | std::vector rsi_joint_position_corrections_; 99 | unsigned long long ipoc_; 100 | 101 | std::unique_ptr > rt_rsi_pub_; 102 | 103 | std::unique_ptr server_; 104 | std::string local_host_; 105 | int local_port_; 106 | std::string remote_host_; 107 | std::string remote_port_; 108 | std::string in_buffer_; 109 | std::string out_buffer_; 110 | 111 | // Timing 112 | ros::Duration control_period_; 113 | ros::Duration elapsed_time_; 114 | double loop_hz_; 115 | 116 | // Interfaces 117 | hardware_interface::JointStateInterface joint_state_interface_; 118 | hardware_interface::PositionJointInterface position_joint_interface_; 119 | 120 | public: 121 | 122 | KukaHardwareInterface(); 123 | ~KukaHardwareInterface(); 124 | 125 | void start(); 126 | void configure(); 127 | bool read(const ros::Time time, const ros::Duration period); 128 | bool write(const ros::Time time, const ros::Duration period); 129 | 130 | }; 131 | 132 | } // namespace kuka_rsi_hw_interface 133 | 134 | #endif 135 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/rsi_command.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2014 Norwegian University of Science and Technology 5 | * All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions 9 | * are met: 10 | * 11 | * * Redistributions of source code must retain the above copyright 12 | * notice, this list of conditions and the following disclaimer. 13 | * * Redistributions in binary form must reproduce the above 14 | * copyright notice, this list of conditions and the following 15 | * disclaimer in the documentation and/or other materials provided 16 | * with the distribution. 17 | * * Neither the name of the Univ of CO, Boulder nor the names of its 18 | * contributors may be used to endorse or promote products derived 19 | * from this software without specific prior written permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | * POSSIBILITY OF SUCH DAMAGE. 33 | *********************************************************************/ 34 | 35 | /* 36 | * Author: Lars Tingelstad 37 | */ 38 | 39 | #ifndef KUKA_RSI_HW_INTERFACE_RSI_COMMAND_ 40 | #define KUKA_RSI_HW_INTERFACE_RSI_COMMAND_ 41 | 42 | #include 43 | #include 44 | 45 | namespace kuka_rsi_hw_interface 46 | { 47 | 48 | class RSICommand 49 | { 50 | public: 51 | RSICommand(); 52 | RSICommand(std::vector position_corrections, unsigned long long ipoc); 53 | std::string xml_doc; 54 | }; 55 | 56 | RSICommand::RSICommand() 57 | { 58 | // Intentionally empty 59 | } 60 | 61 | RSICommand::RSICommand(std::vector joint_position_correction, unsigned long long ipoc) 62 | { 63 | TiXmlDocument doc; 64 | TiXmlElement* root = new TiXmlElement("Sen"); 65 | root->SetAttribute("Type", "ImFree"); 66 | TiXmlElement* el = new TiXmlElement("AK"); 67 | // Add string attribute 68 | el->SetAttribute("A1", std::to_string(joint_position_correction[0])); 69 | el->SetAttribute("A2", std::to_string(joint_position_correction[1])); 70 | el->SetAttribute("A3", std::to_string(joint_position_correction[2])); 71 | el->SetAttribute("A4", std::to_string(joint_position_correction[3])); 72 | el->SetAttribute("A5", std::to_string(joint_position_correction[4])); 73 | el->SetAttribute("A6", std::to_string(joint_position_correction[5])); 74 | 75 | root->LinkEndChild(el); 76 | el = new TiXmlElement("IPOC"); 77 | el->LinkEndChild(new TiXmlText(std::to_string(ipoc))); 78 | root->LinkEndChild(el); 79 | doc.LinkEndChild(root); 80 | TiXmlPrinter printer; 81 | printer.SetStreamPrinting(); 82 | doc.Accept(&printer); 83 | 84 | xml_doc = printer.Str(); 85 | } 86 | 87 | } // namespace kuka_rsi_hw_interface 88 | 89 | #endif 90 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/rsi_state.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2014 Norwegian University of Science and Technology 5 | * All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions 9 | * are met: 10 | * 11 | * * Redistributions of source code must retain the above copyright 12 | * notice, this list of conditions and the following disclaimer. 13 | * * Redistributions in binary form must reproduce the above 14 | * copyright notice, this list of conditions and the following 15 | * disclaimer in the documentation and/or other materials provided 16 | * with the distribution. 17 | * * Neither the name of the Univ of CO, Boulder nor the names of its 18 | * contributors may be used to endorse or promote products derived 19 | * from this software without specific prior written permission. 20 | * 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | * POSSIBILITY OF SUCH DAMAGE. 33 | *********************************************************************/ 34 | 35 | /* 36 | * Author: Lars Tingelstad 37 | */ 38 | 39 | #ifndef KUKA_RSI_HW_INTERFACE_RSI_STATE_ 40 | #define KUKA_RSI_HW_INTERFACE_RSI_STATE_ 41 | 42 | #include 43 | #include 44 | 45 | namespace kuka_rsi_hw_interface 46 | { 47 | 48 | class RSIState 49 | { 50 | 51 | private: 52 | std::string xml_doc_; 53 | 54 | public: 55 | RSIState() : 56 | positions(6, 0.0), 57 | initial_positions(6, 0.0), 58 | cart_position(6, 0.0), 59 | initial_cart_position(6, 0.0) 60 | { 61 | xml_doc_.resize(1024); 62 | } 63 | 64 | RSIState(std::string xml_doc); 65 | // AIPOS 66 | std::vector positions; 67 | // ASPos 68 | std::vector initial_positions; 69 | // RIst 70 | std::vector cart_position; 71 | // RSol 72 | std::vector initial_cart_position; 73 | // IPOC 74 | unsigned long long ipoc; 75 | 76 | }; 77 | 78 | RSIState::RSIState(std::string xml_doc) : 79 | xml_doc_(xml_doc), 80 | positions(6, 0.0), 81 | initial_positions(6, 0.0), 82 | cart_position(6, 0.0), 83 | initial_cart_position(6, 0.0) 84 | { 85 | // Parse message from robot 86 | TiXmlDocument bufferdoc; 87 | bufferdoc.Parse(xml_doc_.c_str()); 88 | // Get the Rob node: 89 | TiXmlElement* rob = bufferdoc.FirstChildElement("Rob"); 90 | // Extract axis specific actual position 91 | TiXmlElement* AIPos_el = rob->FirstChildElement("AIPos"); 92 | AIPos_el->Attribute("A1", &positions[0]); 93 | AIPos_el->Attribute("A2", &positions[1]); 94 | AIPos_el->Attribute("A3", &positions[2]); 95 | AIPos_el->Attribute("A4", &positions[3]); 96 | AIPos_el->Attribute("A5", &positions[4]); 97 | AIPos_el->Attribute("A6", &positions[5]); 98 | // Extract axis specific setpoint position 99 | TiXmlElement* ASPos_el = rob->FirstChildElement("ASPos"); 100 | ASPos_el->Attribute("A1", &initial_positions[0]); 101 | ASPos_el->Attribute("A2", &initial_positions[1]); 102 | ASPos_el->Attribute("A3", &initial_positions[2]); 103 | ASPos_el->Attribute("A4", &initial_positions[3]); 104 | ASPos_el->Attribute("A5", &initial_positions[4]); 105 | ASPos_el->Attribute("A6", &initial_positions[5]); 106 | // Extract cartesian actual position 107 | TiXmlElement* RIst_el = rob->FirstChildElement("RIst"); 108 | RIst_el->Attribute("X", &cart_position[0]); 109 | RIst_el->Attribute("Y", &cart_position[1]); 110 | RIst_el->Attribute("Z", &cart_position[2]); 111 | RIst_el->Attribute("A", &cart_position[3]); 112 | RIst_el->Attribute("B", &cart_position[4]); 113 | RIst_el->Attribute("C", &cart_position[5]); 114 | // Extract cartesian actual position 115 | TiXmlElement* RSol_el = rob->FirstChildElement("RSol"); 116 | RSol_el->Attribute("X", &initial_cart_position[0]); 117 | RSol_el->Attribute("Y", &initial_cart_position[1]); 118 | RSol_el->Attribute("Z", &initial_cart_position[2]); 119 | RSol_el->Attribute("A", &initial_cart_position[3]); 120 | RSol_el->Attribute("B", &initial_cart_position[4]); 121 | RSol_el->Attribute("C", &initial_cart_position[5]); 122 | // Get the IPOC timestamp 123 | TiXmlElement* ipoc_el = rob->FirstChildElement("IPOC"); 124 | ipoc = std::stoull(ipoc_el->FirstChild()->Value()); 125 | } 126 | 127 | } // namespace kuka_rsi_hw_interface 128 | 129 | #endif 130 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/udp_server.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2014 Norwegian University of Science and Technology 5 | * All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions 9 | * are met: 10 | * 11 | * * Redistributions of source code must retain the above copyright 12 | * notice, this list of conditions and the following disclaimer. 13 | * * Redistributions in binary form must reproduce the above 14 | * copyright notice, this list of conditions and the following 15 | * disclaimer in the documentation and/or other materials provided 16 | * with the distribution. 17 | * * Neither the name of the Norwegian University of Science and 18 | * Technology, nor the names of its contributors may be used to 19 | * endorse or promote products derived from this software without 20 | * specific prior written permission. 21 | * 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 25 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 26 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 27 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 28 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 30 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 32 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33 | * POSSIBILITY OF SUCH DAMAGE. 34 | *********************************************************************/ 35 | 36 | /* 37 | * Author: Lars Tingelstad 38 | */ 39 | 40 | #ifndef KUKA_RSI_HARDWARE_INTERFACE_UDP_SERVER_ 41 | #define KUKA_RSI_HARDWARE_INTERFACE_UDP_SERVER_ 42 | 43 | #include 44 | #include 45 | #include 46 | 47 | // Select includes 48 | #include 49 | 50 | #include 51 | #include 52 | #include 53 | #include 54 | #include 55 | #include 56 | #include 57 | #include 58 | #include 59 | 60 | #define BUFSIZE 1024 61 | 62 | class UDPServer 63 | { 64 | public: 65 | UDPServer(std::string host, unsigned short port) : local_host_(host), local_port_(port), timeout_(false) 66 | { 67 | sockfd_ = socket(AF_INET, SOCK_DGRAM, 0); 68 | if (sockfd_ < 0) 69 | throw std::runtime_error("Error opening socket: " + std::string(strerror(errno))); 70 | optval = 1; 71 | setsockopt(sockfd_, SOL_SOCKET, SO_REUSEADDR, (const void *)&optval , sizeof(int)); 72 | memset(&serveraddr_, 0, sizeof(serveraddr_)); 73 | serveraddr_.sin_family = AF_INET; 74 | serveraddr_.sin_addr.s_addr = inet_addr(local_host_.c_str()); 75 | serveraddr_.sin_port = htons(local_port_); 76 | if (bind(sockfd_, (struct sockaddr *) &serveraddr_, sizeof(serveraddr_)) < 0) 77 | throw std::runtime_error("Error binding socket: " + std::string(strerror(errno))); 78 | clientlen_ = sizeof(clientaddr_); 79 | } 80 | 81 | ~UDPServer() 82 | { 83 | close(sockfd_); 84 | } 85 | 86 | bool set_timeout(int millisecs) 87 | { 88 | if (millisecs != 0) 89 | { 90 | tv_.tv_sec = millisecs / 1000; 91 | tv_.tv_usec = (millisecs % 1000) * 1000; 92 | timeout_ = true; 93 | return timeout_; 94 | } 95 | else 96 | { 97 | return timeout_; 98 | } 99 | } 100 | 101 | ssize_t send(std::string& buffer) 102 | { 103 | ssize_t bytes = 0; 104 | bytes = sendto(sockfd_, buffer.c_str(), buffer.size(), 0, (struct sockaddr *) &clientaddr_, clientlen_); 105 | if (bytes < 0) 106 | { 107 | std::cout << "ERROR in sendto" << std::endl; 108 | } 109 | 110 | return bytes; 111 | } 112 | 113 | ssize_t recv(std::string& buffer) 114 | { 115 | ssize_t bytes = 0; 116 | 117 | if (timeout_) 118 | { 119 | fd_set read_fds; 120 | FD_ZERO(&read_fds); 121 | FD_SET(sockfd_, &read_fds); 122 | 123 | struct timeval tv; 124 | tv.tv_sec = tv_.tv_sec; 125 | tv.tv_usec = tv_.tv_usec; 126 | 127 | if (select(sockfd_+1, &read_fds, NULL, NULL, &tv) < 0) 128 | { 129 | return 0; 130 | } 131 | 132 | if (FD_ISSET(sockfd_, &read_fds)) 133 | { 134 | memset(buffer_, 0, BUFSIZE); 135 | bytes = recvfrom(sockfd_, buffer_, BUFSIZE, 0, (struct sockaddr *) &clientaddr_, &clientlen_); 136 | if (bytes < 0) 137 | { 138 | std::cout << "ERROR in recvfrom" << std::endl; 139 | } 140 | } 141 | else 142 | { 143 | return 0; 144 | } 145 | 146 | } 147 | else 148 | { 149 | memset(buffer_, 0, BUFSIZE); 150 | bytes = recvfrom(sockfd_, buffer_, BUFSIZE, 0, (struct sockaddr *) &clientaddr_, &clientlen_); 151 | if (bytes < 0) 152 | { 153 | std::cout << "ERROR in recvfrom" << std::endl; 154 | } 155 | } 156 | 157 | buffer = std::string(buffer_); 158 | 159 | return bytes; 160 | } 161 | 162 | private: 163 | std::string local_host_; 164 | unsigned short local_port_; 165 | bool timeout_; 166 | struct timeval tv_; 167 | 168 | int sockfd_; 169 | socklen_t clientlen_; 170 | struct sockaddr_in serveraddr_; 171 | struct sockaddr_in clientaddr_; 172 | char buffer_[BUFSIZE]; 173 | int optval; 174 | 175 | }; 176 | 177 | #endif 178 | 179 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/krl/KR_C2/README.md: -------------------------------------------------------------------------------- 1 | # Configuring RSI on the controller 2 | 3 | This guide highlights the steps needed in order to successfully configure the **RSI interface** on the KR-C2 controller to work with the **kuka_rsi_hardware_interface** on your PC with ROS. 4 | 5 | ## 1. Controller network configuration 6 | 7 | Controller setup is described in chapter 4 of the **KUKA.Ethernet RSI XML 1.1** manual. 8 | **KUKA.RobotSensorInterface** package must be installed. Depending on the version of the **KUKA.RobotSensorInterface** package you might also need the **KUKA.Ethernet RSI XML**. This can be verified in the *InstallTech* window (`Setup -> 9 Install additional Software` on the KCP). 9 | 10 | Make sure not to use the `192.0.1.x` IP range for the controller or PC. 11 | 12 | From the Ethernet RSI XML manual: 13 | 14 | > The IP address range 192.0.1.x is reserved and is disabled for applications. 15 | > Configuring the VxWorks network connection with this address range results in a system error in the KUKA system software. It is no longer possible to boot the robot controller. 16 | 17 | Ping the controller from the PC with ROS to make sure the network configuration is working. 18 | 19 | 20 | ## 2. KRL Files 21 | 22 | The files included in this folder specifies the data transferred via RSI. Some of the files needs to be modified to work for your specific configuration. 23 | 24 | ##### ros_rsi_ethernet.xml 25 | 26 | 1. Edit the `IP_NUMBER` tag so that it corresponds to the IP address of the PC running `kuka_rsi_hw_interface`. 27 | 2. Keep the `PORT` tag as it is (49152) or change it if you want to use another port. 28 | 29 | Note that the `rsi/listen_address` and `rsi/listen_port` parameters of the `kuka_rsi_hw_interface` must correspond to the `IP_NUMBER`and `PORT` set in these KRL files. 30 | 31 | 32 | ##### ros_rsi.src 33 | 34 | This should only be edited if the start position or max joint movements specified within the file is not desirable for your application. These variables are inside the Configuration fold. 35 | 36 | ##### Copy files to controller 37 | 38 | 1. Copy the `ros_rsi.src` file to `KRC:\R1\Program` (Alternatively `C:\KRC\ROBOTER\KRC\R1\Program`) 39 | 2. Copy the `ros_rsi_ethernet.xml` file to `C:\KRC\ROBOTER\Init` 40 | 41 | Note: You must reload KSS or reboot the controller if `ros_rsi.src` is not created / copied using the HMI. 42 | 43 | ## 3. Configure the kuka_rsi_hw_interface 44 | 45 | The **kuka_rsi_hardware_interface** needs to be configured in order to successfully communicate with RSI. Inside `/kuka_rsi_hw_interface/test` and `/kuka_rsi_hw_interface/config` in this repository is a set of `*.yaml` files. These configuration files may be loaded into a launch-file used to start the **kuka_rsi_hardware_interface** with correct parameters, such as: 46 | 47 | * **Joint names** corresponding to the robot description (URDF or .xacro). 48 | * **IP address** and **port** corresponding to the RSI setup specified in **ros_rsi_ethernet.xml**. 49 | 50 | We recommend that you copy the configuration files, edit the copies for your needs and use these files to create your own launch file. A template will be provided at a later time. However, at this time, have a look at `test_hardware_interface.launch`, `test_params.yaml`, `controller_joint_names.yaml` and `hardware_controllers.yaml` to achieve a working test-launch. 51 | 52 | In order to successfully launch the **kuka_rsi_hardware_interface** a parameter `robot_description` needs to be present on the ROS parameter server. This parameter can be set manually or by adding this line inside the launch file (replace support package and `.xacro` to match your application): 53 | 54 | ``` 55 | 56 | ``` 57 | 58 | Make sure that the line is added before the `kuka_hardware_interface` itself is loaded. 59 | 60 | ## 4. Testing 61 | 62 | At this point you are ready to test the RSI interface. Before the test, make sure that: 63 | 64 | * You have specified the `rsi/listen_address` and `rsi/listen_port` of the **kuka_rsi_hardware_interface** to correspond with the KRL files on the controller. 65 | * You have a launch-file loading the network parameters, robot description, kuka_hardware_interface, hardware controller and controller joint names. 66 | 67 | The next steps describe how to launch the test file: 68 | 69 | * In a new terminal: 70 | 71 | ``` 72 | $ roscore 73 | ``` 74 | 75 | * Open a new terminal and roslaunch the previously configured launch-file: 76 | 77 | ``` 78 | $ roslaunch kuka_rsi_hw_interface test_hardware_interface.launch sim:=false 79 | ``` 80 | 81 | The **kuka_rsi_hardware_interface** is now waiting for the robot controller to connect. Follow the next steps to connect RSI: 82 | 83 | 1. On the teach pad, enter mode **T1** for testing purposes. 84 | 2. Navigate to `KRC:\R1\Program` and select `ros_rsi.src`. 85 | 3. Press and hold an enabling switch and the run/play-button. The robot will first move to the start position. 86 | * A message like **Programmed path reached (BCO)** will be shown at the teach pad. 87 | 4. Press and hold again. The teach pad will post a warning **!!!Attention –RSI sensor mode active!!!**. 88 | 5. Confirm the warning and press and hold the buttons again. This time the terminal where **kuka_rsi_hardware_interface** is running should output **Got connection from robot**. The RSI connection is now up and running. 89 | 6. In a new terminal: 90 | 91 | ``` 92 | $ rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller 93 | ``` 94 | 95 | Choose **controller manager ns** and **controller** and you should be able to move each robot joint. 96 | 97 | * Note that T1-mode limits the robot movement velocity and is intended for testing purposes. 98 | 99 | ## 5. Troubleshooting 100 | 101 | ### RSI: Error in function 102 | 103 | Problems establishing connection between robot or PC. Check IP, port and that the **kuka_rsi_hardware_interface** is running on the PC. May also come from malformed XML in `ros_rsi_ethernet.xml`. 104 | 105 | 106 | ### SEN: RSI execution error - RSI stopped 107 | 108 | Most likely due to late packages. From the Ethernet RSI XML manual: 109 | 110 | > A data packet received by the external system must be answered within approx. 10 ms. If the data packet is not received by the robot controller within this period, the response is classified as too late. When the maximum number of external data packets for which a response has been sent too late has been exceeded, the robot interprets this as an error and stops. 111 | 112 | If you have problems with the connection to RSI shutting down now and then while moving the robot it is suggested to: 113 | 114 | * Compile and install a [RT-Preempt](https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO) kernel for your PC. 115 | * Give **kuka_rsi_hardware_interface** on your PC real-time priority when the RSI connection is established. 116 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/krl/KR_C2/ros_rsi.src: -------------------------------------------------------------------------------- 1 | &ACCESS RVP 2 | &REL 54 3 | &PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe 4 | &PARAM EDITMASK = * 5 | DEF ros_rsi( ) 6 | 7 | ; ============================================= 8 | ; 9 | ; Software License Agreement (BSD License) 10 | ; 11 | ; Copyright (c) 2017 Norwegian University of Science and Technology 12 | ; All rights reserved. 13 | ; 14 | ; Redistribution and use in source and binary forms, with or without 15 | ; modification, are permitted provided that the following conditions 16 | ; are met: 17 | ; 18 | ; * Redistributions of source code must retain the above copyright 19 | ; notice, this list of conditions and the following disclaimer. 20 | ; * Redistributions in binary form must reproduce the above 21 | ; copyright notice, this list of conditions and the following 22 | ; disclaimer in the documentation and/or other materials provided 23 | ; with the distribution. 24 | ; * Neither the name of the Norwegian University of Science and 25 | ; Technology, nor the names of its contributors may be used to 26 | ; endorse or promote products derived from this software without 27 | ; specific prior written permission. 28 | ; 29 | ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 30 | ; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 31 | ; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 32 | ; FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 33 | ; COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 34 | ; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 35 | ; BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 36 | ; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 37 | ; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 38 | ; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 39 | ; ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 40 | ; POSSIBILITY OF SUCH DAMAGE. 41 | ; 42 | ; ============================================= 43 | 44 | 45 | ; FOLD VAR DECLARATION 46 | CHAR configFileName[21] ;ST_ETHERNET object configuration file 47 | DECL RSIERR err ;Error value from RSI commands 48 | REAL lowerBound[12], upperBound[12] ;Bounds for motion control 49 | INT i ;Counter variable used in for-loops 50 | DECL AXIS HOME ; HOME position 51 | INT containerID, hEthernet, hAxis, numAxes ;Container IDs 52 | ; ENDFOLD VAR DECLARATION 53 | 54 | ;FOLD INI 55 | ;FOLD BASISTECH INI 56 | GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) 57 | INTERRUPT ON 3 58 | BAS (#INITMOV,0 ) 59 | ;ENDFOLD (BASISTECH INI) 60 | ;FOLD USER INI 61 | ;Make your modifications here 62 | 63 | ;ENDFOLD (USER INI) 64 | ;ENDFOLD (INI) 65 | 66 | ;FOLD Configuration 67 | numAxes = 6 ; Number of axes on robot 68 | HOME = {AXIS: A1 0, A2 -90, A3 90, A4 0, A5 90, A6 0} ; Start position 69 | configFileName[] = "ros_rsi_ethernet.xml" ; Name of XML file. Should be in c:/krc/roboter/init 70 | 71 | ; Internal axes 72 | lowerBound[1] = -100 ; lower limit A1 axis correction 73 | upperBound[1] = 100 ; upper limit A1 axis correction 74 | lowerBound[2] = -100 ; lower limit A2 axis correction 75 | upperBound[2] = 100 ; upper limit A2 axis correction 76 | lowerBound[3] = -100 ; lower limit A3 axis correction 77 | upperBound[3] = 100 ; upper limit A3 axis correction 78 | lowerBound[4] = -100 ; lower limit A4 axis correction 79 | upperBound[4] = 100 ; upper limit A4 axis correction 80 | lowerBound[5] = -100 ; lower limit A5 axis correction 81 | upperBound[5] = 100 ; upper limit A5 axis correction 82 | lowerBound[6] = -100 ; lower limit A6 axis correction 83 | upperBound[6] = 100 ; upper limit A6 axis correction 84 | 85 | ; External axes 86 | lowerBound[7] = -100 ; lower limit E1 axis correction 87 | upperBound[7] = 100 ; upper limit E1 axis correction 88 | lowerBound[8] = -100 ; lower limit E2 axis correction 89 | upperBound[8] = 100 ; upper limit E2 axis correction 90 | lowerBound[9] = -100 ; lower limit E3 axis correction 91 | upperBound[9] = 100 ; upper limit E3 axis correction 92 | lowerBound[10] = -100 ; lower limit E4 axis correction 93 | upperBound[10] = 100 ; upper limit E4 axis correction 94 | lowerBound[11] = -100 ; lower limit E5 axis correction 95 | upperBound[11] = 100 ; upper limit E5 axis correction 96 | lowerBound[12] = -100 ; lower limit E6 axis correction 97 | upperBound[12] = 100 ; upper limit E6 axis correction 98 | 99 | 100 | 101 | ;ENDFOLD Configuration 102 | 103 | 104 | ; Move to start position 105 | PTP $AXIS_ACT ; Be able to use PTP without all axes in HOME 106 | PTP HOME 107 | 108 | ; Create RSI Ethernet object 109 | containerID = 0 110 | err = ST_ETHERNET(hEthernet,containerID,configFileName[]) 111 | IF (err <> #RSIOK) THEN 112 | HALT 113 | ENDIF 114 | 115 | ; Object for axis correction. 116 | err = ST_AXISCORR(hAxis, containerID) 117 | IF (err <> #RSIOK) THEN 118 | HALT 119 | ENDIF 120 | 121 | ; Link axis correction objects from XML file 122 | for i=1 TO numAxes 123 | err = ST_NEWLINK(hEthernet,i,hAxis,i) 124 | IF err<>#RSIOK THEN 125 | HALT 126 | ENDIF 127 | ENDFOR 128 | 129 | ; Set integration mode (0 absolute, 1 relative) 130 | err = ST_SETPARAM(hAxis,1,0) 131 | IF err<>#RSIOK THEN 132 | HALT 133 | ENDIF 134 | 135 | ; Set lowerBound axis correction 136 | for i=2 TO numAxes+1 137 | err = ST_SETPARAM(hAxis,i,lowerBound[i-1]); 138 | IF err<>#RSIOK THEN 139 | HALT 140 | ENDIF 141 | ENDFOR 142 | 143 | ; Set upperBound axis correction 144 | for i=14 TO numAxes+13 145 | err = ST_SETPARAM(hAxis,i,upperBound[i-13]); 146 | IF err<>#RSIOK THEN 147 | HALT 148 | ENDIF 149 | ENDFOR 150 | 151 | ; Start RSI execution 152 | err = ST_ON() 153 | IF (err <> #RSIOK) THEN 154 | HALT 155 | ENDIF 156 | 157 | ; Runs untill RSI break 158 | ST_SKIPSENS() 159 | 160 | ; Turn off RSI 161 | err = ST_OFF() 162 | IF (err <> #RSIOK) THEN 163 | HALT 164 | ENDIF 165 | 166 | ; Go back to home position 167 | ; PTP HOME 168 | 169 | END 170 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/krl/KR_C2/ros_rsi_ethernet.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ip.address.of.rospc 4 | 49152 5 | UDP 6 | ImFree 7 | FALSE 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/krl/KR_C4/ros_rsi.rsi.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 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/krl/KR_C4/ros_rsi.src: -------------------------------------------------------------------------------- 1 | &ACCESS RVP 2 | &REL 4 3 | &PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe 4 | &PARAM EDITMASK = * 5 | DEF RSI_AxisCorr( ) 6 | 7 | ; ============================================= 8 | ; 9 | ; Software License Agreement (BSD License) 10 | ; 11 | ; Copyright (c) 2014 Norwegian University of Science and Technology 12 | ; All rights reserved. 13 | ; 14 | ; Redistribution and use in source and binary forms, with or without 15 | ; modification, are permitted provided that the following conditions 16 | ; are met: 17 | ; 18 | ; * Redistributions of source code must retain the above copyright 19 | ; notice, this list of conditions and the following disclaimer. 20 | ; * Redistributions in binary form must reproduce the above 21 | ; copyright notice, this list of conditions and the following 22 | ; disclaimer in the documentation and/or other materials provided 23 | ; with the distribution. 24 | ; * Neither the name of the Norwegian University of Science and 25 | ; Technology, nor the names of its contributors may be used to 26 | ; endorse or promote products derived from this software without 27 | ; specific prior written permission. 28 | ; 29 | ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 30 | ; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 31 | ; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 32 | ; FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 33 | ; COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 34 | ; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 35 | ; BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 36 | ; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 37 | ; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 38 | ; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 39 | ; ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 40 | ; POSSIBILITY OF SUCH DAMAGE. 41 | ; 42 | ; ============================================= 43 | 44 | ; ============================================= 45 | ; 46 | ; ROS INDUSTRIAL: KUKA RSI HW INTERFACE 47 | ; Realtime UDP data exchange with 48 | ; kuka_rsi_hw_interface 49 | ; 50 | ; ============================================= 51 | 52 | ; Declaration of KRL variables 53 | DECL INT ret ; Return value for RSI commands 54 | DECL INT CONTID ; ContainerID 55 | 56 | ;FOLD INI 57 | ;FOLD BASISTECH INI 58 | GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) 59 | INTERRUPT ON 3 60 | BAS (#INITMOV,0 ) 61 | ;ENDFOLD (BASISTECH INI) 62 | ;FOLD USER INI 63 | ;Make your modifications here 64 | 65 | ;ENDFOLD (USER INI) 66 | ;ENDFOLD (INI) 67 | 68 | ; Move to start position 69 | PTP {A1 0, A2 -90, A3 90, A4 0, A5 90, A6 0} 70 | 71 | ; Create RSI Context 72 | ret = RSI_CREATE("ros_rsi.rsi",CONTID,TRUE) 73 | IF (ret <> RSIOK) THEN 74 | HALT 75 | ENDIF 76 | 77 | ; Start RSI execution 78 | ret = RSI_ON(#ABSOLUTE) 79 | IF (ret <> RSIOK) THEN 80 | HALT 81 | ENDIF 82 | 83 | ; Sensor guided movement 84 | RSI_MOVECORR() 85 | 86 | ; Turn off RSI 87 | ret = RSI_OFF() 88 | IF (ret <> RSIOK) THEN 89 | HALT 90 | ENDIF 91 | 92 | PTP {A1 0, A2 -90, A3 90, A4 0, A5 90, A6 0} 93 | 94 | END 95 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/krl/KR_C4/ros_rsi_ethernet.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ip.address.of.rospc 4 | 49152 5 | ImFree 6 | FALSE 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/launch/controller_spawner.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_rsi_hw_interface 4 | 0.1.0 5 | A ROS-Control hardware interface for use with KUKA RSI 6 | Lars Tingelstad 7 | Lars Tingelstad 8 | G.A. vd. Hoorn (TU Delft Robotics Institute) 9 | BSD 10 | 11 | http://wiki.ros.org/kuka_rsi_hw_interface 12 | https://github.com/ros-industrial/kuka_experimental/issues 13 | https://github.com/ros-industrial/kuka_experimental 14 | 15 | catkin 16 | 17 | cmake_modules 18 | 19 | controller_manager 20 | hardware_interface 21 | joint_limits_interface 22 | realtime_tools 23 | roscpp 24 | std_msgs 25 | 26 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/src/kuka_hardware_interface_node.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2014 Norwegian University of Science and Technology 5 | * All rights reserved. 6 | * 7 | * Redistribution and use in source and binary forms, with or without 8 | * modification, are permitted provided that the following conditions 9 | * are met: 10 | * 11 | * * Redistributions of source code must retain the above copyright 12 | * notice, this list of conditions and the following disclaimer. 13 | * * Redistributions in binary form must reproduce the above 14 | * copyright notice, this list of conditions and the following 15 | * disclaimer in the documentation and/or other materials provided 16 | * with the distribution. 17 | * * Neither the name of the Norwegian University of Science and 18 | * Technology, nor the names of its contributors may be used to 19 | * endorse or promote products derived from this software without 20 | * specific prior written permission. 21 | * 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 25 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 26 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 27 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 28 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 30 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 32 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33 | * POSSIBILITY OF SUCH DAMAGE. 34 | *********************************************************************/ 35 | 36 | /* 37 | * Author: Lars Tingelstad 38 | */ 39 | 40 | #include 41 | 42 | int main(int argc, char** argv) 43 | { 44 | ROS_INFO_STREAM_NAMED("hardware_interface", "Starting hardware interface..."); 45 | 46 | ros::init(argc, argv, "kuka_rsi_hardware_interface"); 47 | 48 | ros::AsyncSpinner spinner(2); 49 | spinner.start(); 50 | 51 | ros::NodeHandle nh; 52 | 53 | kuka_rsi_hw_interface::KukaHardwareInterface kuka_rsi_hw_interface; 54 | kuka_rsi_hw_interface.configure(); 55 | 56 | // Set up timers 57 | ros::Time timestamp; 58 | ros::Duration period; 59 | auto stopwatch_last = std::chrono::steady_clock::now(); 60 | auto stopwatch_now = stopwatch_last; 61 | 62 | controller_manager::ControllerManager controller_manager(&kuka_rsi_hw_interface, nh); 63 | 64 | kuka_rsi_hw_interface.start(); 65 | 66 | // Get current time and elapsed time since last read 67 | timestamp = ros::Time::now(); 68 | stopwatch_now = std::chrono::steady_clock::now(); 69 | period.fromSec(std::chrono::duration_cast>(stopwatch_now - stopwatch_last).count()); 70 | stopwatch_last = stopwatch_now; 71 | 72 | // Run as fast as possible 73 | while (ros::ok()) 74 | //while (!g_quit) 75 | { 76 | // Receive current state from robot 77 | if (!kuka_rsi_hw_interface.read(timestamp, period)) 78 | { 79 | ROS_FATAL_NAMED("kuka_hardware_interface", "Failed to read state from robot. Shutting down!"); 80 | ros::shutdown(); 81 | } 82 | 83 | // Get current time and elapsed time since last read 84 | timestamp = ros::Time::now(); 85 | stopwatch_now = std::chrono::steady_clock::now(); 86 | period.fromSec(std::chrono::duration_cast>(stopwatch_now - stopwatch_last).count()); 87 | stopwatch_last = stopwatch_now; 88 | 89 | // Update the controllers 90 | controller_manager.update(timestamp, period); 91 | 92 | // Send new setpoint to robot 93 | kuka_rsi_hw_interface.write(timestamp, period); 94 | } 95 | 96 | spinner.stop(); 97 | ROS_INFO_STREAM_NAMED("hardware_interface", "Shutting down."); 98 | 99 | return 0; 100 | 101 | } 102 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/ag1_controller_joint_names.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ["ag1_joint_1", "ag1_joint_2", "ag1_joint_3", "ag1_joint_4", "ag1_joint_5", "ag1_joint_6"] 2 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/ag1_hw_controllers.yaml: -------------------------------------------------------------------------------- 1 | #Publish all joint states 2 | joint_state_controller: 3 | type: joint_state_controller/JointStateController 4 | publish_rate: 50 5 | 6 | # Joint trajectory controller 7 | position_trajectory_controller: 8 | type: "position_controllers/JointTrajectoryController" 9 | joints: 10 | - ag1_joint_1 11 | - ag1_joint_2 12 | - ag1_joint_3 13 | - ag1_joint_4 14 | - ag1_joint_5 15 | - ag1_joint_6 16 | state_publish_rate: 50 # Defaults to 50 17 | action_monitor_rate: 20 # Defaults to 20 18 | 19 | 20 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/ag1_params.yaml: -------------------------------------------------------------------------------- 1 | rsi: 2 | listen_address: "192.168.1.11" 3 | listen_port: 49151 4 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/ag2_controller_joint_names.yaml: -------------------------------------------------------------------------------- 1 | controller_joint_names: ["ag2_joint_1", "ag2_joint_2", "ag2_joint_3", "ag2_joint_4", "ag2_joint_5", "ag2_joint_6"] 2 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/ag2_hw_controllers.yaml: -------------------------------------------------------------------------------- 1 | #Publish all joint states 2 | joint_state_controller: 3 | type: joint_state_controller/JointStateController 4 | publish_rate: 50 5 | 6 | # Joint trajectory controller 7 | position_trajectory_controller: 8 | type: "position_controllers/JointTrajectoryController" 9 | joints: 10 | - ag2_joint_1 11 | - ag2_joint_2 12 | - ag2_joint_3 13 | - ag2_joint_4 14 | - ag2_joint_5 15 | - ag2_joint_6 16 | state_publish_rate: 50 # Defaults to 50 17 | action_monitor_rate: 20 # Defaults to 20 18 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/ag2_params.yaml: -------------------------------------------------------------------------------- 1 | rsi: 2 | listen_address: "192.168.1.11" 3 | listen_port: 49152 4 | 5 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/test_hardware_interface.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/test_params.yaml: -------------------------------------------------------------------------------- 1 | rsi: 2 | listen_address: "192.168.1.67" 3 | listen_port: 49152 4 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/test_params_sim.yaml: -------------------------------------------------------------------------------- 1 | rsi: 2 | listen_address: "127.0.0.1" 3 | listen_port: 49152 4 | -------------------------------------------------------------------------------- /kuka_rsi_hw_interface/test/test_two_robots.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | 36 | 37 | 38 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /kuka_rsi_simulator/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(kuka_rsi_simulator) 3 | 4 | find_package(catkin REQUIRED) 5 | 6 | catkin_package() 7 | 8 | install( 9 | PROGRAMS scripts/kuka_rsi_simulator 10 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}/scripts) 11 | 12 | install(DIRECTORY launch 13 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 14 | -------------------------------------------------------------------------------- /kuka_rsi_simulator/README.md: -------------------------------------------------------------------------------- 1 | # KUKA Simulation 2 | 3 | This package contains components for simulation of KUKA robots using the KUKA.RobotSensorInterface. 4 | -------------------------------------------------------------------------------- /kuka_rsi_simulator/launch/kuka_rsi_simulator.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /kuka_rsi_simulator/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | kuka_rsi_simulator 4 | 0.1.0 5 | Python node that implements a minimal RSI interface simulator. 6 | Lars Tingelstad 7 | Lars Tingelstad 8 | G.A. vd. Hoorn (TU Delft Robotics Institute) 9 | BSD 10 | 11 | http://wiki.ros.org/kuka_rsi_simulator 12 | https://github.com/ros-industrial/kuka_experimental/issues 13 | https://github.com/ros-industrial/kuka_experimental 14 | 15 | catkin 16 | 17 | rospy 18 | std_msgs 19 | 20 | -------------------------------------------------------------------------------- /kuka_rsi_simulator/scripts/kuka_rsi_simulator: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import sys 4 | import socket 5 | import numpy as np 6 | import time 7 | import xml.etree.ElementTree as ET 8 | 9 | import errno 10 | import rospy 11 | from std_msgs.msg import String 12 | 13 | def create_rsi_xml_rob(act_joint_pos, setpoint_joint_pos, timeout_count, ipoc): 14 | q = act_joint_pos 15 | qd = setpoint_joint_pos 16 | root = ET.Element('Rob', {'TYPE':'KUKA'}) 17 | ET.SubElement(root, 'RIst', {'X':'0.0', 'Y':'0.0', 'Z':'0.0', 18 | 'A':'0.0', 'B':'0.0', 'C':'0.0'}) 19 | ET.SubElement(root, 'RSol', {'X':'0.0', 'Y':'0.0', 'Z':'0.0', 20 | 'A':'0.0', 'B':'0.0', 'C':'0.0'}) 21 | ET.SubElement(root, 'AIPos', {'A1':str(q[0]), 'A2':str(q[1]), 'A3':str(q[2]), 22 | 'A4':str(q[3]), 'A5':str(q[4]), 'A6':str(q[5])}) 23 | ET.SubElement(root, 'ASPos', {'A1':str(qd[0]), 'A2':str(qd[1]), 'A3':str(qd[2]), 24 | 'A4':str(qd[3]), 'A5':str(qd[4]), 'A6':str(qd[5])}) 25 | ET.SubElement(root, 'Delay', {'D':str(timeout_count)}) 26 | ET.SubElement(root, 'IPOC').text=str(ipoc) 27 | return ET.tostring(root) 28 | 29 | def parse_rsi_xml_sen(data): 30 | root = ET.fromstring(data) 31 | AK = root.find('AK').attrib 32 | desired_joint_correction = np.array([AK['A1'], AK['A2'], AK['A3'], 33 | AK['A4'], AK['A5'], AK['A6']]).astype(np.float64) 34 | IPOC = root.find('IPOC').text 35 | return desired_joint_correction, int(IPOC) 36 | 37 | node_name = 'kuka_rsi_simulation' 38 | rsi_act_pub = rospy.Publisher(node_name + '/rsi/state', String, queue_size=1) 39 | rsi_cmd_pub = rospy.Publisher(node_name + '/rsi/command', String, queue_size=1) 40 | 41 | cycle_time = 0.004 42 | act_joint_pos = np.array([0, -90, 90, 0, 90, 0]).astype(np.float64) 43 | cmd_joint_pos = act_joint_pos.copy() 44 | des_joint_correction_absolute = np.zeros(6) 45 | timeout_count = 0 46 | ipoc = 0 47 | 48 | if __name__ == '__main__': 49 | import argparse 50 | parser = argparse.ArgumentParser(description='KUKA RSI Simulation') 51 | parser.add_argument('rsi_hw_iface_ip', help='The ip address of the RSI control interface') 52 | parser.add_argument('rsi_hw_iface_port', help='The port of the RSI control interface') 53 | parser.add_argument('--sen', default='ImFree', help='Type attribute in RSI XML doc. E.g. ') 54 | # Only parse known arguments 55 | args, _ = parser.parse_known_args() 56 | host = args.rsi_hw_iface_ip 57 | port = int(args.rsi_hw_iface_port) 58 | sen_type = args.sen 59 | 60 | rospy.init_node(node_name) 61 | rospy.loginfo('{}: Started'.format(node_name)) 62 | 63 | try: 64 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 65 | rospy.loginfo('{}, Successfully created socket'.format(node_name)) 66 | s.settimeout(1) 67 | except socket.error as e: 68 | rospy.logfatal('{}Could not create socket'.format(node_name)) 69 | sys.exit() 70 | 71 | def shutdown_hook(): 72 | rospy.loginfo('{}: Shutting down'.format(node_name)) 73 | s.close() 74 | 75 | rospy.on_shutdown(shutdown_hook) 76 | 77 | while not rospy.is_shutdown(): 78 | try: 79 | msg = create_rsi_xml_rob(act_joint_pos, cmd_joint_pos, timeout_count, ipoc) 80 | rsi_act_pub.publish(msg) 81 | s.sendto(msg, (host, port)) 82 | recv_msg, addr = s.recvfrom(1024) 83 | rsi_cmd_pub.publish(recv_msg) 84 | des_joint_correction_absolute, ipoc_recv = parse_rsi_xml_sen(recv_msg) 85 | act_joint_pos = cmd_joint_pos + des_joint_correction_absolute 86 | ipoc += 1 87 | time.sleep(cycle_time / 2) 88 | except socket.timeout, msg: 89 | rospy.logwarn('{}: Socket timed out'.format(node_name)) 90 | timeout_count += 1 91 | except socket.error, e: 92 | if e.errno != errno.EINTR: 93 | raise 94 | 95 | --------------------------------------------------------------------------------