最近开源了我的机器人运动规划器ORMPI，实现完整的机器人运动规划算法包括环境与机器人3D建模，运动学计算，规划器和碰撞检测算法。ORMPI的未来目标是成为前端运动规划算法和后端加速器（CPUs, GPUs, 加速器）联通的编译栈。
ORMPI is the Open Robotic Motion Planning Implementation for efficiently developing or evaluating the motion planning algorithm for high degree-of-freedom robots. It supports the complete real-time motion planning procedure which implements robot modeling, planner, kinematics, and collision detection.
ORMPI is designed to be an Open Robotic Motion Planning Compiler Stack for CPUs, GPUs, and specialized accelerators. It aims to close the gap between the productivity-focused motion planning frameworks, and the performance- and efficiency-focused hardware backends.
ORMPI implements the complete real-time motion planning algorithm for high degree-of-freedom robots.
- Representation of Environments: The octree is a spatial partitioning technique providing broad-phase processing by dividing a space into regions and testing if objects overlap the same region. We represent the environments via Octree in terms of its relative simplicity and decent accuracy.
- Robot Modeling: Oriented Bounding Boxes Tree (OBBTree) is used to model 3D geometry and joints relationship (link chains) of a robot, which produces better bounds and better culling than AABBs or spheres.
- Kinematics: We refer to the source code of Moveit and implement the fast and accurate forward kinematics of robot arms.
- Planner: Rapidly-exploring Random Trees (RRT) avoids the necessity to construct a roadmap a prior via incremental sampling methods which can efficiently boost motion planning for dynamic environments. And RRT is suitable and flexible for hardware backends meeting the demand of motion planning for online robots.
- Collision Detection: ORMPI proposed an approximate OBB-Octree node algorithm to boosts the performance of collision detection. It reduces 82.9% computation time than the original OBB-OBB Intersection.
Meanwhile, ORMPI supports Half-precision floating-point format to boosts motion planning, which is more appropriate for specialized accelerators.
git clone https://github.com/Vincent-Xiao/ORMPI.git
mkdir build && cd build
The "./src/ORMIP.cpp" is a demo code for how to construct a motion planning alogrithm.
- Define the motion planning environment: this demo uses ROS and Moveit to construct a pick-place task and exports the environment data to ORMPI
- Define the center coordinate of environment and build an Octree.
- Define a start config (the rotating angles of the robot arm in configuration space) and the goal config
- Define the planner (RRT in demo) to start motion planning
- Print the success count of iteration number and the average planning time
The parameters of motion planning can be configured in the file "./config/config.h".
- DataType Config for float or half
- loopNum for iteration of motion planning
- TESTMode for whether printing debug information
- OctoTree for the max depth and environment bounds to construct the OctoTree
- RRT for the bias, step size and max iteration of the search algorithm
- Robot for the degree-of-freedom (DOF), transform matrix and center coordinate of one robot.
- Supporting more real-time planner
- Supporting GPU
- Supporting compiler for FPGA
- Improving code packaging and riching the API