Skip to content

Add new tools or mounts

You may end up in a situation where your wood working tool has no mount () already available or its toolhead () is not digitized and present in the AC datasets. In this case you can contribute to the existing datasets of both by following first these instructions.

3D Model your items

Chances are that you will be needing to acquire the 3D model of our mount () or toolhead ().

AC mount><>

For the mount, you can do this by using a 3D scanner or by modeling it yourself. If you are modeling it yourself, you can use Blender or FreeCAD to create the model. Then you can export the model as a .stl file with the following naming convention: toolhead_mount_name.stl.

Each STL file follows the naming convention:

<type>_<brand>_<model-name>_part.stl

  •   type: Indicates the type of mount or the tool category (e.g., "mount", "sensor-holder").

  •   brand: The woodworking tool brand (e.g., "Makita", "Bosch", "Dewalt").

  •   model-name: The specific model identification of the tool (e.g., "M3700", "1617EVS").

  •   part: Optional additional descriptor if multiple parts are required for a single mount assembly (e.g., "base", "clip", "insert").

For example, a mount designed for a Makita M3700 router might be named:

mount_makita_m3700_base.stl

mount_makita_m3700_clip.stl

AC toolhead><>

Photogrammetry

Obtain a 3D model from a physical tool can be complicated. The idea of photogrammetry is to secure images of the tool from different angels and reconstruct the 3D model from that. Hence, 2 crucial steps need to be done. 1. Acquiring the photos - at IBOIS, we use 2 different methods depending on the size of the physical objects. 1.1 When the size is small enough we use the foldio 1.2 When the size is too large to fit in the studio, we use the custom made stone scanner. 2. 3D reconstruction - we use the metashape program and the way we do it can be followed by this link

2D Image scan By this approach, you should have. Please not that we name the final 3D object as "model" as a convention

  1. model.obj - 3D model of the physical tool head.
  2. model.mtloptional - complimentary file for the model.obj
  3. model_occlusion.jpgoptional - occlusion texture of the object from the 3D model reconstruction
  4. model_normal.jpgoptional - occlusion texture of the object from the 3D model reconstruction
  5. model.jpgoptional - diffuse map texture of the object from the 3D model reconstruction

Re-scale

Once the 3D model is obtained, we must re-scale it to the correct size. This can be done in the blender.

  1. Use the measure tool to measure the reference part of the object and physical object. Here the diameter of the circle is measured, which is 1.5681m. measure tool]
  2. Scale the 3D model to to same size as the physical tool head. The physical object is measured to be 0.020m. Hence, the scale factor is 0.020/1.5681 = 0.0127. To do this, press s and type in the scale factor. Then, press enter. rescaling the model using the scaling tool
  3. Check the scale by measuring the reference part of the object and physical object again. Here the diameter of the circle is measured, which is 0.020m. final scaled model which has 0.020m of diameter By this step, you should have.
  4. model.obj - 3D model that is re-scaled to the precise size of the physical tool head.
  5. model.mtloptional - complimentary file for the model.obj

Adding metadata (ACIT)

We use the circle mesh to do the reference points. Depending on the 3D model, there are specific information points you need to add see the toolhead documentation. ACIT is the information to be parsed by Augmented Carpentry who uses them to derive all the essential information for fabrication process. The tool types for the ACIT are defined as a data class in the AC project here.

Let's do the auger_drill_bit_20_235. The ACIT for "DrillBit" is defined in here.

        /// @brief name of the toolhead
        std::string NameACIT;
        /// @brief radius of the drillbit
        float RadiusACIT;

        /// @brief original position of the base of the toolhead
        glm::vec3 ToolbaseACIT;
        /// @brief original position of the tip of the toolhead
        glm::vec3 TooltipACIT;
        /// @brief original position of the tip of the toolhead eating the material
        glm::vec3 EattipACIT;
        /// @brief original position of the end of the drill chuck
        glm::vec3 ChucktipACIT;
This accords with the final ACIT metadata of the auger_drill_bit_20_235.
<acit version="0.1.0">
  <toolhead name="auger_drill_bit_20_235" type="drillbit">
    <toolbase> 0 0 0 </toolbase>
    <tooltip> 0 0 0.235 </tooltip>
    <eattip> 0 0 0.228 </eattip>
    <chucktip> 0 0 0.075 </chucktip>
    <radius> 0.02 </radius>
  </toolhead>
</acit>

To derive these information, we need toolbase, tooltip, eattip, chucktip, and radius.

  1. Open the reformatter util.
  2. Import the 3D model obj file to a new collection. import the model to the reformatter util
  3. toolbase should be at <0, 0, 0>. tooltip is the length of the tool head from the base which from factory is 235mm. With these two reference points, we can align our model with the tip at <0, 0, 0.235>. The references points are represented by the circle mesh [Layout > Object Model > Add > Mesh > Circle], or you can just copy it from the other existing collection. placing the first two reference points
  4. Adding the eattip and chucktip adding the eattip and chucktip
  5. Export the mesh of the tool in the collection individually as a new obj file [Select the model, then File > Export > Wavefront (obj), select "selection only" and name it to model]. This will be the final 3D model of the tool head which has the corresponding ACIT information. export the individual mesh
  6. Create a new file named metadata.acit and copy the ACIT metadata to the file. Then, fill in the information you have derived in the "Object Property" > Transform > Location Z. Additionally, adding the radius of the tool head. This is the radius of the tool head. In this case, it is 0.02m.
  7. Create another file name 'model.initpose' and give it initial pose of the model. Be careful of the indentation and the spacing. This will be used for automatic "config.yml" generation of the python script.

blender><

Putting everything together

Once everything is done, you should have:

  1. model.obj - 3D model that is re-scaled to the precise size of the physical tool head.
  2. model.mtloptional - complimentary file for the model.obj
  3. model_occlusion.jpgoptional - occlusion texture of the object from the 3D model reconstruction
  4. model_normal.jpgoptional - occlusion texture of the object from the 3D model reconstruction
  5. model.jpgoptional - diffuse map texture of the object from the 3D model reconstruction
  6. metadata.acit - xml formatted file with all the information crucial for the fabrication.
  7. model.initpose - you can copy paste any other model.initpose file. Just make sure to change the name of the model to the correct one.

Put them to the file named by the tool head and zip it.

Dataset integration

The way your tool will be inserted in the AC dataset is by creating first an issue in the issue tracker. This will be used to discuss the model and its integration in the AC datasets. Once the model is validated, it will be added to the datasets by creating a pull request.

Title

A good title should be a short, one-sentence description of the issue, contain all relevant information and, in particular, keywords to simplify the search in our issue tracker.

Example
Clear Clarify social cards setup on Windows
Unclear Missing information in the docs
Useless Help

Include a link to the 3D model and its data of the toolhead or mount as a .zip file. This will be used to validate the model and its integration in the AC datasets.

Why we need this: providing an external link to the 3D model and its data will help us understand the model and its integration in the AC datasets without overloading the github repository.

Model data

Provide a the toolhead or mount model. Possibly with links to existing references from brands.

Why we need this: describing the model clearly, with references and data is a prerequisite for improving AC's dataset – we need to understand what's available and what's missing, maybe your tool already exists.