When programming a robot to perform a task, it is very often the case that the robot motions involved must not cause the robot to collide with itself, its environment, its tooling and/or payload, or other robots. Robot programmers can either manually teach the robot trajectories/waypoints which move the robot and its end-effector to its goal around obstacles, or they can use a path planning algorithm. Robot path planning is used to find a valid sequence of motions to move a robotic manipulator’s end effector from where it is at the start of its motion, to where it needs to be at the end of its motion. Actin is a robot control SDK, which includes features like robot modelling, kinematics, tasking, and path planning. In this post, we will discuss two categories of robot arm path planning that Actin supports, and why a roboticist might choose one over another.
What is Global Path Planning?
Global path planning in Actin uses a variation of a sampling based algorithm called Rapidly Exploring Random Tree or RRT. The RRT method starts at a node defined by the starting position (collision-free) of the robot. Next, the tree is generated using random samples (robot states) which are connected (if they are valid) with the nearest node (collision-free robot state). This creates a tree-like graph structure, where every node in this tree is connected to a single parent node, and the tree’s root is at the starting location. Actin kinematics is used for this validation check when generating the tree of nodes, and connecting nodes between trees. Another tree is generated, starting from the “goal” node, and attempts are made each iteration to connect the two trees. Once the two trees can connect, then a collision-free path is found. This path might be jagged, so a smoothing algorithm is used to optimize that path. The robot motion is executed in Joint space to move the manipulator around obstacles.
In this example clip, Actin uses RRT to plan a path around an obstacle.
What is Local Path Planning?
Local path planning in Actin uses an enhancement to our standard velocity Jacobian based inverse kinematics. Actin’s core kinematics algorithm includes collision detection and joint limit detection and can be configured with optimizations to avoid collisions and joint limits with any kinematic redundancy the robot has. Kinematic redundancy is when the robot has more joints than the required degrees of constraint needed for the task. In addition to using the kinematic redundancy, the End Effector constraint that nominally drives the End Effector in a straight line can be configured to behave like a “spring”, which has a gain that varies the end effector trajectory based on how near it is to obstacles/joint limits. In essence, this forms a multidimensional artificial potential field, driven by attraction to the goal position and repulsion from collisions and joint limits (or any other configured optimizations). This allows the robot to plan around obstacles in real-time. The resulting motion appears as if the robot attempts to take a straight line path until collisions or joint limits force the path to deviate around obstacles.
In this example clip, Actin uses local path planning to avoid collision with an obstacle.
How do they compare?
Actin implements each of these methods and they have some differences. Actin’s global path planning implementation has a higher probability of finding a collision-free path, because the local path planning implementation may get stuck in local minima, especially near concave obstacles. In some cases the environment can be modified to work around these concave obstacles (adding virtual keep-out zones). The downsides are that this global implementation cannot handle moving environments and targets in real-time. It also takes some time to compute the path depending on the robot’s degrees of freedom and how complex the environment is. Actin’s local path planning is faster, and can handle dynamic targets and obstacles.
In this example clip, Actin uses local path planning to attempt to avoid a collision with an obstacle but fails to reach its goal.
In these two example videos, we show the differences between global (first video) and local path planning (second video), when the robot avoids self-collision on its way to the target pose.
Why is Path Planning Important?
Giving a robotic system the ability to path plan allows users to focus on the task at hand, and not worry about the lower level motions to complete the tasks. Many robotic applications will require path planning as tasks get more advanced, workcells getting tighter, and environments more dynamic. Even when automating simpler tasks, path planning free’s up roboticist’s time by automating path generation. Other possibilities include safer robots working alongside other robots, or even humans as sensors improve.
Real Examples of Global and Local Path planning
Path planning is required in many advanced robotic applications. Some real examples that use Actin path planning are in the areas of bin picking, robotic oil drilling, and automated inspection systems. In bin picking applications, it is important that the robot plan a collision-free path to the selected object in the bin, as well as a collision-free path out of the bin (while considering how the object was grasped). Another application of path planning is in robotic oil drilling. It is important that the robots working the oil rig avoid collisions while manipulating a variety of differently shaped objects. If the programmer were to manually try and program paths for every different object that may be grasped, then the amount of labor would quickly grow out of control. Another growing robotic application that requires path planning is in the area of robotic inspection. In the area of automotive near-line inspection, it is crucial that a robot plan a collision-free path to move a sensor to a series of inspection poses on many parts. This frequently involves coordinating robot arm motion with external axes. Letting the path planning algorithms handle path generation makes the system more flexible, powerful and easier to use.
In summary, both global path planning and local path planning can be used to find a valid sequence of motions to move a robotic manipulator’s end effector from where it is at the start of its motion, to where it needs to be at the end of its motion as part of the robots higher-level task. The Actin SDK supports both categories, either of which can be used depending on the requirements.
For more information, click here.