├── .clang-format ├── .clang-tidy ├── .codespell_words ├── .docker ├── Dockerfile ├── README.md ├── docker-compose.yml └── gui-docker ├── .dockerignore ├── .github ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md ├── config.yml ├── dependabot.yml ├── mergify.yml ├── upstream.repos └── workflows │ ├── ci.yaml │ ├── deploy.yml │ ├── docker-images.yml │ ├── docker.yml │ └── format.yml ├── .gitignore ├── .pre-commit-config.yaml ├── CMakeLists.txt ├── LICENSE.txt ├── Makefile ├── README.md ├── _scripts ├── docker-compose.yml └── tutorialformatter.py ├── _static ├── css │ └── override.css ├── images │ ├── concepts_diagram.png │ ├── example_diagram.png │ ├── favicon.ico │ ├── foxy-small.png │ ├── foxy.png │ ├── franka_logo.png │ ├── galactic-small.png │ ├── galactic.png │ ├── humble-small.png │ ├── motion_planner.png │ ├── move_group.png │ ├── moveit_pipeline.png │ ├── planning_scene.png │ ├── planning_scene_monitor.svg │ └── rolling-small.png └── videos │ ├── C++_Interface_Demo.webm │ ├── Servo_Teleop_Demo.webm │ ├── mobile_base_arm1.mp4 │ ├── mobile_base_arm2.mp4 │ ├── mtc-demo.webm │ ├── mtc.webm │ ├── ompl_constraints_box.webm │ ├── ompl_constraints_line.webm │ ├── ompl_constraints_orientation.webm │ ├── ompl_constraints_plane.webm │ ├── ompl_mixed_constraints.webm │ ├── perception_pipeline_demo.webm │ ├── rviz_joints_nullspace.webm │ └── trajectory_cache │ ├── 01_cache_and_execute_loop.webm │ └── 02_trajectory_cache_demo.webm ├── _templates └── page.html ├── build_locally.sh ├── conf.py ├── doc ├── api │ ├── api.rst │ ├── cpp_api │ │ └── api.rst │ └── python_api │ │ └── api.rst ├── concepts │ ├── concepts.rst │ ├── hybrid_planning │ │ ├── global_planner_small.png │ │ ├── hybrid_planner_logic.png │ │ ├── hybrid_planner_logic_2.png │ │ ├── hybrid_planner_manager_small.png │ │ ├── hybrid_planning.rst │ │ ├── hybrid_planning_architecture.png │ │ ├── hybrid_planning_event_logic.png │ │ ├── local_planner_loop.png │ │ ├── local_planner_small.png │ │ └── replanning_example.gif │ ├── kinematics.rst │ ├── motion_planning.rst │ ├── move_group.rst │ ├── moveit_task_constructor │ │ ├── _static │ │ │ └── images │ │ │ │ ├── alternatives.png │ │ │ │ ├── connecting_stage.png │ │ │ │ ├── fallbacks.png │ │ │ │ ├── generating_stage.png │ │ │ │ ├── merger.png │ │ │ │ ├── mtc_show_stages.gif │ │ │ │ ├── mtc_task.png │ │ │ │ └── propagating_stage.png │ │ ├── connecting_stages.rst │ │ ├── debugging_mtc_task.rst │ │ ├── generating_stages.rst │ │ ├── moveit_task_constructor.rst │ │ ├── parallel_containers.rst │ │ ├── propagating_stages.rst │ │ └── wrappers.rst │ ├── planning_scene_monitor.rst │ └── trajectory_processing.rst ├── examples │ ├── bullet_collision_checker │ │ ├── CMakeLists.txt │ │ ├── bullet_collision_checker.rst │ │ ├── images │ │ │ ├── bullet_CCD_both_states.png │ │ │ ├── bullet_CCD_discrete.png │ │ │ ├── bullet_collision_visualized.png │ │ │ ├── fcl_collision.png │ │ │ └── fcl_vs_bullet_markers.png │ │ ├── launch │ │ │ ├── bullet_collision_checker_tutorial.launch │ │ │ └── moveit.rviz │ │ └── src │ │ │ └── bullet_collision_checker_tutorial.cpp │ ├── collision_environments │ │ ├── CMakeLists.txt │ │ └── src │ │ │ └── collision_scene_example.cpp │ ├── controller_configuration │ │ ├── CMakeLists.txt │ │ ├── controller_configuration_tutorial.rst │ │ ├── moveit_controller_manager_example_plugin_description.xml │ │ └── src │ │ │ └── moveit_controller_manager_example.cpp │ ├── creating_moveit_plugins │ │ ├── lerp_motion_planner │ │ │ ├── CMakeLists.txt │ │ │ ├── include │ │ │ │ └── lerp_interface │ │ │ │ │ ├── lerp_interface.h │ │ │ │ │ └── lerp_planning_context.h │ │ │ ├── launch │ │ │ │ └── lerp_example.launch │ │ │ ├── lerp_interface_plugin_description.xml │ │ │ ├── lerp_planner.png │ │ │ └── src │ │ │ │ ├── lerp_example.cpp │ │ │ │ ├── lerp_interface.cpp │ │ │ │ ├── lerp_planner_manager.cpp │ │ │ │ └── lerp_planning_context.cpp │ │ └── plugin_tutorial.rst │ ├── custom_constraint_samplers │ │ └── custom_constraint_samplers_tutorial.rst │ ├── dual_arms │ │ ├── dual_arms_tutorial.rst │ │ └── rviz_dual_arms.png │ ├── examples.rst │ ├── hand_eye_calibration │ │ ├── hand_eye_calibration_tutorial.rst │ │ └── images │ │ │ ├── add_handeye_panel.png │ │ │ ├── aruco_target_handeye_panel.png │ │ │ ├── calibrate_tab.png │ │ │ ├── choose_new_panel.png │ │ │ ├── context_tab.png │ │ │ └── hand_eye_calibration_demo.jpg │ ├── hybrid_planning │ │ ├── hybrid_planning_tutorial.rst │ │ └── images │ │ │ ├── global_planner_dataflow.png │ │ │ ├── hybrid_planning_architecture.png │ │ │ ├── local_planner_dataflow.png │ │ │ ├── logical_flow.png │ │ │ └── replanning_demo.gif │ ├── ikfast │ │ ├── ikfast_tutorial.rst │ │ └── openrave_panda.png │ ├── interactivity │ │ ├── CMakeLists.txt │ │ ├── include │ │ │ └── interactivity │ │ │ │ ├── imarker.h │ │ │ │ ├── interactive_robot.h │ │ │ │ └── pose_string.h │ │ ├── launch │ │ │ ├── attached_body_tutorial.launch │ │ │ └── interactivity_tutorial.launch │ │ └── src │ │ │ ├── attached_body_tutorial.cpp │ │ │ ├── imarker.cpp │ │ │ ├── interactive_robot.cpp │ │ │ ├── interactivity_tutorial.cpp │ │ │ └── pose_string.cpp │ ├── jupyter_notebook_prototyping │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ ├── jupyter_notebook_prototyping.rviz │ │ │ └── jupyter_notebook_prototyping.yaml │ │ ├── jupyter_notebook_prototyping_tutorial.rst │ │ ├── launch │ │ │ └── jupyter_notebook_prototyping.launch.py │ │ └── src │ │ │ └── moveit_notebook_tutorial.ipynb │ ├── kinematics │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── ros_api_tutorial.launch │ │ └── src │ │ │ └── ros_api_tutorial.cpp │ ├── kinematics_configuration │ │ └── kinematics_configuration_tutorial.rst │ ├── mobile_base_arm │ │ ├── images │ │ │ └── intro.png │ │ └── mobile_base_arm_tutorial.rst │ ├── motion_planning_api │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── motion_planning_api_tutorial.launch.py │ │ ├── motion_planning_api_tutorial.rst │ │ ├── motion_planning_api_tutorial_robot_move_arm_1st.png │ │ ├── motion_planning_api_tutorial_robot_move_arm_2nd.png │ │ ├── motion_planning_api_tutorial_robot_move_arm_3rd.png │ │ └── src │ │ │ └── motion_planning_api_tutorial.cpp │ ├── motion_planning_pipeline │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── motion_planning_pipeline_tutorial.launch.py │ │ ├── motion_planning_pipeline_tutorial.rst │ │ └── src │ │ │ └── motion_planning_pipeline_tutorial.cpp │ ├── motion_planning_python_api │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ ├── motion_planning_python_api_tutorial.rviz │ │ │ └── motion_planning_python_api_tutorial.yaml │ │ ├── launch │ │ │ └── motion_planning_python_api_tutorial.launch.py │ │ ├── motion_planning_python_api_tutorial.rst │ │ └── scripts │ │ │ ├── motion_planning_python_api_planning_scene.py │ │ │ └── motion_planning_python_api_tutorial.py │ ├── move_group_interface │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ ├── move_group.launch.py │ │ │ ├── move_group.rviz │ │ │ └── move_group_interface_tutorial.launch.py │ │ ├── move_group_interface_tutorial.rst │ │ ├── move_group_interface_tutorial_attached_object.gif │ │ ├── move_group_interface_tutorial_avoid_path.gif │ │ ├── move_group_interface_tutorial_clear_path.gif │ │ ├── move_group_interface_tutorial_robot_with_box.png │ │ ├── move_group_interface_tutorial_start_screen.png │ │ └── src │ │ │ └── move_group_interface_tutorial.cpp │ ├── moveit_cpp │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ └── moveit_cpp.yaml │ │ ├── images │ │ │ ├── moveitcpp_plan1.png │ │ │ ├── moveitcpp_plan2.png │ │ │ ├── moveitcpp_plan3.png │ │ │ ├── moveitcpp_plan4.png │ │ │ ├── moveitcpp_plan5.png │ │ │ └── moveitcpp_start.png │ │ ├── launch │ │ │ ├── moveit_cpp_tutorial.launch.py │ │ │ └── moveit_cpp_tutorial.rviz │ │ ├── moveitcpp_tutorial.rst │ │ └── src │ │ │ └── moveit_cpp_tutorial.cpp │ ├── moveit_deep_grasps │ │ ├── gqcnn_barclamp_gazebo.gif │ │ ├── gqcnn_cylinder_gazebo.gif │ │ ├── moveit_deep_grasps_tutorial.rst │ │ ├── mtc_gpd_panda.gif │ │ └── mtc_gqcnn_panda.gif │ ├── moveit_grasps │ │ ├── finger_gripper_explanation.jpg │ │ ├── grasp_generator_demo.png │ │ ├── grasp_pipeline_demo.gif │ │ ├── moveit_grasps.png │ │ ├── moveit_grasps_poses.jpg │ │ ├── moveit_grasps_tutorial.rst │ │ └── suction_gripper_explanation.jpg │ ├── ompl_interface │ │ └── ompl_interface_tutorial.rst │ ├── perception_pipeline │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ └── sensors_3d.yaml │ │ ├── images │ │ │ ├── perception_pipeline_demo_gazebo_screen.png │ │ │ └── perception_pipeline_depth_camera_environment.png │ │ ├── launch │ │ │ ├── depth_camera_environment.launch.py │ │ │ └── perception_pipeline_demo.launch.py │ │ ├── meshes │ │ │ └── d435.dae │ │ ├── perception_pipeline_tutorial.rst │ │ ├── rviz2 │ │ │ └── depth_camera_environment.rviz │ │ ├── urdf │ │ │ └── realsense_d435 │ │ │ │ ├── camera.urdf.xacro │ │ │ │ └── macros.xacro │ │ └── worlds │ │ │ └── perception_pipeline_demo.world │ ├── pick_place │ │ ├── CMakeLists.txt │ │ ├── pick_place_tutorial.rst │ │ └── src │ │ │ └── pick_place_tutorial.cpp │ ├── planning │ │ └── src │ │ │ └── move_group_tutorial.cpp │ ├── planning_adapters │ │ └── planning_adapters_tutorial.rst │ ├── planning_scene │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── planning_scene_tutorial.launch.py │ │ ├── planning_scene_tutorial.rst │ │ └── src │ │ │ └── planning_scene_tutorial.cpp │ ├── planning_scene_monitor │ │ └── planning_scene_monitor_tutorial.rst │ ├── planning_scene_ros_api │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── planning_scene_ros_api_tutorial.launch.py │ │ ├── planning_scene_ros_api_tutorial.rst │ │ └── src │ │ │ └── planning_scene_ros_api_tutorial.cpp │ ├── planning_with_approximated_constraint_manifolds │ │ └── planning_with_approximated_constraint_manifolds_tutorial.rst │ ├── realtime_servo │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ ├── demo_rviz_config.rviz │ │ │ └── panda_simulated_config.yaml │ │ ├── launch │ │ │ └── pose_tracking_tutorial.launch.py │ │ ├── realtime_servo_tutorial.rst │ │ ├── servo_rqt_graph.png │ │ └── src │ │ │ └── pose_tracking_tutorial.cpp │ ├── robot_model_and_robot_state │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── robot_model_and_robot_state_tutorial.launch.py │ │ ├── panda_tf.png │ │ ├── robot_model_and_robot_state_tutorial.rst │ │ └── src │ │ │ └── robot_model_and_robot_state_tutorial.cpp │ ├── setup_assistant │ │ ├── collision_matrix │ │ │ ├── setup_assistant_panda_collision_matrix.png │ │ │ └── setup_assistant_panda_collision_matrix_done.png │ │ ├── moveit_controllers │ │ │ ├── setup_assistant_hand_moveit_controller_type_gripper.png │ │ │ ├── setup_assistant_hand_moveit_controller_type_trajectory.png │ │ │ ├── setup_assistant_moveit_controllers.png │ │ │ ├── setup_assistant_moveit_controllers_done_gripper.png │ │ │ ├── setup_assistant_moveit_controllers_done_trajectory.png │ │ │ └── setup_assistant_panda_arm_moveit_controller_type.png │ │ ├── perception │ │ │ ├── setup_assistant_panda_3d_perception.png │ │ │ └── setup_assistant_panda_3d_perception_point_cloud.png │ │ ├── planning_groups │ │ │ ├── setup_assistant_panda_arm_group.png │ │ │ ├── setup_assistant_panda_arm_group_joints.png │ │ │ ├── setup_assistant_panda_arm_group_saved.png │ │ │ ├── setup_assistant_panda_hand_group.png │ │ │ ├── setup_assistant_panda_hand_group_links.png │ │ │ ├── setup_assistant_panda_planning_groups.png │ │ │ └── setup_assistant_panda_planning_groups_done.png │ │ ├── predefined_poses │ │ │ ├── setup_assistant_panda_predefined_arm_pose.png │ │ │ ├── setup_assistant_panda_predefined_hand_close_pose.png │ │ │ ├── setup_assistant_panda_predefined_hand_open_pose.png │ │ │ └── setup_assistant_panda_predefined_poses_done.png │ │ ├── ros2_control │ │ │ └── setup_assistant_ros2_control_tags.png │ │ ├── ros2_controllers │ │ │ ├── setup_assistant_hand_ros2_controller_group.png │ │ │ ├── setup_assistant_hand_ros2_controller_type.png │ │ │ ├── setup_assistant_panda_arm_ros2_controller_group.png │ │ │ ├── setup_assistant_panda_arm_ros2_controller_type.png │ │ │ ├── setup_assistant_ros2_controllers.png │ │ │ └── setup_assistant_ros2_controllers_done.png │ │ ├── setup_assistant_create_package.png │ │ ├── setup_assistant_done.png │ │ ├── setup_assistant_launch.png │ │ ├── setup_assistant_launch_files.png │ │ ├── setup_assistant_load_panda_urdf.png │ │ ├── setup_assistant_panda_add_end_effector.png │ │ ├── setup_assistant_panda_virtual_joints.png │ │ └── setup_assistant_tutorial.rst │ ├── state_display │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── state_display_tutorial.launch │ │ └── src │ │ │ └── state_display_tutorial.cpp │ ├── subframes │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── subframes_tutorial.launch │ │ ├── src │ │ │ └── subframes_tutorial.cpp │ │ ├── subframes_tutorial.rst │ │ └── subframes_tutorial_cylinder_demo.gif │ ├── tests │ │ ├── CMakeLists.txt │ │ ├── code_coverage_example.png │ │ ├── test │ │ │ └── tests.cpp │ │ └── tests_tutorial.rst │ ├── time_parameterization │ │ └── time_parameterization_tutorial.rst │ ├── trajopt_planner │ │ ├── CMakeLists.txt │ │ ├── algorithm.png │ │ ├── fx.png │ │ ├── launch │ │ │ └── trajopt_example_launch.launch │ │ ├── non_convex.png │ │ ├── req_traj.png │ │ ├── req_traj_start.png │ │ ├── req_traj_steps.png │ │ ├── src │ │ │ └── trajopt_example.cpp │ │ ├── start_fixed_false.gif │ │ ├── start_fixed_true.gif │ │ ├── trajopt.png │ │ └── trajopt_planner_tutorial.rst │ ├── urdf_srdf │ │ └── urdf_srdf_tutorial.rst │ └── visualizing_collisions │ │ ├── CMakeLists.txt │ │ ├── collisions.png │ │ ├── launch │ │ ├── moveit.rviz │ │ └── visualizing_collisions_tutorial.launch │ │ ├── src │ │ └── visualizing_collisions_tutorial.cpp │ │ ├── visualizing_collisions_tutorial.rst │ │ └── visualizing_collisions_tutorial_screen.png ├── how_to_contribute │ ├── how_to_contribute.rst │ ├── how_to_contribute_to_site.rst │ ├── how_to_cross_reference.rst │ ├── how_to_write_how_to_guides.rst │ └── how_to_write_tutorials.rst ├── how_to_guides │ ├── benchmarking │ │ ├── CMakeLists.txt │ │ ├── benchmarking_tutorial.rst │ │ ├── config │ │ │ ├── benchmarking_moveit_cpp.yaml │ │ │ └── benchmarks.yaml │ │ ├── launch │ │ │ └── run_benchmarks.launch.py │ │ └── planners_benchmark.png │ ├── chomp_planner │ │ ├── CMakeLists.txt │ │ ├── chomp.png │ │ ├── chomp_planner_tutorial.rst │ │ ├── config │ │ │ └── moveit_chomp.rviz │ │ └── launch │ │ │ └── chomp_demo.launch.py │ ├── controller_teleoperation │ │ ├── controller_teleoperation.rst │ │ └── xboxcontroller.png │ ├── how_to_generate_api_doxygen_locally.rst │ ├── how_to_guide.rst │ ├── how_to_guides.rst │ ├── how_to_setup_docker_containers_in_ubuntu.rst │ ├── how_to_write_doxygen.rst │ ├── isaac_panda │ │ ├── .docker │ │ │ ├── Dockerfile │ │ │ ├── fastdds.xml │ │ │ └── ros_entrypoint.sh │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ └── panda_moveit_config.rviz │ │ ├── docker-compose.yaml │ │ ├── isaac_panda_tutorial.rst │ │ └── launch │ │ │ ├── isaac_demo.launch.py │ │ │ ├── isaac_moveit.py │ │ │ └── python.sh │ ├── kinematics_cost_function │ │ ├── CMakeLists.txt │ │ ├── kinematics_cost_function_tutorial.rst │ │ ├── launch │ │ │ └── kinematics_cost_function_tutorial.launch.py │ │ └── src │ │ │ └── kinematics_cost_function_tutorial.cpp │ ├── moveit_configuration │ │ └── moveit_configuration_tutorial.rst │ ├── moveit_launch_files │ │ └── moveit_launch_files_tutorial.rst │ ├── parallel_planning │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ ├── panda_test_db.sqlite │ │ │ ├── parallel_planning_config.rviz │ │ │ └── parallel_planning_moveit_cpp.yaml │ │ ├── launch │ │ │ └── parallel_planning_example.launch.py │ │ ├── parallel_planning_tutorial.rst │ │ └── src │ │ │ └── parallel_planning_main.cpp │ ├── persistent_scenes_and_states │ │ ├── CMakeLists.txt │ │ ├── launch │ │ │ └── persistent_scenes_demo.launch.py │ │ ├── persistent_scenes_and_states.rst │ │ └── rviz_connect.png │ ├── pick_ik │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ └── kinematics_pick_ik.yaml │ │ ├── launch │ │ │ └── demo_pick_ik.launch.py │ │ └── pick_ik_tutorial.rst │ ├── pilz_industrial_motion_planner │ │ ├── CMakeLists.txt │ │ ├── blend_radius.png │ │ ├── launch │ │ │ ├── pilz_moveit.launch.py │ │ │ └── pilz_mtc.launch.py │ │ ├── pilz_industrial_motion_planner.rst │ │ ├── ptp.png │ │ ├── rviz_planner.png │ │ ├── src │ │ │ ├── pilz_move_group.cpp │ │ │ ├── pilz_mtc.cpp │ │ │ └── pilz_sequence.cpp │ │ └── trajectory_comparison.jpeg │ ├── stomp_planner │ │ ├── stomp.gif │ │ └── stomp_planner.rst │ ├── trac_ik │ │ └── trac_ik_tutorial.rst │ ├── trajectory_cache │ │ ├── CMakeLists.txt │ │ ├── config │ │ │ └── trajectory_cache_joint_limits.yaml │ │ ├── images │ │ │ ├── demo_CacheAndExecute_best_trajectory.png │ │ │ ├── demo_CacheAndExecute_matchable_plans.png │ │ │ ├── demo_CacheAndExecute_title_and_statistics.png │ │ │ ├── demo_CacheNoPruning_cache_visualization.png │ │ │ ├── demo_CacheNoPruning_title_and_statistics.png │ │ │ ├── demo_CacheWithPruning_cache_visualization.png │ │ │ ├── demo_CacheWithPruning_delete_worse_trajectories.png │ │ │ ├── demo_CacheWithPruning_title_and_statistics.png │ │ │ ├── demo_HighStartTolerance_diff_to_trajectory.png │ │ │ ├── demo_HighStartTolerance_title_and_statistics.png │ │ │ └── demo_HighStartTolerance_tolerance.png │ │ ├── launch │ │ │ ├── trajectory_cache.rviz │ │ │ ├── trajectory_cache_demo.launch.py │ │ │ └── trajectory_cache_move_group.launch.py │ │ ├── src │ │ │ └── trajectory_cache_demo.cpp │ │ └── trajectory_cache_tutorial.rst │ └── using_ompl_constrained_planning │ │ ├── CMakeLists.txt │ │ ├── RVizVisualTools.png │ │ ├── case_1.gif │ │ ├── case_2.gif │ │ ├── case_3.gif │ │ ├── launch │ │ ├── ompl_constrained_planning.launch.py │ │ └── ompl_constrained_planning.rviz │ │ ├── ompl_constrained_planning.rst │ │ ├── ompl_constrained_planning_header.png │ │ ├── src │ │ └── ompl_constrained_planning_tutorial.cpp │ │ └── trajectory_slider.png └── tutorials │ ├── getting_started │ └── getting_started.rst │ ├── pick_and_place_with_moveit_task_constructor │ ├── CMakeLists.txt │ ├── first_stages.png │ ├── launch │ │ ├── mtc.rviz │ │ ├── mtc_demo.launch.py │ │ ├── mtc_demo_minimal.launch.py │ │ └── pick_place_demo.launch.py │ ├── mtc_show_stages.gif │ ├── mtc_stage_types.png │ ├── package.xml │ ├── pick_and_place_with_moveit_task_constructor.rst │ ├── src │ │ ├── minimal.cpp │ │ └── mtc_node.cpp │ └── stages.png │ ├── planning_around_objects │ ├── hello_moveit.cpp │ ├── planning_around_object.png │ └── planning_around_objects.rst │ ├── quickstart_in_rviz │ ├── CMakeLists.txt │ ├── launch │ │ ├── demo.launch.py │ │ ├── kinova_hello_moveit.rviz │ │ ├── kinova_moveit_config_demo.rviz │ │ └── kinova_moveit_config_demo_empty.rviz │ ├── quickstart_in_rviz_tutorial.rst │ ├── rviz_add_rviz_visual_tools.png │ ├── rviz_click_add.png │ ├── rviz_empty.png │ ├── rviz_interact_button.png │ ├── rviz_panels.png │ ├── rviz_plan_cartesian.png │ ├── rviz_plugin_collision.png │ ├── rviz_plugin_collision_aware_ik_checkbox.png │ ├── rviz_plugin_head.png │ ├── rviz_plugin_interact.png │ ├── rviz_plugin_invalid.png │ ├── rviz_plugin_motion_planning.png │ ├── rviz_plugin_motion_planning_add.png │ ├── rviz_plugin_plan_cartesian.png │ ├── rviz_plugin_plan_free.png │ ├── rviz_plugin_plan_slider.png │ ├── rviz_plugin_planned_path.png │ ├── rviz_plugin_start.png │ ├── rviz_plugin_visualize_robots.png │ ├── rviz_start.png │ └── test │ │ ├── bringup_test.cpp │ │ └── bringup_test.test.py │ ├── tutorials.rst │ ├── visualizing_in_rviz │ ├── add_button.png │ ├── add_rviz_tools_gui.png │ ├── executing.png │ ├── hello_moveit.cpp │ ├── marker_array.png │ ├── marker_array_topic.png │ ├── next_button.png │ ├── panel_menu.png │ ├── planning.png │ ├── uncheck_motion_planning.png │ ├── unchecked_motion_planning.png │ └── visualizing_in_rviz.rst │ └── your_first_project │ ├── kinova_hello_moveit.cpp │ ├── panda_hello_moveit.cpp │ ├── rviz_1.png │ ├── rviz_2.png │ └── your_first_project.rst ├── htmlproofer.sh ├── index.rst ├── moveit2_tutorials.repos ├── package.xml ├── requirements.txt ├── rosdoc.yaml ├── rosindex.yaml └── theme.css /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: Google 3 | ColumnLimit: 120 4 | MaxEmptyLinesToKeep: 1 5 | SortIncludes: false 6 | 7 | Standard: Auto 8 | IndentWidth: 2 9 | TabWidth: 2 10 | UseTab: Never 11 | AccessModifierOffset: -2 12 | ConstructorInitializerIndentWidth: 2 13 | NamespaceIndentation: None 14 | ContinuationIndentWidth: 4 15 | IndentCaseLabels: true 16 | IndentFunctionDeclarationAfterType: false 17 | 18 | AlignEscapedNewlinesLeft: false 19 | AlignTrailingComments: true 20 | 21 | AllowAllParametersOfDeclarationOnNextLine: false 22 | ExperimentalAutoDetectBinPacking: false 23 | ObjCSpaceBeforeProtocolList: true 24 | Cpp11BracedListStyle: false 25 | 26 | AllowShortBlocksOnASingleLine: true 27 | AllowShortIfStatementsOnASingleLine: false 28 | AllowShortLoopsOnASingleLine: false 29 | AllowShortFunctionsOnASingleLine: None 30 | AllowShortCaseLabelsOnASingleLine: false 31 | 32 | AlwaysBreakTemplateDeclarations: true 33 | AlwaysBreakBeforeMultilineStrings: false 34 | BreakBeforeBinaryOperators: false 35 | BreakBeforeTernaryOperators: false 36 | BreakConstructorInitializersBeforeComma: true 37 | 38 | BinPackParameters: true 39 | ConstructorInitializerAllOnOneLineOrOnePerLine: true 40 | DerivePointerBinding: false 41 | PointerBindsToType: true 42 | 43 | PenaltyExcessCharacter: 50 44 | PenaltyBreakBeforeFirstCallParameter: 30 45 | PenaltyBreakComment: 1000 46 | PenaltyBreakFirstLessLess: 10 47 | PenaltyBreakString: 100 48 | PenaltyReturnTypeOnItsOwnLine: 50 49 | 50 | SpacesBeforeTrailingComments: 2 51 | SpacesInParentheses: false 52 | SpacesInAngles: false 53 | SpaceInEmptyParentheses: false 54 | SpacesInCStyleCastParentheses: false 55 | SpaceAfterCStyleCast: false 56 | SpaceAfterControlStatementKeyword: true 57 | SpaceBeforeAssignmentOperators: true 58 | 59 | # Configure each individual brace in BraceWrapping 60 | BreakBeforeBraces: Custom 61 | 62 | # Control of individual brace wrapping cases 63 | BraceWrapping: 64 | AfterCaseLabel: true 65 | AfterClass: true 66 | AfterControlStatement: true 67 | AfterEnum: true 68 | AfterFunction: true 69 | AfterNamespace: true 70 | AfterStruct: true 71 | AfterUnion: true 72 | BeforeCatch: true 73 | BeforeElse: true 74 | IndentBraces: false 75 | ... 76 | -------------------------------------------------------------------------------- /.clang-tidy: -------------------------------------------------------------------------------- 1 | --- 2 | Checks: '-*, 3 | performance-*, 4 | llvm-namespace-comment, 5 | modernize-redundant-void-arg, 6 | modernize-use-nullptr, 7 | modernize-use-default, 8 | modernize-use-override, 9 | modernize-loop-convert, 10 | readability-named-parameter, 11 | readability-redundant-smartptr-get, 12 | readability-redundant-string-cstr, 13 | readability-simplify-boolean-expr, 14 | readability-container-size-empty, 15 | readability-identifier-naming, 16 | ' 17 | HeaderFilterRegex: '' 18 | AnalyzeTemporaryDtors: false 19 | CheckOptions: 20 | - key: llvm-namespace-comment.ShortNamespaceLines 21 | value: '10' 22 | - key: llvm-namespace-comment.SpacesBeforeComments 23 | value: '2' 24 | - key: readability-braces-around-statements.ShortStatementLines 25 | value: '2' 26 | # type names 27 | - key: readability-identifier-naming.ClassCase 28 | value: CamelCase 29 | - key: readability-identifier-naming.EnumCase 30 | value: CamelCase 31 | - key: readability-identifier-naming.UnionCase 32 | value: CamelCase 33 | # method names 34 | - key: readability-identifier-naming.MethodCase 35 | value: camelBack 36 | ... 37 | -------------------------------------------------------------------------------- /.codespell_words: -------------------------------------------------------------------------------- 1 | SINIC 2 | -------------------------------------------------------------------------------- /.docker/README.md: -------------------------------------------------------------------------------- 1 | # MoveIt Docker Containers 2 | 3 | For more information see the pages [Continuous Integration and Docker](http://moveit.ros.org/documentation/contributing/continuous_integration.html) and [Using Docker Containers with MoveIt](https://moveit.picknik.ai/main/doc/how_to_guides/how_to_setup_docker_containers_in_ubuntu.html). 4 | 5 | To build the Docker image locally, run the following from the root folder of this repository. 6 | 7 | docker build -f .docker/Dockerfile -t moveit2_tutorials --build-arg ROS_DISTRO=${ROS_DISTRO}. 8 | 9 | where `${ROS_DISTRO}` should be available if you have a ROS installation sourced locally, else you can pick a target release, e.g., `humble` or `rolling`. 10 | -------------------------------------------------------------------------------- /.docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # Example command: 2 | # Humble on a NVIDIA system: 3 | # DOCKER_IMAGE=humble-humble-tutorial-source docker compose run gpu 4 | # Rolling without discrete graphics: 5 | # DOCKER_IMAGE=main-rolling-tutorial-source compose run cpu 6 | 7 | services: 8 | cpu: 9 | image: moveit/moveit2:${DOCKER_IMAGE} 10 | container_name: moveit2_container 11 | privileged: true 12 | network_mode: host 13 | command: /bin/bash 14 | volumes: 15 | - /tmp/.X11-unix:/tmp/.X11-unix 16 | - $XAUTHORITY:/root/.Xauthority 17 | environment: 18 | QT_X11_NO_MITSHM: 1 19 | DISPLAY: $DISPLAY 20 | gpu: 21 | image: moveit/moveit2:${DOCKER_IMAGE} 22 | container_name: moveit2_container 23 | privileged: true 24 | network_mode: host 25 | command: /bin/bash 26 | deploy: 27 | resources: 28 | reservations: 29 | devices: 30 | - driver: nvidia 31 | count: 1 32 | capabilities: [gpu] 33 | volumes: 34 | - /tmp/.X11-unix:/tmp/.X11-unix 35 | - $XAUTHORITY:/root/.Xauthority 36 | environment: 37 | QT_X11_NO_MITSHM: 1 38 | DISPLAY: $DISPLAY 39 | NVIDIA_VISIBLE_DEVICES: all 40 | NVIDIA_DRIVER_CAPABILITIES: all 41 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | **/.git 3 | **/_scripts 4 | **/_static 5 | **/_templates 6 | **/build 7 | **/.vscode 8 | *.md 9 | *.rst 10 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Description 2 | 3 | Overview of your issue here. 4 | 5 | ### Your environment 6 | * ROS Distro: [Foxy|Galactic|Humble|Rolling] 7 | * OS Version: e.g. Ubuntu 22.04 8 | * Source or Binary build? 9 | * If binary, which release version? 10 | * If source, which git commit or tag? 11 | 12 | ### Steps to reproduce 13 | Tell us how to reproduce this issue. Attempt to provide a working demo, perhaps using Docker. 14 | 15 | ### Expected behaviour 16 | Tell us what should happen 17 | 18 | ### Backtrace or Console output 19 | 20 | Use [gist.github.com](gist.github.com) to copy-paste the console output or segfault backtrace using gdb. 21 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Description 2 | 3 | Please explain the changes you made, including a reference to the related issue if applicable 4 | 5 | ### Checklist 6 | - [ ] **Required by CI**: Code is auto formatted using [clang-format](http://moveit.ros.org/documentation/contributing/code) 7 | - [ ] While waiting for someone to review your request, please consider reviewing [another open pull request](https://github.com/moveit/moveit2/pulls) to support the maintainers 8 | 9 | [//]: # "You can expect a response from a maintainer within 7 days. If you haven't heard anything by then, feel free to ping the thread. Thank you!" 10 | -------------------------------------------------------------------------------- /.github/config.yml: -------------------------------------------------------------------------------- 1 | # Configuration for welcome - https://github.com/behaviorbot/welcome 2 | 3 | # Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome 4 | 5 | # Comment to be posted to on first time issues 6 | newIssueWelcomeComment: > 7 | Thanks for reporting an issue. Because we're a volunteer community, providing a pull request with suggested changes is always welcomed. 8 | 9 | # Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome 10 | 11 | # Comment to be posted to on PRs from first time contributors in your repository 12 | newPRWelcomeComment: > 13 | Thanks for helping in improving MoveIt 2 and open source robotics! 14 | 15 | # Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge 16 | 17 | # Comment to be posted to on pull requests merged by a first time user 18 | firstPRMergeComment: > 19 | Congrats on getting your first MoveIt 2 pull request merged and improving open source robotics! 20 | 21 | # It is recommended to include as many gifs and emojis as possible! 22 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | commit-message: 8 | prefix: "🛠️" 9 | -------------------------------------------------------------------------------- /.github/mergify.yml: -------------------------------------------------------------------------------- 1 | pull_request_rules: 2 | - name: backport to humble at reviewers discretion 3 | conditions: 4 | - base=main 5 | - "label=backport-humble" 6 | actions: 7 | backport: 8 | branches: 9 | - humble 10 | labels: 11 | - humble 12 | title: Backport of {{ title }} (#{{ number }}) to {{ destination_branch }} 13 | 14 | - name: backport to galactic at reviewers discretion 15 | conditions: 16 | - base=main 17 | - "label=backport-galactic" 18 | actions: 19 | backport: 20 | branches: 21 | - galactic 22 | labels: 23 | - galactic 24 | title: Backport of {{ title }} (#{{ number }}) to {{ destination_branch }} 25 | 26 | - name: backport to foxy at reviewers discretion 27 | conditions: 28 | - base=main 29 | - "label=backport-foxy" 30 | actions: 31 | backport: 32 | branches: 33 | - foxy 34 | labels: 35 | - foxy 36 | title: Backport of {{ title }} (#{{ number }}) to {{ destination_branch }} 37 | 38 | - name: ask to resolve conflict 39 | conditions: 40 | - conflict 41 | - author!=mergify 42 | actions: 43 | comment: 44 | message: This pull request is in conflict. Could you fix it @{{author}}? 45 | -------------------------------------------------------------------------------- /.github/upstream.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | moveit_task_constructor: 3 | type: git 4 | url: https://github.com/moveit/moveit_task_constructor.git 5 | version: ros2 6 | moveit_visual_tools: 7 | type: git 8 | url: https://github.com/moveit/moveit_visual_tools 9 | version: ros2 10 | rosparam_shortcuts: 11 | type: git 12 | url: https://github.com/PickNikRobotics/rosparam_shortcuts 13 | version: ros2 14 | rviz_visual_tools: 15 | type: git 16 | url: https://github.com/PickNikRobotics/rviz_visual_tools.git 17 | version: ros2 18 | # Remove ros2_kortex when rolling binaries are available. 19 | ros2_kortex: 20 | type: git 21 | url: https://github.com/Kinovarobotics/ros2_kortex.git 22 | version: main 23 | # Remove ros2_robotiq_gripper when rolling binaries are available. 24 | ros2_robotiq_gripper: 25 | type: git 26 | url: https://github.com/PickNikRobotics/ros2_robotiq_gripper.git 27 | version: main 28 | # Serial is a dependency of ros2_robotiq_gripper. Remove when ros2_robotiq_gripper binaries are available. 29 | serial: 30 | type: git 31 | url: https://github.com/tylerjw/serial.git 32 | version: ros2 33 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | # This config uses industrial_ci (https://github.com/ros-industrial/industrial_ci.git). 2 | # For troubleshooting, see readme (https://github.com/ros-industrial/industrial_ci/blob/master/README.rst) 3 | 4 | name: CI 5 | 6 | on: 7 | schedule: 8 | # 5 PM UTC every Sunday 9 | - cron: '0 17 * * 6' 10 | workflow_dispatch: 11 | pull_request: 12 | branches: 13 | - main 14 | push: 15 | branches: 16 | - main 17 | 18 | jobs: 19 | default: 20 | strategy: 21 | matrix: 22 | env: 23 | - IMAGE: rolling-source 24 | 25 | env: 26 | DOCKER_IMAGE: moveit/moveit2:${{ matrix.env.IMAGE }} 27 | UPSTREAM_WORKSPACE: .github/upstream.repos 28 | AFTER_SETUP_UPSTREAM_WORKSPACE: vcs pull $BASEDIR/upstream_ws/src 29 | AFTER_SETUP_UPSTREAM_WORKSPACE_EMBED: set +u && source ~/ws_moveit/install/setup.bash && set - u 30 | TARGET_CMAKE_ARGS: -DCMAKE_BUILD_TYPE=Release 31 | CCACHE_DIR: ${{ github.workspace }}/.ccache 32 | BASEDIR: ${{ github.workspace }}/.work 33 | CACHE_PREFIX: ${{ matrix.env.IMAGE }} 34 | 35 | name: ${{ matrix.env.IMAGE }} 36 | runs-on: ubuntu-latest 37 | steps: 38 | - uses: actions/checkout@v4 39 | with: 40 | fetch-depth: 0 41 | - name: cache upstream_ws 42 | uses: actions/cache@v4 43 | with: 44 | save-always: true 45 | path: ${{ env.BASEDIR }}/upstream_ws 46 | key: upstream_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('.github/upstream.repos') }}-${{ github.run_id }} 47 | restore-keys: | 48 | upstream_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('.github/upstream.repos') }} 49 | # The target directory cache doesn't include the source directory because 50 | # that comes from the checkout. See "prepare target_ws for cache" task below 51 | - name: cache target_ws 52 | uses: actions/cache@v4 53 | with: 54 | save-always: true 55 | path: ${{ env.BASEDIR }}/target_ws 56 | key: target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }}-${{ github.run_id }} 57 | restore-keys: | 58 | target_ws-${{ env.CACHE_PREFIX }}-${{ hashFiles('**/CMakeLists.txt', '**/package.xml') }} 59 | - name: cache ccache 60 | uses: actions/cache@v4 61 | with: 62 | save-always: true 63 | path: ${{ env.CCACHE_DIR }} 64 | key: ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }}-${{ github.run_id }} 65 | restore-keys: | 66 | ccache-${{ env.CACHE_PREFIX }}-${{ github.sha }} 67 | ccache-${{ env.CACHE_PREFIX }} 68 | - name: industrial_ci 69 | uses: ros-industrial/industrial_ci@master 70 | env: ${{ matrix.env }} 71 | - name: prepare target_ws for cache 72 | run: | 73 | du -sh ${{ env.BASEDIR }}/target_ws 74 | sudo find ${{ env.BASEDIR }}/target_ws -wholename '*/test_results/*' -delete 75 | sudo rm -rf ${{ env.BASEDIR }}/target_ws/src 76 | du -sh ${{ env.BASEDIR }}/target_ws 77 | -------------------------------------------------------------------------------- /.github/workflows/docker-images.yml: -------------------------------------------------------------------------------- 1 | name: Build Tutorial Image 2 | 3 | on: 4 | workflow_call: 5 | workflow_dispatch: 6 | 7 | jobs: 8 | build-images: 9 | strategy: 10 | fail-fast: false 11 | matrix: 12 | ROS_DISTRO: [rolling] 13 | runs-on: ubuntu-latest 14 | permissions: 15 | packages: write 16 | contents: read 17 | env: 18 | GH_IMAGE: ghcr.io/${{ github.repository }}:${{ matrix.ROS_DISTRO }} 19 | PUSH: ${{ (github.ref_name == 'main') }} 20 | 21 | steps: 22 | - name: Set lower case for container name 23 | run: | 24 | echo "GH_IMAGE_LC=${GH_IMAGE,,}" >>${GITHUB_ENV} 25 | - name: Set up Docker Buildx 26 | uses: docker/setup-buildx-action@v3 27 | - name: Login to Github Container Registry 28 | uses: docker/login-action@v3 29 | with: 30 | registry: ghcr.io 31 | username: ${{ github.repository_owner }} 32 | password: ${{ secrets.GITHUB_TOKEN }} 33 | - name: Build Tutorial Image 34 | uses: docker/build-push-action@v6 35 | with: 36 | file: .docker/Dockerfile 37 | build-args: | 38 | ROS_DISTRO=${{ matrix.ROS_DISTRO }} 39 | target: tutorial_image 40 | push: ${{ env.PUSH }} 41 | no-cache: false 42 | tags: | 43 | ${{ env.GH_IMAGE_LC }}-tutorial 44 | -------------------------------------------------------------------------------- /.github/workflows/docker.yml: -------------------------------------------------------------------------------- 1 | name: Update Tutorial Images 2 | 3 | on: 4 | schedule: 5 | # 5 PM UTC every Sunday 6 | - cron: '0 17 * * 6' 7 | workflow_dispatch: 8 | push: 9 | branches: 10 | - main 11 | 12 | jobs: 13 | call-docker-images: 14 | uses: ./.github/workflows/docker-images.yml 15 | secrets: inherit 16 | 17 | delete-untagged: 18 | runs-on: ubuntu-latest 19 | needs: 20 | - call-docker-images 21 | steps: 22 | - name: Delete Untagged Images 23 | if: (github.event_name == 'schedule') 24 | uses: actions/github-script@v7 25 | with: 26 | github-token: ${{ secrets.DELETE_PACKAGES_TOKEN }} 27 | script: | 28 | const response = await github.request("GET /orgs/${{ env.OWNER }}/packages/container/${{ env.PACKAGE_NAME }}/versions", { 29 | per_page: ${{ env.PER_PAGE }} 30 | }); 31 | for(version of response.data) { 32 | if (version.metadata.container.tags.length == 0) { 33 | console.log("delete " + version.id) 34 | const deleteResponse = await github.request("DELETE /orgs/${{ env.OWNER }}/packages/container/${{ env.PACKAGE_NAME }}/versions/" + version.id, { }); 35 | console.log("status " + deleteResponse.status) 36 | } 37 | } 38 | env: 39 | OWNER: ${{ github.repository_owner }} 40 | PACKAGE_NAME: moveit2_tutorials 41 | PER_PAGE: 100 42 | -------------------------------------------------------------------------------- /.github/workflows/format.yml: -------------------------------------------------------------------------------- 1 | # This is a format job. Pre-commit has a first-party GitHub action, so we use 2 | # that: https://github.com/pre-commit/action 3 | 4 | name: Format 5 | 6 | on: 7 | workflow_dispatch: 8 | pull_request: 9 | push: 10 | branches: 11 | - main 12 | - humble 13 | 14 | permissions: 15 | contents: read # to fetch code (actions/checkout) 16 | 17 | jobs: 18 | pre-commit: 19 | name: Format 20 | runs-on: ubuntu-latest 21 | steps: 22 | - uses: actions/checkout@v4 23 | - uses: actions/setup-python@v5 24 | with: 25 | python-version: '3.10' 26 | - name: Install clang-format-14 27 | run: sudo apt-get install clang-format-14 28 | - uses: pre-commit/action@v3.0.1 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.pyc 3 | doc/api/python_api/_autosummary/ 4 | doc/manifest.yaml 5 | doc/html 6 | build 7 | Gemfile 8 | native_build 9 | *.gdb 10 | .venv 11 | # For local rst builds 12 | _build/ 13 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | # To use: 2 | # 3 | # pre-commit run -a 4 | # 5 | # Or: 6 | # 7 | # pre-commit install # (runs every time you commit in git) 8 | # 9 | # To update this file: 10 | # 11 | # pre-commit autoupdate 12 | # 13 | # See https://github.com/pre-commit/pre-commit 14 | 15 | repos: 16 | # Standard hooks 17 | - repo: https://github.com/pre-commit/pre-commit-hooks 18 | rev: v5.0.0 19 | hooks: 20 | - id: check-added-large-files 21 | - id: check-case-conflict 22 | - id: check-merge-conflict 23 | - id: check-symlinks 24 | - id: check-yaml 25 | - id: debug-statements 26 | - id: end-of-file-fixer 27 | - id: mixed-line-ending 28 | - id: trailing-whitespace 29 | 30 | - repo: https://github.com/psf/black 31 | rev: 24.10.0 32 | hooks: 33 | - id: black 34 | 35 | - repo: local 36 | hooks: 37 | - id: misspelled-moveit 38 | name: misspelled-moveit 39 | description: MoveIt should be spelled exactly as MoveIt 40 | language: pygrep 41 | entry: Moveit\W|MoveIt!|Moveit2|MoveIt2 42 | exclude: .pre-commit-config.yaml 43 | - id: clang-format 44 | name: clang-format 45 | description: Format files with ClangFormat. 46 | entry: clang-format-14 47 | language: system 48 | files: \.(c|cc|cxx|cpp|frag|glsl|h|hpp|hxx|ih|ispc|ipp|java|js|m|proto|vert)$ 49 | args: ['-fallback-style=none', '-i'] 50 | 51 | - repo: https://github.com/codespell-project/codespell 52 | rev: v2.4.0 53 | hooks: 54 | - id: codespell 55 | args: ['--write-changes', '--ignore-words=.codespell_words'] 56 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2008-2013, Willow Garage, Inc. 4 | Copyright (c) 2015-2019, PickNik, LLC. 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 notice, this 11 | list of conditions and the following disclaimer. 12 | 13 | * Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | 17 | * Neither the name of the copyright holder nor the names of its 18 | contributors may be used to endorse or promote products derived from 19 | this software without specific prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 25 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 27 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 28 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Make file to generate documentation 2 | 3 | SOURCE = . 4 | OUT = build 5 | BUILD = python3 -m sphinx 6 | OPTS =-c . 7 | 8 | help: 9 | @$(BUILD) -M help "$(SOURCE)" "$(OUT)" $(OPTS) 10 | @echo " multiversion to build documentation for all branches" 11 | 12 | multiversion: Makefile 13 | sphinx-multiversion $(OPTS) "$(SOURCE)" build/html 14 | @echo "" > build/html/index.html 15 | 16 | local-with-api: Makefile 17 | @echo Building local with API 18 | @echo Step 1 of 2: Clone MoveIt 2 and build API using selected distro 19 | mkdir -p build/html 20 | cd build/html && if cd moveit2; then git pull; else git clone https://github.com/moveit/moveit2 -b $(MOVEIT_BRANCH) --depth 1 && cd moveit2; fi && \ 21 | sed -i "s/HTML_EXTRA_STYLESHEET =.*/HTML_EXTRA_STYLESHEET = ..\/..\/..\/theme.css/g" Doxyfile && DOXYGEN_OUTPUT_DIRECTORY="../api" doxygen && cd .. && rm -rf moveit2 22 | @echo Step 2 of 2: Building html 23 | make html 24 | 25 | # intended to be leveraged for CI only 26 | generate_api_artifacts: Makefile 27 | @echo Building Python API Artifacts 28 | @echo Step 1 of 3: Ensure build folder exists 29 | mkdir -p build/html 30 | @echo Step 2 of 3: generate CPP API Artifacts 31 | cd build/html && if cd moveit2; then git pull; else git clone https://github.com/moveit/moveit2 -b $(BRANCH) --depth 1 && cd moveit2; fi && \ 32 | sed -i "s/HTML_EXTRA_STYLESHEET =.*/HTML_EXTRA_STYLESHEET = ..\/..\/..\/theme.css/g" Doxyfile && DOXYGEN_OUTPUT_DIRECTORY="../api" doxygen && cd .. && rm -rf moveit2 33 | @echo Step 3 of 3: Build Sphinx Artifacts 34 | make html 35 | 36 | .PHONY: help local-with-api Makefile multiversion multiversion-with-api generate_api_artifacts 37 | 38 | # By default this is the 'html' build 39 | %: Makefile 40 | @$(BUILD) -M $@ "$(SOURCE)" "$(OUT)" $(OPTS) 41 | -------------------------------------------------------------------------------- /_scripts/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # Example command: 2 | # 3 | # DOCKER_IMAGE=humble-source docker-compose run gpu 4 | 5 | services: 6 | cpu: 7 | image: moveit/moveit2:$DOCKER_IMAGE 8 | privileged: true 9 | network_mode: host 10 | command: /bin/bash 11 | volumes: 12 | - moveit2-data:/root 13 | - /tmp/.X11-unix:/tmp/.X11-unix 14 | - $XAUTHORITY:/root/.Xauthority 15 | environment: 16 | QT_X11_NO_MITSHM: 1 17 | DISPLAY: $DISPLAY 18 | gpu: 19 | image: moveit/moveit2:$DOCKER_IMAGE 20 | privileged: true 21 | network_mode: host 22 | command: /bin/bash 23 | deploy: 24 | resources: 25 | reservations: 26 | devices: 27 | - driver: nvidia 28 | count: 1 29 | capabilities: [gpu] 30 | volumes: 31 | - moveit2-data:/root 32 | - /tmp/.X11-unix:/tmp/.X11-unix 33 | - $XAUTHORITY:/root/.Xauthority 34 | environment: 35 | QT_X11_NO_MITSHM: 1 36 | DISPLAY: $DISPLAY 37 | NVIDIA_VISIBLE_DEVICES: all 38 | NVIDIA_DRIVER_CAPABILITIES: all 39 | 40 | volumes: 41 | moveit2-data: 42 | -------------------------------------------------------------------------------- /_static/css/override.css: -------------------------------------------------------------------------------- 1 | /* A few customizations of sphynx-rtd-theme specific to MoveIt branding */ 2 | 3 | .icon:before { 4 | white-space: pre-wrap !important; 5 | } 6 | 7 | .header-override { 8 | margin-bottom: 12px; 9 | } 10 | 11 | .header-override img { 12 | width: 200px; 13 | } 14 | 15 | .wy-breadcrumbs li.wy-breadcrumbs-aside { 16 | display: block; 17 | width: 100%; 18 | text-align: right; 19 | margin-bottom: -25px; 20 | } 21 | 22 | .wy-body-for-nav .wy-side-nav-search { 23 | background-color: #33343f; 24 | } 25 | 26 | .red { 27 | color: red; 28 | } 29 | 30 | a { 31 | color: #005cfa; 32 | } 33 | 34 | a:hover { 35 | color: #9B58B6; 36 | } 37 | 38 | .rst-content .note { 39 | background-color: #ECECEC; 40 | } 41 | 42 | .rst-content .note .admonition-title { 43 | background-color: #777986; 44 | } 45 | 46 | .wy-menu { 47 | margin-top: 24px; 48 | } 49 | 50 | .wy-nav-side { 51 | background-color: #2D2E38; 52 | } 53 | 54 | .wy-menu-vertical a { 55 | color: #b3b3b3; 56 | } 57 | 58 | .header-override p { 59 | margin-bottom: 0; 60 | text-align: right; 61 | } 62 | -------------------------------------------------------------------------------- /_static/images/concepts_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/concepts_diagram.png -------------------------------------------------------------------------------- /_static/images/example_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/example_diagram.png -------------------------------------------------------------------------------- /_static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/favicon.ico -------------------------------------------------------------------------------- /_static/images/foxy-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/foxy-small.png -------------------------------------------------------------------------------- /_static/images/foxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/foxy.png -------------------------------------------------------------------------------- /_static/images/franka_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/franka_logo.png -------------------------------------------------------------------------------- /_static/images/galactic-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/galactic-small.png -------------------------------------------------------------------------------- /_static/images/galactic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/galactic.png -------------------------------------------------------------------------------- /_static/images/humble-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/humble-small.png -------------------------------------------------------------------------------- /_static/images/motion_planner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/motion_planner.png -------------------------------------------------------------------------------- /_static/images/move_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/move_group.png -------------------------------------------------------------------------------- /_static/images/moveit_pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/moveit_pipeline.png -------------------------------------------------------------------------------- /_static/images/planning_scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/planning_scene.png -------------------------------------------------------------------------------- /_static/images/rolling-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/images/rolling-small.png -------------------------------------------------------------------------------- /_static/videos/C++_Interface_Demo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/C++_Interface_Demo.webm -------------------------------------------------------------------------------- /_static/videos/Servo_Teleop_Demo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/Servo_Teleop_Demo.webm -------------------------------------------------------------------------------- /_static/videos/mobile_base_arm1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/mobile_base_arm1.mp4 -------------------------------------------------------------------------------- /_static/videos/mobile_base_arm2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/mobile_base_arm2.mp4 -------------------------------------------------------------------------------- /_static/videos/mtc-demo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/mtc-demo.webm -------------------------------------------------------------------------------- /_static/videos/mtc.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/mtc.webm -------------------------------------------------------------------------------- /_static/videos/ompl_constraints_box.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/ompl_constraints_box.webm -------------------------------------------------------------------------------- /_static/videos/ompl_constraints_line.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/ompl_constraints_line.webm -------------------------------------------------------------------------------- /_static/videos/ompl_constraints_orientation.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/ompl_constraints_orientation.webm -------------------------------------------------------------------------------- /_static/videos/ompl_constraints_plane.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/ompl_constraints_plane.webm -------------------------------------------------------------------------------- /_static/videos/ompl_mixed_constraints.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/ompl_mixed_constraints.webm -------------------------------------------------------------------------------- /_static/videos/perception_pipeline_demo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/perception_pipeline_demo.webm -------------------------------------------------------------------------------- /_static/videos/rviz_joints_nullspace.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/rviz_joints_nullspace.webm -------------------------------------------------------------------------------- /_static/videos/trajectory_cache/01_cache_and_execute_loop.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/trajectory_cache/01_cache_and_execute_loop.webm -------------------------------------------------------------------------------- /_static/videos/trajectory_cache/02_trajectory_cache_demo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/_static/videos/trajectory_cache/02_trajectory_cache_demo.webm -------------------------------------------------------------------------------- /_templates/page.html: -------------------------------------------------------------------------------- 1 | {% extends "!page.html" %} 2 | 3 | {% block body %} 4 | {% if current_version and latest_version and current_version != latest_version %} 5 | 6 |
7 |

