Skip to content

Commit 854ae0c

Browse files
committed
Fix actuation discoverability and normalize hybrid planning asset names
1 parent 98eedbe commit 854ae0c

7 files changed

Lines changed: 10 additions & 5 deletions
File renamed without changes.

wiki/actuation/assets/hybrid_planning_example_architecture.png renamed to wiki/actuation/assets/hybrid-planning-example-architecture.png

File renamed without changes.

wiki/actuation/assets/hybrid_planning_example_obstacles.gif renamed to wiki/actuation/assets/hybrid-planning-example-obstacles.gif

File renamed without changes.

wiki/actuation/assets/hybrid_planning_local_planner.png renamed to wiki/actuation/assets/hybrid-planning-local-planner.png

File renamed without changes.

wiki/actuation/assets/hybrid_planning_paradocs_architecture.png renamed to wiki/actuation/assets/hybrid-planning-paradocs-architecture.png

File renamed without changes.

wiki/actuation/index.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,8 @@ title: Actuation
44
---
55
**This page is a stub.** You can help us improve it by [editing it](https://github.com/RoboticsKnowledgebase/roboticsknowledgebase.github.io).
66
{: .notice--warning}
7+
8+
## Key Subsections and Highlights
9+
10+
- **[MoveIt Hybrid Planning Architecture for Motion Compensation](/wiki/actuation/moveit-hybrid-planning-architecture/)**
11+
Overview of MoveIt's hybrid planning architecture, including manager/global/local planner interaction and a motion-compensation customization pattern.

wiki/actuation/moveit-hybrid-planning-architecture.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,29 @@ title: MoveIt Hybrid Planning Architecture for Motion Compensation
1212
# MoveIt Hybrid Planning Architecture for Motion Compensation
1313

1414
The collaboration between a global planner and a local planner is often seen in the autonomous driving context. The global planner will generate a path for the local planner to follow. However, in a manipulator planning context, it still mostly follows the “Sense-Plan-Act” approach, thus not applicable in many real-world applications, particularly in unstable or dynamic environments. To address this issue, the MoveIt team developed the Hybrid Planning architecture for manipulators.
15-
![av_planning_architecture](assets/av_planning_architecture.png)
15+
![av_planning_architecture](assets/av-planning-architecture.png)
1616
*Typical Planning Architecture for Autonomous Vehicles*
1717

1818
## Architecture
1919

20-
![hybrid_planning_example_architecture](assets/hybrid_planning_example_architecture.png)
20+
![hybrid_planning_example_architecture](assets/hybrid-planning-example-architecture.png)
2121
*MoveIt Hybrid Planning Example Architecture*
2222

2323
The architecture has three components: the Hybrid Planning Manager (hereafter referred to as Manager), the Global Planner, and the Local Planner. The architecture is highly customizable. By changing the C++ plugin in the components, it can be adapted to different use cases. The MoveIt team provides an example of using the architecture to account for dynamic obstacles.
2424
The Manager is in charge of taking planning requests, and it will request the Global Planner to plan a trajectory. Inside Global Planner, its plugin logic is a MoveIt Cpp that can plan to the goal using the RRTConnect planner in OMPL. The local planner in this example is not planning; it only executes the plan generated by the Global Planner. While execution, if there is an obstacle on the trajectory, the local planner will stop the execution and ask the Global Planner to replan. Thus, we will have the effect as shown in the figure below. The Global Planner first plans a path through the side, but when the Local Planner is executing, it finds the obstacle in the path. The Local Planner reports this to the Manager, and then the Manager will ask the Global Planner to replan according to the latest planning scene. Thus, the manipulator still successfully reached the goal in the end.
25-
![hybrid_planning_example_obstacles](assets/hybrid_planning_example_obstacles.gif)
25+
![hybrid_planning_example_obstacles](assets/hybrid-planning-example-obstacles.gif)
2626
*MoveIt Hybrid Planning example \- Dynamic Obstacles*
2727

2828
## Customization
2929

3030
In our settings, we want to do bone motion compensation. This requires us to keep tracking the pose. Our idea is to use the Manager to detect the magnitude of the bone motion. If it is a large bone motion (Euclidean displacement \> 7 cm), the Manager will request the Global Planner to plan a trajectory. If it is a small bone motion (Euclidean displacement \<= 7 cm), the Manager will request the Local Planner to go directly to the new pose.
3131
We adapt the architecture to our needs to fulfill the use case mentioned above. First, we use pick\_ik inverse kinematics solver in the Manager to let our planner have a joint space goal instead of a cartesian goal. This can improve the Global Planner's performance and enable the Local Planner to execute the goal directly. The Manager also subscribes to the GUI to receive messages to change the state of itself. For example, the transition from the tracking state to the drilling state or from the execution state to the pause state.
32-
![hybrid_planning_paradocs_architecture](assets/hybrid_planning_paradocs_architecture.png)
32+
![hybrid_planning_paradocs_architecture](assets/hybrid-planning-paradocs-architecture.png)
3333
*Our Hybrid Planning Architecture for motion compensation*
3434

3535
Upon receiving the pose message, the Manager would request the global planner to plan a path to the goal. After the Global Planner returns the path, the Manager sends out the request that contains the path to the Local Planner for execution. In the meantime, if there is a motion from the previous pose at any time, the Manager will check the magnitude of the motion and may request the Global Planner to plan or directly request the Local Planner to compensate for the motion.
3636
Our Local Planner runs at a frequency of 10 Hz. In every execution loop, the local planner takes a small chunk of the reference trajectory to execute. The action server receives trajectory messages from the Manager and can modify the reference trajectory accordingly. This can either be the path planned by the global planner or the IK solution directly from the manager.
37-
![hybrid_planning_local_planner](assets/hybrid_planning_local_planner.png)
37+
![hybrid_planning_local_planner](assets/hybrid-planning-local-planner.png)
3838
*Close-up look for Local Planner*
3939

4040
With this reference trajectory as a buffer, our planned path can be smooth even if there is frequent motion in the scene.

0 commit comments

Comments
 (0)