# Real-Time Kinematics-Based Self-Collision Avoidance Algorithm for Dual-Arm Robots
## 1 Introduction  
Dual-arm robotic systems are widely used in various settings to expand the working range compared with single-arm robotic systems. As described in [1, 2], dual-arm systems are widely used in space robots and disaster environments. To perform complicated tasks, each arm is provided with different targets and trajectories. One of the challenges in dual-arm cooperation control is to avoid self-collisions, which dramatically constrain the working range and affect the continuous motion of each arm. In this paper, we propose a self-collision avoidance method, where a dual-arm robot has the ability to detect and avoid self-collisions, to deal with such problems. For self-collision avoidance methods, the collision model is critical. In collision models, a model of the robot is approximated, and relative position information is obtained between the robot links. In a collision model, the distance between the two arms is calculated in real time. A function related to the minimum distance is used to prevent robot collisions. A collision model is always formed by various convex hulls. In previous studies, a collision detection model was built using a large number of polygons [3, 4]. To tightly fit the different volumesof the robot, researchers have developed algorithms to build each convex polyhedral model. Examples include the tight-fitting oriented bounding box trees (OBB) algorithm [5], and the axis-aligned bounding boxes (AABB) algorithm [6]. Many algorithms have been proposed to calculate the distance in convex polyhedral models such as the fast and robust polyhedral collision detection (V-Clip) algorithm [7]. As the features of polyhedral-based collision model are vertices, edges, and faces [8], the computational cost to determine if a pair of polyhedrons are disjointed and to compute the distance between them is high [7]. To reduce the computational cost between different collision models, researchers have developed sphere-based collision models to replace polygon-based collision models [9; 10; 11]. In [9; 10], a sphere-based collision model was built using a sweep sphere model. For the sweep sphere line, the distance between two sweep sphere lines is calculated. The minimum distance may have a discontinuous gradient when the pair of closest points is on the two shapes [11]. In [11], an improved method was proposed, where a collision model was built using finite discretized spheres with the same radius. Compared with the sweep sphere model, the finite discretized sphere collision model algorithm [11] only needs to measure the distance between the center of each sphere (all possible distances between different spheres), which has a low computational cost. However, due to the difference in the links for each arm, the model of the origin robot may not be able to be approximated using spheres with the same radius. Self-collision avoidance methods can be divided into two categories: (i) on-line (real-time) self-collision avoidance [3; 6; 12; 13; 14; 15] and (ii) off-line planning of a collision-free trajectory [9; 16; 17] for the robot. Real-time self-collision avoidance methods always rely on the minimum distance between collision pairs. Earlier researchers proposed a collision model to check a collision pair in real time, where the robot abruptly stops when the collision model predicts a collision [4; 6]. However, this behavior may influence the stability of the robot. To improve the results, researchers have proposed the skeleton algorithm [13; 18; 19; 20], which establishes an artificial repulsive potential field to generate the virtual repulsive force on the robot links. Meanwhile, the skeleton algorithm has already been applied on the The German Aerospace Center(DLR) humanoid manipulator Justin [13]. Based on the dynamic model of the robot, the robot can generate a smooth trajectory to avoid self-collision. Although these algorithms can achieve self-collision avoidance, they do not consider the performance of the arm end-effector.