• Stars
    star
    449
  • Rank 94,063 (Top 2 %)
  • Language
    HTML
  • License
    BSD 3-Clause "New...
  • Created over 7 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A sphinx-based centralized documentation repo for MoveIt

MoveIt Tutorials

MoveIt 1 Live tutorials

These are the tutorials for MoveIt 1, for MoveIt 2 see MoveIt 2 Tutorials

This is the primary documentation for the MoveIt project. We strongly encourage you to help improve MoveIt's documentation. Please consider reading the guidelines below for writing the best documentation and tutorials. However, if you are uncomfortable with any of the approaches, simply adding documentation text to your pull requests is better than nothing.

These tutorials use the reStructuredText format commonly used in the Sphinx "Python Documentation Generator". This unfortunately differs from the common Markdown format, but its advantage is that it supports embedding code directly from source files for inline code tutorials.

All content in this repository is open source and released under the BSD License v3. Each individual source code file should contain a copy of the license.

This repository is currently built automatically by two systems. Github Actions builds the documentation for Noetic, and ROS Build Farm builds the documentation for older versions:

Versions

  • indigo-devel usage is discouraged
  • kinetic-devel stable
  • melodic-devel stable
  • master latest, changes should target this branch

Build Locally

If you want to test the tutorials by generating the HTML pages locally on your machine, you can use the build_locally script. Run in the root of the moveit_tutorials package:

export ROS_DISTRO=kinetic # 16.04
export ROS_DISTRO=melodic # 18.04
export ROS_DISTRO=noetic  # 20.04

source /opt/ros/$ROS_DISTRO/setup.bash
./build_locally.sh

The local website <LOCAL_PACKAGE_PATH>/build/html/index.html should automatically open in your web browser.

ROS Build Farm Deployment

For deploying documentation changes to the web, Section 3 of the rosdoc_lite wiki says that "rosdoc_lite is automatically run for packages in repositories that have rosinstall files listed in the rosdistro repository." This is done about once every 24 hours, overnight.

Contributing

We rely on the community to keep these tutorials up-to-date and bug-free. If you find an issue with the tutorials please open an issue on GitHub or open a PR with the proposed changes.

Formatting and Style

Code Formatting

  • These tutorials use the same style guidelines as the MoveIt project. When modifying or adding to these tutorials, it is required that code is auto-formatted using clang-format. To check and apply the style guidelines we use pre-commit.
  • Tutorials should exemplify best coding practices. If a contribution wouldn't pass review in the MoveIt project, then it shouldn't pass review in the tutorials.
  • Relevant code should be included and explained using the .. tutorial-formatter:: tag.
  • Irrelevant code should be excluded from the generated HTML using the BEGIN_TUTORIAL, END_TUTORIAL, BEGIN_SUB_TUTORIAL, and END_SUB_TUTORIAL tags.
  • Whenever possible, links should be created using the extlinks dictionary defined in conf.py.
  • All demo code should be runnable from within the moveit_tutorials package.
  • Python code should be run using rosrun.

Style

  • Each tutorial should be focused on teaching the user one feature or interface within MoveIt.
  • Tutorials should flow from show to tell with videos and demos at the beginning followed by explanations.
  • New tutorials should match the formatting, style, and flow of existing tutorials whenever possible.

pre-commit

pre-commit is a tool that is used in moveit_tutorials to check and apply style guidelines automatically. To install pre-commit into your system:

pip3 install pre-commit

In your catkin workspace, under themoveit_tutorials directory you can install the git hooks like this:

cd $CATKIN_WS/src/moveit_tutorials && pre-commit install

With this pre-commit will automatically run and check a list of styling including clang-format, end of files, and trailing whitespaces whenever you run git commit. To run a pre-commit at any time other than git commit you can use the following command:

cd $CATKIN_WS/src/moveit_tutorials && pre-commit run -a

Directory Structure

  • Each tutorial should live in its own subdirectory within the ./doc/ <> directory.
  • Add your tutorial to index.rst in the root directory.
  • Tutorials should use the following directory structure omitting unnecessary files and subdirectories:
moveit_tutorials/doc/
โ””โ”€โ”€ <tutorial_name>/
    โ”œโ”€โ”€ <tutorial_name>_tutorial.rst
    โ”œโ”€โ”€ CMakeLists.txt
    โ”œโ”€โ”€ package.xml
    โ”œโ”€โ”€ setup.py
    โ”œโ”€โ”€ images/
    โ”‚   โ””โ”€โ”€ <tutorial_name>_<image_description>.png
    โ”œโ”€โ”€ include/
    โ”‚   โ””โ”€โ”€ <tutorial_name>/
    โ”‚       โ””โ”€โ”€ <include_header>.h                      # Any custom C++ library header files
    โ”œโ”€โ”€ launch/
    โ”‚   โ””โ”€โ”€ <tutorial_name>_tutorial.launch
    โ”œโ”€โ”€ src/
    โ”‚   โ”œโ”€โ”€ <tutorial_name>_tutorial.cpp                # Main C++ executable
    โ”‚   โ”œโ”€โ”€ <include_source>.cpp                        # Custom C++ library source files
    โ”‚   โ””โ”€โ”€ <tutorial_name>/
    โ”‚       โ”œโ”€โ”€ __init__.py
    โ”‚       โ”œโ”€โ”€ <tutorial_name>_tutorial.py             # Main Python executable
    โ”‚       โ””โ”€โ”€ <python_library>.py                     # Custom Python libraries
    โ””โ”€โ”€ test/                                           # Ideally tutorials have their own integration tests
        โ”œโ”€โ”€ <tutorial_name>_tutorial.test               # Launch file for tests
        โ”œโ”€โ”€ <tutorial_name>_tutorial_test.py            # Python tests for tutorial
        โ””โ”€โ”€ <tutorial_name>_tutorial_test.cpp           # C++ tests for tutorial

