Motion controller using force and torque to move a rotorcraft with a specified velocity.
This controller will receive a velocity and yaw rate command and make the robot move by changing attitude. This controller is meant for rotorcrafts like quadrotors.
You can set these properties in your scripts with <component>.properties(<property1>=..., <property2>=...).
proportional gain for the outer horizontal velocity [xy] loop
derivative gain for the outer horizontal velocity[xy] loop
proportional gain for the vertical velocity loop
derivative gain for the vertical velocity loop
proportional gain for yaw control of the inner loop
derivative gain for yaw control of the inner loop
proportional gain for roll/pitch control of the inner loop
derivative gain for roll/pitch control of the inner loop
limit the maximum roll/pitch angle of the robot. This effectively limits the horizontal acceleration of the robot
limit the maximum velocity of the robot.
This actuator reads these datafields at each simulation step:
desired x velocity in m/s
desired y velocity in m/s
desired z velocity in m/s
desired yaw rate radians/s
velocity tolerance in m/s
Returns the properties of a component.
a dictionary of the current component’s properties
Modify one property on a component
Set a new desired velocity and return.
The robot will try to go achieve the desired velocity, but the service caller has no mean to know when the desired velocity is reached or if it failed.
True, except if the desired velocity is already reached. In this case, returns False.
Returns the configurations of a component (parsed from the properties).
a dictionary of the current component’s configurations
The following examples show how to use this component in a Builder script:
from morse.builder import * # adds a default robot (the MORSE mascott!) robot = Morsy() # creates a new instance of the actuator rotorcraftvelocity = RotorcraftVelocity() # place your component at the correct location rotorcraftvelocity.translate(<x>, <y>, <z>) rotorcraftvelocity.rotate(<rx>, <ry>, <rz>) robot.append(rotorcraftvelocity) # define one or several communication interface, like 'socket' rotorcraftvelocity.add_interface(<interface>) env = Environment('empty')