├── .ci └── linting.sh ├── .clang-format ├── .clang-tidy ├── .flake8 ├── .gitignore ├── .gitlab-ci.yml ├── .pylintrc ├── CONTRIBUTING.md ├── LICENSE.txt ├── README.md ├── docs ├── api │ ├── README.md │ ├── openapi3-current.yaml │ └── openapi3-future.yaml └── general │ ├── Makefile │ ├── README.md │ ├── _extras │ └── robots.txt │ ├── _static │ ├── code_examples │ │ ├── hello_world.cpp │ │ └── hello_world.py │ ├── favicon.ico │ ├── icra2019.pdf │ ├── lab_full.jpg │ ├── logo.svg │ ├── rll_planning_project_sideview.png │ ├── rll_planning_project_topview.png │ ├── rll_planning_project_topview_annotated.png │ ├── rll_robot_playground_moveit_planning_execution.png │ ├── rll_vm_desktop.png │ ├── robot_workspace.svg │ ├── style_override.css │ ├── webeditor_blpl.png │ └── webeditor_pypp.png │ ├── about.rst │ ├── conf.py │ ├── contributing.rst │ ├── development_workflow.rst │ ├── faq.rst │ ├── getting_started.rst │ ├── index.rst │ ├── job_processing.rst │ ├── manual_installation.rst │ ├── planning_project.rst │ ├── project_robot_playground.rst │ ├── publications.rst │ ├── requirements.txt │ ├── rll_move_client.rst │ └── vm_setup.rst ├── gazebo_pgks ├── README.md ├── gazebo_grasp_plugin │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ ├── include │ │ └── gazebo_grasp_plugin │ │ │ ├── GazeboGraspFix.h │ │ │ └── GazeboGraspGripper.h │ ├── package.xml │ └── src │ │ ├── GazeboGraspFix.cpp │ │ └── GazeboGraspGripper.cpp └── gazebo_version_helpers │ ├── CMakeLists.txt │ ├── include │ └── gazebo_version_helpers │ │ └── GazeboVersionHelpers.h │ ├── package.xml │ └── src │ └── GazeboVersionHelpers.cpp ├── kinematics ├── README.md ├── rll_kinematics │ ├── CMakeLists.txt │ ├── include │ │ └── rll_kinematics │ │ │ ├── arm_angle_intervals.h │ │ │ ├── forward_kinematics.h │ │ │ ├── inverse_kinematics.h │ │ │ ├── inverse_kinematics_coefficients.h │ │ │ ├── redundancy_resolution.h │ │ │ └── types_utils.h │ ├── package.xml │ └── src │ │ ├── arm_angle_intervals.cpp │ │ ├── example_usage.cpp │ │ ├── forward_kinematics.cpp │ │ ├── inverse_kinematics.cpp │ │ ├── inverse_kinematics_coefficients.cpp │ │ ├── redundancy_resolution.cpp │ │ └── types_utils.cpp └── rll_moveit_kinematics_plugin │ ├── CMakeLists.txt │ ├── include │ └── rll_moveit_kinematics_plugin │ │ └── moveit_kinematics_plugin.h │ ├── moveit_plugin.xml │ ├── package.xml │ └── src │ └── moveit_kinematics_plugin.cpp ├── rll_control ├── CMakeLists.txt ├── config │ └── rll_control.yaml ├── launch │ └── rll_control.launch └── package.xml ├── rll_core ├── CMakeLists.txt ├── cmake │ └── RLLDefaults.cmake └── package.xml ├── rll_description ├── CMakeLists.txt ├── launch │ └── rll_description_upload.launch ├── meshes │ ├── cap │ │ ├── collision │ │ │ └── cap.stl │ │ └── visual │ │ │ └── cap.dae │ ├── crg200 │ │ ├── collision │ │ │ ├── finger.stl │ │ │ ├── finger_adapter.stl │ │ │ └── finger_straight.stl │ │ └── visual │ │ │ ├── finger.dae │ │ │ ├── finger_adapter.dae │ │ │ ├── finger_straight.dae │ │ │ ├── gripper_adapter.dae │ │ │ ├── gripper_base.dae │ │ │ └── gripper_waggon.dae │ ├── egl90 │ │ ├── collision │ │ │ └── gripper_finger.stl │ │ └── visual │ │ │ ├── gripper_adapter.dae │ │ │ ├── gripper_base.dae │ │ │ ├── gripper_finger.dae │ │ │ └── gripper_waggon.dae │ ├── iiwa7 │ │ └── visual │ │ │ ├── base.dae │ │ │ ├── link1.dae │ │ │ ├── link2.dae │ │ │ ├── link3.dae │ │ │ ├── link4.dae │ │ │ ├── link5.dae │ │ │ ├── link6.dae │ │ │ └── link7.dae │ ├── rll │ │ └── visual │ │ │ ├── axis_cam_bottom.dae │ │ │ ├── axis_cam_top.dae │ │ │ ├── base_adapter.dae │ │ │ ├── profile_cams.dae │ │ │ └── table.dae │ └── visard160 │ │ └── visual │ │ ├── rc_visard_160.dae │ │ ├── roboception_adapter.dae │ │ └── roboception_gusset.dae ├── package.xml └── urdf │ ├── eef │ ├── Readme.md │ ├── cap │ │ └── cap.xacro │ ├── crg200 │ │ ├── crg200.gazebo.xacro │ │ ├── crg200.transmission.xacro │ │ └── crg200.xacro │ ├── egl90 │ │ ├── egl90.gazebo.xacro │ │ ├── egl90.transmission.xacro │ │ └── egl90.xacro │ └── none │ │ └── none.xacro │ ├── iiwa7 │ ├── iiwa.gazebo.xacro │ ├── iiwa.transmission.xacro │ └── iiwa7.xacro │ ├── rll.gazebo.xacro │ ├── rll_cell.xacro │ ├── rll_main.urdf.xacro │ ├── rll_virtual.xacro │ └── visard160 │ └── rc_visard_160.xacro ├── rll_gazebo ├── CMakeLists.txt ├── launch │ ├── rll_gazebo.launch │ └── rll_world.launch ├── package.xml └── worlds │ └── rll.world ├── rll_move ├── CMakeLists.txt ├── include │ └── rll_move │ │ ├── authentication.h │ │ ├── grasp_object.h │ │ ├── grasp_util.h │ │ ├── log_util.h │ │ ├── move_iface_base.h │ │ ├── move_iface_default.h │ │ ├── move_iface_default_simulation.h │ │ ├── move_iface_error.h │ │ ├── move_iface_gripper.h │ │ ├── move_iface_planning.h │ │ ├── move_iface_services.h │ │ ├── move_iface_simulation.h │ │ ├── move_iface_state_machine.h │ │ └── permissions.h ├── launch │ ├── move_iface.launch │ └── setup_moveit_and_move_iface.launch ├── package.xml ├── src │ ├── authentication.cpp │ ├── grasp_object.cpp │ ├── grasp_util.cpp │ ├── move_iface_base.cpp │ ├── move_iface_default.cpp │ ├── move_iface_error.cpp │ ├── move_iface_full_node.cpp │ ├── move_iface_gripper.cpp │ ├── move_iface_planning.cpp │ ├── move_iface_services.cpp │ ├── move_iface_simulation.cpp │ ├── move_iface_state_machine.cpp │ └── param_parser.cpp └── tests │ ├── README.md │ ├── config │ └── moveit.rviz │ ├── launch │ ├── demo_tests.test │ ├── gripper_demo_iface.launch │ ├── movement_tests.test │ ├── setup_moveit_and_gripper_demo_iface.launch │ └── unit_tests_cpp.test │ ├── meshes │ └── bone.dae │ ├── scripts │ ├── basic_movements.py │ ├── before_project_run.py │ ├── demo_tests_main.py │ ├── invalid_movements.py │ ├── move_client_demo.py │ ├── movement_tests_main.py │ ├── pick_place_demo.py │ ├── repeat_movements.py │ └── test_iface_util.py │ └── src │ ├── gripper_demo_iface.cpp │ ├── test_permissions.cpp │ └── test_state_machine.cpp ├── rll_move_client ├── .gitignore ├── CMakeLists.txt ├── include │ └── rll_move_client │ │ ├── move_client.h │ │ ├── move_client_default.h │ │ ├── move_client_listener.h │ │ └── util.h ├── launch │ └── move_client_example.launch ├── package.xml ├── scripts │ └── move_client_input.py ├── setup.py ├── src │ ├── move_client.cpp │ ├── move_client_example.cpp │ ├── move_client_listener.cpp │ ├── move_client_util.cpp │ └── rll_move_client │ │ ├── __init__.py │ │ ├── client.py │ │ ├── error.py │ │ ├── formatting.py │ │ ├── rviz.py │ │ ├── tests_demo_launcher.py │ │ ├── tests_util.py │ │ └── util.py └── tests │ ├── launch │ └── unit_tests_python.test │ └── scripts │ ├── unit_tests_main.py │ └── util_tests.py ├── rll_moveit_config ├── .setup_assistant ├── CMakeLists.txt ├── config │ ├── EffortJointInterface_controllers.yaml │ ├── PosVelJointInterface_controllers.yaml │ ├── PositionJointInterface_controllers.yaml │ ├── PositionJointInterface_gripper_controllers.yaml │ ├── VelocityJointInterface_controllers.yaml │ ├── eef_cap.xacro │ ├── eef_crg200.xacro │ ├── eef_egl90.xacro │ ├── fake_controllers.yaml │ ├── joint_limits.yaml │ ├── kinematics.yaml │ ├── ompl_planning.yaml │ ├── rll_cell.srdf.xacro │ └── rll_cell.xacro ├── launch │ ├── default_warehouse_db.launch │ ├── fake_moveit_controller_manager.launch.xml │ ├── fake_state.launch │ ├── joystick_control.launch │ ├── move_group.launch │ ├── moveit.rviz │ ├── moveit_planning_execution.launch │ ├── moveit_rviz.launch │ ├── ompl_planning_pipeline.launch.xml │ ├── planning_context.launch │ ├── planning_pipeline.launch.xml │ ├── rll_cell_moveit_controller_manager.launch.xml │ ├── rll_cell_moveit_sensor_manager.launch.xml │ ├── run_benchmark_ompl.launch │ ├── sensor_manager.launch.xml │ ├── setup_assistant.launch │ ├── trajectory_execution.launch.xml │ ├── warehouse.launch │ └── warehouse_settings.launch.xml └── package.xml ├── rll_msgs ├── CMakeLists.txt ├── action │ └── JobEnv.action ├── msg │ ├── JobExtraField.msg │ └── JobStatus.msg ├── package.xml └── srv │ ├── GetJointValues.srv │ ├── GetPose.srv │ ├── MoveGripper.srv │ ├── MoveJoints.srv │ ├── MoveLin.srv │ ├── MoveLinArmangle.srv │ ├── MovePTP.srv │ ├── MovePTPArmangle.srv │ ├── MoveRandom.srv │ ├── PickPlace.srv │ ├── PickPlaceHere.srv │ └── ValidatePickPlace.srv ├── rll_sdk ├── CMakeLists.txt └── package.xml └── rll_tools ├── CMakeLists.txt ├── config └── .gitignore ├── launch ├── run_project.launch └── submit_project.launch ├── package.xml ├── scripts ├── project_runner.py └── project_submitter.py ├── setup.py └── src └── rll_tools ├── __init__.py ├── run.py ├── submit.py └── util.py /.ci/linting.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | CLANG_TIDY_CMD="run-clang-tidy-7.py -p /root/target_ws/build" 6 | CLANG_TIDY_CHECK_PACKAGES="rll_move rll_move_client rll_kinematics rll_moveit_kinematics_plugin" 7 | 8 | for package in $CLANG_TIDY_CHECK_PACKAGES 9 | do 10 | $CLANG_TIDY_CMD/$package -header-filter=$package/* 11 | done 12 | 13 | pip -q install 'pylint<2.0.0' 14 | . /root/target_ws/install/setup.bash 15 | find * -not -path 'docs/*' -iname '*.py' | xargs python -m pylint 16 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | # based on https://github.com/ros-planning/moveit/blob/master/.clang-format 2 | --- 3 | BasedOnStyle: Google 4 | AccessModifierOffset: -2 5 | ConstructorInitializerIndentWidth: 2 6 | AlignEscapedNewlinesLeft: false 7 | AlignTrailingComments: true 8 | AllowAllParametersOfDeclarationOnNextLine: false 9 | AllowShortIfStatementsOnASingleLine: false 10 | AllowShortLoopsOnASingleLine: false 11 | AllowShortFunctionsOnASingleLine: None 12 | AllowShortLoopsOnASingleLine: false 13 | AlwaysBreakTemplateDeclarations: true 14 | AlwaysBreakBeforeMultilineStrings: false 15 | BreakBeforeBinaryOperators: false 16 | BreakBeforeTernaryOperators: false 17 | BreakConstructorInitializersBeforeComma: true 18 | BinPackParameters: true 19 | ColumnLimit: 120 20 | ConstructorInitializerAllOnOneLineOrOnePerLine: true 21 | DerivePointerBinding: false 22 | PointerBindsToType: true 23 | ExperimentalAutoDetectBinPacking: false 24 | IndentCaseLabels: true 25 | MaxEmptyLinesToKeep: 1 26 | NamespaceIndentation: None 27 | ObjCSpaceBeforeProtocolList: true 28 | PenaltyBreakBeforeFirstCallParameter: 19 29 | PenaltyBreakComment: 60 30 | PenaltyBreakString: 100 31 | PenaltyBreakFirstLessLess: 1000 32 | PenaltyExcessCharacter: 1000 33 | PenaltyReturnTypeOnItsOwnLine: 70 34 | SpacesBeforeTrailingComments: 2 35 | Cpp11BracedListStyle: false 36 | Standard: Auto 37 | IndentWidth: 2 38 | TabWidth: 2 39 | UseTab: Never 40 | IndentFunctionDeclarationAfterType: false 41 | SpacesInParentheses: false 42 | SpacesInAngles: false 43 | SpaceInEmptyParentheses: false 44 | SpacesInCStyleCastParentheses: false 45 | SpaceAfterControlStatementKeyword: true 46 | SpaceBeforeAssignmentOperators: true 47 | ContinuationIndentWidth: 4 48 | SortIncludes: false 49 | SpaceAfterCStyleCast: false 50 | 51 | # Configure each individual brace in BraceWrapping 52 | BreakBeforeBraces: Custom 53 | 54 | # Control of individual brace wrapping cases 55 | BraceWrapping: { 56 | AfterClass: 'true' 57 | AfterControlStatement: 'true' 58 | AfterEnum : 'true' 59 | AfterFunction : 'true' 60 | AfterNamespace : 'true' 61 | AfterStruct : 'true' 62 | AfterUnion : 'true' 63 | BeforeCatch : 'true' 64 | BeforeElse : 'true' 65 | IndentBraces : 'false' 66 | } 67 | ... 68 | -------------------------------------------------------------------------------- /.clang-tidy: -------------------------------------------------------------------------------- 1 | # several checks are disabled because various core templates or base classes throw these warnings 2 | # cppcoreguidelines and hicpp are not very useful. They rather are recommendations than rules that should be enforced. 3 | Checks: 'boost-*,bugprone-*,cert-*,mpi-*,openmp-*,clang-diagnostic-*,clang-analyzer-*,-clang-analyzer-alpha*,google-*,llvm-*,misc-*,readability-*,modernize-*,performance-*,-modernize-use-trailing-return-type,-readability-isolate-declaration,-readability-magic-numbers,-modernize-use-equals-delete,-cert-err58-cpp' 4 | 5 | WarningsAsErrors: '*' 6 | HeaderFilterRegex: '' 7 | 8 | CheckOptions: 9 | # Classes, structs, ... 10 | - key: readability-identifier-naming.NamespaceCase 11 | value: lower_case 12 | - key: readability-identifier-naming.ClassCase 13 | value: CamelCase 14 | - key: readability-identifier-naming.StructCase 15 | value: CamelCase 16 | - key: readability-identifier-naming.EnumCase 17 | value: CamelCase 18 | - key: readability-identifier-naming.UnionCase 19 | value: CamelCase 20 | - key: readability-identifier-naming.TypedefCase 21 | value: CamelCase 22 | 23 | # Variables, member variables, ... 24 | - key: readability-identifier-naming.ParameterCase 25 | value: lower_case 26 | - key: readability-identifier-naming.VariableCase 27 | value: lower_case 28 | - key: readability-identifier-naming.MemberCase 29 | value: lower_case 30 | - key: readability-identifier-naming.ClassMemberSuffix 31 | value: '_' 32 | - key: readability-identifier-naming.PublicMemberCase 33 | value: lower_case 34 | - key: readability-identifier-naming.ProtectedMemberCase 35 | value: lower_case 36 | - key: readability-identifier-naming.ProtectedMemberSuffix 37 | value: '_' 38 | - key: readability-identifier-naming.PrivateMemberCase 39 | value: lower_case 40 | - key: readability-identifier-naming.PrivateMemberSuffix 41 | value: _ 42 | 43 | # Functions, methods, ... 44 | - key: readability-identifier-naming.FunctionCase 45 | value: camelBack 46 | - key: readability-identifier-naming.MethodCase 47 | value: camelBack 48 | 49 | # Constants 50 | - key: readability-identifier-naming.ConstantPrefix 51 | value: '' 52 | - key: readability-identifier-naming.ConstantCase 53 | value: UPPER_CASE 54 | - key: readability-identifier-naming.ConstantMemberPrefix 55 | value: '' 56 | - key: readability-identifier-naming.ConstantMemberCase 57 | value: UPPER_CASE 58 | - key: readability-identifier-naming.ConstantParameterCase 59 | value: lower_case 60 | - key: readability-identifier-naming.ConstantParameterPrefix 61 | value: '' 62 | - key: readability-identifier-naming.EnumConstantCase 63 | value: UPPER_CASE 64 | - key: readability-identifier-naming.StaticConstantCase 65 | value: UPPER_CASE 66 | - key: readability-identifier-naming.ClassConstantCase 67 | value: UPPER_CASE 68 | - key: readability-identifier-naming.GlobalVariableCase 69 | value: UPPER_CASE 70 | 71 | # design / refactoring (other parameters don't work well with macros) 72 | - key: readability-function-size.LineThreshold 73 | value: 80 74 | - key: readability-function-size.ParameterThreshold 75 | value: 5 76 | -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | ignore = W503 3 | max-complexity = 10 4 | show-source = true 5 | statistics = true 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Lines that start with '#' are comments. 2 | 3 | # Backup and data files 4 | eg/eg.* 5 | *~ 6 | *.bak 7 | *.off 8 | *.x 9 | x.* 10 | r 11 | x 12 | x? 13 | r? 14 | 15 | #Misc 16 | 17 | lbr_fri/fri 18 | 19 | # patch results 20 | *.rej 21 | 22 | # Build products 23 | tmp/* 24 | build 25 | _build 26 | 27 | *# 28 | *.# 29 | *.obj 30 | *.zip 31 | *.a 32 | *.dll 33 | *.lib 34 | *.exe 35 | *.bag 36 | *.o 37 | *.md5sum 38 | 39 | # Qt files 40 | *.pro.user 41 | 42 | # DevStudio files 43 | *.bsc 44 | *.ncb 45 | *.pdb 46 | *.suo 47 | *.user 48 | *.ilk 49 | 50 | # CVS files 51 | CVS/* 52 | */CVS/* 53 | */*/CVS/* 54 | */*/*/CVS/* 55 | *.cvsignore 56 | 57 | # Other files 58 | *.kdev4 59 | *.project 60 | *.cproject 61 | /config 62 | *.kdev_include_paths 63 | *.orig 64 | .vscode/ 65 | .idea/ 66 | 67 | # python bytecode 68 | *.pyc 69 | *.egg-info/ 70 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | # The following block is needed for the shared Docker-based runner 2 | # For local runners you might want to enable the overlay driver: 3 | # https://docs.gitlab.com/ce/ci/docker/using_docker_build.html#using-the-overlayfs-driver 4 | 5 | image: docker:git # docker and git clients 6 | 7 | # enable docker-in-docker 8 | services: 9 | - docker:dind 10 | 11 | # The docker runner does not expose /tmp to the docker-in-docker service 12 | # This config ensures that the temp folder is located inside the project directory (e.g. for prerelease tests or SSH agent forwarding) 13 | variables: 14 | TMPDIR: "${CI_PROJECT_DIR}.tmp" 15 | # A upstream workspace is created with the dependencies from the specified repos file. It has to be in the vcstool format: https://github.com/dirk-thomas/vcstool 16 | UPSTREAM_WORKSPACE: ".ci.repos" 17 | ROS_DISTRO: "melodic" 18 | # This causes too much output by default and the Gitlab log output is truncated 19 | # VERBOSE_OUTPUT: "true" 20 | VERBOSE_TESTS: "true" 21 | 22 | # Dependencies for your project: 23 | # Most projects will require the rll_sdk to be installed. The rll_sdk doesn't require itself, which is why repositories are left empty 24 | # If you copy this config to a project and depend on the rll_sdk, simply adjust the REPOS_DEFAULT variable below as indicated by the comment 25 | PROJECT_REPOS_FILENAME: ".ci.repos" # Used to generate the file if it does not exist 26 | REPOS_SDK_TEMPLATE: "{repositories: {rll_sdk: {type: git, url: 'https://gitlab.ipr.kit.edu/rll/rll_sdk.git', version: master}}}" 27 | REPOS_DEFAULT: "{repositories: {}}" # ${REPOS_SDK_TEMPLATE} 28 | 29 | 30 | before_script: 31 | - apk add --update bash coreutils tar # install industrial_ci dependencies 32 | - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci .industrial_ci 33 | # create the .repos file if it does not exist 34 | - test ! -f ${PROJECT_REPOS_FILENAME} && echo ${REPOS_DEFAULT} >> ${PROJECT_REPOS_FILENAME} 35 | - sed -i 's/https\:\/\/gitlab\.ipr\.kit\.edu/https\:\/\/gitlab-ci-token\:'${CI_JOB_TOKEN}'\@gitlab\.ipr\.kit\.edu/g' ${CI_PROJECT_DIR}/${PROJECT_REPOS_FILENAME} 36 | # download config files if they do not exist 37 | - test ! -f .clang-format && wget https://gitlab.ipr.kit.edu/rll/rll_sdk/raw/master/.clang-format 38 | - test ! -f .clang-tidy && wget https://gitlab.ipr.kit.edu/rll/rll_sdk/raw/master/.clang-tidy 39 | - test ! -f .flake8 && wget https://gitlab.ipr.kit.edu/rll/rll_sdk/raw/master/.flake8 40 | - test ! -f .pylintrc && wget https://gitlab.ipr.kit.edu/rll/rll_sdk/raw/master/.pylintrc 41 | 42 | 43 | # Format checks are run for every branch regardless of the ROS_DISTRO 44 | format-check: 45 | variables: 46 | # run clang format check 47 | CLANG_FORMAT_VERSION: "6.0" 48 | CLANG_FORMAT_CHECK: "file" 49 | AFTER_SCRIPT: "apt -yq install python-pip && pip -q install flake8 typing && python -m flake8" 50 | 51 | script: .industrial_ci/gitlab.sh 52 | tags: 53 | - docker # use docker runner 54 | 55 | 56 | kinetic-build-rostests: 57 | variables: 58 | ROS_DISTRO: "kinetic" # override ROS_DISTRO variable 59 | AFTER_SETUP_UPSTREAM_WORKSPACE: "apt -yq install python-pip && pip -q install typing" 60 | # if a build fails without errors it is sometimes useful to switch to a more verbose builder 61 | # However, catkin_make does bring its own set of problems so a successful build with catkin is preferred 62 | # BUILDER: "catkin_make" 63 | 64 | # run default -> build 65 | script: .industrial_ci/gitlab.sh 66 | tags: 67 | - docker 68 | 69 | 70 | melodic-build-rostests: 71 | # run default -> build 72 | script: .industrial_ci/gitlab.sh 73 | tags: 74 | - docker 75 | 76 | 77 | warningbuild-linting: 78 | variables: 79 | ADDITIONAL_DEBS: "python-pip python-typing clang-tidy-7 clang-7" 80 | AFTER_SETUP_UPSTREAM_WORKSPACE: "pip install 'readchar<3'" 81 | CATKIN_LINT: "pedantic" 82 | CMAKE_ARGS: "-DCMAKE_CXX_FLAGS=-Werror" 83 | NOT_TEST_BUILD: "true" 84 | AFTER_SCRIPT: .ci/linting.sh 85 | # run default -> build 86 | script: .industrial_ci/gitlab.sh 87 | tags: 88 | - docker 89 | -------------------------------------------------------------------------------- /.pylintrc: -------------------------------------------------------------------------------- 1 | [MASTER] 2 | 3 | # Python code to execute, usually for sys.path manipulation such as 4 | # pygtk.require(). 5 | init-hook='import sys;from rospkg import RosPack; 6 | sys.path.extend( 7 | list(map(lambda path: path + "/src/", 8 | filter(lambda path: "rll_" in path.split("/")[-1], 9 | RosPack().get_ros_paths()))))' 10 | 11 | [MESSAGES CONTROL] 12 | 13 | disable=missing-docstring,locally-disabled,locally-enabled 14 | 15 | 16 | [REPORTS] 17 | 18 | # Set the output format. Available formats are text, parseable, colorized, msvs 19 | # (visual studio) and html. You can also give a reporter class, eg 20 | # mypackage.mymodule.MyReporterClass. 21 | output-format=colorized 22 | 23 | # Tells whether to display a full report or only the messages 24 | reports=yes 25 | 26 | 27 | [MISCELLANEOUS] 28 | 29 | # List of note tags to take in consideration, separated by a comma. 30 | notes=FIXME,XXX 31 | 32 | 33 | [BASIC] 34 | 35 | # Good variable names which should always be accepted, separated by a comma 36 | good-names=i,j,k,db,ns,ex,Run,_,logger 37 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to the KUKA Robot Learning Lab at KIT 2 | 3 | Thanks for getting involved! Information on contributing can be found in 4 | [the documentation](https://rll-doc.ipr.kit.edu/contributing.html). 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Robot Learning Lab SDK 2 | 3 | Software Development Kit for Robot Learning Lab (RLL) projects 4 | 5 | ## Components 6 | 7 | - Model of a RLL robot work cell 8 | - Gazebo, MoveIt! and ROS Control configuration 9 | - Documentation of the web API 10 | - Standardized runner for all projects 11 | - Move Interface for controlling the robot 12 | - Ability to send joint or cartesian goal positions 13 | - Support for pick and place tasks 14 | - Cartesian or point to point trajectories possible 15 | - Usable as a base for project-specific interfaces 16 | 17 | ## Usage 18 | 19 | The SDK is intended to be used as a dependency of a RLL project. All components are ROS packages and can be built using Catkin. 20 | 21 | The Gazebo simulation can be launched together with MoveIt! and an Rviz visualization using 22 | 23 | roslaunch rll_moveit_config moveit_planning_execution.launch 24 | 25 | The Move Interface is started with 26 | 27 | roslaunch rll_move move_iface.launch 28 | 29 | Move services are available in the `/iiwa/` namespace, e.g. `/iiwa/pick_place` or `/iiwa/move_lin`. 30 | 31 | If you want to improve the web API description, have a look at the [ReadMe](docs/api/README.md). 32 | 33 | ## ROS Kinetic gotchas 34 | 35 | Some of the python packages use the `typing` module which cannot be installed via rosdep on Kinetic. You need to install it manually by running: 36 | 37 | pip install typing 38 | 39 | ## Acknowledgements 40 | 41 | The description, control and Gazebo config was inspired by the [iiwa stack](https://github.com/IFL-CAMP/iiwa_stack). -------------------------------------------------------------------------------- /docs/api/README.md: -------------------------------------------------------------------------------- 1 | 2 | ### RLL API Description 3 | 4 | API description done with Swagger aka OpenAPI. 5 | 6 | For more information about OpenAPI, see the [documentation](https://swagger.io/docs/specification/about/). 7 | 8 | #### Development 9 | 10 | In order to improve the API description, you can use the [online swagger editor](https://editor.swagger.io/). 11 | Just copy and paste the openapi.yaml. 12 | 13 | Its also possible to run your own editor in docker: 14 | 15 | docker run -d -p 80:8080 swaggerapi/swagger-editor 16 | 17 | See: 18 | https://github.com/swagger-api/swagger-editor 19 | 20 | Also a nice tool for expanding the api-description: 21 | https://openapi-map.apihandyman.io/ 22 | -------------------------------------------------------------------------------- /docs/general/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = python3 -msphinx 7 | SOURCEDIR = . 8 | BUILDDIR = _build 9 | 10 | SSH_HOST=rll-doc.ipr.iar.kit.edu 11 | SSH_PORT=22 12 | SSH_USER=rlldoc 13 | SSH_TARGET_DIR=/var/www/rlldoc 14 | 15 | ROBOT_PLAYGROUND_PATH=../../../rll_robot_playground_project 16 | 17 | # Put it first so that "make" without argument is like "make help". 18 | help: 19 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 20 | 21 | upload: clean html 22 | # remove Modernizr until pull request is merged: https://github.com/readthedocs/sphinx_rtd_theme/pull/756 23 | sed -i '/