Robotics 2017: Turtlebots Parade
Zhang Yao Hu Junyu Min Jie
This project is mainly about using many turtlebots to generate a parade. A parade is a prescribed rule of following between swarm robots. We want to establish many seperate individual robots which can form a swarm group so that the main task involved is about recognition and following of the turtlebots. In the project, we accomplished the goal that make three turtlebots driving in a sequence.
Swarm robotics is an approach to the coordination of multirobot systems which consist of large numbers of mostly simple physical robots. It is not only seems interesting to see a group of robots moving as a team, but also a very important part of robotics field and has many potential applications. For example, we may need many robots to go to a certain place to complete some missons such as searching and rescue, but it is difficult and also annoying if we need control all the robots' trajectories together at one time. In the meanwhile, it is also very challenging to plan for a group of robot because most of our knowledge about robotics is at individual robot level.
Our project basically contains the fundamental movement of swarm robots like following or queuing. The basic idea is using a robot as a leader and others are following its trajectory based on some rules. We started with two robots and expanded it to three robots case.
In this project, we use three laptops to handle the three-robot problem: each laptop control on robot. Three robots will walk in a line: one as the leader, the other two will follow one by one. Furthermore, we also need to put Apriltags on our robots to indicate its identification, as is mentioned in above section, the Apriltags will also give us the relative position between each pair of leader and follower. We put the Apriltags at the back of the robots so that the follower robots can see the leader robots. Figure 1 shows the example of a pair of leader-follower system.
To make the follower robot follows the leader robot smoothly, our algorithm can be divided to two parts.The first part is when the follower robot can see the Apriltag of the leader robot. In this certain scene, we do the control of the follower robot just based on the position of the Apriltag in its view: we always try to keep the position of the Apiltag in the middle of its view with a certain distance. Therefore, the linear speed of the follower depends on the distance between Apriltag and itself while the angular speed of the follower depends on the deviation of the Apriltag from the middle. The other part is when the follower robot can not see the Apriltag of the leader robot. This may happens when there are some obstacles or the leader makes a sudden, large turn. We want to keep the follower follows the leader in such a scene happens. To do this, we need always compute and record the transformation between the global reference of the follower and the global reference of the leader when the follower can still see the position of the leader. In the ideal scene, we only need compute the transforamtion one time since it is a fixed value, however, considering the errors caused when the robots moving, we need always fresh our transformation. When the follower can not see the Apriltag of the leader, we will use the latest transformation we computed.