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
12af23bb
Commit
12af23bb
authored
11 years ago
by
Andrew Tridgell
Browse files
Options
Downloads
Patches
Plain Diff
AP_InertialSensor: added L3G4200D example
parent
1aabd715
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
libraries/AP_InertialSensor/examples/L3G4200D/L3G4200D.pde
+191
-0
191 additions, 0 deletions
libraries/AP_InertialSensor/examples/L3G4200D/L3G4200D.pde
libraries/AP_InertialSensor/examples/L3G4200D/Makefile
+1
-0
1 addition, 0 deletions
libraries/AP_InertialSensor/examples/L3G4200D/Makefile
with
192 additions
and
0 deletions
libraries/AP_InertialSensor/examples/L3G4200D/L3G4200D.pde
0 → 100644
+
191
−
0
View file @
12af23bb
// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
//
// Simple test for the AP_InertialSensor driver.
//
#include
<stdarg.h>
#include
<AP_Common.h>
#include
<AP_Progmem.h>
#include
<AP_HAL.h>
#include
<AP_HAL_FLYMAPLE.h>
#include
<AP_HAL_AVR_SITL.h>
#include
<AP_HAL_Empty.h>
#include
<AP_HAL_Linux.h>
#include
<AP_Math.h>
#include
<AP_Param.h>
#include
<AP_ADC.h>
#include
<AP_InertialSensor.h>
#include
<GCS_MAVLink.h>
#include
<AP_Notify.h>
#include
<Filter.h>
const
AP_HAL
::
HAL
&
hal
=
AP_HAL_BOARD_DRIVER
;
AP_InertialSensor_L3G4200D
ins
;
void
setup
(
void
)
{
hal
.
console
->
println
(
"AP_InertialSensor startup..."
);
ins
.
init
(
AP_InertialSensor
::
COLD_START
,
AP_InertialSensor
::
RATE_100HZ
);
// display initial values
display_offsets_and_scaling
();
hal
.
console
->
println
(
"Complete. Reading:"
);
}
void
loop
(
void
)
{
int16_t
user_input
;
hal
.
console
->
println
();
hal
.
console
->
println_P
(
PSTR
(
"Menu:
\r\n
"
" c) calibrate accelerometers
\r\n
"
" d) display offsets and scaling
\r\n
"
" l) level (capture offsets from level)
\r\n
"
" t) test
\r\n
"
" r) reboot"
));
// wait for user input
while
(
!
hal
.
console
->
available
()
)
{
hal
.
scheduler
->
delay
(
20
);
}
// read in user input
while
(
hal
.
console
->
available
()
)
{
user_input
=
hal
.
console
->
read
();
if
(
user_input
==
'c'
||
user_input
==
'C'
)
{
run_calibration
();
display_offsets_and_scaling
();
}
if
(
user_input
==
'd'
||
user_input
==
'D'
)
{
display_offsets_and_scaling
();
}
if
(
user_input
==
'l'
||
user_input
==
'L'
)
{
run_level
();
display_offsets_and_scaling
();
}
if
(
user_input
==
't'
||
user_input
==
'T'
)
{
run_test
();
}
if
(
user_input
==
'r'
||
user_input
==
'R'
)
{
hal
.
scheduler
->
reboot
(
false
);
}
}
}
void
run_calibration
()
{
float
roll_trim
,
pitch_trim
;
// clear off any other characters (like line feeds,etc)
while
(
hal
.
console
->
available
()
)
{
hal
.
console
->
read
();
}
#if !defined( __AVR_ATmega1280__ )
AP_InertialSensor_UserInteractStream
interact
(
hal
.
console
);
ins
.
calibrate_accel
(
&
interact
,
roll_trim
,
pitch_trim
);
#else
hal
.
console
->
println_P
(
PSTR
(
"calibrate_accel not available on 1280"
));
#endif
}
void
display_offsets_and_scaling
()
{
Vector3f
accel_offsets
=
ins
.
get_accel_offsets
();
Vector3f
accel_scale
=
ins
.
get_accel_scale
();
Vector3f
gyro_offsets
=
ins
.
get_gyro_offsets
();
// display results
hal
.
console
->
printf_P
(
PSTR
(
"
\n
Accel Offsets X:%10.8f
\t
Y:%10.8f
\t
Z:%10.8f
\n
"
),
accel_offsets
.
x
,
accel_offsets
.
y
,
accel_offsets
.
z
);
hal
.
console
->
printf_P
(
PSTR
(
"Accel Scale X:%10.8f
\t
Y:%10.8f
\t
Z:%10.8f
\n
"
),
accel_scale
.
x
,
accel_scale
.
y
,
accel_scale
.
z
);
hal
.
console
->
printf_P
(
PSTR
(
"Gyro Offsets X:%10.8f
\t
Y:%10.8f
\t
Z:%10.8f
\n
"
),
gyro_offsets
.
x
,
gyro_offsets
.
y
,
gyro_offsets
.
z
);
}
void
run_level
()
{
// clear off any input in the buffer
while
(
hal
.
console
->
available
()
)
{
hal
.
console
->
read
();
}
// display message to user
hal
.
console
->
print
(
"Place APM on a level surface and press any key..
\n
"
);
// wait for user input
while
(
!
hal
.
console
->
available
()
)
{
hal
.
scheduler
->
delay
(
20
);
}
while
(
hal
.
console
->
available
()
)
{
hal
.
console
->
read
();
}
// run accel level
ins
.
init_accel
();
// display results
display_offsets_and_scaling
();
}
void
run_test
()
{
Vector3f
accel
;
Vector3f
gyro
;
float
length
;
uint32_t
counter
=
0
;
// flush any user input
while
(
hal
.
console
->
available
()
)
{
hal
.
console
->
read
();
}
// clear out any existing samples from ins
ins
.
update
();
// loop as long as user does not press a key
while
(
!
hal
.
console
->
available
()
)
{
// wait until we have a sample
while
(
ins
.
sample_available
()
==
false
)
hal
.
scheduler
->
delay
(
1
);
// read samples from ins
ins
.
update
();
accel
=
ins
.
get_accel
();
gyro
=
ins
.
get_gyro
();
length
=
accel
.
length
();
if
(
counter
++
%
50
==
0
)
{
// display results
hal
.
console
->
printf_P
(
PSTR
(
"Accel X:%4.2f
\t
Y:%4.2f
\t
Z:%4.2f
\t
len:%4.2f
\t
Gyro X:%4.2f
\t
Y:%4.2f
\t
Z:%4.2f
\n
"
),
accel
.
x
,
accel
.
y
,
accel
.
z
,
length
,
gyro
.
x
,
gyro
.
y
,
gyro
.
z
);
}
}
// clear user input
while
(
hal
.
console
->
available
()
)
{
hal
.
console
->
read
();
}
}
AP_HAL_MAIN
();
This diff is collapsed.
Click to expand it.
libraries/AP_InertialSensor/examples/L3G4200D/Makefile
0 → 100644
+
1
−
0
View file @
12af23bb
include
../../../../mk/apm.mk
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