Library and CLI tool to convert Denavit-Hartenberg parameters to an X3D model


License
MIT
Install
pip install dh2vrml==0.1.12

Documentation

dh2vrml

dh2vrml is a utility for converting Denavit–Hartenberg parameters into X3D models, with a particular focus on creating outputs suitable for use as a MATLAB Simulink VR Sink.

Installation

pip install dh2vrml

Usage

dh2vrml -f <file_name>

Parameters

  • type: Joint type, either revolute or prismatic
    • This refers to the joint at index i - 1, (i.e. the first joint is the base joint)
  • d, theta, r, alpha: DH parameters as specified on Wikipedia
  • color: Color of the joint and link at index i, in RGB format
    • Values are floats ranging from 0 to 1
    • The end effector is always colored (0, 1, 1), (cyan)
  • scale: The relative size of joints and links
    • Links are scaled cross sectionally (position is not affected)
    • Joints are scaled volumetrically
    • The first value scales both the base joint and the joint after it
    • If no value is provided, the last provided value is used
      • Scale of the model can be set globally by only providing scale for the first set of parameters

Supported file types

YAML

- type: revolute  
  d: 1.5
  theta: 0
  r: 3
  alpha: 0
  color: [1, 0, 0]

- type: revolute
  d: 2
  theta: 0
  r: 4
  alpha: 3.14159265359
  color: [0, 0, 1]

- type: prismatic
  d: 3
  theta: 0
  r: 0
  alpha: 0
  color: [1, 0, 1]

CSV

d ,theta ,r ,alpha        ,type     , color
2 ,0     ,0 ,1.5707963268 ,revolute , 1 0 0
0 ,0     ,2 ,0            ,revolute , 0 1 0

Python

For the sake of making calculations involving pi easier, Python files are supported.

Beware: dh2vrml will blindly import and run whatever code is provided, always inspect the contents of the file before importing

from math import pi

params = [
    {
        "type": "revolute",
        "d": 2,
        "theta": pi/2,
        "r": 0,
        "alpha": pi/2
    },
    {
        "type": "revolute",
        "d": 2,
        "theta": pi/2,
        "r": 0,
        "alpha": -pi/2
    },
    {
        "type": "revolute",
        "d": 2,
        "theta": pi/2,
        "r": 2,
        "alpha": 0
    },
]