Including Images and Videos

Images

The standard way to include an image in reStructuredText is

.. image:: filename.png
   :width: 700px

This assumes that filename.png is in the same folder as the source .rst file. Images linked in this way will automatically be copied to the appropriate folder in the build.

External Documentation

Do not include animated gifs as the file format leads to very large files. Use a video format like webm and see the section on the local video below.

YouTube and other External Video

You can embed video with raw HTML, like in this example from the Pick and Place Tutorial.

.. raw:: html

    <div style="position: relative; padding-bottom: 5%; height: 0; overflow: hidden; max-width: 100%; height: auto;">
        <iframe width="700px" height="400px" src="https://www.youtube.com/embed/QBJPxx_63Bs?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
    </div>

This includes Youtube's suggested embed code.

Local Video

To embed a video that is included in this repository, you also will use raw HTML, like this example from the Quickstart in RViz tutorial.

.. raw:: html

    <video width="700px" nocontrols="true" autoplay="true" loop="true">
        <source src="../../_static/rviz_joints_nullspace.webm" type="video/webm">
        The joints moving while the end effector stays still
    </video>

Note that the video file is in the _static folder instead of the same folder.

External Documentation on <video> tag

More Repositories

1

navigation

ROS Navigation stack. Code for finding where the robot is and how it can get somewhere else.
C++
2,160
star
2

navigation2

ROS2 Navigation Framework and System
C++
2,090
star
3

moveit

๐Ÿค– The MoveIt motion planning framework
C++
1,556
star
4

moveit2

๐Ÿค– MoveIt for ROS 2
C++
875
star
5

navigation_experimental

Experimental navigation techniques for ROS robots.
C++
289
star
6

robot_pose_ekf

robot_pose_ekf package for ROS Melodic and later
C++
262
star
7

navigation_tutorials

Tutorials about using the ROS Navigation stack.
C++
261
star
8

moveit_task_constructor

A hierarchical multi-stage manipulation planner
C++
160
star
9

3d_navigation

Global and local path planner plugins for ROS move_base which move the robot in 2D (x,y,angle) but avoid collisions using full 3D data (robot meshes and environment octomap).
C++
157
star
10

navigation2_tutorials

Tutorial code referenced in https://navigation.ros.org/
Python
145
star
11

moveit_visual_tools

Helper functions for displaying and debugging MoveIt! data in Rviz via published markers
C++
140
star
12

moveit_calibration

Hand-eye calibration tools for robot arms.
C++
115
star
13

moveit2_tutorials

A sphinx-based centralized documentation repo for MoveIt 2
CSS
114
star
14

panda_moveit_config

The Panda robot is the flagship MoveIt integration robot
CMake
91
star
15

moveit_grasps

Geometric grasping generator library for cuboids
C++
85
star
16

moveit_ros

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
C++
71
star
17

navigation.ros.org

https://navigation.ros.org/
Batchfile
71
star
18

moveit_resources

URDFs, meshes, and config packages for MoveIt testing
Python
54
star
19

geometric_shapes

Representation of geometric shapes
C++
52
star
20

moveit_pr2

MoveIt! Packages for PR2
C++
51
star
21

moveit_robots

MoveIt! configurations for different robots
C++
46
star
22

moveit_msgs

ROS messages used by MoveIt
CMake
45
star
23

navigation2_dynamic

Navigation2's dynamic obstacle detection, tracking, and processing pipelines.
Python
38
star
24

navigation_msgs

Message packages required by the navigation stack
CMake
37
star
25

warehouse_ros

Data persistence for ROS using MongoDB
C++
31
star
26

moveit.ros.org

This is the MoveIt website
HTML
31
star
27

moveit_core

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
C++
31
star
28

moveit_ci

Continuous Integration for MoveIt
Shell
17
star
29

moveit_planners

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
C++
16
star
30

warehouse_ros_mongo

Implementation of warehouse_ros using MongoDB
C++
16
star
31

moveit_advanced

C++
13
star
32

warehouse_ros_sqlite

Data persistence for ROS using SQLite
C++
12
star
33

moveit_ikfast

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
C++
12
star
34

moveit_plugins

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
C++
12
star
35

moveit_commander

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
Python
11
star
36

moveit_kinematics_tests

DEPRECATED, MOVED TO https://github.com/ros-planning/moveit
C++
11
star
37

srdfdom

Semantic Robot Description Format
C++
11
star
38

semantics

General semantic data representation and libraries with demos, integrated with Nav2
11
star
39

moveit_setup_assistant

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
C++
8
star
40

random_numbers

Routines for random number generation
C++
7
star
41

map_store

Storage manager for OccupancyGrid maps. Supports naming the most recent map, getting a list of map names, and publishing a specific map.
C++
7
star
42

navigation2_auxiliary

An auxiliary repository for files, resources, etc from Nav2
6
star
43

moveit_docs

DEPRECATED - see https://github.com/ros-planning/moveit.ros.org
CSS
5
star
44

stomp_moveit

STOMP support for MoveIt - ROS 2
C++
4
star
45

map_manager_app

3
star
46

shape_tools

DEPRECATED, moved to geometric_shapes
CMake
2
star
47

moveit_metapackages

DEPRECATED - see https://github.com/ros-planning/moveit
CMake
2
star
48

moveit_experimental

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
C++
1
star
49

py_binding_tools

Python binding tools for C++
C++
1
star