| Literature DB >> 32609761 |
Andrés C Jiménez1, John P Anzola1, Vicente García-Díaz2, Rubén González Crespo3, Liping Zhao4.
Abstract
Calculating forward and inverse kinematics for robotic agents is one of the most time-intensive tasks when controlling the robot movement in any environment. This calculation is then encoded to control the motors and validated in a simulator. The feedback produced by the simulation can be used to correct the code or to implement the code can be implemented directly in the robotic agent. However, the simulation process executes instructions that are not native to the robotic agents, extending development time or making it preferable to validate the code directly on the robot, which in some cases might result in severe damage to it. The use of Domain-Specific Languages help reduce development time in simulation tasks. These languages simplify code generation by describing tasks through an easy-to-understand language and free the user to use a framework or programming API directly for testing purposes. This article presents the language PyDSLRep, which is characterized by the connection and manipulation of movement in mobile robotic agents in the V-Rep simulation environment. This language is tested in three different environments by twenty people, against the framework given by V-Rep, demonstrating that PyDSLRep reduces the average development time by 45.22%, and the lines of code by 76.40% against the Python framework of V-Rep.Entities:
Mesh:
Year: 2020 PMID: 32609761 PMCID: PMC7329094 DOI: 10.1371/journal.pone.0235271
Source DB: PubMed Journal: PLoS One ISSN: 1932-6203 Impact factor: 3.240
Fig 1Kinematic representation of a two-wheeled differential drive robot.
Fig 2Direct kinematic movement after t time.
Fig 3Class diagram direct kinematic behaviour PyDSLRepCode.
Fig 4Class diagram inverse kinematic behaviour PyDSLRep.
Fig 5Four wheeled robots implemented in PyDSLRep (a) non holonomic (b) holonomic using mecanum wheels.
Fig 6Code architecture of an environment.
Grammar implemented in PyDSLRep.
| Keyword | Feature | Grammar rule |
|---|---|---|
| wheel | Creates a wheel component | |
| wheelH | Creates an holonomic wheel component | |
| robot | Creates a robot component | |
| type two_wheels | Creates a two wheels differential robot component | |
| type four_wheels | Creates a four wheels robot component | |
| type four_wheelsH | Creates a four wheels holonomic robot component | |
| sensor | Declares a distance sensor | |
| movement | Creates a collection of movements of a specific robot | |
| parallel movement | Creates a collection of movements that are concurrent | |
| slam | Declares a movement to create a map | |
| environment | Creates a collection of robots with a specific collection of movements | |
| ip | Creates an IP component as IPv4 | |
| move | Creates a linear movement component with a specific velocity | |
| turn | Creates a rotatory movement component | |
| left | Declares the orientation of the turn component 90 degrees to its left if there is not an | |
| right | Declares the orientation of the turn component 90 degrees to its right f there is not an | |
| turn until | Creates a rotatory movement component | |
| port | Declares the port number of each robotic agent | |
| meters | Declares the linear distance traveled in meters | |
| centimeters | Declares the linear distance traveled in centimeters. |
Fig 7First basic environment created in V-Rep.
Bottom-Up architecture design in PyDSLRep two wheel differential robot.
| Step | Code |
|---|---|
| 1 | |
| 2 | |
| 19999 | |
| wheelL | |
| wheelR } | |
| 3 | |
| 4 | |
| robot_1 } | |
| mov_1 } |
Bottom-Up architecture design in PyDSLRep four wheeled robot.
| Step | Code |
|---|---|
| 1 | |
| 2 | |
| 19999 | |
| wheelL0 wheelL1 | |
| wheelR0 wheelR1} | |
| 3 | |
| 4 | |
| robot_1 } | |
| mov_1 } |
Bottom-Up architecture design in PyDSLRep holonomic four wheeled robot.
| Step | Code |
|---|---|
| 1 | |
| 2 | |
| 19999 | |
| wheelL0 wheelL1 | |
| wheelR0 wheelR1} | |
| 3 | |
| 4 | |
| robot_1 } | |
| mov_1 } |
Fig 8Second basic environment created in V-Rep.
Bottom-Up architecture design in PyDSLRep two wheel differential robot third environment.
| Step | Code |
|---|---|
| 1 | |
| 2 | |
| 19999 | |
| wheelL0 wheelL1 | |
| wheelR0 wheelR1} | |
| 3 | |
| } | |
| 4 | |
| robot_1 } | |
| mov_1 } |
Bottom-Up architecture design in PyDSLRep two wheel differential robot with sensors.
| Step | Code |
|---|---|
| 1 | |
| 2 | |
| 3 | |
| 19999 | |
| wheelL | |
| wheelR } | |
| {fSensor, lSensor, rSensor} | |
| 4 | |
| 5 | |
| robot_1 } | |
| mov_1 } |
Bottom-Up SLAM architecture design in PyDSLRep.
| Step | Code |
|---|---|
| 1 | |
| 2 | |
| 3 | |
| 19999 | |
| wheelL | |
| wheelR } | |
| {fSensor0,fSensor1,fSensor2, | |
| lSensor, rSensor} | |
| 4 | |
| 5 | |
| robot_1 } | |
| mov_1 } |
Fig 9Topological map of the first test environment.
Fig 10First test environment created in V-Rep.
Fig 11Second test environment created in V-Rep.
Fig 12Third test environment created in V-Rep.
Results from the first environment using the python framework.
| Subject | Group 1 | Group 2 | ||||
|---|---|---|---|---|---|---|
| LOC | Time (hh:mm:ss) | Remote host | LOC | Time (hh:mm:ss) | Remote host | |
| 1 | 163 | 00:25:32 | yes | 162 | 00:10:48 | yes |
| 2 | 210 | 00:23:51 | no | 158 | 00:27:53 | no |
| 3 | 161 | 00:21:43 | no | 162 | 00:22:47 | yes |
| 4 | 143 | 00:33:56 | no | 168 | 00:13:43 | yes |
| 5 | 207 | 00:32:51 | no | 163 | 00:24:38 | yes |
| 6 | 155 | 00:33:50 | no | 172 | 00:11:69 | no |
| 7 | 175 | 00:18:39 | no | 161 | 00:11:62 | yes |
| 8 | 194 | 00:30:39 | no | 162 | 00:11:51 | yes |
| 9 | 201 | 00:25:48 | yes | 165 | 00:18:52 | yes |
| 10 | 180 | 00:22:40 | yes | 168 | 00:10:40 | yes |
Fig 13Results from the first environment using the framework in Python (a) Time of completion (b) Lines of code to fulfill the experiment.
Results from the first environment using PyDSLRep.
| Subject | Group 1 | Group 2 | ||||
|---|---|---|---|---|---|---|
| LOC | Time (hh:mm:ss) | Remote host | LOC | Time (hh:mm:ss) | Remote host | |
| 1 | 20 | 00:12:9 | yes | 21 | 00:7:19 | yes |
| 2 | 27 | 00:11:12 | yes | 23 | 00:16:3 | no |
| 3 | 23 | 00:15:14 | no | 23 | 00:14:22 | yes |
| 4 | 21 | 00:19:21 | yes | 21 | 00:14:17 | yes |
| 5 | 24 | 00:21:16 | yes | 22 | 00:26:28 | no |
| 6 | 21 | 00:1:20 | no | 26 | 00:8:5 | yes |
| 7 | 24 | 00:16:15 | yes | 19 | 00:8:10 | no |
| 8 | 22 | 00:10:22 | no | 25 | 00:2:18 | yes |
| 9 | 19 | 00:14:19 | yes | 22 | 00:14:18 | yes |
| 10 | 23 | 00:12:27 | yes | 22 | 00:16:14 | yes |
Fig 14Results from the first environment using PyDSLRep (a) Time of completion (b) Lines of code to fulfill the experiment.
Results from the second environment using the python framework.
| Subject | Group 1 | Group 2 | ||||
|---|---|---|---|---|---|---|
| LOC | Time (hh:mm:ss) | Remote host | LOC | Time (hh:mm:ss) | Remote host | |
| 1 | 333 | 00:50:54 | yes | 314 | 00:42:44 | yes |
| 2 | 353 | 00:55:34 | no | 298 | 00:48:73 | no |
| 3 | 337 | 00:49:55 | no | 304 | 00:37:48 | yes |
| 4 | 334 | 00:51:51 | no | 297 | 00:48:37 | yes |
| 5 | 347 | 00:47:52 | no | 286 | 00:44:66 | yes |
| 6 | 336 | 00:49:50 | no | 312 | 00:34:51 | no |
| 7 | 362 | 00:54:53 | no | 314 | 00:46:53 | no |
| 8 | 366 | 00:43:56 | no | 302 | 00:32:46 | yes |
| 9 | 344 | 00:38:44 | yes | 300 | 00:39:55 | yes |
| 10 | 308 | 00:54:48 | yes | 308 | 00:36:47 | yes |
Fig 15Results from the second environment using the framework in Python (a) Time of completion (b) Lines of code to fulfill the experiment.
Results from the second experiment using PyDSLRep.
| Subject | Group 1 | Group 2 | ||||
|---|---|---|---|---|---|---|
| LOC | Time (hh:mm:ss) | Remote host | LOC | Time (hh:mm:ss) | Remote host | |
| 1 | 106 | 00:19:21 | yes | 113 | 00:17:25 | yes |
| 2 | 110 | 00:23:20 | yes | 110 | 00:10:27 | yes |
| 3 | 109 | 00:25:21 | no | 114 | 00:21:26 | yes |
| 4 | 108 | 00:30:21 | yes | 112 | 00:19:23 | yes |
| 5 | 106 | 00:31:32 | yes | 109 | 00:23:18 | yes |
| 6 | 106 | 00:26:11 | yes | 114 | 00:14:25 | yes |
| 7 | 106 | 00:28:25 | yes | 108 | 00:13:19 | no |
| 8 | 106 | 00:21:20 | no | 115 | 00:19:25 | yes |
| 9 | 109 | 00:15:25 | yes | 111 | 00:17:26 | yes |
| 10 | 110 | 00:23:25 | yes | 110 | 00:16:23 | yes |
Fig 16Results from the second environment using PyDSLRep (a) Time of completion (b) Lines of code to fulfill the experiment.
Fig 17SLAM in PyDSLRep (a) topolical map (b) overlapped result in the original environment.