|
Download external/pyrep/tutorials/adding_robots.md from lsnu/VLAdaptorBench: direct link, hf CLI and curl.
- Browser
- Download file 5.22 kB
-
https://huggingface.co/lsnu/VLAdaptorBench/resolve/cd265468967fd6bb40591e7532e98dcdc4e2baec/external/pyrep/tutorials/adding_robots.md
- Command line
-
hf download hf://lsnu/VLAdaptorBench@cd265468967fd6bb40591e7532e98dcdc4e2baec/external/pyrep/tutorials/adding_robots.md
-
curl -L -o adding_robots.md https://huggingface.co/lsnu/VLAdaptorBench/resolve/cd265468967fd6bb40591e7532e98dcdc4e2baec/external/pyrep/tutorials/adding_robots.md
5.22 kB
| # Adding Robots | |
| If the robot you want is not currently supported, then why not add it in! | |
| Below is a quick tutorial on how to do this. The tutorial assumes some proficiency with CoppeliaSim. | |
| You may want to take a look at the CoppeliaSim [tutorials](http://www.coppeliarobotics.com/helpFiles/en/tutorials.htm). | |
| #### 1. CoppeliaSim documentation | |
| First read through the '[building a clean model tutorial](http://www.coppeliarobotics.com/helpFiles/en/buildingAModelTutorial.htm)', | |
| which will show you how to first import CAD data (OBJ, STL, DXF), Collada, or | |
| URDF files, and then how to configure the dynamic shapes. | |
| #### 2. Object naming | |
| After step 1, you should now have your model in the CoppeliaSim scene. | |
| Ensure that all of your joints are in Torque/force mode and that both | |
| the motor and control loop is enabled. Also ensure that the robot root is a 'model'. | |
| Do this by double clicking the robot root in the scene hierarchy to open | |
| up the 'Scene Object Properties' dialog, navigate to the 'Common' tab, and | |
| check 'Object is model base'. | |
| Make sure that each of the scene objects are named appropriately. For example, | |
| for the UR10 robot, we name the visual objects 'UR10_link1_visible', 'UR10_link2_visible', etc, | |
| and the joints 'UR10_joint1', 'UR10_joint2', etc. | |
|  | |
| #### 3. Adding child script | |
| On the root node of the robot, create a 'Non-threaded child script'. | |
| **You do not need to modify the file**. This is needed to ensure that if the | |
| robot is cloned, then the object names in the clone behave as expected. | |
| #### 4. Collision collections | |
| Now we will make a collision collection. In the toolbar on the left, | |
| click to open the 'Collections' dialog. Click 'Add new collection' and a new item | |
| will appear in the 'Collections list'. Rename this (by double clicking on the item) | |
| to '\<Robot\>_arm' where '\<Robot\>' | |
| is the name of the arm. For example, for the UR10, this would be 'UR10_arm'. In the scene hierarchy, | |
| click the root of the robot, and then in the 'Collections' dialog (making sure | |
| the correct item in the 'Collection list' is selected), click the | |
| 'Tree of selected object' radio button, and then click 'Add'. | |
|  | |
| #### 5. Kinematics | |
| ##### Dummys | |
| First create 2 Dummy objects, named '\<MYRobot\>_target' and '\<MYRobot\>_tip' (e.g. UR10_target and UR10_tip). | |
| In the scene hierarchy, the 'target' dummy should be a child of the robot root node, and the tip | |
| dummy should be a child of the last node in the robot arm. | |
| Position both the dummies at the tip of the arm, and orient the tip dummy such | |
| that the z-axis points out from the arm. | |
|  | |
| ##### Kinematics group | |
| Now we will add a kinematics group (needed for motion planning). In the toolbar on the left, | |
| click to open the 'Calculation Modules' dialog, and navigate to the 'Kinematics' tab. | |
| Click 'Add new IK group' and a new item will appear in the list. Rename this | |
| (by double clicking on item) to '\<Robot\>_ik' where '\<Robot\>' | |
| is the name of the arm. For example, for the UR10, this would be 'UR10_ik'. | |
| You should be able to leave the default values. Ensure that 'Explicit handling' is checked. | |
|  | |
| Before you leave this dialog, click on 'Edit IK elements', which will open a new dialog. | |
| In this dialog, select the '\<MYRobot\>_tip' from the dropdown and click 'Add new IK | |
| element with tip'. In the 'Base' dropdown that now becomes visible, select the base/root | |
| of your robot, for the UR10, this will be 'UR10'. Close this dialog. | |
| Finally, double click on the 'target' dummy in the scene hierarchy and choose the | |
| '\<MYRobot\>_tip' option from the 'Linked dummy' dropdown, | |
| and choose the 'IK, tip-target' option from the 'Link type' dropdown. | |
|  | |
| ##### Python Time | |
| Now we are done with the CoppeliaSim side of things. If you have been | |
| keeping to the naming conventions, then there is very little code needed! | |
| Navigate to `pyrep/arms/` and create a new python file called 'my_robot.py', e.g. 'ur10.py'. | |
| Your file should look something like this: | |
| ```python | |
| from pyrep.robots.arms.arm import Arm | |
| class MyRobot(Arm): | |
| def __init__(self, count: int = 0): | |
| super().__init__(count, 'MyRobot', num_joints=6) | |
| ``` | |
| The string: 'MyRobot', should match exactly the prefix used in the previous steps of the tutorial, e.g. 'UR10'. | |
| ##### Tests and finishing up | |
| Adding unit tests for the robot is easy! | |
| Open up the scene `tests/assets/test_scene_robots.ttt` and place your robot in there. This | |
| scene file contains all of the robot arms that have been brought in to PyRep and is used for testing | |
| that the robots have been created correctly. | |
| Now simply navigate to `tests/test_arms_and_configuration_paths.py`, | |
| and add your new robot to the list of `ARMS` (following the convention already in place). | |
| Run the unit tests before submitting a pull request. | |
| **Please do not submit pull request unless the robot is unit tested.** | |
| If you get stuck at any point, take a look at some of the existing robots in PyRep. | |
| If you are still stuck, the feel free to raise an issue and ask a question. | |