def get_body_spec(conf): """ :param conf: :return: :rtype: BodyImplementation """ parts = { "Core": PartSpec( body_part=CoreComponent, arity=4, inputs=0 if conf.disable_sensors else 6, params=color_params ), "FixedBrick": PartSpec( body_part=FixedBrick, arity=4, params=color_params ), "ActiveHinge": PartSpec( body_part=ActiveHinge, arity=2, outputs=1, params=color_params ), "Hinge": PartSpec( body_part=Hinge, arity=2, params=color_params ), "ParametricBarJoint": PartSpec( body_part=ParametricBarJoint, arity=2, params=[ParamSpec( "connection_length", default=50, min_value=20, max_value=100, epsilon=conf.body_mutation_epsilon ), ParamSpec( "alpha", default=0, min_value=-0.5 * math.pi, max_value=0.5 * math.pi, epsilon=conf.body_mutation_epsilon ), ParamSpec( "beta", default=0, min_value=0, max_value=0 if conf.enforce_planarity else math.pi, epsilon=conf.body_mutation_epsilon )] + color_params ), # "Wheel": PartSpec( # body_part=Wheel, # arity=1, # params=color_params + [ # ParamSpec("radius", min_value=40, max_value=80, default=60, epsilon=conf.mutation_epsilon) # ] # ), # "ActiveWheel": PartSpec( # body_part=ActiveWheel, # arity=1, # outputs=1, # params=color_params + [ # ParamSpec("radius", min_value=40, max_value=80, default=60, epsilon=conf.mutation_epsilon) # ] # ), # "Cardan": PartSpec( # body_part=Cardan, # arity=2, # params=color_params # ), # "ActiveCardan": PartSpec( # body_part=ActiveCardan, # arity=2, # outputs=2, # params=color_params # ), # "ActiveRotator": PartSpec( # body_part=ActiveRotator, # arity=2, # outputs=1, # params=color_params # ), # "ActiveWheg": PartSpec( # body_part=ActiveWheg, # arity=2, # outputs=1, # params=color_params + [ # ParamSpec("radius", min_value=40, max_value=80, default=60, epsilon=conf.body_mutation_epsilon) # ] # ) } if not conf.disable_sensors: if conf.enable_touch_sensor: parts['TouchSensor'] = PartSpec( body_part=TouchSensor, arity=1, inputs=2, params=color_params ) if conf.enable_light_sensor: parts['LightSensor'] = PartSpec( body_part=LightSensor, arity=1, inputs=1, params=color_params ) return BodyImplementation(parts)
type: Oscillator phaseOffset: 10 Sub2-out-0: type: Oscillator connections: - src: Sub1-out-1 dst: Sub1-out-1 weight: 2 - src: Sub2-in-1 dst: Sub1-out-1 ''' # the body and brain specifications body_spec = BodyImplementation({ ("CoreComponent", "E"): PartSpec(arity=2, outputs=1, inputs=2), "2Params": PartSpec(arity=2, inputs=2, outputs=2, params=[ ParamSpec("param_a", default=-1), ParamSpec("param_b", default=15) ]) }) brain_spec = NeuralNetImplementation({ "Simple": NeuronSpec(params=["bias"]), "Oscillator": NeuronSpec(params=["period", "phaseOffset", "amplitude"])
from revolve.spec import BodyImplementation, \ BodyPart, \ NeuralNetImplementation, \ NeuronSpec, \ ParamSpec, \ PartSpec, \ Robot, \ RobotSpecificationException as SpecError, \ RobotValidator # Imaginary specification for the tests body_spec = BodyImplementation({ ("CoreComponent", "E"): PartSpec( arity=2, outputs=1, inputs=2, ), "2Params": PartSpec(arity=2, inputs=2, outputs=2, params=[ ParamSpec("param_a", default=-1, min_value=-2, max_value=0, max_inclusive=False), ParamSpec("param_b", default=15), ]), })
type: Oscillator phaseOffset: 10 Sub2-out-0: type: Oscillator connections: - src: Sub1-out-1 dst: Sub1-out-1 weight: 2 - src: Sub2-in-1 dst: Sub1-out-1 ''' # the body and brain specifications body_spec = BodyImplementation({ ("CoreComponent", "E"): PartSpec( arity=2, outputs=1, inputs=2, ), "2Params" : PartSpec( arity=2, inputs=2, outputs=2, params=[ ParamSpec( "param_a", default=-1 ), ParamSpec( "param_b", default=15 ),
return self.attachment def get_slot_position(self, slot_id): """ Modify `get_slot_position` to return the attachment of the motor instead. :param slot_id: :return: """ v = super(Wheel, self).get_slot_position(slot_id) return v + Vector3(0, 0, self.MOTOR_SIZE) body_spec = BodyImplementation({ ("Core", "C"): PartSpec(body_part=Core, arity=6, inputs=6, params=color_params), ("Wheel", "W"): PartSpec( body_part=Wheel, arity=1, outputs=1, # Add color parameters to this part params=color_params), "Hinge": PartSpec(body_part=PassiveHinge, arity=2, params=color_params + [ParamSpec("length", min_value=0.1, max_value=1, default=0.5)]) })
import random import unittest from revolve.generate import BodyGenerator from revolve.spec import BodyImplementation, \ NormalDistParamSpec, \ ParamSpec, \ PartSpec # Some imaginary body specification body_spec = BodyImplementation( { "Core" : PartSpec( arity=2, outputs=2, inputs=2 ), "2Params" : PartSpec( arity=2, inputs=2, outputs=2, params=[ParamSpec("param_a", default=-1, min_value=-2, max_value=0, max_inclusive=False), NormalDistParamSpec("param_b", mean=15, stddev=5, default=15)] ), "SomePart": PartSpec(arity=1, inputs=3, outputs=3) } )