In Evolutionary Robotics, population-based evolutionary computation is used to design robot neurocontrollers that produce behaviors which allow the robot to fulfill a user-defined task. However, the standard approach is to use canonical evolutionary algorithms, where the search tends to make the evolving population converge towards a single behavioral solution, even if the high-level task could be accomplished by structurally different behaviors. In this work, we present an approach that preserves behavioral diversity within the population in order to produce a diverse set of structurally different behaviors that the robot can use. In order to achieve this, we employ the concept of speciation, where the population is dynamically subdivided into sub-groups, or species, each one characterized by a particular behavioral structure that all individuals within that species share. Speciation is achieved by describing each neurocontroller using a representations that we call a behavior signature, these are descriptors that characterize the traversed path of the robot within the environment. Behavior signatures are coded using character strings, this allows us to compare them using a string similarity measure, and three measures are tested. The proposed behavior-based speciation is compared with canonical evolution and a method that speciates based on network topology. Experimental tests were carried out using two robot tasks (navigation and homing behavior), several training environments, and two different robots (Khepera and Pioneer), both real and simulated. Results indicate that behavior-based speciation increases the diversity of the behaviors based on their structure, without sacrificing performance. Moreover, the evolved controllers exhibit good robustness when the robot is placed within environments that were not used during training. In conclusion, the speciation method presented in this work allows an evolutionary algorithm to produce several robot behaviors that are structurally different but all are able to solve the same robot task.