Skip to content

3. Configuration

Roy86 edited this page Apr 3, 2023 · 4 revisions

SD Card

PiMech Controller Shield

File: pimech.config.controller.json

{
    "Name":"B2EMO",
    "ID":"B2-EM0-5DR6",
    "Type":"Groundmech",
    "AccessKey":"00000000",
    "debug":0,
    "Wifi":{
        "SSID":"",
        "Password":""
    },
    "Bluetooth":{
        "Name":"",
        "Password":""
    },
    "Modes":{
        "Shutdown":{
            "disable":1,
            "select":0,
            "default":1
        },
        "Idle":{
            "animations":["idle_look_1","sigh_1"],
            "disablePins":[8,11,14,17]
        },
        "Drive":{
            "disable":0
        }
    }
}

PiMech Inputs

File: pimech.config.inputs.json

{
    "SBUS":{
        "connection":"Serial2",
        "pinTX":4,
        "pinRX":5,
        "baud":100000,
        "debug":0,
        "channels":[
            {"ch": 1, "min":220, "max":1820, "default":1023, "type":"Stick", "driveUnlock":275},
            {"ch": 2, "min":220, "max":1820, "default":1023, "type":"Stick", "driveUnlock":1725},
            {"ch": 3, "min":220, "max":1820, "default":1023, "type":"Stick", "driveUnlock":275},
            {"ch": 4, "min":220, "max":1820, "default":1023, "type":"Stick", "driveUnlock":275},
            {"ch": 5, "min":220, "max":1820, "default":0, "type":"3POS"},
            {"ch": 6, "min":220, "max":1820, "default":0, "type":"3POS"},
            {"ch": 7, "min":220, "max":1820, "default":0, "type":"3POS"},
            {"ch": 8, "min":220, "max":1820, "default":0, "type":"3POS"},
            {"ch": 9, "min":220, "max":1820, "default":0, "type":"3POS"},
            {"ch":10, "min":220, "max":1820, "default":0, "type":"2POS"},
            {"ch":11, "min":220, "max":1820, "default":0, "type":"3POS"},
            {"ch":12, "min":220, "max":1820, "default":0, "type":"2POS"}
        ]
    }
}

PiMech Input Mapping to Sub Systems

File: pimech.config.mapping.json

This configuration file maps an Input Channel from the receiver to a PiMech Subsystem. Each subsystem performs a specific function that will result in outputs from the PiMech to control the robotic movement and interfacing systems.

I/O = Controller Input -> System Logic -> PWM Output
Auto = No Controler Map -> AI/System Logic -> PWM Output

These subsystems are:

HeadTurn

  • I/O: Range Input moves output from min-max with procedural path mapping to input
  • Auto: Generative AI will turn head to positions using procdural path movement

HeadLift HeadRoll HeadPitch BodyExtend BodyExtendA BodyExtendB BodyRotate BodyRotateA BodyRotateB BodyLeanX BodyLeanY BodyLeanZ DriveX DriveY DriveZ

{
    "inputs":[
        {"input":1, "output":"",  "mode":"Drive"},
        {"input":2, "output":"DriveZ",  "mode":"Drive"},
        {"input":3, "output":"DriveY","mode":"Drive"},
        {"input":4, "output":"DriveX",  "mode":"Drive"},
        {"input":1, "output":"HeadLift",  "mode":"Idle"},
        {"input":2, "output":"HeadTurn",  "mode":"Idle"},
        {"input":3, "output":"HeadPitch", "mode":"Idle"},
        {"input":4, "output":"HeadRoll",  "mode":"Idle"},
        {"input":5, "output":"EmoteSelect", "mode":"none"},
        {"input":6, "output":"ModeSelect", "mode":"none"},
        {"input":7, "output":"BodyExtend", "mode":"none"}
    ]
}

PiMech configuration of Motorshield Outputs

File: pimech.config.outputs.json

{
    "MotorShield":{
        "connection":"I2C1",
        "address":48,
        "debug":0,
        "driveType":10,
        "channels":[
            {"pin": 0, "min":500, "max":2500,"default":1500,"easing":"easeInOutQuart", "reverse":1, "type":0, "name":"headYaw"},
            {"pin": 1, "min":750, "max":2250,"default":1500,"easing":"easeInOutSine",  "reverse":1, "type":0, "name":"headPitchA"},
            {"pin": 2, "min":750, "max":2250,"default":1500,"easing":"easeInOutSine",  "reverse":1, "type":0, "name":"headPitchB"},
            {"pin": 3, "min":500, "max":2150,"default":500, "easing":"easeInOutQuart", "reverse":1, "type":0, "name":"headLift"},
            {"pin": 4, "min":500, "max":2500,"default":1500,"easing":"none",           "reverse":0, "type":0, "name":"torsoA"},
            {"pin": 5, "min":500, "max":2500,"default":1500,"easing":"none",           "reverse":1, "type":0, "name":"torsoB"},
            {"pin": 6, "min":500, "max":2500,"default":1500,"easing":"none",           "reverse":0, "type":1, "name":"ringA"},
            {"pin": 7, "min":500, "max":2500,"default":1500,"easing":"none",           "reverse":0, "type":1, "name":"ringB"},
            {"pin": 8, "min":500, "max":2500,"default":1500,"easing":"none",           "reverse":0, "type":10,"name":"mecanumA"},
            {"pin": 9, "min":500, "max":2500,"default":1500,"easing":"easeInOutSine",  "reverse":0, "type":0, "name":"mecanumLiftA"},
            {"pin":10, "min":500, "max":2500,"default":1500,"easing":"easeInOutSine",  "reverse":0, "type":0, "name":"mecanumExtendA"},
            {"pin":11, "min":500, "max":2500,"default":1500,"easing":"none",           "reverse":0, "type":11,"name":"mecanumB"},
            {"pin":12, "min":500, "max":2500,"default":1500,"easing":"easeInOutSine",  "reverse":0, "type":0, "name":"mecanumLiftB"},
            {"pin":13, "min":500, "max":2500,"default":1500,"easing":"easeInOutSine",  "reverse":0, "type":0, "name":"mecanumExtendB"},
            {"pin":14, "min":500, "max":2500,"default":1500,"easing":"none",           "reverse":0, "type":12,"name":"mecanumC"},
            {"pin":15, "min":500, "max":2500,"default":1500,"easing":"easeInOutSine",  "reverse":0, "type":0, "name":"mecanumLiftC"},
            {"pin":16, "min":500, "max":2500,"default":1500,"easing":"easeInOutSine",  "reverse":0, "type":0, "name":"mecanumExtendC"},
            {"pin":17, "min":500, "max":2500,"default":1500,"easing":"none",           "reverse":0, "type":13,"name":"mecanumD"},
            {"pin":18, "min":500, "max":2500,"default":1500,"easing":"easeInOutSine",  "reverse":0, "type":0, "name":"mecanumLiftD"},
            {"pin":19, "min":500, "max":2500,"default":1500,"easing":"easeInOutSine",  "reverse":0, "type":0, "name":"mecanumExtendD"}
        ]
    }
}

Clone this wiki locally