Recently, robotics research has been gained a lot of attentions, due to its wide applications, especially in some places that human beings cannot survive, like in a planet or fire. Flocking, as one of important applications of coordination of multiple robots, has a lot of applications. Our research goal is to achieve the effective coordinated flocking even with the crash of mobile robots. First, we proposed a fault tolerant flocking in an asynchronous model. Our algorithm ensures that the crash of faulty robots does not bring the formation to a permanent stop, and that the correct robots are thus eventually allowed to reorganize and continue moving together. We further design a new method by allowing the formation to move to any direction, including rotation, yet in a semi-synchronous model. We analyze the self-stabilization of our fault tolerant flocking algorithms when the memory of robots may corrupt. Finally, we propose a non-fault tolerant flocking algorithm in order to compare the performance with the above fault-tolerant ones. The described algorithm can effectively adapt to the environment to avoid the collision among robots and obstacles.