I’m currently experimenting with defining creatures in software via a JSON file. Here’s an example:
{
"name": "Beaky",
"version": "0.1.0",
"description": "The lead at April's Creature Workshop!",
"starting_dmx_channel": 1,
"dmx_universe": 1,
"position_min": 0,
"position_max": 1023,
"head_offset_max": 0.4,
"servo_frequency": 50,
"type": "parrot",
"motors": [
{
"type": "servo",
"id": "neck_left",
"name": "Neck Left",
"output_location": "A0",
"min_pulse_us": 1250,
"max_pulse_us": 2250,
"smoothing_value": 0.90,
"inverted": false,
"default_position": "center"
},
{
"type": "servo",
"id": "neck_right",
"name": "Neck Right",
"output_location": "A1",
"min_pulse_us": 800,
"max_pulse_us": 1800,
"smoothing_value": 0.90,
"inverted": true,
"default_position": "center"
},
{
"type": "servo",
"id": "neck_rotate",
"name": "Neck Rotate",
"output_location": "A3",
"min_pulse_us": 1400,
"max_pulse_us": 1900,
"smoothing_value": 0.95,
"inverted": false,
"default_position": "center"
},
{
"type": "servo",
"id": "body_lean",
"name": "Body Lean",
"output_location": "B0",
"min_pulse_us": 1475,
"max_pulse_us": 1950,
"smoothing_value": 0.96,
"inverted": true,
"default_position": "min"
},
{
"type": "servo",
"id": "beak",
"name": "Beak",
"output_location": "A2",
"min_pulse_us": 1600,
"max_pulse_us": 2350,
"smoothing_value": 0.4,
"inverted": true,
"default_position": "min"
}
],
"inputs": [
{
"name": "head_tilt",
"slot": 0,
"width": 1
},
{
"name": "head_height",
"slot": 1,
"width": 1
},
{
"name": "neck_rotate",
"slot": 2,
"width": 1
},
{
"name": "stand_rotate",
"slot": 3,
"width": 1
},
{
"name": "body_lean",
"slot": 4,
"width": 1
},
{
"name": "beak",
"slot": 5,
"width": 1
},
{
"name": "chest",
"slot": 6,
"width": 1
}
]
}