Quadrotor dynamic controller¶
Motion controller computing dynamic from propellers speed
This actuator reads speed of the four motors of the quadrotor, and computes the resulting force / moment, following the dynamic model proposed in:
- Backstepping and Sliding-mode Technique Applied to an Indoor Micro Quadrotor
- Control of Complex Maneuvers for a Quadrotor UAV using Geometric Methods on SE(3)
The actuator assumes that first and third properlers turns clockwise, while second and fourth turns counter-clockwise
Configuration parameters for Quadrotor dynamic controller¶
You can set these properties in your scripts with <component>.properties(<property1>=..., <property2>=...)
.
ThrustFactor
(float, default:9.169e-06
)thrust factor, in Ns²
DragFactor
(float, default:2.4e-07
)drag factor in Nms
Lever
(distance between center of mass and propeller, in m, default:0.18
)(no documentation available yet)
Configuration
(A character between [‘+’, ‘x’], ‘+’ denoting a configuration where the drone X-axis follows the front axle, while ‘x’ denoting a configuration where the X-axis of the drone is between the two front arm of the drone, default:"+"
)(no documentation available yet)
Data fields¶
This actuator reads these datafields at each simulation step:
engines
(vec4<float>, initial value:[0.0, 0.0, 0.0, 0.0]
)speed of each engines, in rad/s
Interface support:
socket
as straight JSON deserialization (morse.middleware.socket_datastream.SocketReader
)yarp
as yarp::Bottle (morse.middleware.yarp_datastream.YarpReader
)
Services for Quadrotor dynamic controller¶
get_properties()
(blocking)Returns the properties of a component.
Return value
a dictionary of the current component’s properties
set_property(prop_name, prop_val)
(blocking)Modify one property on a component
Parameters
prop_name
: the name of the property to modify (as shown the documentation)prop_val
: the new value of the property. Note that there is no checking about the type of the value so be careful
Return value
nothing
get_configurations()
(blocking)Returns the configurations of a component (parsed from the properties).
Return value
a dictionary of the current component’s configurations
Examples¶
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
quadrotordynamiccontrol = QuadrotorDynamicControl()
# place your component at the correct location
quadrotordynamiccontrol.translate(<x>, <y>, <z>)
quadrotordynamiccontrol.rotate(<rx>, <ry>, <rz>)
robot.append(quadrotordynamiccontrol)
# define one or several communication interface, like 'socket'
quadrotordynamiccontrol.add_interface(<interface>)
env = Environment('empty')
Other sources of examples¶
(This page has been auto-generated from MORSE module morse.actuators.quadrotor_dynamic_control.)