Documentation Version

8 |

9 | {% if current_version.name|string() in eol_versions %} 10 | You're reading the documentation for a version of MoveIt 2 that has reached its EOL (end-of-life), 11 | and is no longer officially supported. 12 | If you want up-to-date information, please have a look at 13 | {{latest_version.name | title }}. 14 | 15 | {% elif current_version.is_released %} 16 | You're reading the documentation for a stable version of MoveIt that is not being developed further. 17 | For information on the recommended version, please have a look at 18 | {{latest_version.name | title }}. 19 | {% endif %} 20 |

21 |
22 | 23 | {% endif %} 24 | {{ super() }} 25 | {% endblock %}% 26 | -------------------------------------------------------------------------------- /build_locally.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | export MOVEIT_BRANCH=main 3 | export ROS_DISTRO=rolling 4 | python_version=$(python --version 2>&1 | tr -d ' ' | tr '[:upper:]' '[:lower:]' | sed 's/\.[0-9]*$//') 5 | 6 | # path variables required to build Python API documentation 7 | export PYTHONPATH=/opt/ros/$ROS_DISTRO/lib/$python_version/site-packages:/opt/ros/$ROS_DISTRO/local/lib/$python_version/dist-packages 8 | export LD_LIBRARY_PATH=/opt/ros/$ROS_DISTRO/lib 9 | 10 | have_loop() { 11 | for arg in "$@"; do 12 | if [[ "${arg}" == "loop" ]]; then 13 | return 0 14 | fi 15 | done 16 | return 1 17 | } 18 | 19 | have_noinstall() { 20 | for arg in "$@"; do 21 | if [[ "${arg}" == "noinstall" ]]; then 22 | return 0 23 | fi 24 | done 25 | return 1 26 | } 27 | 28 | if [[ "$0" != "${BASH_SOURCE}" ]]; then 29 | { 30 | echo "This file is meant to be executed, not 'source'd:" 31 | echo 32 | echo " ./${BASH_SOURCE}" 33 | } >&2 34 | return 1 35 | fi 36 | 37 | ################################################################################ 38 | # Begin Main Script 39 | ################################################################################ 40 | 41 | # Install dependencies, unless argument says to skip 42 | if ! have_noinstall "$@"; then 43 | sudo apt-get install -y doxygen graphviz 44 | pip3 install --upgrade -r requirements.txt 45 | fi 46 | 47 | # A fresh build is required because changes to some components such as css files does not rebuilt currently 48 | # See issue https://github.com/sphinx-doc/sphinx/issues/2090 49 | # rm -rf build 50 | 51 | # Build 52 | make local-with-api 53 | 54 | # Run 55 | xdg-open ./build/html/index.html & 56 | 57 | # Optional build loop 58 | if have_loop "$@"; then 59 | while inotifywait -re modify,move,create,delete .; do 60 | rm -rf build 61 | make html 62 | done 63 | fi 64 | -------------------------------------------------------------------------------- /doc/api/api.rst: -------------------------------------------------------------------------------- 1 | API Documentation 2 | ================= 3 | .. toctree:: 4 | :maxdepth: 1 5 | 6 | cpp_api/api 7 | python_api/api 8 | -------------------------------------------------------------------------------- /doc/api/cpp_api/api.rst: -------------------------------------------------------------------------------- 1 | C++ API Documentation 2 | ===================== 3 | 4 | .. raw:: html 5 | 6 | 7 | -------------------------------------------------------------------------------- /doc/api/python_api/api.rst: -------------------------------------------------------------------------------- 1 | Python API Documentation 2 | ===================================== 3 | 4 | .. toctree:: 5 | 6 | .. autosummary:: 7 | :toctree: _autosummary 8 | :recursive: 9 | 10 | moveit.core.collision_detection 11 | moveit.core.controller_manager 12 | moveit.core.kinematic_constraints 13 | moveit.core.planning_interface 14 | moveit.core.planning_scene 15 | moveit.core.robot_model 16 | moveit.core.robot_state 17 | moveit.core.robot_trajectory 18 | moveit.planning 19 | moveit.servo_client 20 | -------------------------------------------------------------------------------- /doc/concepts/concepts.rst: -------------------------------------------------------------------------------- 1 | ======== 2 | Concepts 3 | ======== 4 | 5 | .. toctree:: 6 | :maxdepth: 1 7 | 8 | kinematics 9 | motion_planning 10 | hybrid_planning/hybrid_planning 11 | move_group 12 | planning_scene_monitor 13 | trajectory_processing 14 | moveit_task_constructor/moveit_task_constructor 15 | 16 | .. image:: /_static/images/moveit_pipeline.png 17 | -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/global_planner_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/global_planner_small.png -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/hybrid_planner_logic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/hybrid_planner_logic.png -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/hybrid_planner_logic_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/hybrid_planner_logic_2.png -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/hybrid_planner_manager_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/hybrid_planner_manager_small.png -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/hybrid_planning_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/hybrid_planning_architecture.png -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/hybrid_planning_event_logic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/hybrid_planning_event_logic.png -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/local_planner_loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/local_planner_loop.png -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/local_planner_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/local_planner_small.png -------------------------------------------------------------------------------- /doc/concepts/hybrid_planning/replanning_example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/hybrid_planning/replanning_example.gif -------------------------------------------------------------------------------- /doc/concepts/kinematics.rst: -------------------------------------------------------------------------------- 1 | ========== 2 | Kinematics 3 | ========== 4 | 5 | The Kinematics Plugin 6 | --------------------- 7 | 8 | MoveIt uses a plugin infrastructure, especially targeted towards allowing users to write their own inverse kinematics algorithms. 9 | Forward kinematics and finding Jacobians is integrated within the RobotState class itself. 10 | The default inverse kinematics plugin for MoveIt is configured using the `KDL `_ numerical Jacobian-based solver. 11 | This plugin is automatically configured by the MoveIt Setup Assistant. 12 | 13 | ****************** 14 | Collision Checking 15 | ****************** 16 | 17 | Collision checking in MoveIt is configured inside a Planning Scene using the ``CollisionWorld`` object. 18 | Fortunately, MoveIt is set up so that users never really have to worry about how collision checking is happening. 19 | Collision checking in MoveIt is mainly carried out using the `FCL `_ package - the primary collision checking library of MoveIt. 20 | 21 | Collision Objects 22 | ----------------- 23 | 24 | MoveIt supports collision checking for different types of objects including: 25 | 26 | - **Meshes** - you can use either ``.stl`` (standard triangle language) or ``.dae`` (digital asset exchange) formats to describe objects such as robot links. 27 | 28 | - **Primitive Shapes** - e.g. boxes, cylinders, cones, spheres and planes 29 | 30 | - **Octomap** - the ``Octomap`` object can be directly used for collision checking 31 | 32 | Allowed Collision Matrix (ACM) 33 | ------------------------------ 34 | 35 | Collision checking is a very expensive operation often accounting for close to 90% of the computational expense during motion planning. 36 | The ``Allowed Collision Matrix`` or ``ACM`` encodes a binary value corresponding to the need to check for collision between pairs of bodies (which could be on the robot or in the world). 37 | If the value corresponding to two bodies is set to ``true`` in the ACM, no collision check between the two bodies will be performed. 38 | The collision checking would not be required if, e.g., the two bodies are always so far away that they can never collide with each other. 39 | Alternatively, the two bodies could be in contact with each other by default, in which case the collision detection should be disabled for the pair in the ACM. 40 | -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/_static/images/alternatives.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/moveit_task_constructor/_static/images/alternatives.png -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/_static/images/connecting_stage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/moveit_task_constructor/_static/images/connecting_stage.png -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/_static/images/fallbacks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/moveit_task_constructor/_static/images/fallbacks.png -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/_static/images/generating_stage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/moveit_task_constructor/_static/images/generating_stage.png -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/_static/images/merger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/moveit_task_constructor/_static/images/merger.png -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/_static/images/mtc_show_stages.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/moveit_task_constructor/_static/images/mtc_show_stages.gif -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/_static/images/mtc_task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/moveit_task_constructor/_static/images/mtc_task.png -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/_static/images/propagating_stage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/concepts/moveit_task_constructor/_static/images/propagating_stage.png -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/connecting_stages.rst: -------------------------------------------------------------------------------- 1 | .. _Connecting Stages: 2 | 3 | ################# 4 | Connecting Stages 5 | ################# 6 | 7 | | MTC provides only one connecting stage called Connect. 8 | | A connect stage solves for a feasible trajectory between the start and goal states. 9 | 10 | Connect 11 | ------- 12 | 13 | | The ``Connect`` stage connects two stages by finding a motion plan between the start and end goal given by the adjacent stages. 14 | | The default cost term depends on path length. 15 | | The default planning time for this stage is 1.0s. 16 | 17 | .. list-table:: Properties to be set by user 18 | :widths: 25 100 80 19 | :header-rows: 1 20 | 21 | * - Property Name 22 | - Function to set property 23 | - Description 24 | * - merge_mode 25 | - 26 | - Define the merge strategy to use when performing planning operations. This parameter is an enum type. Can be SEQUENTIAL(Store sequential trajectories) or WAYPOINTS(Join trajectories by their waypoints). Default is WAYPOINTS. 27 | * - path_constaints 28 | - void setPathConstraints(moveit_msgs/Constraints path_constraints) 29 | - Constraints to maintain during trajectory 30 | * - merge_time_parameterization 31 | - 32 | - Default is TOTG (Time-Optimal Trajectory Generation). Information about TOTG is available in the :ref:`Time Parameterization tutorial ` 33 | 34 | `API doc for Connect `_. 35 | 36 | Code Example 37 | 38 | .. code-block:: c++ 39 | 40 | auto node = std::make_shared(); 41 | // planner used for connect 42 | auto pipeline = std::make_shared(node, "ompl", "RRTConnectkConfigDefault"); 43 | // connect to pick 44 | stages::Connect::GroupPlannerVector planners = { { "arm", pipeline }, { "gripper", pipeline } }; 45 | auto connect = std::make_unique("connect", planners); 46 | -------------------------------------------------------------------------------- /doc/concepts/moveit_task_constructor/debugging_mtc_task.rst: -------------------------------------------------------------------------------- 1 | .. _Debugging MTC Task: 2 | 3 | ################### 4 | Debugging MTC tasks 5 | ################### 6 | 7 | The Motion Planning Tasks panel in RViz lists all the stages in the MTC task being executed. 8 | Solutions for each stage can be examined by clicking on the stage name. 9 | The failed solutions will contain descriptive reasons for failure. 10 | 11 | .. image:: ./_static/images/mtc_show_stages.gif 12 | -------------------------------------------------------------------------------- /doc/concepts/planning_scene_monitor.rst: -------------------------------------------------------------------------------- 1 | ====================== 2 | Planning Scene Monitor 3 | ====================== 4 | 5 | The ``planning scene`` is an object used for storing the representation of the world around the robot and also the state of the robot itself. 6 | The internal state of the ``planning_scene`` object is typically maintained by a ``planning_scene_monitor`` component that enables reading and writing the state in a thread-safe manner. 7 | 8 | Particularly, the ``move_group`` node as well as the rviz planning scene plugin maintain their own Planning Scene Monitor (PSM). 9 | The ``move_group`` node's PSM *listens* to the topic ``/planning_scene`` and *publishes* its planning scene state to the topic ``monitored_planning_scene``. 10 | The latter is listened to by the rviz planning scene plugin. 11 | 12 | .. image:: /_static/images/planning_scene_monitor.svg 13 | 14 | World Geometry Monitor 15 | ---------------------- 16 | 17 | The world geometry monitor builds world geometry using information from the sensors on the robot such as LIDARs or depth cameras and from user input. 18 | It uses the ``occupancy map monitor`` described below to build a 3D representation of the environment around the robot and augments that with information on the ``planning_scene`` topic for adding object information. 19 | 20 | 3D Perception 21 | ------------- 22 | 23 | 3D perception in MoveIt is handled by the ``occupancy map monitor``. 24 | The occupancy map monitor uses a plugin architecture to handle different kinds of sensor input as shown in the Figure above. 25 | In particular, MoveIt has inbuilt support for handling two kinds of inputs: 26 | 27 | - **Point clouds**: handled by the ``PointCloudOccupancyMapUpdater`` plugin. 28 | 29 | - **Depth images**: handled by the ``DepthImageOccupancyMapUpdater`` plugin. 30 | 31 | Note that you can add your own types of updaters as a plugin to the occupancy map monitor. 32 | 33 | Octomap 34 | ------- 35 | 36 | The Occupancy map monitor uses an `Octomap `_ to maintain the occupancy map of the environment. 37 | The Octomap can actually encode probabilistic information about individual cells although this information is not currently used in MoveIt. 38 | The Octomap can directly be passed into FCL, the collision checking library that MoveIt uses. 39 | 40 | Depth Image Occupancy Map Updater 41 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 42 | 43 | The depth image occupancy map updater includes its own *self-filter*, i.e. it will remove visible parts of the robot from the depth map. 44 | It uses current information about the robot (the robot state) to carry out this operation. 45 | -------------------------------------------------------------------------------- /doc/concepts/trajectory_processing.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | Trajectory Processing 3 | ===================== 4 | 5 | Time parameterization 6 | --------------------- 7 | 8 | Motion planners typically only generate “paths”, i.e. there is no timing information associated with the paths. 9 | MoveIt includes several :cpp_api:`trajectory processing ` algorithms that can work on these paths and generate trajectories that are properly time-parameterized accounting for the maximum velocity and acceleration limits imposed on individual joints. 10 | These limits are read from a special ``joint_limits.yaml`` configuration file that is specified for each robot. 11 | The configuration file is optional and it overrides any velocity or acceleration limits from the URDF. 12 | The recommended algorithm as of January 2023 is :cpp_api:`TimeOptimalTrajectoryGeneration ` (TOTG). 13 | A caveat for this algorithm is that the robot must start and end at rest. 14 | By default, the TOTG timestep is 0.1 seconds. 15 | -------------------------------------------------------------------------------- /doc/examples/bullet_collision_checker/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(bullet_collision_checker_tutorial 2 | src/bullet_collision_checker_tutorial.cpp) 3 | 4 | target_link_libraries(bullet_collision_checker_tutorial 5 | ${interactive_markers_LIBRARIES} 6 | interactivity_utils 7 | ${catkin_LIBRARIES} 8 | ${Boost_LIBRARIES}) 9 | 10 | install(TARGETS bullet_collision_checker_tutorial 11 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 12 | 13 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 14 | -------------------------------------------------------------------------------- /doc/examples/bullet_collision_checker/images/bullet_CCD_both_states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/bullet_collision_checker/images/bullet_CCD_both_states.png -------------------------------------------------------------------------------- /doc/examples/bullet_collision_checker/images/bullet_CCD_discrete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/bullet_collision_checker/images/bullet_CCD_discrete.png -------------------------------------------------------------------------------- /doc/examples/bullet_collision_checker/images/bullet_collision_visualized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/bullet_collision_checker/images/bullet_collision_visualized.png -------------------------------------------------------------------------------- /doc/examples/bullet_collision_checker/images/fcl_collision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/bullet_collision_checker/images/fcl_collision.png -------------------------------------------------------------------------------- /doc/examples/bullet_collision_checker/images/fcl_vs_bullet_markers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/bullet_collision_checker/images/fcl_vs_bullet_markers.png -------------------------------------------------------------------------------- /doc/examples/bullet_collision_checker/launch/bullet_collision_checker_tutorial.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /doc/examples/collision_environments/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(collision_scene_example 2 | src/collision_scene_example.cpp) 3 | target_include_directories(collision_scene_example 4 | PUBLIC include) 5 | ament_target_dependencies(collision_scene_example 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 7 | 8 | install(TARGETS collision_scene_example 9 | ARCHIVE DESTINATION lib 10 | LIBRARY DESTINATION lib 11 | RUNTIME DESTINATION lib/${PROJECT_NAME}) 12 | -------------------------------------------------------------------------------- /doc/examples/controller_configuration/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(controller_manager_example 2 | src/moveit_controller_manager_example.cpp) 3 | target_link_libraries(controller_manager_example 4 | ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 5 | install(TARGETS controller_manager_example DESTINATION 6 | ${CATKIN_PACKAGE_BIN_DESTINATION}) 7 | 8 | # Need to use non-standard install location to find plugin description both in devel and install space 9 | install(FILES moveit_controller_manager_example_plugin_description.xml 10 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/doc/controller_configuration) 11 | -------------------------------------------------------------------------------- /doc/examples/controller_configuration/moveit_controller_manager_example_plugin_description.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | An example controller for MoveIt. This is not functional code, but can serve as a starting point for simple controllers. 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /doc/examples/creating_moveit_plugins/lerp_motion_planner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories(include) 2 | include_directories( 3 | SYSTEM 4 | ${catkin_INCLUDE_DIRS} 5 | ${Boost_INCLUDE_DIRS} 6 | ) 7 | 8 | add_executable(lerp_example src/lerp_example.cpp) 9 | target_link_libraries(lerp_example 10 | ${catkin_LIBRARIES} 11 | ${Boost_LIBRARIES} 12 | ) 13 | 14 | # Lerp planning plugin 15 | add_library(moveit_lerp_planner_plugin 16 | src/lerp_planner_manager.cpp 17 | src/lerp_interface.cpp 18 | src/lerp_planning_context.cpp) 19 | set_target_properties(moveit_lerp_planner_plugin PROPERTIES VERSION "${${PROJECT_NAME}_VERSION}") 20 | target_link_libraries(moveit_lerp_planner_plugin ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 21 | 22 | ############# 23 | ## Install ## 24 | ############# 25 | 26 | # Mark executables and/or libraries for installation 27 | install( 28 | TARGETS 29 | moveit_lerp_planner_plugin 30 | ARCHIVE DESTINATION 31 | ${CATKIN_PACKAGE_LIB_DESTINATION} 32 | LIBRARY DESTINATION 33 | ${CATKIN_PACKAGE_LIB_DESTINATION} 34 | RUNTIME DESTINATION 35 | ${CATKIN_PACKAGE_BIN_DESTINATION} 36 | ) 37 | 38 | # Mark cpp header files for installation 39 | install( 40 | DIRECTORY 41 | include 42 | DESTINATION 43 | ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 44 | ) 45 | 46 | # Mark roslaunch files for installation 47 | install( 48 | DIRECTORY 49 | launch 50 | DESTINATION 51 | ${CATKIN_PACKAGE_SHARE_DESTINATION} 52 | ) 53 | #catkin_lint ignore uninstalled_plugin 54 | install(FILES lerp_interface_plugin_description.xml 55 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/doc/creating_moveit_plugins/lerp_motion_planner/) 56 | -------------------------------------------------------------------------------- /doc/examples/creating_moveit_plugins/lerp_motion_planner/include/lerp_interface/lerp_planning_context.h: -------------------------------------------------------------------------------- 1 | #ifndef LERP_PLANNING_CONTEXT_H 2 | #define LERP_PLANNING_CONTEXT_H 3 | 4 | #include 5 | 6 | #include "lerp_interface/lerp_interface.h" 7 | 8 | namespace lerp_interface 9 | { 10 | MOVEIT_CLASS_FORWARD(LERPPlanningContext); 11 | 12 | class LERPPlanningContext : public planning_interface::PlanningContext 13 | { 14 | public: 15 | LERPPlanningContext(const std::string& name, const std::string& group, const moveit::core::RobotModelConstPtr& model); 16 | ~LERPPlanningContext() override 17 | { 18 | } 19 | 20 | bool solve(planning_interface::MotionPlanResponse& res) override; 21 | bool solve(planning_interface::MotionPlanDetailedResponse& res) override; 22 | 23 | bool terminate() override; 24 | void clear() override; 25 | 26 | private: 27 | moveit::core::RobotModelConstPtr robot_model_; 28 | moveit::core::RobotStatePtr robot_state_; 29 | LERPInterfacePtr lerp_interface_; 30 | }; 31 | 32 | } // namespace lerp_interface 33 | 34 | #endif // LERP_PLANNING_CONTEXT_H 35 | -------------------------------------------------------------------------------- /doc/examples/creating_moveit_plugins/lerp_motion_planner/launch/lerp_example.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /doc/examples/creating_moveit_plugins/lerp_motion_planner/lerp_interface_plugin_description.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The lerp motion planner plugin which interpolates between two given start and goal joint state values. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /doc/examples/creating_moveit_plugins/lerp_motion_planner/lerp_planner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/creating_moveit_plugins/lerp_motion_planner/lerp_planner.png -------------------------------------------------------------------------------- /doc/examples/custom_constraint_samplers/custom_constraint_samplers_tutorial.rst: -------------------------------------------------------------------------------- 1 | :moveit1: 2 | 3 | .. 4 | Once updated for MoveIt 2, remove all lines above title (including this comment and :moveit1: tag) 5 | 6 | Custom Constraint Samplers 7 | ========================== 8 | 9 | .. note:: This tutorial is a stub. If you have the time to help us improve it, please do! 10 | 11 | Overview 12 | -------- 13 | Some planning problems require more complex or custom constraint 14 | samplers for more difficult planning problems. This document explains 15 | how to create a custom motion planning constraint sampler for use 16 | with MoveIt. 17 | 18 | Getting Started 19 | --------------- 20 | If you haven't already done so, make sure you've completed the steps in :doc:`Getting Started `. 21 | 22 | Creating a constraint sampler 23 | ----------------------------- 24 | 25 | A plugin example is provided at :doc:`Creating MoveIt Plugins `. 26 | -------------------------------------------------------------------------------- /doc/examples/dual_arms/dual_arms_tutorial.rst: -------------------------------------------------------------------------------- 1 | Dual Arms with MoveIt 2 | ===================== 3 | 4 | There are quite a few configuration steps to control two or more manipulators with MoveIt. Luckily it has gotten easier over time. Here, an example is provided and we list all the changes needed to go from 1 robot to X robots. 5 | 6 | The launch and configuration files in this example are available :moveit_resources_codedir:`here. ` 7 | 8 | Running the Demo 9 | ---------------- 10 | 11 | Let's jump right in. Run: :: 12 | 13 | ros2 launch dual_arm_panda_moveit_config demo.launch.py 14 | 15 | You should see RViz come up with a dual-arm system. In the drop-down menu you can select either ``left_panda_arm`` or ``right_panda_arm``, and you can Plan and Execute motions with either one. 16 | 17 | .. image:: rviz_dual_arms.png 18 | :width: 700px 19 | 20 | What Changes were required for the Dual-Arm System? 21 | --------------------------------------------------- 22 | 23 | - A prefix argument was added to the Panda arm xacro, ``panda_arm_macro.urdf.xacro``. Now all links and joints are prepended with ``left_`` or ``right_``. 24 | 25 | - Add ``left_initial_positions.yaml`` and ``right_initial_positions.yaml``. (This is only necessary when simulating -- it doesn't apply when a hardware robot is used.) Pass a ``left_`` or ``right_`` prefix to ``panda.ros2_control.xacro`` to select this file. 26 | 27 | - Ensure all joints in ``panda.ros2_control.xacro`` are prepended by the ``prefix`` arg so they will be unique for the left and right arms. 28 | 29 | - Ensure the name of the ros2_control macro is prepended with ``prefix`` as well, so it is unique: :: 30 | 31 | 32 | 33 | - Enumerate the controllers we will need for both arms in the ros2_control config file, ``ros2_controllers.yaml``. Make sure these controllers are launched from ``demo.launch.py``. 34 | 35 | - Define joint groups for each arm in ``panda.srdf``. This tells MoveIt which joints constitute each arm. The joint groups are named ``left_panda_arm`` and ``right_panda_arm``. Also define an end effector for each arm. 36 | 37 | - Define a kinematics solver for each arm in ``kinematics.yaml``. 38 | 39 | - Define the controllers which MoveIt can execute trajectories with in ``moveit_controllers.yaml``. Here we have a trajectory controller for each arm. 40 | 41 | - Also in ``moveit_controllers.yaml``, define the controller management strategy MoveIt will use. The simplest option from a configuration standpoint is ``moveit_ros_control_interface/Ros2ControlManager``. You can also use a ``moveit_simple_controller_manager/MoveItSimpleControllerManager`` although it requires additional namespacing and additional enumeration of the joints. 42 | -------------------------------------------------------------------------------- /doc/examples/dual_arms/rviz_dual_arms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/dual_arms/rviz_dual_arms.png -------------------------------------------------------------------------------- /doc/examples/hand_eye_calibration/images/add_handeye_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hand_eye_calibration/images/add_handeye_panel.png -------------------------------------------------------------------------------- /doc/examples/hand_eye_calibration/images/aruco_target_handeye_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hand_eye_calibration/images/aruco_target_handeye_panel.png -------------------------------------------------------------------------------- /doc/examples/hand_eye_calibration/images/calibrate_tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hand_eye_calibration/images/calibrate_tab.png -------------------------------------------------------------------------------- /doc/examples/hand_eye_calibration/images/choose_new_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hand_eye_calibration/images/choose_new_panel.png -------------------------------------------------------------------------------- /doc/examples/hand_eye_calibration/images/context_tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hand_eye_calibration/images/context_tab.png -------------------------------------------------------------------------------- /doc/examples/hand_eye_calibration/images/hand_eye_calibration_demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hand_eye_calibration/images/hand_eye_calibration_demo.jpg -------------------------------------------------------------------------------- /doc/examples/hybrid_planning/images/global_planner_dataflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hybrid_planning/images/global_planner_dataflow.png -------------------------------------------------------------------------------- /doc/examples/hybrid_planning/images/hybrid_planning_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hybrid_planning/images/hybrid_planning_architecture.png -------------------------------------------------------------------------------- /doc/examples/hybrid_planning/images/local_planner_dataflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hybrid_planning/images/local_planner_dataflow.png -------------------------------------------------------------------------------- /doc/examples/hybrid_planning/images/logical_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hybrid_planning/images/logical_flow.png -------------------------------------------------------------------------------- /doc/examples/hybrid_planning/images/replanning_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/hybrid_planning/images/replanning_demo.gif -------------------------------------------------------------------------------- /doc/examples/ikfast/openrave_panda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/ikfast/openrave_panda.png -------------------------------------------------------------------------------- /doc/examples/interactivity/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(INTERACTIVITY_LIB_NAME interactivity_utils) 2 | 3 | add_library(${INTERACTIVITY_LIB_NAME} 4 | src/interactive_robot.cpp 5 | src/imarker.cpp 6 | src/pose_string.cpp 7 | ) 8 | 9 | # add_executable(interactivity_tutorial 10 | # src/interactivity_tutorial.cpp 11 | # src/interactive_robot.cpp 12 | # src/imarker.cpp 13 | # src/pose_string.cpp 14 | # ) 15 | # target_link_libraries(interactivity_tutorial 16 | # ${catkin_LIBRARIES} 17 | # ${Boost_LIBRARIES} 18 | # ${interactive_markers_LIBRARIES} 19 | # ) 20 | # 21 | # add_executable(attached_body_tutorial 22 | # src/attached_body_tutorial.cpp 23 | # src/interactive_robot.cpp 24 | # src/imarker.cpp 25 | # src/pose_string.cpp 26 | # ) 27 | 28 | target_link_libraries( 29 | ${INTERACTIVITY_LIB_NAME} 30 | ${catkin_LIBRARIES} 31 | ${Boost_LIBRARIES} 32 | ) 33 | 34 | install( 35 | TARGETS 36 | ${INTERACTIVITY_LIB_NAME} 37 | LIBRARY 38 | DESTINATION 39 | ${CATKIN_PACKAGE_LIB_DESTINATION} 40 | ARCHIVE 41 | DESTINATION 42 | ${CATKIN_PACKAGE_LIB_DESTINATION} 43 | RUNTIME 44 | DESTINATION 45 | ${CATKIN_GLOBAL_BIN_DESTINATION} 46 | ) 47 | 48 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 49 | -------------------------------------------------------------------------------- /doc/examples/interactivity/include/interactivity/pose_string.h: -------------------------------------------------------------------------------- 1 | /********************************************************************* 2 | * Software License Agreement (BSD License) 3 | * 4 | * Copyright (c) 2013, Willow Garage, Inc. 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 Willow Garage 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 | /* Author: Acorn Pooley */ 36 | 37 | // This code goes with the interactivity tutorial 38 | 39 | #ifndef MOVEIT_TUTORIALS_INTERACTIVITY_SRC_POSE_STRING_ 40 | #define MOVEIT_TUTORIALS_INTERACTIVITY_SRC_POSE_STRING_ 41 | 42 | #include 43 | #include 44 | #include 45 | 46 | std::string PoseString(const geometry_msgs::Pose& pose); 47 | std::string PoseString(const Eigen::Isometry3d& pose); 48 | 49 | #endif // MOVEIT_TUTORIALS_INTERACTIVITY_SRC_POSE_STRING_ 50 | -------------------------------------------------------------------------------- /doc/examples/interactivity/launch/attached_body_tutorial.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/examples/interactivity/launch/interactivity_tutorial.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/examples/jupyter_notebook_prototyping/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install( 2 | DIRECTORY config launch src 3 | DESTINATION share/${PROJECT_NAME} 4 | ) 5 | -------------------------------------------------------------------------------- /doc/examples/jupyter_notebook_prototyping/config/jupyter_notebook_prototyping.yaml: -------------------------------------------------------------------------------- 1 | planning_scene_monitor_options: 2 | name: "planning_scene_monitor" 3 | robot_description: "robot_description" 4 | joint_state_topic: "/joint_states" 5 | attached_collision_object_topic: "/moveit_cpp/planning_scene_monitor" 6 | publish_planning_scene_topic: "/moveit_cpp/publish_planning_scene" 7 | monitored_planning_scene_topic: "/moveit_cpp/monitored_planning_scene" 8 | wait_for_initial_state_timeout: 10.0 9 | 10 | planning_pipelines: 11 | #namespace: "moveit_cpp" # optional, default is ~ 12 | pipeline_names: ["ompl"] 13 | 14 | plan_request_params: 15 | planning_attempts: 1 16 | planning_pipeline: ompl 17 | max_velocity_scaling_factor: 1.0 18 | max_acceleration_scaling_factor: 1.0 19 | -------------------------------------------------------------------------------- /doc/examples/kinematics/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(ros_api_tutorial src/ros_api_tutorial.cpp) 2 | target_link_libraries(ros_api_tutorial ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 3 | 4 | install(TARGETS ros_api_tutorial DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 5 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 6 | -------------------------------------------------------------------------------- /doc/examples/kinematics/launch/ros_api_tutorial.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /doc/examples/mobile_base_arm/images/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/mobile_base_arm/images/intro.png -------------------------------------------------------------------------------- /doc/examples/motion_planning_api/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(motion_planning_api_tutorial 2 | src/motion_planning_api_tutorial.cpp) 3 | target_include_directories(motion_planning_api_tutorial 4 | PUBLIC include) 5 | ament_target_dependencies(motion_planning_api_tutorial 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 7 | 8 | install(TARGETS motion_planning_api_tutorial 9 | DESTINATION lib/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY launch 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/examples/motion_planning_api/launch/motion_planning_api_tutorial.launch.py: -------------------------------------------------------------------------------- 1 | from launch import LaunchDescription 2 | from launch_ros.actions import Node 3 | from moveit_configs_utils import MoveItConfigsBuilder 4 | 5 | 6 | def generate_launch_description(): 7 | moveit_config = ( 8 | MoveItConfigsBuilder("moveit_resources_panda") 9 | .robot_description(file_path="config/panda.urdf.xacro") 10 | .robot_description_semantic(file_path="config/panda.srdf") 11 | .trajectory_execution(file_path="config/moveit_controllers.yaml") 12 | .planning_pipelines(pipelines=["ompl"]) 13 | .to_moveit_configs() 14 | ) 15 | 16 | return LaunchDescription( 17 | [ 18 | Node( 19 | package="moveit2_tutorials", 20 | executable="motion_planning_api_tutorial", 21 | name="motion_planning_api_tutorial", 22 | output="screen", 23 | parameters=[moveit_config.to_dict()], 24 | ) 25 | ] 26 | ) 27 | -------------------------------------------------------------------------------- /doc/examples/motion_planning_api/motion_planning_api_tutorial.rst: -------------------------------------------------------------------------------- 1 | Motion Planning API 2 | ================================== 3 | .. image:: motion_planning_api_tutorial_robot_move_arm_1st.png 4 | :width: 700px 5 | 6 | In MoveIt, the motion planners are loaded using a plugin infrastructure. This 7 | allows MoveIt to load motion planners at runtime. In this example, we will 8 | run through the C++ code required to do this. 9 | 10 | Getting Started 11 | --------------- 12 | If you haven't already done so, make sure you've completed the steps in :doc:`Getting Started `. 13 | 14 | Running the Demo 15 | ---------------- 16 | Open two shells. In the first shell start RViz and wait for everything to finish loading: :: 17 | 18 | ros2 launch moveit2_tutorials move_group.launch.py 19 | 20 | In the second shell, run the launch file: :: 21 | 22 | ros2 launch moveit2_tutorials motion_planning_api_tutorial.launch.py 23 | 24 | **Note:** This tutorial uses the **RvizVisualToolsGui** panel to step through the demo. To add this panel to RViz, follow the instructions in the :ref:`Visualization Tutorial `. 25 | 26 | After a short moment, the RViz window should appear and look similar to the one at the top of this page. To progress through each demo step either press the **Next** button in the **RvizVisualToolsGui** panel at the bottom of the screen or select **Key Tool** in the **Tools** panel at the top of the screen and then press **N** on your keyboard while RViz is focused. 27 | 28 | 29 | Expected Output 30 | --------------- 31 | In RViz, we should be able to see four trajectories being replayed eventually: 32 | 33 | 1. The robot moves its arm to the first pose goal, 34 | 35 | |A| 36 | 37 | 2. The robot moves its arm to the joint goal, 38 | 39 | |B| 40 | 41 | 3. The robot moves its arm back to the original pose goal, 42 | 4. The robot moves its arm to a new pose goal while maintaining the end-effector level. 43 | 44 | |C| 45 | 46 | .. |A| image:: motion_planning_api_tutorial_robot_move_arm_1st.png 47 | :width: 200px 48 | .. |B| image:: motion_planning_api_tutorial_robot_move_arm_2nd.png 49 | :width: 200px 50 | .. |C| image:: motion_planning_api_tutorial_robot_move_arm_3rd.png 51 | :width: 200px 52 | 53 | The Entire Code 54 | --------------- 55 | The entire code can be seen :codedir:`here in the moveit_tutorials GitHub project`. 56 | 57 | .. tutorial-formatter:: ./src/motion_planning_api_tutorial.cpp 58 | 59 | The Launch File 60 | --------------- 61 | The entire launch file is :codedir:`here ` on GitHub. All the code in this tutorial can be compiled and run from the moveit_tutorials package. 62 | -------------------------------------------------------------------------------- /doc/examples/motion_planning_api/motion_planning_api_tutorial_robot_move_arm_1st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/motion_planning_api/motion_planning_api_tutorial_robot_move_arm_1st.png -------------------------------------------------------------------------------- /doc/examples/motion_planning_api/motion_planning_api_tutorial_robot_move_arm_2nd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/motion_planning_api/motion_planning_api_tutorial_robot_move_arm_2nd.png -------------------------------------------------------------------------------- /doc/examples/motion_planning_api/motion_planning_api_tutorial_robot_move_arm_3rd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/motion_planning_api/motion_planning_api_tutorial_robot_move_arm_3rd.png -------------------------------------------------------------------------------- /doc/examples/motion_planning_pipeline/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(motion_planning_pipeline_tutorial 2 | src/motion_planning_pipeline_tutorial.cpp) 3 | target_include_directories(motion_planning_pipeline_tutorial 4 | PUBLIC include) 5 | ament_target_dependencies(motion_planning_pipeline_tutorial 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS}) 7 | 8 | install(TARGETS motion_planning_pipeline_tutorial 9 | DESTINATION lib/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY launch 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/examples/motion_planning_pipeline/launch/motion_planning_pipeline_tutorial.launch.py: -------------------------------------------------------------------------------- 1 | import os 2 | import yaml 3 | from launch import LaunchDescription 4 | from launch_ros.actions import Node 5 | from ament_index_python.packages import get_package_share_directory 6 | from moveit_configs_utils import MoveItConfigsBuilder 7 | 8 | 9 | def load_file(package_name, file_path): 10 | package_path = get_package_share_directory(package_name) 11 | absolute_file_path = os.path.join(package_path, file_path) 12 | 13 | try: 14 | with open(absolute_file_path, "r") as file: 15 | return file.read() 16 | # parent of IOError, OSError *and* WindowsError where available 17 | except EnvironmentError: 18 | return None 19 | 20 | 21 | def load_yaml(package_name, file_path): 22 | package_path = get_package_share_directory(package_name) 23 | absolute_file_path = os.path.join(package_path, file_path) 24 | 25 | try: 26 | with open(absolute_file_path, "r") as file: 27 | return yaml.safe_load(file) 28 | # parent of IOError, OSError *and* WindowsError where available 29 | except EnvironmentError: 30 | return None 31 | 32 | 33 | def generate_launch_description(): 34 | 35 | moveit_config = ( 36 | MoveItConfigsBuilder("moveit_resources_panda") 37 | .robot_description(file_path="config/panda.urdf.xacro") 38 | .planning_scene_monitor( 39 | publish_robot_description=True, publish_robot_description_semantic=True 40 | ) 41 | .planning_pipelines("ompl", ["ompl"]) 42 | .to_moveit_configs() 43 | ) 44 | 45 | # MotionPlanningPipeline demo executable 46 | motion_planning_pipeline_demo = Node( 47 | name="motion_planning_pipeline_tutorial", 48 | package="moveit2_tutorials", 49 | executable="motion_planning_pipeline_tutorial", 50 | output="screen", 51 | parameters=[ 52 | moveit_config.robot_description, 53 | moveit_config.robot_description_semantic, 54 | moveit_config.robot_description_kinematics, 55 | moveit_config.planning_pipelines, 56 | moveit_config.joint_limits, 57 | ], 58 | ) 59 | 60 | return LaunchDescription([motion_planning_pipeline_demo]) 61 | -------------------------------------------------------------------------------- /doc/examples/motion_planning_pipeline/motion_planning_pipeline_tutorial.rst: -------------------------------------------------------------------------------- 1 | :moveit1: 2 | 3 | .. 4 | Once updated for MoveIt 2, remove all lines above title (including this comment and :moveit1: tag) 5 | 6 | Motion Planning Pipeline 7 | ================================== 8 | 9 | In MoveIt, the motion planners are setup to plan paths. However, there are often 10 | times when we may want to pre-process the motion planning request or post-process 11 | the planned path (e.g. for time parameterization). In such cases, we use 12 | the planning pipeline which chains a motion planner with pre-processing and post-processing 13 | stages. The pre and post-processing stages, called planning request adapters, can 14 | be configured by name from the ROS parameter server. In this tutorial, we will 15 | run you through the C++ code to instantiate and call such a planning pipeline. 16 | 17 | Getting Started 18 | --------------- 19 | If you haven't already done so, make sure you've completed the steps in :doc:`Getting Started `. 20 | 21 | Running the Code 22 | ---------------- 23 | Open two shells. In the first shell start RViz and wait for everything to finish loading: :: 24 | 25 | ros2 launch moveit2_tutorials move_group.launch.py 26 | 27 | In the second shell, run the launch file: :: 28 | 29 | ros2 launch moveit2_tutorials motion_planning_pipeline_tutorial.launch.py 30 | 31 | **Note:** This tutorial uses the **RvizVisualToolsGui** panel to step through the demo. To add this panel to RViz, follow the instructions in the :ref:`Visualization Tutorial `. 32 | 33 | After a short moment, the RViz window should appear and look similar to the one at the top of this page. To progress through each demo step either press the **Next** button in the **RvizVisualToolsGui** panel at the bottom of the screen or select **Key Tool** in the **Tools** panel at the top of the screen and then press **N** on your keyboard while RViz is focused. 34 | 35 | Expected Output 36 | --------------- 37 | In RViz, we should be able to see three trajectories being replayed eventually: 38 | 39 | 1. The robot moves its right arm to the pose goal in front of it, 40 | 2. The robot moves its right arm to the joint goal to the side, 41 | 3. The robot moves its right arm back to the original pose goal in front of it, 42 | 43 | The Entire Code 44 | --------------- 45 | The entire code can be seen :codedir:`here in the MoveIt GitHub project`. 46 | 47 | .. tutorial-formatter:: ./src/motion_planning_pipeline_tutorial.cpp 48 | 49 | The Launch File 50 | --------------- 51 | The entire launch file is :codedir:`here ` on GitHub. All the code in this tutorial can be compiled and run from the moveit_tutorials package that you have as part of your MoveIt setup. 52 | -------------------------------------------------------------------------------- /doc/examples/motion_planning_python_api/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(PROGRAMS 2 | scripts/motion_planning_python_api_tutorial.py 3 | scripts/motion_planning_python_api_planning_scene.py 4 | DESTINATION lib/${PROJECT_NAME} 5 | ) 6 | 7 | install(DIRECTORY config launch 8 | DESTINATION share/${PROJECT_NAME} 9 | ) 10 | -------------------------------------------------------------------------------- /doc/examples/motion_planning_python_api/config/motion_planning_python_api_tutorial.yaml: -------------------------------------------------------------------------------- 1 | planning_scene_monitor_options: 2 | name: "planning_scene_monitor" 3 | robot_description: "robot_description" 4 | joint_state_topic: "/joint_states" 5 | attached_collision_object_topic: "/moveit_cpp/planning_scene_monitor" 6 | publish_planning_scene_topic: "/moveit_cpp/publish_planning_scene" 7 | monitored_planning_scene_topic: "/moveit_cpp/monitored_planning_scene" 8 | wait_for_initial_state_timeout: 10.0 9 | 10 | planning_pipelines: 11 | pipeline_names: ["ompl", "pilz_industrial_motion_planner", "chomp"] 12 | 13 | plan_request_params: 14 | planning_attempts: 1 15 | planning_pipeline: ompl 16 | max_velocity_scaling_factor: 1.0 17 | max_acceleration_scaling_factor: 1.0 18 | 19 | ompl_rrtc: # Namespace for individual plan request 20 | plan_request_params: # PlanRequestParameters similar to the ones that are used by the single pipeline planning of moveit_cpp 21 | planning_attempts: 1 # Number of attempts the planning pipeline tries to solve a given motion planning problem 22 | planning_pipeline: ompl # Name of the pipeline that is being used 23 | planner_id: "RRTConnectkConfigDefault" # Name of the specific planner to be used by the pipeline 24 | max_velocity_scaling_factor: 1.0 # Velocity scaling parameter for the trajectory generation algorithm that is called (if configured) after the path planning 25 | max_acceleration_scaling_factor: 1.0 # Acceleration scaling parameter for the trajectory generation algorithm that is called (if configured) after the path planning 26 | planning_time: 1.0 # Time budget for the motion plan request. If the planning problem cannot be solved within this time, an empty solution with error code is returned 27 | 28 | pilz_lin: 29 | plan_request_params: 30 | planning_attempts: 1 31 | planning_pipeline: pilz_industrial_motion_planner 32 | planner_id: "PTP" 33 | max_velocity_scaling_factor: 1.0 34 | max_acceleration_scaling_factor: 1.0 35 | planning_time: 0.8 36 | 37 | chomp_planner: 38 | plan_request_params: 39 | planning_attempts: 1 40 | planning_pipeline: chomp 41 | max_velocity_scaling_factor: 1.0 42 | max_acceleration_scaling_factor: 1.0 43 | planning_time: 1.5 44 | -------------------------------------------------------------------------------- /doc/examples/move_group_interface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(move_group_interface_tutorial 2 | src/move_group_interface_tutorial.cpp) 3 | target_include_directories(move_group_interface_tutorial 4 | PUBLIC include) 5 | ament_target_dependencies(move_group_interface_tutorial 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 7 | 8 | install(TARGETS move_group_interface_tutorial 9 | DESTINATION lib/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY launch 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/examples/move_group_interface/launch/move_group_interface_tutorial.launch.py: -------------------------------------------------------------------------------- 1 | from launch import LaunchDescription 2 | from launch_ros.actions import Node 3 | from moveit_configs_utils import MoveItConfigsBuilder 4 | 5 | 6 | def generate_launch_description(): 7 | moveit_config = MoveItConfigsBuilder("moveit_resources_panda").to_moveit_configs() 8 | 9 | # MoveGroupInterface demo executable 10 | move_group_demo = Node( 11 | name="move_group_interface_tutorial", 12 | package="moveit2_tutorials", 13 | executable="move_group_interface_tutorial", 14 | output="screen", 15 | parameters=[ 16 | moveit_config.robot_description, 17 | moveit_config.robot_description_semantic, 18 | moveit_config.robot_description_kinematics, 19 | ], 20 | ) 21 | 22 | return LaunchDescription([move_group_demo]) 23 | -------------------------------------------------------------------------------- /doc/examples/move_group_interface/move_group_interface_tutorial_attached_object.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/move_group_interface/move_group_interface_tutorial_attached_object.gif -------------------------------------------------------------------------------- /doc/examples/move_group_interface/move_group_interface_tutorial_avoid_path.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/move_group_interface/move_group_interface_tutorial_avoid_path.gif -------------------------------------------------------------------------------- /doc/examples/move_group_interface/move_group_interface_tutorial_clear_path.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/move_group_interface/move_group_interface_tutorial_clear_path.gif -------------------------------------------------------------------------------- /doc/examples/move_group_interface/move_group_interface_tutorial_robot_with_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/move_group_interface/move_group_interface_tutorial_robot_with_box.png -------------------------------------------------------------------------------- /doc/examples/move_group_interface/move_group_interface_tutorial_start_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/move_group_interface/move_group_interface_tutorial_start_screen.png -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(moveit_cpp_tutorial src/moveit_cpp_tutorial.cpp) 2 | target_include_directories(moveit_cpp_tutorial PUBLIC include) 3 | ament_target_dependencies(moveit_cpp_tutorial ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 4 | 5 | install(TARGETS moveit_cpp_tutorial 6 | DESTINATION lib/${PROJECT_NAME} 7 | ) 8 | install(DIRECTORY launch 9 | DESTINATION share/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY config 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/config/moveit_cpp.yaml: -------------------------------------------------------------------------------- 1 | planning_scene_monitor_options: 2 | name: "planning_scene_monitor" 3 | robot_description: "robot_description" 4 | joint_state_topic: "/joint_states" 5 | attached_collision_object_topic: "/moveit_cpp/planning_scene_monitor" 6 | publish_planning_scene_topic: "/moveit_cpp/publish_planning_scene" 7 | monitored_planning_scene_topic: "/moveit_cpp/monitored_planning_scene" 8 | wait_for_initial_state_timeout: 10.0 9 | 10 | planning_pipelines: 11 | #namespace: "moveit_cpp" # optional, default is ~ 12 | pipeline_names: ["ompl"] 13 | ompl: 14 | planning_plugin: ompl_interface/OMPLPlanner 15 | planning_plugins: 16 | - ompl_interface/OMPLPlanner 17 | # To optionally use Ruckig for jerk-limited smoothing, add this line to the request adapters below 18 | # default_planning_request_adapters/AddRuckigTrajectorySmoothing 19 | request_adapters: 20 | - default_planning_request_adapters/ResolveConstraintFrames 21 | - default_planning_request_adapters/ValidateWorkspaceBounds 22 | - default_planning_request_adapters/CheckStartStateBounds 23 | - default_planning_request_adapters/CheckStartStateCollision 24 | response_adapters: 25 | - default_planning_response_adapters/AddTimeOptimalParameterization 26 | - default_planning_response_adapters/ValidateSolution 27 | - default_planning_response_adapters/DisplayMotionPath 28 | planner_configs: 29 | PRMstarkConfigDefault: 30 | type: geometric::PRMstar 31 | # Define planner(s) for each move_group 32 | panda_arm: 33 | planner_configs: 34 | - PRMstarkConfigDefault 35 | # Add additional planning pipeline config here 36 | plan_request_params: 37 | planning_attempts: 1 38 | planning_pipeline: ompl 39 | planner_id: "RRTConnectkConfigDefault" 40 | max_velocity_scaling_factor: 1.0 41 | max_acceleration_scaling_factor: 1.0 42 | -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/images/moveitcpp_plan1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_cpp/images/moveitcpp_plan1.png -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/images/moveitcpp_plan2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_cpp/images/moveitcpp_plan2.png -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/images/moveitcpp_plan3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_cpp/images/moveitcpp_plan3.png -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/images/moveitcpp_plan4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_cpp/images/moveitcpp_plan4.png -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/images/moveitcpp_plan5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_cpp/images/moveitcpp_plan5.png -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/images/moveitcpp_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_cpp/images/moveitcpp_start.png -------------------------------------------------------------------------------- /doc/examples/moveit_cpp/moveitcpp_tutorial.rst: -------------------------------------------------------------------------------- 1 | MoveItCpp Tutorial 2 | ================================== 3 | 4 | Introduction 5 | ------------ 6 | MoveItCpp is a new high level interface, a unified C++ API that does not require the use of ROS Actions, Services, and Messages to access the core MoveIt functionality, and an alternative (not a full replacement) for the existing :doc:`MoveGroup API `, we recommend this interface for advanced users needing more realtime control or for industry applications. This interface has been developed at PickNik Robotics by necessity for our many commercial applications. 7 | 8 | .. image:: images/moveitcpp_start.png 9 | :width: 300pt 10 | :align: center 11 | 12 | Getting Started 13 | --------------- 14 | If you haven't already done so, make sure you've completed the steps in :doc:`Getting Started `. 15 | 16 | Running the Code 17 | ---------------- 18 | Open a shell, run the launch file: :: 19 | 20 | ros2 launch moveit2_tutorials moveit_cpp_tutorial.launch.py 21 | 22 | After a short moment, the RViz window should appear and look similar to the one at the top of this page. To progress through each demo step either press the **Next** button in the **RvizVisualToolsGui** panel at the bottom of the screen or select **Key Tool** in the **Tools** panel at the top of the screen and then press **0** on your keyboard while RViz is focused. 23 | 24 | The Entire Code 25 | --------------- 26 | The entire code can be seen :codedir:`here in the MoveIt GitHub project`. Next we step through the code piece by piece to explain its functionality. 27 | 28 | .. tutorial-formatter:: ./src/moveit_cpp_tutorial.cpp 29 | 30 | The Launch File 31 | --------------- 32 | The entire launch file is :codedir:`here` on GitHub. All the code in this tutorial can be run from the **moveit2_tutorials** package that you have as part of your MoveIt setup. 33 | -------------------------------------------------------------------------------- /doc/examples/moveit_deep_grasps/gqcnn_barclamp_gazebo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_deep_grasps/gqcnn_barclamp_gazebo.gif -------------------------------------------------------------------------------- /doc/examples/moveit_deep_grasps/gqcnn_cylinder_gazebo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_deep_grasps/gqcnn_cylinder_gazebo.gif -------------------------------------------------------------------------------- /doc/examples/moveit_deep_grasps/mtc_gpd_panda.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_deep_grasps/mtc_gpd_panda.gif -------------------------------------------------------------------------------- /doc/examples/moveit_deep_grasps/mtc_gqcnn_panda.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_deep_grasps/mtc_gqcnn_panda.gif -------------------------------------------------------------------------------- /doc/examples/moveit_grasps/finger_gripper_explanation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_grasps/finger_gripper_explanation.jpg -------------------------------------------------------------------------------- /doc/examples/moveit_grasps/grasp_generator_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_grasps/grasp_generator_demo.png -------------------------------------------------------------------------------- /doc/examples/moveit_grasps/grasp_pipeline_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_grasps/grasp_pipeline_demo.gif -------------------------------------------------------------------------------- /doc/examples/moveit_grasps/moveit_grasps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_grasps/moveit_grasps.png -------------------------------------------------------------------------------- /doc/examples/moveit_grasps/moveit_grasps_poses.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_grasps/moveit_grasps_poses.jpg -------------------------------------------------------------------------------- /doc/examples/moveit_grasps/suction_gripper_explanation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/moveit_grasps/suction_gripper_explanation.jpg -------------------------------------------------------------------------------- /doc/examples/perception_pipeline/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY urdf launch meshes config worlds rviz2 2 | DESTINATION share/moveit2_tutorials) 3 | -------------------------------------------------------------------------------- /doc/examples/perception_pipeline/config/sensors_3d.yaml: -------------------------------------------------------------------------------- 1 | sensors: 2 | - camera_1_pointcloud 3 | - camera_2_depth_image 4 | camera_1_pointcloud: 5 | sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater 6 | point_cloud_topic: /camera_1/points 7 | max_range: 5.0 8 | point_subsample: 1 9 | padding_offset: 0.1 10 | padding_scale: 1.0 11 | max_update_rate: 1.0 12 | filtered_cloud_topic: /camera_1/filtered_points 13 | camera_2_depth_image: 14 | sensor_plugin: occupancy_map_monitor/DepthImageOctomapUpdater 15 | image_topic: /camera_2/depth/image_raw 16 | queue_size: 5 17 | near_clipping_plane_distance: 0.3 18 | far_clipping_plane_distance: 5.0 19 | shadow_threshold: 0.2 20 | padding_scale: 1.0 21 | max_update_rate: 1.0 22 | filtered_cloud_topic: /camera_2/filtered_points 23 | -------------------------------------------------------------------------------- /doc/examples/perception_pipeline/images/perception_pipeline_demo_gazebo_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/perception_pipeline/images/perception_pipeline_demo_gazebo_screen.png -------------------------------------------------------------------------------- /doc/examples/perception_pipeline/images/perception_pipeline_depth_camera_environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/perception_pipeline/images/perception_pipeline_depth_camera_environment.png -------------------------------------------------------------------------------- /doc/examples/perception_pipeline/urdf/realsense_d435/macros.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/examples/pick_place/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(pick_place_tutorial src/pick_place_tutorial.cpp) 2 | target_link_libraries(pick_place_tutorial ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 3 | install(TARGETS pick_place_tutorial DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 4 | -------------------------------------------------------------------------------- /doc/examples/planning_scene/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(planning_scene_tutorial 2 | src/planning_scene_tutorial.cpp) 3 | target_include_directories(planning_scene_tutorial 4 | PUBLIC include) 5 | ament_target_dependencies(planning_scene_tutorial 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 7 | 8 | install(TARGETS planning_scene_tutorial 9 | DESTINATION lib/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY launch 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/examples/planning_scene/launch/planning_scene_tutorial.launch.py: -------------------------------------------------------------------------------- 1 | from launch import LaunchDescription 2 | from launch_ros.actions import Node 3 | from moveit_configs_utils import MoveItConfigsBuilder 4 | 5 | 6 | def generate_launch_description(): 7 | moveit_config = MoveItConfigsBuilder("moveit_resources_panda").to_moveit_configs() 8 | 9 | # Planning Scene Tutorial executable 10 | planning_scene_tutorial = Node( 11 | name="planning_scene_tutorial", 12 | package="moveit2_tutorials", 13 | executable="planning_scene_tutorial", 14 | output="screen", 15 | parameters=[ 16 | moveit_config.robot_description, 17 | moveit_config.robot_description_semantic, 18 | moveit_config.robot_description_kinematics, 19 | ], 20 | ) 21 | 22 | return LaunchDescription([planning_scene_tutorial]) 23 | -------------------------------------------------------------------------------- /doc/examples/planning_scene/planning_scene_tutorial.rst: -------------------------------------------------------------------------------- 1 | Planning Scene 2 | ================================== 3 | 4 | The :moveit_codedir:`PlanningScene` class provides the main interface that you will use 5 | for collision checking and constraint checking. In this tutorial, we 6 | will explore the C++ interface to this class. 7 | 8 | Getting Started 9 | --------------- 10 | If you haven't already done so, make sure you've completed the steps in :doc:`Getting Started `. 11 | 12 | The entire code 13 | --------------- 14 | The entire code can be seen :codedir:`here in the MoveIt GitHub project`. 15 | 16 | .. tutorial-formatter:: ./src/planning_scene_tutorial.cpp 17 | 18 | The launch file 19 | --------------- 20 | The entire launch file is :codedir:`here ` on GitHub. All the code in this tutorial can be compiled and run from the moveit_tutorials package. 21 | 22 | Running the code 23 | ---------------- 24 | Roslaunch the launch file to run the code directly from moveit_tutorials: :: 25 | 26 | ros2 launch moveit2_tutorials planning_scene_tutorial.launch.py 27 | 28 | Expected Output 29 | --------------- 30 | 31 | The output should look something like this, though we are using random 32 | joint values so some things may be different. :: 33 | 34 | moveit2_tutorials: Test 1: Current state is in self collision 35 | moveit2_tutorials: Test 2: Current state is not in self collision 36 | moveit2_tutorials: Test 3: Current state is not in self collision 37 | moveit2_tutorials: Test 4: Current state is valid 38 | moveit2_tutorials: Test 5: Current state is in self collision 39 | moveit2_tutorials: Contact between: panda_leftfinger and panda_link1 40 | moveit2_tutorials: Contact between: panda_link1 and panda_rightfinger 41 | moveit2_tutorials: Test 6: Current state is not in self collision 42 | moveit2_tutorials: Test 7: Current state is not in self collision 43 | moveit2_tutorials: Test 8: Random state is not constrained 44 | moveit2_tutorials: Test 9: Random state is not constrained 45 | moveit2_tutorials: Test 10: Random state is not constrained 46 | moveit2_tutorials: Test 11: Random state is feasible 47 | moveit2_tutorials: Test 12: Random state is not valid 48 | 49 | **Note:** Don't worry if your output has different ROS console format. You can customize your ROS console logger by following :ros_documentation:`this tutorial `. 50 | -------------------------------------------------------------------------------- /doc/examples/planning_scene_ros_api/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(planning_scene_ros_api_tutorial 2 | src/planning_scene_ros_api_tutorial.cpp) 3 | target_include_directories(planning_scene_ros_api_tutorial 4 | PUBLIC include) 5 | ament_target_dependencies(planning_scene_ros_api_tutorial 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 7 | 8 | install(TARGETS planning_scene_ros_api_tutorial 9 | DESTINATION lib/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY launch 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/examples/planning_scene_ros_api/launch/planning_scene_ros_api_tutorial.launch.py: -------------------------------------------------------------------------------- 1 | import os 2 | import yaml 3 | from launch import LaunchDescription 4 | from launch_ros.actions import Node 5 | from ament_index_python.packages import get_package_share_directory 6 | 7 | 8 | def generate_launch_description(): 9 | 10 | # Planning Scene ROS API Tutorial executable 11 | planning_scene_ros_api_tutorial = Node( 12 | name="planning_scene_ros_api_tutorial", 13 | package="moveit2_tutorials", 14 | executable="planning_scene_ros_api_tutorial", 15 | output="screen", 16 | ) 17 | 18 | return LaunchDescription([planning_scene_ros_api_tutorial]) 19 | -------------------------------------------------------------------------------- /doc/examples/planning_scene_ros_api/planning_scene_ros_api_tutorial.rst: -------------------------------------------------------------------------------- 1 | Planning Scene ROS API 2 | ================================== 3 | 4 | In this tutorial, we will examine the use of planning scene diffs to perform 5 | two operations: 6 | 7 | * Adding and removing objects into the world 8 | * Attaching and detaching objects to the robot 9 | 10 | Getting Started 11 | --------------- 12 | If you haven't already done so, make sure you've completed the steps in :doc:`Getting Started `. 13 | 14 | Running the code 15 | ---------------- 16 | Open two shells. In the first shell start RViz and wait for everything to finish loading: :: 17 | 18 | ros2 launch moveit2_tutorials move_group.launch.py 19 | 20 | In the second shell, run the launch file for this demo: :: 21 | 22 | ros2 launch moveit2_tutorials planning_scene_ros_api_tutorial.launch.py 23 | 24 | After a short moment, the RViz window should appear and look similar to this step in the :ref:`Visualization Tutorial `. To progress through each demo step either press the **Next** button in the **RvizVisualToolsGui** panel at the bottom of the screen or select **Key Tool** in the **Tools** panel at the top of the screen and then press **0** on your keyboard while RViz is focused. 25 | 26 | Expected Output 27 | --------------- 28 | In RViz, you should be able to see the following: 29 | * Object appears in the planning scene. 30 | * Object gets attached to the robot. 31 | * Object gets detached from the robot. 32 | * Object is removed from the planning scene. 33 | 34 | The entire code 35 | --------------- 36 | The entire code can be seen :codedir:`here in the MoveIt GitHub project`. 37 | 38 | .. tutorial-formatter:: ./src/planning_scene_ros_api_tutorial.cpp 39 | 40 | .. 41 | TODO(JafarAbdi): Add the launch file section back (see https://github.com/moveit/moveit_tutorials/blob/master/doc/planning_scene_ros_api/planning_scene_ros_api_tutorial.rst#the-launch-file) 42 | -------------------------------------------------------------------------------- /doc/examples/realtime_servo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(pose_tracking_tutorial src/pose_tracking_tutorial.cpp) 2 | target_include_directories(pose_tracking_tutorial PUBLIC include) 3 | ament_target_dependencies(pose_tracking_tutorial ${THIS_PACKAGE_INCLUDE_DEPENDS}) 4 | 5 | install( 6 | TARGETS 7 | pose_tracking_tutorial 8 | DESTINATION 9 | lib/${PROJECT_NAME} 10 | ) 11 | 12 | install(DIRECTORY launch 13 | DESTINATION share/${PROJECT_NAME} 14 | ) 15 | 16 | install(DIRECTORY config 17 | DESTINATION share/${PROJECT_NAME} 18 | ) 19 | -------------------------------------------------------------------------------- /doc/examples/realtime_servo/servo_rqt_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/realtime_servo/servo_rqt_graph.png -------------------------------------------------------------------------------- /doc/examples/robot_model_and_robot_state/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(robot_model_and_robot_state_tutorial 2 | src/robot_model_and_robot_state_tutorial.cpp) 3 | target_include_directories(robot_model_and_robot_state_tutorial 4 | PUBLIC include) 5 | ament_target_dependencies(robot_model_and_robot_state_tutorial 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 7 | 8 | install(TARGETS robot_model_and_robot_state_tutorial 9 | DESTINATION lib/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY launch 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/examples/robot_model_and_robot_state/launch/robot_model_and_robot_state_tutorial.launch.py: -------------------------------------------------------------------------------- 1 | from launch import LaunchDescription 2 | from launch_ros.actions import Node 3 | from moveit_configs_utils import MoveItConfigsBuilder 4 | 5 | 6 | def generate_launch_description(): 7 | moveit_config = MoveItConfigsBuilder("moveit_resources_panda").to_moveit_configs() 8 | 9 | tutorial_node = Node( 10 | package="moveit2_tutorials", 11 | executable="robot_model_and_robot_state_tutorial", 12 | output="screen", 13 | parameters=[ 14 | moveit_config.robot_description, 15 | moveit_config.robot_description_semantic, 16 | moveit_config.robot_description_kinematics, 17 | ], 18 | ) 19 | 20 | return LaunchDescription([tutorial_node]) 21 | -------------------------------------------------------------------------------- /doc/examples/robot_model_and_robot_state/panda_tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/robot_model_and_robot_state/panda_tf.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/collision_matrix/setup_assistant_panda_collision_matrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/collision_matrix/setup_assistant_panda_collision_matrix.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/collision_matrix/setup_assistant_panda_collision_matrix_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/collision_matrix/setup_assistant_panda_collision_matrix_done.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/moveit_controllers/setup_assistant_hand_moveit_controller_type_gripper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/moveit_controllers/setup_assistant_hand_moveit_controller_type_gripper.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/moveit_controllers/setup_assistant_hand_moveit_controller_type_trajectory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/moveit_controllers/setup_assistant_hand_moveit_controller_type_trajectory.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/moveit_controllers/setup_assistant_moveit_controllers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/moveit_controllers/setup_assistant_moveit_controllers.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/moveit_controllers/setup_assistant_moveit_controllers_done_gripper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/moveit_controllers/setup_assistant_moveit_controllers_done_gripper.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/moveit_controllers/setup_assistant_moveit_controllers_done_trajectory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/moveit_controllers/setup_assistant_moveit_controllers_done_trajectory.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/moveit_controllers/setup_assistant_panda_arm_moveit_controller_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/moveit_controllers/setup_assistant_panda_arm_moveit_controller_type.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/perception/setup_assistant_panda_3d_perception.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/perception/setup_assistant_panda_3d_perception.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/perception/setup_assistant_panda_3d_perception_point_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/perception/setup_assistant_panda_3d_perception_point_cloud.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/planning_groups/setup_assistant_panda_arm_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/planning_groups/setup_assistant_panda_arm_group.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/planning_groups/setup_assistant_panda_arm_group_joints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/planning_groups/setup_assistant_panda_arm_group_joints.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/planning_groups/setup_assistant_panda_arm_group_saved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/planning_groups/setup_assistant_panda_arm_group_saved.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/planning_groups/setup_assistant_panda_hand_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/planning_groups/setup_assistant_panda_hand_group.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/planning_groups/setup_assistant_panda_hand_group_links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/planning_groups/setup_assistant_panda_hand_group_links.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/planning_groups/setup_assistant_panda_planning_groups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/planning_groups/setup_assistant_panda_planning_groups.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/planning_groups/setup_assistant_panda_planning_groups_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/planning_groups/setup_assistant_panda_planning_groups_done.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/predefined_poses/setup_assistant_panda_predefined_arm_pose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/predefined_poses/setup_assistant_panda_predefined_arm_pose.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/predefined_poses/setup_assistant_panda_predefined_hand_close_pose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/predefined_poses/setup_assistant_panda_predefined_hand_close_pose.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/predefined_poses/setup_assistant_panda_predefined_hand_open_pose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/predefined_poses/setup_assistant_panda_predefined_hand_open_pose.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/predefined_poses/setup_assistant_panda_predefined_poses_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/predefined_poses/setup_assistant_panda_predefined_poses_done.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/ros2_control/setup_assistant_ros2_control_tags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/ros2_control/setup_assistant_ros2_control_tags.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/ros2_controllers/setup_assistant_hand_ros2_controller_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/ros2_controllers/setup_assistant_hand_ros2_controller_group.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/ros2_controllers/setup_assistant_hand_ros2_controller_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/ros2_controllers/setup_assistant_hand_ros2_controller_type.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/ros2_controllers/setup_assistant_panda_arm_ros2_controller_group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/ros2_controllers/setup_assistant_panda_arm_ros2_controller_group.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/ros2_controllers/setup_assistant_panda_arm_ros2_controller_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/ros2_controllers/setup_assistant_panda_arm_ros2_controller_type.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/ros2_controllers/setup_assistant_ros2_controllers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/ros2_controllers/setup_assistant_ros2_controllers.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/ros2_controllers/setup_assistant_ros2_controllers_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/ros2_controllers/setup_assistant_ros2_controllers_done.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/setup_assistant_create_package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/setup_assistant_create_package.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/setup_assistant_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/setup_assistant_done.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/setup_assistant_launch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/setup_assistant_launch.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/setup_assistant_launch_files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/setup_assistant_launch_files.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/setup_assistant_load_panda_urdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/setup_assistant_load_panda_urdf.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/setup_assistant_panda_add_end_effector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/setup_assistant_panda_add_end_effector.png -------------------------------------------------------------------------------- /doc/examples/setup_assistant/setup_assistant_panda_virtual_joints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/setup_assistant/setup_assistant_panda_virtual_joints.png -------------------------------------------------------------------------------- /doc/examples/state_display/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(state_display_tutorial src/state_display_tutorial.cpp) 2 | target_link_libraries(state_display_tutorial ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 3 | install(TARGETS state_display_tutorial DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 4 | 5 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 6 | -------------------------------------------------------------------------------- /doc/examples/state_display/launch/state_display_tutorial.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /doc/examples/subframes/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(subframes_tutorial src/subframes_tutorial.cpp) 2 | target_link_libraries(subframes_tutorial ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 3 | install(TARGETS subframes_tutorial DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 4 | -------------------------------------------------------------------------------- /doc/examples/subframes/launch/subframes_tutorial.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /doc/examples/subframes/subframes_tutorial_cylinder_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/subframes/subframes_tutorial_cylinder_demo.gif -------------------------------------------------------------------------------- /doc/examples/tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(CATKIN_ENABLE_TESTING) 2 | catkin_add_gtest(tests_tutorial test/tests.cpp) 3 | target_link_libraries(tests_tutorial 4 | ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 5 | endif() 6 | -------------------------------------------------------------------------------- /doc/examples/tests/code_coverage_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/tests/code_coverage_example.png -------------------------------------------------------------------------------- /doc/examples/tests/tests_tutorial.rst: -------------------------------------------------------------------------------- 1 | :moveit1: 2 | 3 | .. 4 | Once updated for MoveIt 2, remove all lines above title (including this comment and :moveit1: tag) 5 | 6 | Integration/Unit Tests 7 | ====================== 8 | 9 | How to test changes to MoveIt on various robots, including unit and integration tests. 10 | 11 | **Note:** *This is a stub tutorial, to be expanded upon in the future* 12 | 13 | Getting Started 14 | --------------- 15 | If you haven't already done so, make sure you've completed the steps in :doc:`Getting Started `. 16 | 17 | Integration Test 18 | ---------------- 19 | 20 | A Python-based integration test is available for testing higher-level move_group functionality in MoveIt - to run: :: 21 | 22 | rostest moveit_ros_planning_interface python_move_group.test 23 | 24 | Test Robots 25 | ----------- 26 | 27 | **Panda** 28 | 29 | From the package `panda_moveit_config `_: :: 30 | 31 | roslaunch panda_moveit_config demo.launch 32 | 33 | **Fanuc M-10iA** 34 | 35 | From the package `moveit_resources `_: :: 36 | 37 | roslaunch moveit_resources demo.launch 38 | 39 | Unit Tests 40 | ---------- 41 | 42 | Writing Unit Tests 43 | ~~~~~~~~~~~~~~~~~~ 44 | 45 | The entire test file, with includes, can be seen :codedir:`here ` in the moveit_tutorials GitHub project. 46 | 47 | MoveIt uses Google Test as a testing framework. 48 | 49 | .. |br| raw:: html 50 | 51 |
52 | 53 | .. tutorial-formatter:: ./test/tests.cpp 54 | 55 | 56 | Running Unit Tests 57 | ~~~~~~~~~~~~~~~~~~ 58 | 59 | To run unit tests locally on the entire MoveIt catkin workspace using catkin-tools: :: 60 | 61 | catkin run_tests -iv 62 | 63 | To run a test for just 1 package:: 64 | 65 | catkin run_tests --no-deps --this -iv 66 | 67 | To ignore most of the log/print output of the tests:: 68 | 69 | catkin run_tests --no-status --summarize --no-deps --this 70 | 71 | 72 | Code Coverage 73 | ------------- 74 | 75 | Test coverage measures the lines of code that are executed while running the test suite. 76 | To accumulate statistics and create a html coverage report, build the code without optimization 77 | and run the special ``_coverage`` target:: 78 | 79 | sudo apt install ros-noetic-code-coverage 80 | catkin config --cmake-args -DENABLE_COVERAGE_TESTING=ON -DCMAKE_BUILD_TYPE=Debug 81 | catkin build 82 | catkin build moveit_core -v --no-deps --catkin-make-args moveit_core_coverage 83 | 84 | The output will print where the coverage report is located and it looks similar to the following image: 85 | 86 | .. image:: code_coverage_example.png 87 | :width: 300px 88 | :align: center 89 | :alt: example code coverage output 90 | -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(trajopt_example src/trajopt_example.cpp) 2 | target_link_libraries(trajopt_example ${catkin_LIBRARIES} ${Boost_LIBRARIES}) 3 | 4 | install(TARGETS trajopt_example DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 5 | 6 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 7 | -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/algorithm.png -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/fx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/fx.png -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/launch/trajopt_example_launch.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/non_convex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/non_convex.png -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/req_traj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/req_traj.png -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/req_traj_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/req_traj_start.png -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/req_traj_steps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/req_traj_steps.png -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/start_fixed_false.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/start_fixed_false.gif -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/start_fixed_true.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/start_fixed_true.gif -------------------------------------------------------------------------------- /doc/examples/trajopt_planner/trajopt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/trajopt_planner/trajopt.png -------------------------------------------------------------------------------- /doc/examples/visualizing_collisions/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(visualizing_collisions_tutorial 2 | src/visualizing_collisions_tutorial.cpp 3 | ) 4 | 5 | target_link_libraries(visualizing_collisions_tutorial 6 | ${interactive_markers_LIBRARIES} 7 | interactivity_utils 8 | ${catkin_LIBRARIES} 9 | ${Boost_LIBRARIES} 10 | ) 11 | 12 | install( 13 | TARGETS 14 | visualizing_collisions_tutorial 15 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) 16 | 17 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 18 | -------------------------------------------------------------------------------- /doc/examples/visualizing_collisions/collisions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/visualizing_collisions/collisions.png -------------------------------------------------------------------------------- /doc/examples/visualizing_collisions/launch/visualizing_collisions_tutorial.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /doc/examples/visualizing_collisions/visualizing_collisions_tutorial_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/examples/visualizing_collisions/visualizing_collisions_tutorial_screen.png -------------------------------------------------------------------------------- /doc/how_to_contribute/how_to_contribute.rst: -------------------------------------------------------------------------------- 1 | Contributing 2 | ============ 3 | 4 | These how-to guides outline steps for contributing to MoveIt and this website. 5 | If you are looking for How-To Guides for using MoveIt, see :doc:`/doc/how_to_guides/how_to_guides`. 6 | 7 | .. toctree:: 8 | :maxdepth: 1 9 | 10 | how_to_contribute_to_site 11 | how_to_write_tutorials 12 | how_to_write_how_to_guides 13 | how_to_cross_reference 14 | -------------------------------------------------------------------------------- /doc/how_to_guides/benchmarking/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY launch 2 | DESTINATION share/${PROJECT_NAME} 3 | ) 4 | install(DIRECTORY config 5 | DESTINATION share/${PROJECT_NAME} 6 | ) 7 | -------------------------------------------------------------------------------- /doc/how_to_guides/benchmarking/config/benchmarking_moveit_cpp.yaml: -------------------------------------------------------------------------------- 1 | planning_pipelines: 2 | # MoveIt cpp 3 | pipeline_names: ["ompl", "ompl_rrtc", "stomp", "pilz_industrial_motion_planner"] 4 | -------------------------------------------------------------------------------- /doc/how_to_guides/benchmarking/config/benchmarks.yaml: -------------------------------------------------------------------------------- 1 | # A detailed description for all parameters can be found in BenchmarkOptions.hpp 2 | 3 | parameters: 4 | name: FullBenchmark 5 | runs: 1 6 | group: panda_arm # Required 7 | timeout: 1.5 8 | output_directory: /tmp/moveit_benchmarks/ 9 | start_states_regex: ready 10 | planning_pipelines: 11 | # Benchmark tool 12 | pipelines: [OMPL_ANY, OMPL_RRTC, CHOMP, PILZ_LIN] 13 | OMPL_ANY: 14 | name: ompl 15 | planners: 16 | - APSConfigDefault 17 | OMPL_RRTC: 18 | name: ompl_rrtc 19 | planners: 20 | - RRTConnectkConfigDefault 21 | CHOMP: 22 | name: stomp 23 | planners: 24 | - stomp 25 | PILZ_LIN: 26 | name: pilz_industrial_motion_planner 27 | planners: 28 | - LIN 29 | parallel_pipelines: [ompl_pilz_chomp] 30 | ompl_pilz_chomp: 31 | pipelines: [ompl_rrtc, stomp, pilz_industrial_motion_planner] 32 | planner_ids: [RRTConnectkConfigDefault, stomp, LIN] 33 | -------------------------------------------------------------------------------- /doc/how_to_guides/benchmarking/planners_benchmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/benchmarking/planners_benchmark.png -------------------------------------------------------------------------------- /doc/how_to_guides/chomp_planner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY launch 2 | DESTINATION share/${PROJECT_NAME} 3 | ) 4 | install(DIRECTORY config 5 | DESTINATION share/${PROJECT_NAME} 6 | ) 7 | -------------------------------------------------------------------------------- /doc/how_to_guides/chomp_planner/chomp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/chomp_planner/chomp.png -------------------------------------------------------------------------------- /doc/how_to_guides/controller_teleoperation/xboxcontroller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/controller_teleoperation/xboxcontroller.png -------------------------------------------------------------------------------- /doc/how_to_guides/how_to_generate_api_doxygen_locally.rst: -------------------------------------------------------------------------------- 1 | How To Generate API Doxygen Reference Locally 2 | ============================================= 3 | 4 | 5 | Run doxygen in the root of the moveit2 repository. 6 | 7 | Requirements 8 | ------------ 9 | 10 | - Install ``doxygen`` and ``graphviz``: 11 | 12 | .. code-block:: bash 13 | 14 | sudo apt-get install doxygen graphviz 15 | 16 | Steps 17 | ----- 18 | 19 | - Navigate to the moveit2 repository: 20 | 21 | .. code-block:: bash 22 | 23 | cd ~/ws_moveit/src/moveit2 24 | 25 | - Run reference generation command with desired output directory path: 26 | 27 | .. code-block:: bash 28 | 29 | DOXYGEN_OUTPUT_DIRECTORY=~/docs doxygen 30 | 31 | - The documentation entrypoint in a browser is index.html which you can access with: 32 | 33 | .. code-block:: bash 34 | 35 | firefox ~/docs/index.html 36 | -------------------------------------------------------------------------------- /doc/how_to_guides/how_to_guide.rst: -------------------------------------------------------------------------------- 1 | How-To Guide 2 | ============ 3 | 4 | The How-To Guides are distinctly different from tutorials in that they are directed towards a different audience. 5 | How-To Guides are **Problem-Oriented** and assume the reader came to this page to answer a specific question. 6 | These pages possess these qualities: 7 | 8 | * a series of steps 9 | * a focus on the goal 10 | * addressing a specific question 11 | * no unnecessary explanation 12 | * a little flexibility 13 | * practical usability 14 | * good naming 15 | 16 | In a tutorial, you carefully guide the reader through doing a set of steps with the goal of learning. 17 | Readers who are following tutorials don't yet know the terms or concepts well enough to ask specific questions. 18 | Readers of How-To guides are already using MoveIt but are looking for instructions on doing something specific. 19 | 20 | Name Answers a User's Question 21 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22 | 23 | How-To guides answer very specific questions and should capture Google searches. 24 | For that reason, naming is very important. 25 | Examples of good names are: 26 | 27 | * How to Visualize Collisions in MoveIt 28 | * How to Grasp Objects with MoveIt 29 | * How to Run MoveIt with UR5 30 | * How to Fix a Segfault 31 | * How to Migrate from Foxy to Galactic 32 | * How to Run in Gazebo 33 | * How to Set Up a New Robot for MoveIt 34 | * How to Use the MoveIt RViz Plugin 35 | * How to Teleop a Robot Arm with a Controller 36 | 37 | Goal-Focused and Practical 38 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 39 | 40 | For these guides it is important that you focus specifically on solving the problem the user came to the site for. 41 | Because these users already have a deeper understanding of core concepts, you should present the user with some options when they will need to make a decision with tradeoffs. 42 | You should state what the assumed pre-requisites are in the introduction to the How-To Guide. 43 | By doing so, you avoid duplicating instructions on this site and you allow users who already know the prerequisites to jump right into solving their problem. 44 | -------------------------------------------------------------------------------- /doc/how_to_guides/how_to_guides.rst: -------------------------------------------------------------------------------- 1 | How-To Guides 2 | ============= 3 | 4 | These how-to guides will help you quickly solve specific problems using MoveIt. 5 | 6 | For more information, refer to :doc:`/doc/how_to_guides/how_to_guide`. 7 | 8 | Configuring and Using MoveIt 9 | ---------------------------- 10 | 11 | .. toctree:: 12 | :maxdepth: 1 13 | 14 | kinematics_cost_function/kinematics_cost_function_tutorial 15 | moveit_configuration/moveit_configuration_tutorial 16 | moveit_launch_files/moveit_launch_files_tutorial 17 | pilz_industrial_motion_planner/pilz_industrial_motion_planner 18 | stomp_planner/stomp_planner 19 | chomp_planner/chomp_planner_tutorial 20 | using_ompl_constrained_planning/ompl_constrained_planning 21 | parallel_planning/parallel_planning_tutorial 22 | controller_teleoperation/controller_teleoperation 23 | persistent_scenes_and_states/persistent_scenes_and_states 24 | isaac_panda/isaac_panda_tutorial 25 | pick_ik/pick_ik_tutorial 26 | trac_ik/trac_ik_tutorial 27 | benchmarking/benchmarking_tutorial 28 | trajectory_cache/trajectory_cache_tutorial 29 | 30 | Developing and Documenting MoveIt 31 | --------------------------------- 32 | 33 | .. toctree:: 34 | :maxdepth: 1 35 | 36 | how_to_guide 37 | how_to_generate_api_doxygen_locally 38 | how_to_setup_docker_containers_in_ubuntu 39 | how_to_write_doxygen 40 | -------------------------------------------------------------------------------- /doc/how_to_guides/isaac_panda/.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM moveit/moveit2:main-humble-tutorial-source 2 | 3 | SHELL ["/bin/bash", "-c", "-o", "pipefail"] 4 | 5 | ARG CUDA_MAJOR_VERSION=11 6 | ARG CUDA_MINOR_VERSION=7 7 | 8 | # Bring the container up to date to get the latest ROS sync 9 | # hadolint ignore=DL3008, DL3013 10 | RUN apt-get update && apt-get upgrade -y && rosdep update 11 | 12 | # Install packages required to run the demo 13 | RUN apt-get update && apt-get install -y --no-install-recommends \ 14 | ros-humble-topic-based-ros2-control \ 15 | wget \ 16 | python3-pip 17 | 18 | # Install CUDA 19 | ENV DEBIAN_FRONTEND noninteractive 20 | RUN wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb && \ 21 | dpkg -i cuda-keyring_1.0-1_all.deb && \ 22 | apt-get update && \ 23 | apt-get -y install cuda-cudart-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} cuda-compat-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} cuda-toolkit-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} 24 | ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:$PATH 25 | ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:$LD_LIBRARY_PATH 26 | 27 | # Install pytorch 28 | RUN pip3 install torch torchvision 29 | 30 | # Use Fast DDS as middleware and load the required config for NVIDIA Isaac Sim. 31 | ENV RMW_IMPLEMENTATION=rmw_fastrtps_cpp 32 | RUN mkdir -p /opt/.ros 33 | COPY ./doc/how_to_guides/isaac_panda/.docker/fastdds.xml /opt/.ros/fastdds.xml 34 | ENV FASTRTPS_DEFAULT_PROFILES_FILE=/opt/.ros/fastdds.xml 35 | 36 | ENV NVIDIA_VISIBLE_DEVICES all 37 | ENV NVIDIA_DRIVER_CAPABILITIES compute,utility 38 | ENV NVIDIA_REQUIRE_CUDA "cuda>=${CUDA_MAJOR_VERSION}.${CUDA_MINOR_VERSION}" 39 | 40 | # Set up the entrypoint for both container start and interactive terminals. 41 | COPY ./doc/how_to_guides/isaac_panda/.docker/ros_entrypoint.sh /opt/.ros/ 42 | RUN echo "source /opt/.ros/ros_entrypoint.sh" >> ~/.bashrc 43 | ENTRYPOINT [ "/opt/.ros/ros_entrypoint.sh" ] 44 | -------------------------------------------------------------------------------- /doc/how_to_guides/isaac_panda/.docker/fastdds.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | NVIDIA Isaac ROS Software License 12 | 13 | 14 | 15 | UdpTransport 16 | UDPv4 17 | 18 | 19 | 20 | 21 | 22 | 23 | UdpTransport 24 | 25 | false 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /doc/how_to_guides/isaac_panda/.docker/ros_entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Source ROS and the MoveIt 2 workspace 4 | source /opt/ros/humble/setup.bash 5 | source /root/ws_moveit/install/setup.bash 6 | echo "Sourced ROS & MoveIt Humble" 7 | 8 | # Execute the command passed into this entrypoint 9 | exec "$@" 10 | -------------------------------------------------------------------------------- /doc/how_to_guides/isaac_panda/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY launch 2 | DESTINATION share/${PROJECT_NAME} 3 | ) 4 | install(DIRECTORY config 5 | DESTINATION share/${PROJECT_NAME} 6 | ) 7 | -------------------------------------------------------------------------------- /doc/how_to_guides/isaac_panda/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | # Docker Compose file for Isaac ROS 2 Control 2 | # 3 | # Usage: 4 | # 5 | # To build the images: 6 | # docker compose build 7 | # 8 | # To start up a specific service by name: 9 | # docker compose up 10 | # 11 | # To open an interactive shell to a running container: 12 | # (You can tab complete to get the container name) 13 | # docker exec -it bash 14 | 15 | services: 16 | base: 17 | image: isaac_moveit_tutorial 18 | build: 19 | context: ../../.. 20 | dockerfile: doc/how_to_guides/isaac_panda/.docker/Dockerfile 21 | # Interactive shell 22 | stdin_open: true 23 | tty: true 24 | # Networking and IPC for ROS 2 25 | network_mode: host 26 | ipc: host 27 | privileged: true 28 | environment: 29 | # Default the ROS_DOMAIN_ID to zero if not set on the host 30 | - ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-0} 31 | # Allows graphical programs in the container 32 | - DISPLAY=${DISPLAY} 33 | - QT_X11_NO_MITSHM=1 34 | volumes: 35 | # Allows graphical programs in the container 36 | - /tmp/.X11-unix:/tmp/.X11-unix:rw 37 | - ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority 38 | 39 | # Use this service if you want to run the moveit container on a computer without a GPU 40 | # You will still be able to use pytorch, but you will not be able to use the GPU. 41 | demo_isaac_no_gpu: 42 | extends: base 43 | command: ros2 launch moveit2_tutorials isaac_demo.launch.py 44 | 45 | demo_mock_components: 46 | extends: base 47 | command: ros2 launch moveit2_tutorials isaac_demo.launch.py ros2_control_hardware_type:=mock_components 48 | 49 | demo_isaac: 50 | extends: demo_isaac_no_gpu 51 | deploy: 52 | resources: 53 | reservations: 54 | devices: 55 | - capabilities: [gpu] 56 | -------------------------------------------------------------------------------- /doc/how_to_guides/isaac_panda/launch/python.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2023 PickNik Inc. 4 | # All rights reserved. 5 | # 6 | # Unauthorized copying of this code base via any medium is strictly prohibited. 7 | # Proprietary and confidential. 8 | 9 | # Script to call the isaac launch system (see python.sh in the ISAAC_SCRIPT_DIR) 10 | 11 | NEW_OV_PKG_DIR=$HOME/isaacsim 12 | OV_PKG_DIR=$HOME/.local/share/ov/pkg 13 | ISAAC_SCRIPT_DIRS=() 14 | 15 | # Prepend the path to all arguments passed in 16 | CUR_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 17 | NEW_ARGS="" 18 | for arg in "$@"; do 19 | NEW_ARGS="${NEW_ARGS} ${CUR_SCRIPT_DIR}/${arg}" 20 | done 21 | 22 | # Check if ~/isaacsim/python.sh exists 23 | if [[ -f $NEW_OV_PKG_DIR/python.sh ]]; then 24 | # Use ~/isaacsim directly if python.sh exists 25 | pushd $NEW_OV_PKG_DIR 26 | ./python.sh $NEW_ARGS 27 | popd 28 | exit 0 29 | fi 30 | 31 | # Fallback to older locations if ~/isaacsim/python.sh does not exist 32 | 33 | # Check for underscore-separated directory names (e.g., isaac_sim-*) 34 | for ISAAC_SCRIPT_DIR in $(ls -d -- $OV_PKG_DIR/isaac_sim-* 2>/dev/null); do 35 | ISAAC_VER=${ISAAC_SCRIPT_DIR//$OV_PKG_DIR\/isaac_sim-/} 36 | if [[ "$ISAAC_VER" =~ ^(2022.2.0|2022.2.1|2023.1.0|2023.1.1)$ ]]; then 37 | ISAAC_SCRIPT_DIRS+=($ISAAC_SCRIPT_DIR) 38 | fi 39 | done 40 | 41 | # Check for dash-separated directory names (e.g., isaac-sim-*) 42 | for ISAAC_SCRIPT_DIR in $(ls -d -- $OV_PKG_DIR/isaac-sim-* 2>/dev/null); do 43 | ISAAC_SCRIPT_DIRS+=($ISAAC_SCRIPT_DIR) 44 | done 45 | 46 | # Navigate to the most recent Isaac Sim directory and execute the script 47 | if [[ ${#ISAAC_SCRIPT_DIRS[@]} -gt 0 ]]; then 48 | pushd ${ISAAC_SCRIPT_DIRS[${#ISAAC_SCRIPT_DIRS[@]}-1]} 49 | ./python.sh $NEW_ARGS 50 | popd 51 | else 52 | echo "No valid Isaac Sim installation found." 53 | exit 1 54 | fi 55 | -------------------------------------------------------------------------------- /doc/how_to_guides/kinematics_cost_function/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(kinematics_cost_function_tutorial 2 | src/kinematics_cost_function_tutorial.cpp) 3 | target_include_directories(kinematics_cost_function_tutorial 4 | PUBLIC include) 5 | ament_target_dependencies(kinematics_cost_function_tutorial 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS}) 7 | 8 | install(TARGETS kinematics_cost_function_tutorial 9 | DESTINATION lib/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY launch 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/how_to_guides/kinematics_cost_function/kinematics_cost_function_tutorial.rst: -------------------------------------------------------------------------------- 1 | Kinematics Cost Functions 2 | ================================== 3 | 4 | When querying for IK solutions for a goal pose or for a cartesian path goal, we can specify *cost functions* that will be used 5 | to evaluate the fitness of solutions. 6 | 7 | Getting Started 8 | --------------- 9 | If you haven't already done so, make sure you've completed the steps in :doc:`Getting Started `. 10 | 11 | This tutorial also requires the use of `bio_ik `_ as the Inverse Kinematics plugin. First, clone the "ros2" branch of this repository into your workspace's **src** directory: :: 12 | 13 | git clone -b ros2 https://github.com/PickNikRobotics/bio_ik.git 14 | 15 | Then, change your kinematics plugin for the Panda robot by copying the following into moveit_resources/panda_moveit_config/config/kinematics.yaml within your workspace: :: 16 | 17 | panda_arm: 18 | kinematics_solver: bio_ik/BioIKKinematicsPlugin 19 | kinematics_solver_search_resolution: 0.005 20 | kinematics_solver_timeout: 0.005 21 | kinematics_solver_attempts: 1 22 | mode: gd_c # use the gradient descent solver 23 | 24 | After making these changes, rebuild your workspace: :: 25 | 26 | colcon build --mixin release 27 | 28 | Running the Code 29 | ---------------- 30 | Open two shells. In the first shell, start RViz and wait for everything to finish loading: :: 31 | 32 | ros2 launch moveit2_tutorials move_group.launch.py 33 | 34 | In the second shell, run the tutorial launch file: :: 35 | 36 | ros2 launch moveit2_tutorials kinematics_cost_function_tutorial.launch.py 37 | 38 | To progress through each demo step either press the **Next** button in the **RvizVisualToolsGui** panel at the bottom of the screen or select **Key Tool** in the **Tools** panel at the top of the screen and then press **0** on your keyboard while RViz is focused. 39 | 40 | Expected Output 41 | --------------- 42 | In RViz, we should be able to see the following: 43 | 1. The robot moves its arm to the pose goal to its right. The L2 norm of the joint movement with and without the cost function specified is logged in the tutorial terminal. 44 | 2. The robot moves its arm via a straight cartesian movement to the pose goal at its left. 45 | 46 | The Entire Code 47 | --------------- 48 | The entire code can be seen :codedir:`here in the MoveIt GitHub project`. Next, we step through the code piece by piece to explain its functionality. 49 | 50 | .. tutorial-formatter:: ./src/kinematics_cost_function_tutorial.cpp 51 | 52 | The Launch File 53 | --------------- 54 | The entire launch file is :codedir:`here` on GitHub. All the code in this tutorial can be run from the **moveit2_tutorials** package that you have as part of your MoveIt setup. 55 | -------------------------------------------------------------------------------- /doc/how_to_guides/kinematics_cost_function/launch/kinematics_cost_function_tutorial.launch.py: -------------------------------------------------------------------------------- 1 | from launch import LaunchDescription 2 | from launch_ros.actions import Node 3 | from moveit_configs_utils import MoveItConfigsBuilder 4 | 5 | 6 | def generate_launch_description(): 7 | moveit_config = MoveItConfigsBuilder("moveit_resources_panda").to_moveit_configs() 8 | 9 | move_group_demo = Node( 10 | name="kinematics_cost_fn_tutorial", 11 | package="moveit2_tutorials", 12 | executable="kinematics_cost_function_tutorial", 13 | output="screen", 14 | parameters=[ 15 | moveit_config.robot_description, 16 | moveit_config.robot_description_semantic, 17 | moveit_config.robot_description_kinematics, 18 | moveit_config.joint_limits, 19 | ], 20 | ) 21 | 22 | return LaunchDescription([move_group_demo]) 23 | -------------------------------------------------------------------------------- /doc/how_to_guides/parallel_planning/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(parallel_planning_example src/parallel_planning_main.cpp) 2 | target_include_directories(parallel_planning_example PRIVATE include) 3 | ament_target_dependencies(parallel_planning_example ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 4 | 5 | install(TARGETS parallel_planning_example 6 | DESTINATION lib/${PROJECT_NAME} 7 | ) 8 | install(DIRECTORY launch 9 | DESTINATION share/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY config 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/how_to_guides/parallel_planning/config/panda_test_db.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/parallel_planning/config/panda_test_db.sqlite -------------------------------------------------------------------------------- /doc/how_to_guides/parallel_planning/config/parallel_planning_moveit_cpp.yaml: -------------------------------------------------------------------------------- 1 | # Default configurations. More information can be found in the moveit_cpp and planning scene monitor tutorials 2 | planning_scene_monitor_options: 3 | name: "planning_scene_monitor" 4 | robot_description: "robot_description" 5 | joint_state_topic: "/joint_states" 6 | attached_collision_object_topic: "/moveit_cpp/planning_scene_monitor" 7 | publish_planning_scene_topic: "/moveit_cpp/publish_planning_scene" 8 | monitored_planning_scene_topic: "/moveit_cpp/monitored_planning_scene" 9 | wait_for_initial_state_timeout: 10.0 10 | 11 | # Define which planning pipelines are loaded by moveit_cpp. These loaded pipelines will be available for simple and parallel planning 12 | planning_pipelines: 13 | pipeline_names: ["ompl", "pilz_industrial_motion_planner", "chomp", "ompl_2"] 14 | 15 | # Configure parameters of a multi-pipeline plan request. The actual request is created in the cpp code when calling for example: 16 | # MultiPipelinePlanRequestParameters multi_pipeline_plan_request{ 17 | # node, { "ompl_rrtc", "pilz_lin" } 18 | # }; 19 | ompl_rrtc: # Namespace for individual plan request 20 | plan_request_params: # PlanRequestParameters similar to the ones that are used by the single pipeline planning of moveit_cpp 21 | planning_attempts: 1 # Number of attempts the planning pipeline tries to solve a given motion planning problem 22 | planning_pipeline: ompl # Name of the pipeline that is being used 23 | planner_id: "RRTConnectkConfigDefault" # Name of the specific planner to be used by the pipeline 24 | max_velocity_scaling_factor: 1.0 # Velocity scaling parameter for the trajectory generation algorithm that is called (if configured) after the path planning 25 | max_acceleration_scaling_factor: 1.0 # Acceleration scaling parameter for the trajectory generation algorithm that is called (if configured) after the path planning 26 | planning_time: 0.5 # Time budget for the motion plan request. If the planning problem cannot be solved within this time, an empty solution with error code is returned 27 | 28 | pilz_lin: 29 | plan_request_params: 30 | planning_attempts: 1 31 | planning_pipeline: pilz_industrial_motion_planner 32 | planner_id: "PTP" 33 | max_velocity_scaling_factor: 1.0 34 | max_acceleration_scaling_factor: 1.0 35 | planning_time: 0.8 36 | 37 | chomp_planner: 38 | plan_request_params: 39 | planning_attempts: 1 40 | planning_pipeline: chomp 41 | pipeline_id: chomp 42 | max_velocity_scaling_factor: 1.0 43 | max_acceleration_scaling_factor: 1.0 44 | planning_time: 1.5 45 | 46 | # Second OMPL pipeline 47 | ompl_rrt_star: 48 | plan_request_params: 49 | planning_attempts: 1 50 | planning_pipeline: ompl_2 # Different OMPL pipeline name! 51 | planner_id: "RRTstarkConfigDefault" 52 | max_velocity_scaling_factor: 1.0 53 | max_acceleration_scaling_factor: 1.0 54 | planning_time: 1.5 55 | -------------------------------------------------------------------------------- /doc/how_to_guides/persistent_scenes_and_states/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY launch 2 | DESTINATION share/${PROJECT_NAME} 3 | ) 4 | -------------------------------------------------------------------------------- /doc/how_to_guides/persistent_scenes_and_states/rviz_connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/persistent_scenes_and_states/rviz_connect.png -------------------------------------------------------------------------------- /doc/how_to_guides/pick_ik/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY launch 2 | DESTINATION share/${PROJECT_NAME} 3 | ) 4 | install(DIRECTORY config 5 | DESTINATION share/${PROJECT_NAME} 6 | ) 7 | -------------------------------------------------------------------------------- /doc/how_to_guides/pick_ik/config/kinematics_pick_ik.yaml: -------------------------------------------------------------------------------- 1 | 2 | # Configure pick_ik as the solver to use with panda_arm 3 | panda_arm: 4 | kinematics_solver: pick_ik/PickIkPlugin # The IK solver plugin to use 5 | kinematics_solver_timeout: 0.05 # Maximum duration in seconds the solver is allowed to run per attempt 6 | kinematics_solver_attempts: 3 # Maximum number of solver attempts to find a solution 7 | mode: global # Solver mode 'global' enables evolutionary algorithm with gradient descent, and 'local' uses only gradient descent 8 | position_scale: 1.0 # A scale factor for the position cost, setting this to 0.0 means rotation-only IK 9 | rotation_scale: 0.5 # A scale factor for the orientation cost, setting this to 0.0 means position-only IK 10 | position_threshold: 0.001 # Threshold for position difference in meters to consider a solution valid 11 | orientation_threshold: 0.01 # Threshold for orientation difference in radians to consider a solution valid 12 | cost_threshold: 0.001 # Maximum cost function value for a valid solution (all cost functions must return a value lower than this) 13 | minimal_displacement_weight: 0.0 # Weight for joint angle difference cost function. Leave it low or zero for far goals, and make higher for interpolation or jogging 14 | gd_step_size: 0.0001 # Step size for the gradient descent 15 | -------------------------------------------------------------------------------- /doc/how_to_guides/pilz_industrial_motion_planner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(pilz_move_group src/pilz_move_group.cpp) 2 | target_include_directories(pilz_move_group PUBLIC include) 3 | ament_target_dependencies(pilz_move_group ${THIS_PACKAGE_INCLUDE_DEPENDS}) 4 | 5 | add_executable(pilz_mtc src/pilz_mtc.cpp) 6 | target_include_directories(pilz_mtc PUBLIC include) 7 | ament_target_dependencies(pilz_mtc ${THIS_PACKAGE_INCLUDE_DEPENDS}) 8 | 9 | add_executable(pilz_sequence src/pilz_sequence.cpp) 10 | target_include_directories(pilz_sequence PUBLIC include) 11 | ament_target_dependencies(pilz_sequence ${THIS_PACKAGE_INCLUDE_DEPENDS}) 12 | 13 | install( 14 | TARGETS 15 | pilz_move_group 16 | pilz_mtc 17 | pilz_sequence 18 | DESTINATION 19 | lib/${PROJECT_NAME} 20 | ) 21 | 22 | install(DIRECTORY launch 23 | DESTINATION share/${PROJECT_NAME} 24 | ) 25 | -------------------------------------------------------------------------------- /doc/how_to_guides/pilz_industrial_motion_planner/blend_radius.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/pilz_industrial_motion_planner/blend_radius.png -------------------------------------------------------------------------------- /doc/how_to_guides/pilz_industrial_motion_planner/launch/pilz_mtc.launch.py: -------------------------------------------------------------------------------- 1 | from launch import LaunchDescription 2 | from launch_ros.actions import Node 3 | from moveit_configs_utils import MoveItConfigsBuilder 4 | 5 | 6 | def generate_launch_description(): 7 | moveit_config = MoveItConfigsBuilder("moveit_resources_panda").to_dict() 8 | 9 | # Pilz + MTC Demo node 10 | pilz_mtc_demo = Node( 11 | package="moveit2_tutorials", 12 | executable="pilz_mtc", 13 | output="screen", 14 | parameters=[ 15 | moveit_config, 16 | ], 17 | ) 18 | 19 | return LaunchDescription([pilz_mtc_demo]) 20 | -------------------------------------------------------------------------------- /doc/how_to_guides/pilz_industrial_motion_planner/ptp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/pilz_industrial_motion_planner/ptp.png -------------------------------------------------------------------------------- /doc/how_to_guides/pilz_industrial_motion_planner/rviz_planner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/pilz_industrial_motion_planner/rviz_planner.png -------------------------------------------------------------------------------- /doc/how_to_guides/pilz_industrial_motion_planner/trajectory_comparison.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/pilz_industrial_motion_planner/trajectory_comparison.jpeg -------------------------------------------------------------------------------- /doc/how_to_guides/stomp_planner/stomp.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/stomp_planner/stomp.gif -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(trajectory_cache_demo src/trajectory_cache_demo.cpp) 2 | ament_target_dependencies(trajectory_cache_demo ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost moveit_ros_trajectory_cache) 3 | 4 | install(TARGETS trajectory_cache_demo DESTINATION lib/${PROJECT_NAME}) 5 | install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) 6 | install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) 7 | -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/config/trajectory_cache_joint_limits.yaml: -------------------------------------------------------------------------------- 1 | # These are faster joint limits to allow for faster execution. 2 | joint_limits: 3 | panda_joint1: 4 | has_velocity_limits: true 5 | max_velocity: 50.0 6 | has_acceleration_limits: true 7 | max_acceleration: 5.0 8 | has_jerk_limits: false 9 | panda_joint2: 10 | has_velocity_limits: true 11 | max_velocity: 50.0 12 | has_acceleration_limits: true 13 | max_acceleration: 5.0 14 | has_jerk_limits: false 15 | panda_joint3: 16 | has_velocity_limits: true 17 | max_velocity: 50.0 18 | has_acceleration_limits: true 19 | max_acceleration: 5.0 20 | has_jerk_limits: false 21 | panda_joint4: 22 | has_velocity_limits: true 23 | max_velocity: 50.0 24 | has_acceleration_limits: true 25 | max_acceleration: 5.0 26 | has_jerk_limits: false 27 | panda_joint5: 28 | has_velocity_limits: true 29 | max_velocity: 50.0 30 | has_acceleration_limits: true 31 | max_acceleration: 5.0 32 | has_jerk_limits: false 33 | panda_joint6: 34 | has_velocity_limits: true 35 | max_velocity: 50.0 36 | has_acceleration_limits: true 37 | max_acceleration: 5.0 38 | has_jerk_limits: false 39 | panda_joint7: 40 | has_velocity_limits: true 41 | max_velocity: 50.0 42 | has_acceleration_limits: true 43 | max_acceleration: 5.0 44 | has_jerk_limits: false 45 | panda_finger_joint1: 46 | has_velocity_limits: true 47 | max_velocity: 25.0 48 | has_acceleration_limits: true 49 | max_acceleration: 5.0 50 | has_jerk_limits: false 51 | panda_finger_joint2: 52 | has_velocity_limits: true 53 | max_velocity: 25.0 54 | has_acceleration_limits: true 55 | max_acceleration: 5.0 56 | has_jerk_limits: false 57 | -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_CacheAndExecute_best_trajectory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_CacheAndExecute_best_trajectory.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_CacheAndExecute_matchable_plans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_CacheAndExecute_matchable_plans.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_CacheAndExecute_title_and_statistics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_CacheAndExecute_title_and_statistics.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_CacheNoPruning_cache_visualization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_CacheNoPruning_cache_visualization.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_CacheNoPruning_title_and_statistics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_CacheNoPruning_title_and_statistics.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_CacheWithPruning_cache_visualization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_CacheWithPruning_cache_visualization.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_CacheWithPruning_delete_worse_trajectories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_CacheWithPruning_delete_worse_trajectories.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_CacheWithPruning_title_and_statistics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_CacheWithPruning_title_and_statistics.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_HighStartTolerance_diff_to_trajectory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_HighStartTolerance_diff_to_trajectory.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_HighStartTolerance_title_and_statistics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_HighStartTolerance_title_and_statistics.png -------------------------------------------------------------------------------- /doc/how_to_guides/trajectory_cache/images/demo_HighStartTolerance_tolerance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/trajectory_cache/images/demo_HighStartTolerance_tolerance.png -------------------------------------------------------------------------------- /doc/how_to_guides/using_ompl_constrained_planning/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(ompl_constrained_planning 2 | src/ompl_constrained_planning_tutorial.cpp) 3 | target_include_directories(ompl_constrained_planning 4 | PUBLIC include) 5 | ament_target_dependencies(ompl_constrained_planning 6 | ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) 7 | 8 | install(TARGETS ompl_constrained_planning 9 | DESTINATION lib/${PROJECT_NAME} 10 | ) 11 | install(DIRECTORY launch 12 | DESTINATION share/${PROJECT_NAME} 13 | ) 14 | -------------------------------------------------------------------------------- /doc/how_to_guides/using_ompl_constrained_planning/RVizVisualTools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/using_ompl_constrained_planning/RVizVisualTools.png -------------------------------------------------------------------------------- /doc/how_to_guides/using_ompl_constrained_planning/case_1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/using_ompl_constrained_planning/case_1.gif -------------------------------------------------------------------------------- /doc/how_to_guides/using_ompl_constrained_planning/case_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/using_ompl_constrained_planning/case_2.gif -------------------------------------------------------------------------------- /doc/how_to_guides/using_ompl_constrained_planning/case_3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/using_ompl_constrained_planning/case_3.gif -------------------------------------------------------------------------------- /doc/how_to_guides/using_ompl_constrained_planning/ompl_constrained_planning_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/using_ompl_constrained_planning/ompl_constrained_planning_header.png -------------------------------------------------------------------------------- /doc/how_to_guides/using_ompl_constrained_planning/trajectory_slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/how_to_guides/using_ompl_constrained_planning/trajectory_slider.png -------------------------------------------------------------------------------- /doc/tutorials/pick_and_place_with_moveit_task_constructor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(mtc_tutorial src/mtc_node.cpp) 2 | ament_target_dependencies(mtc_tutorial ${THIS_PACKAGE_INCLUDE_DEPENDS}) 3 | 4 | add_executable(minimal_mtc_tutorial src/minimal.cpp) 5 | ament_target_dependencies(minimal_mtc_tutorial ${THIS_PACKAGE_INCLUDE_DEPENDS}) 6 | 7 | install(TARGETS mtc_tutorial minimal_mtc_tutorial 8 | ARCHIVE DESTINATION lib 9 | LIBRARY DESTINATION lib 10 | RUNTIME DESTINATION lib/${PROJECT_NAME}) 11 | 12 | install(DIRECTORY launch 13 | DESTINATION share/${PROJECT_NAME} 14 | ) 15 | -------------------------------------------------------------------------------- /doc/tutorials/pick_and_place_with_moveit_task_constructor/first_stages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/pick_and_place_with_moveit_task_constructor/first_stages.png -------------------------------------------------------------------------------- /doc/tutorials/pick_and_place_with_moveit_task_constructor/launch/mtc_demo_minimal.launch.py: -------------------------------------------------------------------------------- 1 | from launch import LaunchDescription 2 | from launch_ros.actions import Node 3 | from moveit_configs_utils import MoveItConfigsBuilder 4 | 5 | 6 | def generate_launch_description(): 7 | moveit_config = MoveItConfigsBuilder("moveit_resources_panda").to_dict() 8 | 9 | # MTC Demo node 10 | pick_place_demo = Node( 11 | # package="mtc_tutorial", 12 | # executable="mtc_tutorial", 13 | package="moveit2_tutorials", 14 | executable="minimal_mtc_tutorial", 15 | output="screen", 16 | parameters=[ 17 | moveit_config, 18 | ], 19 | ) 20 | 21 | return LaunchDescription([pick_place_demo]) 22 | -------------------------------------------------------------------------------- /doc/tutorials/pick_and_place_with_moveit_task_constructor/launch/pick_place_demo.launch.py: -------------------------------------------------------------------------------- 1 | from launch import LaunchDescription 2 | from launch_ros.actions import Node 3 | from moveit_configs_utils import MoveItConfigsBuilder 4 | 5 | 6 | def generate_launch_description(): 7 | moveit_config = MoveItConfigsBuilder("moveit_resources_panda").to_dict() 8 | 9 | # MTC Demo node 10 | pick_place_demo = Node( 11 | # package="mtc_tutorial", 12 | # executable="mtc_node", 13 | package="moveit2_tutorials", 14 | executable="mtc_tutorial", 15 | output="screen", 16 | parameters=[ 17 | moveit_config, 18 | ], 19 | ) 20 | 21 | return LaunchDescription([pick_place_demo]) 22 | -------------------------------------------------------------------------------- /doc/tutorials/pick_and_place_with_moveit_task_constructor/mtc_show_stages.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/pick_and_place_with_moveit_task_constructor/mtc_show_stages.gif -------------------------------------------------------------------------------- /doc/tutorials/pick_and_place_with_moveit_task_constructor/mtc_stage_types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/pick_and_place_with_moveit_task_constructor/mtc_stage_types.png -------------------------------------------------------------------------------- /doc/tutorials/pick_and_place_with_moveit_task_constructor/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | mtc_pick_and_place_tutorial 5 | 0.0.0 6 | TODO: Package description 7 | jschornak 8 | TODO: License declaration 9 | 10 | ament_cmake 11 | 12 | moveit_task_constructor_core 13 | moveit_ros_planning_interface 14 | moveit_core 15 | 16 | ament_lint_auto 17 | ament_lint_common 18 | 19 | 20 | ament_cmake 21 | 22 | 23 | -------------------------------------------------------------------------------- /doc/tutorials/pick_and_place_with_moveit_task_constructor/stages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/pick_and_place_with_moveit_task_constructor/stages.png -------------------------------------------------------------------------------- /doc/tutorials/planning_around_objects/planning_around_object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/planning_around_objects/planning_around_object.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) 2 | 3 | if(BUILD_TESTING) 4 | find_package(ament_lint_auto REQUIRED) 5 | find_package(ament_cmake_gtest REQUIRED) 6 | find_package(ros_testing REQUIRED) 7 | find_package(Boost REQUIRED COMPONENTS filesystem) 8 | 9 | # Run all lint tests in package.xml 10 | ament_lint_auto_find_test_dependencies() 11 | 12 | # Basic "quickstart_in_rviz" bringup test 13 | ament_add_gtest_executable(bringup_test 14 | test/bringup_test.cpp 15 | ) 16 | ament_target_dependencies(bringup_test ${THIS_PACKAGE_INCLUDE_DEPENDS}) 17 | add_ros_test(test/bringup_test.test.py TIMEOUT 120 ARGS "test_binary_dir:=${CMAKE_CURRENT_BINARY_DIR}") 18 | endif() 19 | -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_add_rviz_visual_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_add_rviz_visual_tools.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_click_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_click_add.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_empty.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_interact_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_interact_button.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_panels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_panels.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plan_cartesian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plan_cartesian.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_collision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_collision.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_collision_aware_ik_checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_collision_aware_ik_checkbox.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_head.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_interact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_interact.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_invalid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_invalid.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_motion_planning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_motion_planning.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_motion_planning_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_motion_planning_add.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_plan_cartesian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_plan_cartesian.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_plan_free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_plan_free.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_plan_slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_plan_slider.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_planned_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_planned_path.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_start.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_plugin_visualize_robots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_plugin_visualize_robots.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/rviz_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/quickstart_in_rviz/rviz_start.png -------------------------------------------------------------------------------- /doc/tutorials/quickstart_in_rviz/test/bringup_test.test.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | import launch 4 | import launch_testing 5 | 6 | # -*- coding: utf-8 -*- 7 | from ament_index_python.packages import get_package_share_directory 8 | from launch.actions import ( 9 | IncludeLaunchDescription, 10 | TimerAction, 11 | ) 12 | from launch.launch_description_sources import PythonLaunchDescriptionSource 13 | from launch_ros.actions import Node 14 | 15 | 16 | def generate_test_description(): 17 | 18 | # Launch the tutorial demo 19 | demo_path = ( 20 | get_package_share_directory("moveit2_tutorials") + "/launch/demo.launch.py" 21 | ) 22 | base_launch = IncludeLaunchDescription( 23 | PythonLaunchDescriptionSource(demo_path), 24 | ) 25 | 26 | # Launch the test 27 | bringup_test = Node( 28 | executable=launch.substitutions.PathJoinSubstitution( 29 | [ 30 | launch.substitutions.LaunchConfiguration("test_binary_dir"), 31 | "bringup_test", 32 | ] 33 | ), 34 | output="screen", 35 | ) 36 | 37 | return launch.LaunchDescription( 38 | [ 39 | launch.actions.DeclareLaunchArgument( 40 | name="test_binary_dir", 41 | description="Binary directory of package " 42 | "containing test executables", 43 | ), 44 | base_launch, 45 | # The test itself 46 | TimerAction(period=2.0, actions=[bringup_test]), 47 | launch_testing.actions.ReadyToTest(), 48 | ] 49 | ), { 50 | "bringup_test": bringup_test, 51 | } 52 | 53 | 54 | class TestGTestWaitForCompletion(unittest.TestCase): 55 | # Waits for test to complete 56 | # Then waits a bit to make sure result files are generated 57 | def test_gtest_run_complete(self, bringup_test): 58 | self.proc_info.assertWaitForShutdown(bringup_test, timeout=4000.0) 59 | 60 | 61 | @launch_testing.post_shutdown_test() 62 | class TestGTestProcessPostShutdown(unittest.TestCase): 63 | # Checks if the test has been completed with acceptable exit codes 64 | def test_gtest_pass(self, proc_info, bringup_test): 65 | launch_testing.asserts.assertExitCodes(proc_info, process=bringup_test) 66 | -------------------------------------------------------------------------------- /doc/tutorials/tutorials.rst: -------------------------------------------------------------------------------- 1 | Tutorials 2 | ========= 3 | 4 | These tutorials will quickly get you using the MoveIt 2 Motion Planning Framework. 5 | 6 | .. image:: quickstart_in_rviz/rviz_plugin_head.png 7 | :width: 700px 8 | 9 | In these tutorials, the `Kinova Gen3 `_ robot is used as a quick-start demo. 10 | 11 | .. toctree:: 12 | :maxdepth: 1 13 | 14 | getting_started/getting_started 15 | quickstart_in_rviz/quickstart_in_rviz_tutorial 16 | your_first_project/your_first_project 17 | visualizing_in_rviz/visualizing_in_rviz 18 | planning_around_objects/planning_around_objects 19 | pick_and_place_with_moveit_task_constructor/pick_and_place_with_moveit_task_constructor 20 | -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/add_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/add_button.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/add_rviz_tools_gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/add_rviz_tools_gui.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/executing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/executing.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/marker_array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/marker_array.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/marker_array_topic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/marker_array_topic.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/next_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/next_button.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/panel_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/panel_menu.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/planning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/planning.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/uncheck_motion_planning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/uncheck_motion_planning.png -------------------------------------------------------------------------------- /doc/tutorials/visualizing_in_rviz/unchecked_motion_planning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/visualizing_in_rviz/unchecked_motion_planning.png -------------------------------------------------------------------------------- /doc/tutorials/your_first_project/kinova_hello_moveit.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | int main(int argc, char* argv[]) 7 | { 8 | // Initialize ROS and create the Node 9 | rclcpp::init(argc, argv); 10 | auto const node = std::make_shared( 11 | "hello_moveit", rclcpp::NodeOptions().automatically_declare_parameters_from_overrides(true)); 12 | 13 | // Create a ROS logger 14 | auto const logger = rclcpp::get_logger("hello_moveit"); 15 | 16 | // Create the MoveIt MoveGroup Interface 17 | using moveit::planning_interface::MoveGroupInterface; 18 | auto move_group_interface = MoveGroupInterface(node, "manipulator"); 19 | 20 | // Set a target Pose 21 | auto const target_pose = [] { 22 | geometry_msgs::msg::Pose msg; 23 | msg.orientation.w = 1.0; 24 | msg.position.x = 0.28; 25 | msg.position.y = -0.2; 26 | msg.position.z = 0.5; 27 | return msg; 28 | }(); 29 | move_group_interface.setPoseTarget(target_pose); 30 | 31 | // Create a plan to that target pose 32 | auto const [success, plan] = [&move_group_interface] { 33 | moveit::planning_interface::MoveGroupInterface::Plan msg; 34 | auto const ok = static_cast(move_group_interface.plan(msg)); 35 | return std::make_pair(ok, msg); 36 | }(); 37 | 38 | // Execute the plan 39 | if (success) 40 | { 41 | move_group_interface.execute(plan); 42 | } 43 | else 44 | { 45 | RCLCPP_ERROR(logger, "Planning failed!"); 46 | } 47 | 48 | // Shutdown ROS 49 | rclcpp::shutdown(); 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /doc/tutorials/your_first_project/panda_hello_moveit.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | int main(int argc, char* argv[]) 7 | { 8 | // Initialize ROS and create the Node 9 | rclcpp::init(argc, argv); 10 | auto const node = std::make_shared( 11 | "hello_moveit", rclcpp::NodeOptions().automatically_declare_parameters_from_overrides(true)); 12 | 13 | // Create a ROS logger 14 | auto const logger = rclcpp::get_logger("hello_moveit"); 15 | 16 | // Create the MoveIt MoveGroup Interface 17 | using moveit::planning_interface::MoveGroupInterface; 18 | auto move_group_interface = MoveGroupInterface(node, "panda_arm"); 19 | 20 | // Set a target Pose 21 | auto const target_pose = [] { 22 | geometry_msgs::msg::Pose msg; 23 | msg.orientation.w = 1.0; 24 | msg.position.x = 0.28; 25 | msg.position.y = -0.2; 26 | msg.position.z = 0.5; 27 | return msg; 28 | }(); 29 | move_group_interface.setPoseTarget(target_pose); 30 | 31 | // Create a plan to that target pose 32 | auto const [success, plan] = [&move_group_interface] { 33 | moveit::planning_interface::MoveGroupInterface::Plan msg; 34 | auto const ok = static_cast(move_group_interface.plan(msg)); 35 | return std::make_pair(ok, msg); 36 | }(); 37 | 38 | // Execute the plan 39 | if (success) 40 | { 41 | move_group_interface.execute(plan); 42 | } 43 | else 44 | { 45 | RCLCPP_ERROR(logger, "Planning failed!"); 46 | } 47 | 48 | // Shutdown ROS 49 | rclcpp::shutdown(); 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /doc/tutorials/your_first_project/rviz_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/your_first_project/rviz_1.png -------------------------------------------------------------------------------- /doc/tutorials/your_first_project/rviz_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moveit/moveit2_tutorials/63b89e04f61720b10ece95b3674ac8c7807445da/doc/tutorials/your_first_project/rviz_2.png -------------------------------------------------------------------------------- /htmlproofer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Note that a virtual environment is required when running this script in CI 3 | set -e 4 | 5 | # Define some config vars 6 | export NOKOGIRI_USE_SYSTEM_LIBRARIES=true 7 | export REPOSITORY_NAME=${PWD##*/} 8 | export MOVEIT_BRANCH=main 9 | echo "Testing branch $MOVEIT_BRANCH of $REPOSITORY_NAME" 10 | 11 | # Install htmlpoofer 12 | gem install --user-install html-proofer -v 3.19.4 # newer 4.x requires different cmdline options 13 | PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH" 14 | 15 | # Install python dependencies 16 | pip3 install --upgrade -r requirements.txt 17 | 18 | # Clear out any previous builds 19 | rm -rf build 20 | 21 | # Build API docs 22 | mkdir -p build/html 23 | pushd build/html 24 | git clone https://github.com/moveit/moveit2 -b $MOVEIT_BRANCH --depth 1 25 | pushd moveit2 26 | sed -i "s/HTML_EXTRA_STYLESHEET =.*/HTML_EXTRA_STYLESHEET = ..\/..\/..\/theme.css/g" Doxyfile 27 | DOXYGEN_OUTPUT_DIRECTORY="../api" doxygen 28 | popd 29 | rm -rf moveit2 30 | popd 31 | 32 | # Test build with non-ROS wrapped Sphinx command to allow warnings and errors to be caught 33 | # TODO: Re-add the -W flag so that all warnings are treated as errors. 34 | sphinx-build -b html . build/html 35 | 36 | # Replace Edit on Github links with local file paths 37 | grep -rl 'https:\/\/github.com\/moveit\/moveit2_tutorials\/blob\/main\/' ./build/ | \ 38 | xargs sed -i "s|https://github.com/moveit/moveit2_tutorials/blob/main/|file://$PWD|g" 39 | 40 | # Replace internal links with local file paths 41 | grep -rl 'https:\/\/moveit.picknik.ai\/rolling\/' ./build/ | \ 42 | xargs sed -i "s|https://moveit.picknik.ai/rolling/|file://$PWD|g" 43 | 44 | # Run HTML tests on generated build output to check for 404 errors, etc 45 | # 429 or 403 - happens when GitHub rate-limits requests 46 | htmlproofer ./build \ 47 | --only-4xx --check-html --http-status-ignore "429" --http-status-ignore "403" \ 48 | --file-ignore ./build/html/genindex.html,./build/html/search.html,/html/api/ \ 49 | --alt-ignore '/.*/' --url-ignore '#' 50 | 51 | # Tell GitHub Pages (on deploy) to bypass Jekyll processing 52 | touch build/.nojekyll 53 | -------------------------------------------------------------------------------- /index.rst: -------------------------------------------------------------------------------- 1 | MoveIt 2 Documentation 2 | ====================== 3 | 4 | Welcome to the unified MoveIt documentation, which includes tutorials, how-to guides, core concepts, and more. 5 | 6 | MoveIt 2 is the robotic manipulation platform for ROS 2 and incorporates the latest advances in motion planning, manipulation, 3D perception, kinematics, control, and navigation. MoveIt 2 was first released in 2019; for ROS 1 documentation, see `MoveIt 1 tutorials `_. 7 | For the commercially supported version see `MoveIt Pro tutorials `_. 8 | 9 | .. image:: http://moveit.ros.org/assets/images/roadmap.png 10 | :width: 400px 11 | 12 | How-To Use This Website 13 | ----------------------- 14 | 15 | * :doc:`/doc/tutorials/tutorials` will walk you through creating your first project with MoveIt. 16 | * :doc:`/doc/how_to_guides/how_to_guides` answers the question "How to do X with MoveIt?" 17 | * :doc:`/doc/concepts/concepts` discusses the design of MoveIt. 18 | * :doc:`/doc/how_to_contribute/how_to_contribute` is a place to learn about making changes to MoveIt and this website. 19 | * :doc:`/doc/examples/examples` contains other useful pages that have not been adapted to the new layout of this site or are not yet ported from ROS 1. 20 | * :doc:`/doc/api/api` will redirect you to a reference API page. 21 | 22 | Table Of Contents 23 | ----------------- 24 | 25 | .. toctree:: 26 | :maxdepth: 2 27 | 28 | doc/tutorials/tutorials 29 | doc/examples/examples 30 | doc/concepts/concepts 31 | doc/how_to_guides/how_to_guides 32 | doc/api/api 33 | doc/how_to_contribute/how_to_contribute 34 | 35 | Attribution 36 | ----------- 37 | 38 | Some major past contributors to the MoveIt tutorials are listed in chronological order: Sachin Chitta, Dave Hershberger, Acorn Pooley, Dave Coleman, Michael Goerner, Francisco Suarez, Mike Lautman, Tyler Weaver, David Lu!!, Vatan Tezer, and Andy Zelenak. These are just some of the `46+ Contributors over the years `_ who have a big impact on this documentation. 39 | 40 | Help us improve these docs and we'll be happy to include you here also! 41 | 42 | Corporate Sponsorship 43 | --------------------- 44 | 45 | * The tutorials had a major update in 2018 during a code sprint sponsored by Franka Emika in collaboration with `PickNik Robotics `_ (`Check out the blog post! `_) 46 | * The tutorials had another major update in 2022 during a doc-a-thon sponsored by `PickNik Robotics `_. 47 | -------------------------------------------------------------------------------- /moveit2_tutorials.repos: -------------------------------------------------------------------------------- 1 | repositories: 2 | moveit_task_constructor: 3 | type: git 4 | url: https://github.com/moveit/moveit_task_constructor.git 5 | version: ros2 6 | moveit_visual_tools: 7 | type: git 8 | url: https://github.com/moveit/moveit_visual_tools 9 | version: ros2 10 | # Remove ros2_kortex when rolling binaries are available. 11 | ros2_kortex: 12 | type: git 13 | url: https://github.com/Kinovarobotics/ros2_kortex.git 14 | version: main 15 | # Remove ros2_robotiq_gripper when rolling binaries are available. 16 | ros2_robotiq_gripper: 17 | type: git 18 | url: https://github.com/PickNikRobotics/ros2_robotiq_gripper.git 19 | version: main 20 | # Serial is a dependency of ros2_robotiq_gripper. Remove when ros2_robotiq_gripper binaries are available. 21 | serial: 22 | type: git 23 | url: https://github.com/tylerjw/serial.git 24 | version: ros2 25 | rviz_visual_tools: 26 | type: git 27 | url: https://github.com/PickNikRobotics/rviz_visual_tools.git 28 | version: ros2 29 | moveit2: 30 | type: git 31 | url: https://github.com/moveit/moveit2 32 | version: main 33 | moveit_resources: 34 | type: git 35 | url: https://github.com/moveit/moveit_resources 36 | version: ros2 37 | moveit_msgs: 38 | type: git 39 | url: https://github.com/moveit/moveit_msgs 40 | version: ros2 41 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | pip 2 | docutils 3 | sphinx>=5.0.0 4 | sphinx-tabs 5 | sphinx-multiversion 6 | sphinx-rtd-theme 7 | sphinx-copybutton 8 | sphinxcontrib-doxylink>=1.12.4 9 | -------------------------------------------------------------------------------- /rosdoc.yaml: -------------------------------------------------------------------------------- 1 | - builder: sphinx 2 | sphinx_root_dir: . 3 | -------------------------------------------------------------------------------- /rosindex.yaml: -------------------------------------------------------------------------------- 1 | # The root location to look at for ReST documentation pages. 2 | sources_dir: ./ 3 | 4 | # Patterns for page indexing. Unindexed pages will 5 | # nonetheless be present in rosindex. Useful to keep 6 | # redirecting pages around to guarantee link-wise 7 | # backwards compatibility. 8 | index_pattern: 9 | - index.rst 10 | - '*/*.rst' 11 | - '*/*/*.rst' 12 | --------------------------------------------------------------------------------