Motion controller using force and torque to move a rotorcraft to a waypoint.
This controller will receive a 3D destination point and heading and make the robot move to that location 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 position [xy] loop
derivative gain for the outer horizontal position [xy] loop
proportional gain for the altitude loop
derivative gain for the altitude 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
If true (default), the robot actively attempts to remain at the waypoint once reached. This is especially useful for flying robots that would otherwise typically fall.
name of a blender object in the scene. When specified, this object will be placed at the coordinates given to the actuator, to indicate the expected destination of the robot. Make sure that this object has NO_COLLISION
This actuator reads these datafields at each simulation step:
waypoint x coordinate in meters
waypoint y coordinate in meters
waypoint z coordinate in meters
desired heading angle in radians
waypoint tolerance in meters
Returns the properties of a component.
a dictionary of the current component’s properties
Return the current status (Transit or Arrived)
Returns the configurations of a component (parsed from the properties).
a dictionary of the current component’s configurations
Set a new waypoint and returns.
The robot will try to go to this position, but the service caller has no mean to know when the destination is reached or if it failed.
In most cases, the asynchronous service ‘goto’ should be preferred.
True (if the robot is already moving, the previous target is replaced by the new one) except if the destination is already reached. In this case, returns False.
Go to a new destination.
The service returns when the destination is reached within the provided tolerance bounds.
Modify one property on a component
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 rotorcraftwaypoint = RotorcraftWaypoint() # place your component at the correct location rotorcraftwaypoint.translate(<x>, <y>, <z>) rotorcraftwaypoint.rotate(<rx>, <ry>, <rz>) robot.append(rotorcraftwaypoint) # define one or several communication interface, like 'socket' rotorcraftwaypoint.add_interface(<interface>) env = Environment('empty')