2 changed files with 69 additions and 1 deletions
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
-- A script for controlling the roll and pitch of 6DoF vehicles |
||||
-- The script sets the target roll and pitch to the current value when arming or when E-stop is removed |
||||
-- this allows the vehicle to be placed upside-down on the ground and to take off as normal |
||||
-- its is also possible to setup a switch with option 300 to use either 4 or 6DoF control |
||||
|
||||
-- make sure the vehicle is capable of 6DoF control |
||||
assert(param:get('FRAME_CLASS') == 16, "script requires a 6DoF vehicle") |
||||
|
||||
local e_stop = rc:find_channel_for_option(31) |
||||
local sw = rc:find_channel_for_option(300) |
||||
local motors_spinning = false |
||||
|
||||
function update() -- this is the loop which periodically runs |
||||
|
||||
-- motor state |
||||
local current_motors_spinning = false |
||||
|
||||
if arming:is_armed() then |
||||
-- if armed then motors are spinning |
||||
current_motors_spinning = true |
||||
end |
||||
|
||||
if e_stop then |
||||
-- if E-stop switch is setup |
||||
if e_stop:get_aux_switch_pos() == 2 then |
||||
-- E-stop on, motors stopped |
||||
current_motors_spinning = false |
||||
end |
||||
end |
||||
|
||||
if not motors_spinning and current_motors_spinning then |
||||
-- Just armed or removed E-stop |
||||
-- set offsets to current attitude |
||||
local roll = math.deg(ahrs:get_roll()) |
||||
local pitch = math.deg(ahrs:get_pitch()) |
||||
attitude_control:set_offset_roll_pitch(roll,pitch) |
||||
gcs:send_text(0, string.format("Set Offsets Roll: %0.1f, Pitch: %0.1f",roll,pitch)) |
||||
|
||||
if sw then |
||||
if sw:get_aux_switch_pos() == 2 then |
||||
-- switch to 'normal' 4 DoF attitude control |
||||
gcs:send_text(0, "4 DoF attitude control") |
||||
attitude_control:set_lateral_enable(false) |
||||
attitude_control:set_forward_enable(false) |
||||
|
||||
else |
||||
-- 6DoF attutude control |
||||
gcs:send_text(0, "6 DoF attitude control") |
||||
attitude_control:set_lateral_enable(true) |
||||
attitude_control:set_forward_enable(true) |
||||
end |
||||
end |
||||
|
||||
end |
||||
motors_spinning = current_motors_spinning |
||||
|
||||
return update, 100 -- 10hz |
||||
end |
||||
|
||||
return update() |
Loading…
Reference in new issue