Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
B
Baitboat
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
OpenSource
Baitboat
Commits
7787bb4f
Commit
7787bb4f
authored
12 years ago
by
rmackay9
Browse files
Options
Downloads
Patches
Plain Diff
ArduCopter: bug fix for get_yaw_rate_stabilized_ef
Provided by Leonard Hall
parent
d52a8b14
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ArduCopter/Attitude.pde
+5
-5
5 additions, 5 deletions
ArduCopter/Attitude.pde
with
5 additions
and
5 deletions
ArduCopter/Attitude.pde
+
5
−
5
View file @
7787bb4f
...
@@ -157,22 +157,22 @@ get_yaw_rate_stabilized_ef(int32_t stick_angle)
...
@@ -157,22 +157,22 @@ get_yaw_rate_stabilized_ef(int32_t stick_angle)
// convert the input to the desired yaw rate
// convert the input to the desired yaw rate
int32_t
target_rate
=
stick_angle
*
g
.
acro_p
;
int32_t
target_rate
=
stick_angle
*
g
.
acro_p
;
//
conver
t
t
he
input to the desired yaw rate
//
update current targe
t he
ading using pilot's desired rate of turn
nav_yaw
+=
target_rate
*
G_Dt
;
nav_yaw
+=
target_rate
*
G_Dt
;
nav_yaw
=
wrap_360
(
nav_yaw
);
nav_yaw
=
wrap_360
(
nav_yaw
);
//
angle error with maximum of +- max_angle_overshoot
//
calculate difference between desired heading and current heading
angle_error
=
wrap_180
(
nav_yaw
-
ahrs
.
yaw_sensor
);
angle_error
=
wrap_180
(
nav_yaw
-
ahrs
.
yaw_sensor
);
//
this
limit
s
the maximum overshoot
// limit the maximum overshoot
angle_error
=
constrain
(
angle_error
,
-
MAX_ANGLE_OVERSHOOT
,
MAX_ANGLE_OVERSHOOT
);
angle_error
=
constrain
(
angle_error
,
-
MAX_ANGLE_OVERSHOOT
,
MAX_ANGLE_OVERSHOOT
);
if
(
motors
.
armed
()
==
false
||
((
g
.
rc_3
.
control_in
==
0
)
&&
!
failsafe
))
{
if
(
motors
.
armed
()
==
false
||
((
g
.
rc_3
.
control_in
==
0
)
&&
!
failsafe
))
{
angle_error
=
0
;
angle_error
=
0
;
}
}
//
update
nav_yaw to
be within max_angle_overshoot of our current
heading
//
set
nav_yaw to
our desired
heading
nav_yaw
=
angle_error
+
ahrs
.
yaw_sensor
;
nav_yaw
=
wrap_360
(
angle_error
+
ahrs
.
yaw_sensor
)
;
// set earth frame targets for rate controller
// set earth frame targets for rate controller
set_yaw_rate_target
(
g
.
pi_stabilize_yaw
.
get_p
(
angle_error
)
+
target_rate
,
EARTH_FRAME
);
set_yaw_rate_target
(
g
.
pi_stabilize_yaw
.
get_p
(
angle_error
)
+
target_rate
,
EARTH_FRAME
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment