Abstract
This work presents a proof of concept for an end-to-end process for the agile design, control and programming of robots. The user selects a set of abilities for the desired robot, and the system automatically generates the robot structure and the controllers needed for the high level programming of the robot. This process relies on two pivotal concepts for our approach: ontologies and modular robots. An ontology (ADROn), constructed upon the IEEE Standard Ontologies for Robotics and Automation (ORA), is used by an intelligent system to relate the robot types with the requested set of abilities. Then, a parameterized design process generates the passive components (e.g. links) and selects the active modules (e.g. actuators) from a collection of 3D printable, modular robotic components (ParMoR). Finally, the controllers, generated as ROS services, are interfaced with a visual programming language, Bitbloq, suitable for novice users. Examples of the generation process of different types of robots (wheeled, snake, humanoid, hexapods) are detailed. The process is presented as an educational platform for the teaching of robotics, while the applicability to other fields and the advantages of this methodology are also discussed in the paper.
Introduction
Nowadays, robotic paradigms are changing and, with them, the industry. Until now, the predominant model for automated robotic processes has been a highly-specialized robotic workcell where robots are chosen depending on task specifications, such as manipulability, reachability or payload. End-effector changing and robot reprogramming allows companies to reuse robots giving some flexibility to workcells. However, this flexibility is limited mainly by two factors that are approached in this work: difficulty for software reprogramming and hardware reusability. These factors have made robots principally suitable for big companies with long term products which really compensate for the high cost of robot installation. We identify both software reprogramming and hardware reusability as key aspects for agile robotics [1, 2].
Robot reprogramming is evolving with the new pa- radigm of collaborative robots, wherein robots, thanks to new programming and control methods, can operate alongside the production personnel in dynamic or semi-structured human environments. Some representative research works can be found in [3, 4]. In the last few years, collaborative robots have jumped to real industry facilities. Some examples are Baxter and Sawyer of Rethink Robotics [5], LBR iiwa of KUKA [6], Yumi of ABB [7] and UR series of Universal Robots [8].
Robot reusability has also a hardware dimension. On many occasions the same robot configuration cannot be used for two different tasks (e.g. reachability, payload). The paradigm of Reconfigurable Modular Manipulators, RMMs, which have also rapidly moved from research [9, 10] to industry [11], is the exponent of robot reusability. Some of the challenges of RMMs are the automatic generation of kinematics, dynamics and control [12] and also the mapping between tasks and manipulator configurations [13].
This mapping must answer the following question: how can the knowledge that relates tasks to configurations be generated in a synthetic manner? To achieve this, we propose the use of ontologies, widely applied to expert systems for different applications such as medical advisory [14], and lately drawing some attention in robotics as well [15, 16]. They would allow the inference of this mapping by settling adequately the robotic domain knowledge.
In this work we deal with both reprogramming and hardware reusability within the same framework: our system, using task specifications, infers robot designs that can be built from reusable robot modules and, at the same time, it generates controllers and easy programming blocks that can be used by non specialized personnel. Two main aspects define our framework: a parametrized modular robot architecture and an ontology based agent.
Let us clarify that this work is a proof-of-concept. The scope of this work could be as extensive as desired: industrial robots plus household robots plus entertainment robots plus…However, we do not claim to be able to create a specific robot for any of the (arguably infinite) possible tasks achievable by any kind of robot. We aim to present the process and we focus on the educational aspects of robotics, in which we try to smartly bring robotics design closer to non-qualified users, while giving an overview of the applicability to other fields.
Why are these the right tools?
In this section we justify the selection of the two main tools of our setup, that is, an ontology and a parametrized modular architecture, explaining how they are beneficial to the co-design of robots and motion controllers in an automatic manner.
Why ontologies?
Ontologies, in a computational sense, are formal and explicit specifications of conceptualizations [17] and provide enough concepts and relations to articulate models of specific situations in a given domain. However, they do not simply represent but also can be used to generate knowledge: if an ontology is correctly designed, we do not need to specify all facts explicitly, but we can also use inference methods to extract implicit knowledge. For instance, if we define the class HumanoidRobot as a robot which includes two arms and two legs, when we instantiate that class we do not need to specify that our instance has two arms and two legs.
When conceiving any sort of design process, it is important to take into account how purpose/functionality, possible implementations and resources interact. In [18], Censi describes a theory to deal with co-design problems in a principled way. In that work a design problem is defined as a tuple of function space, implementation space, and a resources space, plus the two maps that relate implementations to functions and implementation to resources. It also shows the existing relationship between functionalities, structures and resources. Either if it comes from designers or from users, any design is created under a set of specifications that the final system must fulfill. At the same time, we usually have some restrictions imposed by the finite amount of available resources. Therefore, we could just consider a limited number of possible implementations which fit both, requisites and resources. When we apply this idea to the robotic domain, if user requirements are understood as a list of capabilities that a robot must possess, the possible implementations of the structure of a robot rely on, among others, this list of capabilities. However, [18] lacks the use of ontologies that could help to represent and exploit all knowledge related to the design.
In fact, given one of the sides of the relationship between robot capabilities and the physical structure of the robot, a knowledge system (knowledge base plus reasoner) could infer the existence of the other one and vice versa. For instance, if there exists a relationship of necessity between having a gripper (physical device) and the capability of grasping, information could be inferred bidirectionally: on the one hand if the robot possesses a gripper, it can grasp objects; and on the other hand if a robot can grasp, it must possess a gripper. In both cases, an ontology seems to be the perfect tool to use during the inference process.
Finally, the knowledge behind any design process must bring together the theoretical knowledge related to the specific domain and the common knowledge extracted from experience. If we want machines to be able to design robots as humans do, or even better, it is compulsory to comprehend the human design process and then to represent that knowledge in a machine-friendly format. Our approach, generic as it is, relies on this issue. Ontologies [17] are the most well known method to represent knowledge in current literature, existing several successful examples [19, 20], and it is being standardized in the field of Robotics and Automation (R&A) [16] for this very reason. Based on these premises, an ontology proves an excellent choice to store our knowledge base.
Why modular robotics?
Robots are usually designed manually, which makes this process very expensive, time consuming and also quite difficult to adapt to different scenarios. For this reason many works deal with the automatic design of both robots and their controllers, often based on modular design approaches [21].
Modular robots are widely used in different domains such as education, research or industry (see [22, 23, 24] for complete reviews). There are several factors that determine whether a modular robot is suitable for a specific domain. In some cases the same modular platform is used for both education and research domains but rarely for the industry too. This is usually achieved by using different programming languages: simple ones for education (usually visual languages with blocks like Lego Mindstorms or Scratch, used for example with Cubelets and MOSS robots from ModRobotics) and more advanced for research applications (like Robotis Bioloid which have a graphical C++ based programming tool called RobPlus Task). In the industry, companies have their own languages like RAPID (ABB) or VAL 3 (Stäubli). For the specific case of collaborative robots, programming is usually done following a lead-through methodology, like ArtiMinds in Universal Robots, Intera in Rethink Robotics or Sunrise Workbench in KUKA robots.
It is important to indicate that just because a modular platform has an easy programming language (e.g. Blocky or Scratch) it does not mean that every robot created with that platform will be easy to program. Lead-through programming can also be a very slow technique and it is not appropriate in some cases. For example, using this method for the movement planners of complex robots (e.g. humanoids) can be tedious and sometimes is not powerful enough (e.g. the walking of a humanoid robot can be statically programmed using lead-through techniques but not dynamically, which means that it will fall down in the presence of external forces). This makes complex robot programming out of the reach of novice users [25]. That is why many modular platforms for education include previously designed robots with movement planners already programmed. Some examples are the Bioloid humanoid robot of Robotis, the quadruped robot of Fable [26] or the JD humanoid of EZ-Robot.
This impracticality of robot programming restricts the freedom of users in creating new robots or even modifying existing ones. This leads to the conclusion that it is necessary to find a way that helps novice users to program their complex robots, e.g. obtaining planners automatically. At this point the concept of co-design as the simultaneous design of mechanisms and their controllers becomes relevant. For instance, [27] describes a method to simultaneously optimize quadruped robot gaits and the mechanism design parameters. They start from biologically inspired good candidates which are later optimized using an evolutionary algorithm (EA). Another similar work is presented in [28], where the authors introduce a method for co-optimizing robot physical designs and their motion using a gradient-based optimization approach. Though the aim of our work is similar, we focus on the way that the ontology can extract useful information for the structure and the control designer rather than the optimization problem. In fact, we only use optimization solvers to minimize link material as explained in Section 4.2.2. For both the body and the controller design we use a recursive algorithm that, starting from a parametric kinematic configuration, finds the best link dimensions and actuator characteristics that meet user requirements.
A work, very similar to our approach, that deals with design selection is [29]. In this work the authors present an end-to-end system that integrates the low-level design generation, and a high-level mission planning with their own modular robot architecture. We also present an end-to-end approach but with the difference that the robot is automatically designed while in the referenced work they provide a library to help users with the manual design. Another end-to-end effort that goes from task specification to implementation of robots is developed in [30]. It presents a knowledge transfer framework, GTax, which aims to simplify robot programming and enables transfer of knowledge between. This framework is developed for manufacturing robots and, hence, it addresses practical problems for industrial applications such as performance requirements. Nevertheless, our approach tries to span a wider robotic domain and, to date, it does not account for those requirements.
Several of the most well-known approaches to automatic design of robots come from the field of evolutionary robotics. This happens because EAs can come up with solutions which humans could not imagine [31]. An advanced development of EA, Memetic Computing techniques, are hybrid EAs that employ deterministic local search in the evolutionary cycle to solve optimization problems, outperforming each technique separately. These techniques can be applied for example to the control wheeled robots [32]. However, EAs are still at the research stage, which makes them unsuitable for education or other domains like industry.
In our approach we propose a Parametric Modular Robotic (ParMoR) platform that can be used for education and research and can be considered as a demonstrator for other domains like industry. Our framework helps users to develop and program complex robots (see Section 4). Similar to other platforms, we propose an intuitive, visual programming language (Bitbloq [33]) for novice users, for example inexperienced personnel, and more advanced programing (Python/C++ with ROS) for researchers or experienced users.
The main difference with other modular platforms, shown in Table 1, is that ours does not limit users to several specific robots with previously programmed controllers. In our approach users have (theoretically) an infinite number of complex robots available, with their respective controllers helping with the reprogramming (i.e. low level details are transparent to the users). These robots and controllers are automatically generated from parametric configurations.
Other requirements we have imposed on our modular robot approach are:
Open hardware/software modular platform. Easy module building with 3D printing and accesible electronics. Easy and robust robot assembly. Possibility to build any robot configuration. Different programming languages for different level users.
Possibility to program any complex robot, regardless of the user level.
Modular Robotics Platforms used in both education and research
Ontologies involved in the ORA Standard.
The Automatic Design of Robots Ontology (ADROn)
defines concepts and relations that are to be used for the automatic conceptual design/selection of robots. ADROn has been constructed upon the IEEE Standard Ontologies for Robotics and Automation (ORA) [16]. This standard, written in SUO-KIF1 language [34], provides a formalism that allows to represent and reason with the knowledge gathered by the experts in the field over years of research. It is constructed upon the Suggested Upper Merged Ontology (SUMO) [20] which provides high level classes, such as Motion
The potential of ORA has already been explored in some cases of study [35] and it is still under development. In fact, several Working Groups of the IEEE are developing a suite of ontologies for different fields of robotics [36, 37, 38]. ORA is divided into four ontologies, whose dependences are displayed in Fig. 1. They are required to construct more specific concepts belonging to other ontologies and consist of:
In its actual state, ORA does not completely match the needs of this work. While it states several key concepts (to our purpose) such as RobotPart
RobotAction declaration and relation with SUMO and CORA concepts.
In order to extend ORA, we have considered two aspects related to our approach which show the necessity of that extension: the resources we use to build robots and the proposed methodology to do it automatically. On the one hand, we work with a modular architecture of robots and, therefore, it is necessary to define some physical concepts, which are yet to be included in ORA, to represent ParMoR elements in our knowledge system. On the other hand, our approach needs a mapping from actions to the structural parts that are needed to perform them. Finally, we need to define the different types of robots that we might find depending on the resulting design (see Section 3.3). In order to cover all needed knowledge, several new concepts are proposed in the following subsections, where we provide a definition in natural language, but also a formalization in First Order Logic. For a better understanding, we also include some code written in SUO-KIF when needed.
ADROn defines concepts regarding the actions that a robot can perform under the class RobotAction, which is a subclass in Process
Taxonomy of the main physical concepts in ADROn (white) and relation with SUMO (black) and CORA (gray).
In CORA, robotPart
Even though we agree with the definitions given in the standard, we still need to represent two specific concepts related to physical components which are not yet covered. The main physical elements defined in ADROn are StructuralRobotPart and Module, which are subclasses of Device
Therefore, a StructuralRequirement (SR) captures the existing relationship between a RobotAction (RA) and the StructuralRobotPart (SRP) which plays a necessary role in the action. This concept lets us infer the necessary structural parts that a robot should have to fulfill the actions requested by the user. It is formalized as follows:
Partial robot classification depending on the environment/locomotion.
The corresponding code written in SUO-KIF is the following:
(instance StructuralRequirement BinaryPredicate)
(instance StructuralRequirement InheritableRelation)
(domain StructuralRequirement 1 RobotAction)
(domain StructuralRequirement 2 StructuralRobotPart)
Hence, a StructuralRequirement determines, for example, that if a Robot
(subclass RobotGrasping RobotAction)
(subclass RobotGrasping Grabbing)
(=>
(instance ?GRASP RobotGrasping)
(exists (?GRIPPER)
(and
(instance ?GRIPPER RoboticGripper)
(StructuralRequirement ?GRASP ?GRIPPER))))
Continuing with the other new concepts, on the one hand, an instance of StructuralRobotPart represents any Module or set of Modules that is a robotPart
Again, the code implemented in SUO-KIF to define those concepts in our ontology is as follows:
(subclass StructuralRobotPart Device)
(=>
(instance ?STRUCTURE StructuralRobotPart)
(exists (?ROBOT ?ACTION)
(and
(instance ?ACTION RobotAction)
(StructuralRequirement ?ACTION ?STRUCTURE)
(instance ?ROBOT Robot)
(robotPart ?STRUCTURE ?ROBOT))))
(subclass Module Artifact)
(=>
(instance ?MODULE Module)
(exists (?ROBOT ?STRUCTURE)
(and
(instance ?ROBOT Robot)
(instance ?STRUCTURE StructuralRobotPart)
(robotPart ?STRUCTURE ?ROBOT)
(part ?MODULE ?STRUCTURE))))
Examples of subclasses of StructuralRobotPart are EndEffector, RobotLimb or RobotTrunk.
ADROn also defines a number of robot types such as HumanoidRobot which are subclasses of Robot
Each of these robots consists of one or more StructuralRobotPart depending on their definition. For example, the following code defines a HumanoidRobot subclass consisting of two RobotArm and a RobotTrunk which are, in turn, subclasses of StructuralRobotPart. In addition, as long as HumanoidRobot is a subclass of BipedalRobot, it also inherits two instances of RobotLeg. In this case we show just the code written in SUO-KIF since the formalization in First-Order Logic might be confusing.
(subclass GroundRobot Robot)
(subclass LeggedRobot GroundRobot)
(subclass BipedalRobot LeggedRobot)
(=>
(instance ?rob BipedalRobot)
(exists (?leg1 ?leg2 ?trunk)
(and
(instance ?leg1 RobotLeg)
(instance ?leg2 RobotLeg)
(instance ?trunk RobotTrunk)
(robotPart ?leg1 ?rob)
(robotPart ?leg2 ?rob)
(connectedTo ?leg1 ?trunk)
(connectedTo ?leg2 ?trunk)
(robotPart ?trunk ?rob)
(not (equal (?leg1 ?leg2))))))
(subclass HumanoidRobot BipedalRobot)
(=>
(instance ?rob HumanoidRobot)
(exists (?arm1 ?arm2 ?trunk)
(and
(instance ?arm1 RobotArm)
(instance ?arm2 RobotArm)
(instance ?trunk RobotTrunk)
(robotPart ?arm1 ?rob)
(robotPart ?arm2 ?rob)
(connectedTo ?arm1 ?trunk)
(connectedTo ?arm2 ?trunk)
(robotPart ?trunk ?rob)
(not (equal (?arm1 ?arm2))))))
Automatic robot design system
This section gives an overview of the complete procedure for generating completely functional robots from (very basic) user requirements. Figure 5 shows the process flow of the complete system. This process is summarized as follows:
The user, using a software application, describes the behavior(s) to be performed by the robot. A knowledge system, consisting of a reasoner (Sigma [39]) and a procedure to extract relevant information from ADROn, infers a robot base configuration. Depending on the inferred configuration, a set of parameters/requirements must be specified by the user in order to create the physical structure. The base configuration together with the user requirements are passed on to the Structure generator which selects the concrete active modules and designs passive modules according to kinematic and dynamic considerations. According to these modules, robot description and 3D printing files are created. Finally, the formal description of the robots is represented in ROS using Unified Robot Description Format (URDF) models and a parameterized controller is provided to simplify the control stage.
For example, given the behavior of grasping objects, the automatic designer asking the ontology would select a manipulator robot and after the optimization it would obtain the link dimensions based upon a certain rigidity. This can be related to the maximum payload that the robot arm must be able to carry by allowing a maximum tip deflection when performing maneuvers.
The following subsections will illustrate the process in further detail.
Flow diagram of the automatic generation of robots.
Instances of the main concepts in ADROn related to the Robot concept from CORA.
According to ADROn, a robot consists of one or more StructuralRobotPart and each of them consists of, at least, one Module. Figure 6 shows: an instance of a HumanoidRobot (subclass of Robot
ADROn includes the definition of every module of our modular architecture (e.g. IRProximitySensor, Servomotor, etc.) along with every action that a robot can perform and the relationships between RobotActions and StructuralRobotParts.
The conceptual generation of a robot is a three-step process. First, the robot instance generator receives a set of RobotActions that the robot is required to perform. Then the reasoner uses semantic queries to determine the StructuralRequirements implied by the set of actions. Subsequently, the instance generator matches these requirements with the hardware available in the base configurations defined in ADROn. If several matches are found, the generator asks the user some questions inferred from the ontology to disambiguate the solution. Finally, the system creates the conceptual (instance) design of a robot able to perform those actions and passes it to the structure generator. This process is schematized in Procedure 4.1. Robot Instance GenerationsRA
As an example, we present now a very straightforward example of generation of a robot with the ability of RobotWalking.
First, the generator user demands a robot with a walking behavior. A querying process in ADROn determines RobotLeg as a StructuralRequirement. A search through the base configurations obtains all the matches: HumanoidRobot, QuadrupedRobot and HexapodRobot. Disambiguation is done by querying the ontology about the additional capabilities that matched robots possess. In this case, we discover that only the HumanoidRobot has the capability of grasping so the generator asks the user “Does the robot need to grasp?”. The answer is positive, so the generator determines RobotGripper as a new StructuralRequirement. It searches again through previous matches and determines that the appropriate robot is a HumanoidRobot. The generator provides a dimensionless base configuration of a HumanoidRobot. The conceptual design is over and the parameterization process begins.
Actually, this methodology has its flaws, maybe the most important is what to do when several robots have exactly the same capabilities (e.g. QuadrupedRobot and HexapodRobot). In future versions we will face this problem and try to solve it with a more complex process, for instance, we could differentiate the two robots cited before by knowing that with six legs our robot could walk more easily over rough terrain, as its static stability is higher. However these concepts are yet to be implemented in ADROn.
Flow diagram of the structure generation of robots.
Once the base configuration has been determined, the generation of the physical structure begins. The base configuration together with the user requirements (e.g. robot speed, payload, workspace) are passed on to the automatic designer which selects the concrete active modules and designs passive modules for the requested robot. Figure 7 depicts the flow of the Structure Generator block of Fig. 5.
We can see three main components: dynamic analysis, robot description and 3D modules generation. Also a database provides the definition of all active modules and the templates of the passive modules to the components. These will be detailed in subsequent sections.
Robot A. (left) Two high-torque actuators and a middle-torque actuator. Robot B. (right) One high-torque module and two middle-torque actuators.
The user variables are combined with the pool of modules available in ParMoR to dimension the robot passive modules and select the adequate active modules.
Some of the user requirements might condition the physical structure of the robot due to the restrictions they impose. Therefore, a study of the robot dynamics, specially in a worst case scenario, is needed to guarantee proper functioning of the robot. This study determines passive modules dimensions and torque demands for the actuators of each joint. The process is iterative and follows these steps:
A tentative value for links lengths is assumed depending on desired workspace and dimensions of the active modules that must fit in the structure. The recursive Newton-Euler method [40] is applied to the kinematic chains of the different base configurations in order to calculate the torques that must be exerted at each joint to actuate the robot as specified by user requirements, and the forces and torques endured by each link. This evaluation will strongly depend on user requirements (e.g. payload) and ParMoR modules (weights, inertias, dimensions…). Active modules fulfilling the calculated requirements are chosen from the ParMoR architecture. Passive modules are designed following a material optimization process and a stress analysis detailed in following subsections. The process is restarted if there are no active modules fulfilling the requirements or the passive modules design gives an unfeasible solution.
Figure 8 displays an example of different designs obtained with different user requirements. As can be seen, even though both robots show the same abstract structure, (3 dof manipulator), the Structure Generator determined a different geometry for passive modules (larger workspace) and different active modules (because of higher inertial forces).
Once the lengths of the links have been calculated, a material optimization process begins. The parametrization process must avoid bending of links over a given limit while reaching the workspace requested by user requirements. Additionally, because we are manufacturing our modules with a 3D printer, we intend to use the minimum amount of material that guarantees both aims.
Hence, an optimization problem arises, which aims to minimize solid volume of printable links given some values, such as the length, geometric restrictions depending on the shape of the cross-section, and a minimum requested rigidity to avoid bending, which can be related to maximum payload of manipulator.
Solutions depending on thickness restriction.
Cylindrical hollow beams have been considered for the robot links. The optimization problem for them is stated as follows:
where
This solution is only valid if
Each link of the robot has been analyzed as a beam clamped on one end with an external force and torque applied at the free end. These loads include inertial forces/torques due to the movement of the rest of the links. The effect of gravity has been assumed to be concentrated on both ends and equally divided. The following hypothesis have been assumed:
Highest stress is presented at the clamped end. Hence, this section will be analyzed for having the highest risk of fracture. In the clamped end, slope and deflection are zero. Deflection in the free end is maximum and proportional to applied force.
Relation between clamped end stress and dynamic loads applied to the link has been solved from the stiffness equation given by:
where f represents the vector of characteristic forces and torques, u is the vector of displacements, and K is the stiffness matrix.
The beam has been discretized in a single beam element with two nodes (one in each end), each of them with 3 degrees of freedom.
With this equation, we can calculate the loads in the clamped end, which allows us to perform stress analysis and evaluate the possibility of a fracture in the link.
Additionally, as the geometric discontinuities cause a local increase in stress, the perpendicular union between the hollow cylinder and the dovetail faces generates a stress concentrator. This effect has been alleviated using fillets (see Fig. 10).
Each type of robot has a predefined script, written in Xacro language, that automatizes, once the parametrization is finished, the URDF file generation. Xacro is an XML macro language that simplifies the creation of URDF files (usually a tedious task) with a template and a set of values for its parameters. The use of these files allow the automation of the controller generation, as will be detailed in Section 4.3.
3D printable files
A set of functions is available in OpenSCAD for creating the Stereo Litography (STL) files of the newly designed passive modules. In Fig. 10 we can see different passive modules of beam type. They consist of two dovetail faces, a hollow cylinder and inner and outer fillets between faces and cylinder.
Different links created from the same OpenSCAD function.
The last step in the automatic generation of functional robots is the creation of a controller for performing the behaviors requested by the user. This controller will also facilitate the robot programming, shielding the users from having to write low-level motion planners. The problem or controller design will be addressed as a part of a co-design problem of mechanisms and motion controllers. For this reason, the particular aspects of mechanism design for each robot will be also summarized in the following subsections, introducing the parametric kinematic modeling for each kind of robot and how it is used to generate motion controllers. As it is seen in Fig. 11, two parameters are sent to the controller generator: the robot design in URDF and the robot behaviors list described by the ontology (e.g. the user could only have specified the behavior walking but there are more behaviors necessary to control a humanoid robot like running or climbing). With this information, and as seen in Fig. 11, the controller generator follows these steps:
Parametric planners for each behavior, based on analytical expressions, are selected from a database. These planners are numerically parametrized using the information of the URDF. A ROS service is created with each planner. An experienced user could use at this time the ROS API to program the robot. Bitbloq blocks (i.e. planner functions) are generated for each service of ROS. These blocks can be used by novice users like k-12 students.
Automatic Control Generator.
Real wheeled robots generated according to different user specifications.
Kinematic analysis of a differential robot.
Different length snake robots generated with our designer.
Snake robot with 
Kinematic Model for the 3 dof parametric manipulator.
The outcome of this process is a set of ROS services that can be used by experienced users or that can be converted to blocks for visual programming.
Our automatic designer includes two configurations of wheeled robots: differential and skid-steer. The radius r of the wheels and the distance L1, L2 between them are the customizable parameters (see Fig. 12). Depending on user specification (i.e. robot speed, payload and load area) our automatic designer will choose one of the configurations: differential for minimum payload and load area, and skid-steer for bigger payloads and load areas. L1 and L2 are automatically adjusted to meet load area specifications. Wheel radius r together with the type of actuators (active modules) are calculated through a dynamic analysis for velocities and torques (see Fig. 12 for some examples).
The motion controllers for these robots are based on the well known analytical solution for differential drive and skid-steer mobile robot kinematics [40]. For example, the movement of a differential mobile robot of Fig. 13 can be defined with Eqs (5) and (6). As it is seen, this movement will directly be conditioned by parameters
We have used the diff_drive_controller ROS package, which includes the aforementioned differential drive and skid-steer kinematics to automatically generate wheeled robot motion controllers. Our robot parametrization (i.e. number of wheels, robot dimensions
Our automatic designer includes a base configuration of snake robots in which the modules are chained in two different orientations (vertical and horizontal) shifted by 90
We have written a ROS motion controller which uses waves generators [43] for vertical
where
Discussion It is proven that snakes with fewer modules can perform similar gaits [44]. However, the motion of these snakes is less smooth than statically stable snakes. In newer versions the automatic designer will determine
Parameterized robot manipulators generated with our system consist of robots with same kinematic configuration but with different length links and different actuators that fulfill user specifications of workspace and payload. Figure 16 shows the parametric kinematic model of the 3 dof base manipulator where the
The low level control of the robot is carried out through ActionLib [45] which allows the controller to have continuous feedback of sent trajectories.
Discussion The parametric controller for this kind of robots have been successfully tested in the Gazebo simulator [46] and also with three real robots of different size (see Fig. 17). These robots and their controllers fulfill user specifications of workspace and payload but other important specifications in industry like accuracy, dynamic response, etc. have not been dealt with in this work.
Real manipulator obtained from three different user specifications.
Hexapod body parametrization according to a stable tripod gait.
Kinematic Model for a 3 dof hexapod leg.
Real hexapod robot build from the parametric kinematic model of Fig. 18.
Kinematic model of the base humanoid robot.
Joint trajectories of right leg of humanoid during several steps of a stable gait.
Conversion maps for humanoid trajectories.
Our automatic designer uses a parametric rectangular hexapod as a base configuration (see Fig. 18). Legs links
Discussion The motion planner generates statically stable gaits over flat surfaces. This has been proven with different size hexapods in simulation (using Gazebo) and with the real hexapod of Fig. 20. However, this controller is not reactive, i.e. the hexapod will not react to obstacles or rough terrain. This feature will be developed in future works.
Trajectories for leg joint 2 of humanoid robot of Fig. 21.
Real Humanoid based on a parametric design.
For a humanoid robot, length of passive modules (e.g. femur and tibia) can be parameterized . The kinematic chain of these robots is the most complex as is presented in Fig. 21, but as well as previous robots, this kinematic model is translated, using URDF via Xacro into a KDL model for generating the joint references (i.e. inverse kinematics) from the desired movement path.
The process for the controller generation is as follows:
A stable gait already defined for a specific robot (i.e. Darwin-OP [48]), has been used to obtain a set of joint trajectories that serve as a basis for our humanoid. Figure 22 shows these trajectories for the right leg. Then, FFT has been applied to these trajectories to obtain main frequency components for each joint maneuver. These have been used to create a new set of parameterized joint trajectories, which we will call the synthetic locomotion. Conversion maps that determine the relation between size of leg’s passive modules and synthetic locomotion parameters have been empirically calculated. For instance, it has been stated that, if joints 2 and 5 are scaled by a factor, body tilt can be changed to maintain stability, while the step size can be modified scaling trajectories of joints 3, 4 and 6. Figure 23 shows these maps, which happen to be almost linear. Finally, joint trajectories for the concrete robot are calculated scaling the synthetic locomotion of Step 2 by factors given by conversion maps of Step 3. As an example, Fig. 24 shows joint 2 trajectories for the robots in Fig. 21, which are obtained from:
where
Discussion As well as for the hexapods, motion controllers for different sized humanoids have been tested in the Gazebo simulator and with the real robot of Fig. 25 obtaining stable walks over flat surfaces. However, these motion controllers do not use dynamics to keep equilibrium (i.e. if the robot is pushed it will fall down). We are currently working with Inertial Measurement Units (IMUs) to develop this kind of reactive controllers.
Bitbloq is an open source tool for online visual programming of electronics and robots developed by BQ. It has been designed to be used mainly in education. Bitbloq is similar to Scratch (i.e. they both use blocks) with the difference that the programs generated in Bitbloq run directly in the controllers while in Scratch programs run in the computer.
We have enhanced Bitbloq adding an interface that incorporates robots generated with ParMoR. Basically, we have added the robots included in the base configuration database of the automatic generator to Bibloq. Programming blocks, corresponding to the parametric controls of the robot planners database, for each robot have been also created and made available for Bitbloq users.
If some user wants to use a behavior of a robot (e.g. walking), he or she only has to drag and drop the corresponding blocks. Bitbloq then generates automatically code in Python that subscribes to the ROS controller. It is important to note that robot parameterization does not affect Bitbloq as this is dealt within the ROS controller (e.g. two different sized humanoids auto generated with ParMoR will have the same blocks in Bitbloq).
Snake Robot and list of available parametric ParMoR robots in Bitbloq.
Example of programming a snake robot with blocks in Bitbloq.
The following summarizes an example of programming a snake modular robot with Bitbloq:
The process starts with the automatic generation of the snake and its ROS controllers using ParMoR’s methodology explained in this work. The ROS controllers are loaded in the Intel Edison of the Main Module (defined in Section 5.1). Then, the user can select in Bitbloq a snake from the list of available robots (see Fig. 26). Programming blocks for the snake are automatically shown to the user as seen in Fig. 27. The user can drag and drop them to write a program. Bitbloq program is translated to Python and executed as a ROS node. This program uses services of the ROS controllers to move the snake as the user commanded.
We have developed ParMoR to be used with the automatic designer agent presented in this work. Its principal characteristic is its parametric modules which allows the agent to parametrize and optimize designs.
In the following we present the main components of our robotic platform (i.e. active and passive modules).
Assembly of an active module.
Active modules (modules with electronic parts) have been designed to be easily encapsulated using 3D printed faces. They include rails for dovetails pins which allow users a simple but robust mechanical joining of modules. Figure 28 shows an example of the design of an active module with the aforementioned faces.
Active modules, with the exception of the main module, include an ATtiny85 microcontroller to control the electronic parts (e.g. actuator, sensor) and to communicate, via I
Main module (1 model) based on a Intel Edison microcomputer with ROS integrated. Battery module (1 model) based on a 1500mAh 11.1V Li-Po battery. Sensor modules (4 models) for object detection (contact, ultrasonic, infrared) and robot localization (IMU). Actuator modules (6 models) for continuous rotation or position control with three different torque models per type (i.e. low, medium and high torque).
Figure 28 also shows the electronics (i.e. servo and ATtiny85 board) of the active module used as an example.
As active modules communicate via I
The passive modules (i.e. mechanical parts with no electronics) of our modular architecture have been designed parametrically. This allows the automatic designer to adjust their geometry to meet user requirements. Figure 10 showed an example of two passive link modules with different geometry obtained from the same base design.
Modular robot architecture.
An example of the parametrization of passive modules is shown in Fig. 29 where the links of a robotic arm have a different design, after the optimization process explained in Section 4.2. This guarantees adjusting the reach of the arm to a certain length minimizing the amount of material. Other examples are the parametrization of feet which is used to increase stability in a walking robot by increasing the contact surface with the floor, or wheels, on whose radius relies the maximum speed a wheeled robot can achieve. Modules can also be easily joined using dovetails pins as is depicted in Fig. 29.
In this work we have presented our approach for automatic design, controller generation and easy block programming for complex robots. The modular architecture presented in this work is manufactured using low-cost, fast prototyping techniques (3D printers) using PLA (PolyLactic Acid) as the printing material. This makes modular robots presented in this paper not really suitable for industry applications as the 3D printed robots have the following issues:
PLA is not durable enough for repetitive operations. PLA is not stiff which introduces backlash and non desirable deformations. Servo motors are not reliable for 24/7 operation.
Changing 3D printing fast prototyping with other classic prototyping like CNC metal machining and servomotors with industrial brushless motors should be the first step to introduce our approach to the industry domain. However, our work is not presented as a final product for industry but as a demonstrator of how automatic modular robot design and automatic controller generation can be used to obtain an agile robotic system.
In fact, not all the robots presented in this work have a direct use in industry (i.e. humanoids, snakes or hexapods) but we do believe that they are a good
3 DOF robot generated by our system for pick&place of cylindrical cans.
6 DOF robot generated by our system for pick&place of oval cans.
The inferred robot corresponds to the following definition in SUO-KIF of manipulator3DOF which is defined as a subclass of industrial robot (subclass of stationary robot).
(subclass stationaryRobot Robot)
(subclass industrialRobot stationaryRobot)
(subclass manipulator3DOF industrialRobot)
(=>
(instance ?rob manipulator3DOF)
(exists (?serv1 ?serv2 ?serv3 ?grip)
(and
(instance ?serv1 Servomotor)
(instance ?serv2 Servomotor)
(instance ?serv3 Servomotor)
(instance ?grip roboticGripper)
(robotPart ?serv1 ?rob)
(robotPart ?serv2 ?rob)
(robotPart ?serv3 ?rob)
(robotPart ?grip ?rob)
(connectedTo ?serv1 ?serv2)
(connectedTo ?serv2 ?serv3)
(connectedTo ?serv3 ?grip))))
After some time, the company prospers and decides to produce sardine cans which are oval. As ovals are not symmetric the robot needs now the capability of orienting the gripper. Our approach will generate a new robot as is seen in Fig. 31.
The inferred robot in this case corresponds to the following definition in SUO-KIF of manipulator6DOF which is defined as a subclass of industrial robot (subclass of stationary robot).
(subclass stationaryRobot Robot)
(subclass industrialRobot stationaryRobot)
(subclass manipulator6DOF industrialRobot)
(=>
(instance ?rob manipulator6DOF)
(exists (?serv1 ?serv2 ?serv3
?serv4 ?serv5 ?serv6 ?grip)
(and
(instance ?serv1 Servomotor)
(instance ?serv2 Servomotor)
(instance ?serv3 Servomotor)
(instance ?serv4 Servomotor)
(instance ?serv5 Servomotor)
(instance ?serv6 Servomotor)
(instance ?grip roboticGripper)
(robotPart ?serv1 ?rob)
(robotPart ?serv2 ?rob)
(robotPart ?serv3 ?rob)
(robotPart ?serv4 ?rob)
(robotPart ?serv5 ?rob)
(robotPart ?serv6 ?rob)
(robotPart ?grip ?rob)
(connectedTo ?serv1 ?serv2)
(connectedTo ?serv2 ?serv3)
(connectedTo ?serv3 ?serv4)
(connectedTo ?serv4 ?serv5)
(connectedTo ?serv5 ?serv6)
(connectedTo ?serv6 ?grip))))
The company just have to upgrade its robot with the new modules that our system generates, while the new controller and the blocks for an easy programming are as well provided.
Currently, our application lets users configure amanipulator modifying four different parameters:(a) shape of the objects to work with, (b) payload,(c) rough radius of the workspace and (d) degrees of freedom (DOF). With that information we are able to infer the gripper we need (depending on the shape of the object) and the configuration of the final robot. The modular robotic architecture developed by Schunk [11] is able to create a large number of different configurations for industrial manipulators. The differences among the robot instances depend on, in a first classification, two values that are part of the parameters used in our robot design generation: DOF and payload. Therefore, it can be deducted that applying our methodology to an industrial modular platform is possible and, in fact, it is one of the main targets for new developments. Obviously, this extension would require new concepts in the ontology regarding performance measurements, such as repeatability or dexterity, new industry-oriented tasks and new physical concepts such as a variety of end-effectors for different purposes.
Although the previous example is very clarifying, there are other situations where companies, using different robots, could benefit from our approach. For example, there are companies that use snake robots for pipe inspection, search or rescue. Depending on the application, snake robots should have at least a specific configuration and minimum number of DOF which our system would determine.
Our approach is far from being ready for an industrial application and even if we just used it for education or research, we would find some limitations. It is the aim of this section to identify some of those limitations and propose how we could manage them in the future.
In the previous sections we have shown how our approach is able to decide the design of a robot automatically from the desires of a user. We have carefully selected the capabilities that a user can choose for a robot to have, so that they can be performed with the resources which are at our disposal (modular architecture and ontology). When writing our knowledge base, we made sure that every possible capability was connected to at least one structural part (e.g. walking and robot leg) and that we could build a feasible robot which was able to perform the expected action. All of this is possible because in our knowledge base we have included instances of robots (including their parts) which can be built with our resources. Note that, though implicitly, all the capabilities of those robots are also defined. Thus, our system will never find a situation in which the proposed design does not fulfill the user desires and nor a design which is not feasible, since our system is totally deterministic. In future versions we will explore how to introduce some randomness through heuristics.
Due to the lack of randomness in our process, we have not implemented a way of measuring how good our approach is yet, however, we have started searching for some potential metrics. Modularity, Regularity and Hierarchy (MR&H) [49] have been identified by researchers as useful principles for designing complex systems. Note that these characteristics can also be seen in nature. Even though in [49] those concepts are considered from an evolutionary point of view, they are general and can be applied to any design process. The evaluation of those characteristics can be seen as a metrics of how good a design is. Considering the general definition we can understand better how they fit within our work.
Modularity: The modularity value of a design is a count of the number of structural modules in it. Regularity: Amount of reuse of the modules used in the design process. Hierarchy: Number of nested layers of modules.
These metrics, while not yet assessed in our platform, are clearly aligned with our work, as we are using a modular architecture with reusable modules and several hierarchy levels (Robot
This work presents our comprehensive approach for agile design, control and programming of a novel modular robotic platform designed to be used in different domains (i.e. educational and research) and as a proof of concept for the industry domain.
An extension to the ORA Standard, ADROn, has been developed, providing new concepts that relate robot capabilities and structural robot parts or robot types. A knowledge system, consisting of ADROn and an existent reasoner, processes the user requirements (desired robot capabilities) to select the most adequate robot configuration. ParMoR, a collection of 3D printable, modular components, serves as a testbed to the structure and controller designers for the robots selected by the knowledge system. This is a co-design problem that has been solved with parameterized designs, both for structure and controllers, for the robots available in ADROn. The controllers have been encapsulated with the visual programming language Bitbloq, abstracting the low-level control execution, performed in ROS, from inexperienced users.
This end-to-end process conceals the complexity of designing robots and their controllers from novice users, such as non-engineering personnel or even high-school students, allowing them to develop and program a large number of complex robots of a certain number of base configurations.
As discussed, there still exists a considerable gap for its application in industrial environments, but the design process described in this article is generic and the tools provided are scalable. Therefore, it could be extended to other domains of robotics with the appropriate extensions of the ontology and the adequate modular platforms.
Footnotes
Standard Upper Ontology Knowledge Interchange Format is a declarative semantics language designed for use in the authoring and interchange of knowledge.
Each ontology concept used in the article that do not belong to our ontology will have a subscript to indicate the origin of the concept: S stands for SUMO, C for CORA, X for CORAX, R for RPARTS and P for POS.
We use “RobotGrasping” in our ontology instead of “RobotGrabbing”, which would be consistent with SUMO class, because the first term is widely used in the domain, and both are synonyms.
Acknowledgments
This work has been supported by Mundo Reader S.L. and the CDTI under expedient IDI-20150289: BOTBLOQ: An integral ecosystem for the design, manufacturing and programming of Do-It-Yourself robots.
