├── .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 |
--------------------------------------------------------------------------------