Commit Graph

1686 Commits

Author SHA1 Message Date
rmackay9 6a66fdace9 ArduCopter: updated firmware version to 2.8 2012-10-20 09:50:53 +09:00
rmackay9 4c7292e6ce ArduCopter: incremented eeprom format version to force users to accept the new defaults.
Particularly important is the roll-pitch I term move from the stabilize to rate controllers.
2012-10-19 16:14:51 +09:00
Pat Hickey 0dd0bd131a Update ArduCopter and ArduPlane dependencies on AP_Menu 2012-10-18 20:53:39 -07:00
Robert Lefebvre 9a20fe32fa Fixed that last commit
#define Stupid_Mistake
2012-10-18 16:50:42 -04:00
Robert Lefebvre 5f8f53ec0a Changed RLT Yaw Mode for TradHeli. Also a few comment cleanups. 2012-10-18 16:39:05 -04:00
rmackay9 d7c80fb025 ArduCopter: updated firmware version to 2.7.4-Zeta 2012-10-18 23:30:28 +09:00
rmackay9 3b631f1edd ArduCopter: integrated Leonard Hall's improved ACRO mode 2012-10-18 23:24:34 +09:00
rmackay9 e0727e6d31 ArduCopter: bug fix for telemetry not working on APM1.
SPI3 is also UART3.  On APM1 we use UART3 for telemetry and don't need SPI3.
2012-10-18 19:15:21 +09:00
rmackay9 9392c8cae2 ArduCopter: added spi_semaphore to stop conflicts between dataflash and optical flow sensor on APM1 2012-10-18 17:04:44 +09:00
rmackay9 0299e2b51e ArduCopter: removed deprecated mag offset routine.
Also removed commented-out block of code from navigation.pde.
2012-10-17 19:47:21 +09:00
rmackay9 f1fe5f303b ArduCopter: updated firmware version to 2.7.4-Epsilon 2012-10-17 19:27:11 +09:00
rmackay9 a4a2fad798 ArduCopter: more out-of-date commented out code removed 2012-10-17 19:25:14 +09:00
rmackay9 25b3acab8c ArduCopter: bug fix in earthframe->body frame translation.
Provided by Leonard Hall.

Also removed large unnecessary comments.
2012-10-17 19:15:25 +09:00
rmackay9 3a26606510 ArduCopter: reduced optical flow's I and IMAX terms 2012-10-17 17:47:43 +09:00
rmackay9 7228236db6 ArduCopter: updated firmware version to 2.7.4-Delta 2012-10-17 10:20:41 +09:00
rmackay9 7787bb4fd5 ArduCopter: bug fix for get_yaw_rate_stabilized_ef
Provided by Leonard Hall
2012-10-17 10:18:24 +09:00
Andrew Tridgell 33d9ae23ff battery: use set_pin() to allow pins to be changed at runtime 2012-10-16 17:20:49 +11:00
Robert Lefebvre 1e01a642bc Adding some comments to parameters. 2012-10-15 09:37:02 -04:00
rmackay9 025cc05cab ArduCopter: update version information ahead of testing 2012-10-15 18:15:38 +09:00
LeonardTHall 4203655646 New Yaw controller using rate feed forward and stabilize.
Signed-off-by: LeonardTHall <LeonardTHall@gmail.com>
2012-10-15 11:37:49 +09:00
rmackay9 ee41f3be6c ArduCopter: enable ACRO mode's AXIS_LOCK by default 2012-10-14 19:50:45 +09:00
rmackay9 254fff6acd ArduCopter: fixed acro mode
Changes included:
Removing earth frame roll_rate_trim, pitch_rate_trim and yaw_rate_trim.
Switch ACRO mode to use YAW_ACRO instead of YAW_HOLD.
Changed YAW_ACRO to use stabilize yaw when axis_enabled.
Reset ACRO roll, pitch and yaw targets to current attitude when first entering ACRO.
2012-10-14 17:47:46 +09:00
rmackay9 c201b3c35e ArduCopter: small comment fixes related to battery monitoring 2012-10-13 20:52:14 +09:00
rmackay9 71c773801a ArduCopter: added BATT_VOLT_PIN and BATT_CURR_PIN parameters to allow support for new 3DR IV battery voltage and current monitor 2012-10-13 18:40:46 +09:00
Robert Lefebvre 8e19e7d0b2 Added #define for Tilt_Compensation.
Also added some detail to WP_Speed_Max parameter.
2012-10-12 14:51:31 -04:00
Robert Lefebvre 446d8ee934 Added comment detail for Tilt_Comp Parameter.
Reduced parameter default value for TradHeli.
2012-10-11 13:17:39 -04:00
rmackay9 9052b4152b ArduCopter: remove unnecessary (probably slightly harmful) extra barometer read
The barometer reads including reading temperature was all moved to a timer but this extra read (originally to read the temperature) was probably forgotten.
2012-10-11 18:31:10 +09:00
rmackay9 b5c1e23549 ArduCopter: changed sin_pitch and sin_roll to faster equivalents 2012-10-11 17:54:42 +09:00
rmackay9 a5feda6b1f ArduCopter: set default rate roll and pitch I terms to 0.010, and rate yaw to 0.015
Updated after discussing with Marco
2012-10-11 17:25:01 +09:00
rmackay9 94d16d426f ArduCopter: move I terms from stabilize to rate controllers 2012-10-11 17:20:05 +09:00
rmackay9 be25e75d75 ArduCopter: freeze I terms if motor limits breached 2012-10-11 17:20:00 +09:00
Andrew Tridgell 2af5ff896d ACM-HIL: fixed optflow declaration 2012-10-11 11:51:25 +11:00
Pat Hickey 24dcbe1b0e ArduCopter GCS_MAVLink: COMMAND_LONG for arm/disarm motors
Date: Wed, 26 Sep 2012 15:56:43 -0700
Subject: ArduCopter arm/disarm command consensus
From: Pat Hickey
To: Michael Oborne
Cc: "Craig J. Elder", arducopter
<arducopter@googlegroups.com>,
    mavelous <mavelous@googlegroups.com>

    Michael,

    Per our discussion today,

    In a MAVLINK_MSG_ID_COMMAND_LONG
    A MAV_CMD of type MAV_CMD_COMPONENT_ARM_DISARM
    with component id MAV_COMP_ID_SYSTEM_CONTROL = 250,
    uses param index 1 to specify an arm/disarm motors event: 1 to arm,
    0 to disarm

    Thanks for working this out with me. Sorry to get it so completely
    wrong the first time around!

    Best
    Pat
2012-10-10 18:59:55 +08:00
Pat Hickey 74d5b1b841 ArduCopter: Provide AP_Semaphore instance for SPI3 bus on APM2. 2012-10-09 11:39:39 -07:00
rmackay9 04b50af6e1 ArduCopter: added message to console when entering ESC Calibration on startup 2012-10-09 12:31:05 +09:00
rmackay9 0050232ae2 ArduCopter: failsafe added to shutdown motors if mainloop fails 2012-10-09 12:30:17 +09:00
rmackay9 50e19dfd12 ArduCopter: APM_Config.h - make it ever so slightly easier to enable INERTIAL_NAV 2012-10-08 12:31:51 +09:00
rmackay9 9d5d9ce3fc ArduCopter: bug fix to ROI when no camera mount is specific 2012-10-08 12:31:10 +09:00
rmackay9 f88ca4b7e4 ArduCopter: bug fix in earth-frame to body-frame conversion for roll 2012-10-07 19:14:40 +09:00
rmackay9 ae447ad6b6 ArduCopter: fix heli build 2012-10-06 13:46:19 +09:00
rmackay9 ae05bc62f6 ArduCopter: added AP_Semaphore to list of includes 2012-10-06 12:41:58 +09:00
rmackay9 c2b9c695b4 ArduCopter: reduce Stabilize Yaw P term to 4.5 2012-10-03 14:19:49 +09:00
rmackay9 a35543bf96 ArduCopter: prioritise rate controllers, rate controller targets converted to body frame 2012-10-03 14:10:31 +09:00
rmackay9 770aa0b56b ArduCopter: BATT_PIN parameter added to allow you to select which pin is used for voltage and current measurements
To save a parameter, the current sensor pin is assumed to always be 1 higher than the voltage pin.
2012-10-02 22:16:19 +09:00
Michael Oborne 939ee1f4a9 AP,AC Add ability to override an altitude in any auto mode, on the current active target 2012-09-30 07:29:33 +08:00
rmackay9 fc4f4d76c9 ArduCopter: allow DMP to run in parallel with DCM
Parallel DMP can be enabled by #define SECONDARY_DMP_ENABLED in APM_Config.h
New DMP dataflash log type added to allow easy comparison with DCM
2012-09-30 00:25:40 +09:00
rmackay9 1cd4b08fac AP_AHRS: added scheduler parameter to init
Required by the AP_AHRS_MPU6000 class which needs to disable timed processes that could interfere with it's communication with the mpu6000
2012-09-29 13:51:21 +09:00
rmackay9 4bca609b9f AP_InertialSensor_MPU6000: replaced _cs_pin parameter with #define and saved 1 byte of memory
Updated ArduCopter, ArduPlane and example sketches in AP_InertialSensor, AP_IMU and AP_AHRS libraries because they no longer need to pass in cs_pin to the constructor
2012-09-28 19:21:59 +09:00
rmackay9 04c92240c4 ArduCopter: tiny formatting change in defines.h 2012-09-27 17:40:54 +09:00
rmackay9 fec3f3260e ArduCopter: bug fix to display ITERM enabled/disabled properly from cli
Also changed header for this message type to ITERM instead of just IT to make it more clear what it is
2012-09-27 17:40:30 +09:00
rmackay9 ebbf8dc6be ArduCopter: updated version to 2.7.4-Beta 2012-09-25 23:39:15 +09:00
rmackay9 08f203a991 ArduCopter: reduced Loiter Rate I to 0.04 (was 0.08) 2012-09-25 19:08:31 +09:00
rmackay9 15893e719a ArduCopter: increase default Loiter Rate P to 5.0 2012-09-25 12:19:44 +09:00
rmackay9 090a672636 ArduCopter: optical flow initialisation changes now that optical flow library automatically works on APM1, APM2 and APM2.5 2012-09-24 18:39:33 +09:00
rmackay9 12a1f3244b ArduCopter: alt hold bug fix - removed reset next_WP in init_home 2012-09-23 01:00:06 +09:00
rmackay9 5e6951d3f4 ArduCopter: position lead filters modified to use lag which varies by gps 2012-09-20 15:49:09 +09:00
rmackay9 69c29f5196 ArduCopter: allow PID logging of throttle. Make get_angle_boost actually use parameter passed in. 2012-09-18 23:19:23 +09:00
rmackay9 aaab3c08aa ArduCopter: added throttle curve (although disabled by default) for all multicopters 2012-09-18 23:05:08 +09:00
rmackay9 3b5b2eba6e ArduCopter: set fast gains while auto trim is being executed 2012-09-18 09:03:29 +09:00
Andrew Tridgell 14d19ac33d ACM: updates for new GPS detection
a GPS can now be attached after startup
2012-09-17 14:45:47 +10:00
rmackay9 d7a53e67ed ArduCopter: bug fix in Log_Read_Attitude. It was printing two uninitialised variables. 2012-09-17 13:44:29 +09:00
rmackay9 9965dd8b1a HIL: changes to fix HIL for ArduCopter after recent timing changes.
Changes include using AP_PeriodicProcess and calling imu.init even in HIL mode
2012-09-15 18:42:56 +09:00
rmackay9 94d4305cf3 ArduCopter: print firmware version of code instead of zero. 2012-09-13 21:49:11 +09:00
rmackay9 54d07f6d04 ArduCopter: removed INSTANT_PWM from ArduCopter and AP_Motors library 2012-09-13 21:31:13 +09:00
Jason Short e4ec96e12f ACM : better debugging text 2012-09-12 23:06:06 -07:00
Jason Short ecf7e0e8bf ACM l Prevent pre-mature finish of mission 2012-09-12 23:06:06 -07:00
Jason Short b56dc44e61 ACM : Fix enduf 2012-09-10 21:25:53 -07:00
Jason Short 24f80c632c ACM : forced setup_show to dump params during log dump for better analysis. 2012-09-10 20:52:30 -07:00
Jason Short 65dc4ccc6d ACM : Added centralized Iterm logging at a lower rate. Logs all iterms. 2012-09-10 20:26:48 -07:00
Jason Short 63aec7510e ACM Mavlink - fixed comparison of unsigned to signed int by casting to uint8_t 2012-09-10 20:22:57 -07:00
Jason Short 2fcc7d3b22 ACM : Params - formatting cleanup 2012-09-10 20:22:11 -07:00
Andrew Tridgell ea78121f1b ACM: use spare CPU cycles to read the magnetometer 2012-09-10 11:38:18 +09:00
rmackay9 7a0189fb2c ArduCopter: modified mainloop timing to be in sync with the arrival of new data from the IMU.
This reduces the maximum delay between when new sensor data arrives and when it is actually used by about 5ms.
2012-09-10 11:37:53 +09:00
rmackay9 4e85e545bf ArduCopter: added NUM_IMU_SAMPLES_FOR_XYZHZ definitions for MPU6000 and Oilpan to allow more syncing of the mainloop with the arrival of data from the IMU. 2012-09-10 11:37:48 +09:00
rmackay9 8f993cde2b ArduCopter: bug fix for ROI not working if user did not have a camera mount
Changed verify_nav_roi command to attempt to point at the target if our camera mount type is not pan_tilt nor pan_tilt_roll
2012-09-10 02:03:32 +09:00
Andrew Tridgell 1fecd135ef ACM: use compass.accumulate() in ArduCopter
this gives us a much less noisy magnetometer
2012-09-08 10:06:04 +10:00
Michael Oborne 1d0d45a95f Fix Approach Altitude min 2012-09-06 17:43:58 +08:00
Pat Hickey b52738662a APM_Config.h for ArduCopter/ArduPlane: better descr of APM2_BETA_HARDWARE 2012-09-05 15:36:57 -07:00
rmackay9 af2502c739 ArduCopter: upgraded firmware version to 2.7.3 2012-09-02 12:58:16 +09:00
rmackay9 3e6966c33d ArduCopter: fixes to allow AP_Mount to work on APM1 with original default channels and fix to reenable support for 3-axis gimbals on APM2.
Channels 5 to 11 changed to RC_Channel_aux.
Removed channel 9 because APM_RC doesn't support it in any case.
Updated EEPROM format version to 119 because of the change to RC_Channel_aux and because k_param_rc_11 moved to be after k_param_rc_10.
2012-09-02 12:51:23 +09:00
rmackay9 6c1bd815c1 ArduCopter: remove unnecessary references to CH_CAM_PITCH, CH_CAM_ROLL, CH_CAM_YAW 2012-09-02 12:47:27 +09:00
Craig Elder c83d1402fb Arducopter: Release 2.7.2 2012-08-31 19:18:10 -07:00
Andrew Tridgell 0b2cbbb677 ACM: added TELEM_DELAY to ArduCopter 2012-08-30 09:03:01 +10:00
Jason Short 0ab8b85a78 ACM Log.pde : whitespace clean up 2012-08-28 21:22:07 -07:00
Jason Short 91bc3705c1 ACM : revert back to the 2.6 climb rate calc
The current filter is outputting wild oscillations.
2012-08-28 21:22:07 -07:00
Craig Elder 3403e1b78d Arducopter: increased MAVLINK delay to 6s to reduce the chance of xBee bricking
Arduplane:  increased MAVLINK delay to 6s to reduce the chance of xBee bricking
Ardurover:  increased MAVLINK delay to 6s to reduce the chance of xBee bricking
2012-08-28 20:09:10 -07:00
rmackay9 4978e0c23f ArduCopter: increased Stabilize Roll and Pitch I term to 0.05 (was 0.01) based on feedback from Jason 2012-08-29 11:34:53 +09:00
Craig Elder 94957b3529 Arducopter: Preparing for 2.7.2 Release 2012-08-28 18:30:41 -07:00
Jason Short b757c7130d ACM : Logging updates 2012-08-28 15:40:08 -07:00
Jason Short 52def45ba0 ACM: Altitude Adjust 2012-08-28 15:40:08 -07:00
Jason Short 24486c75b5 ACM : Log Timing 2012-08-28 15:40:08 -07:00
rmackay9 6f236f0c3b ArduCopter: increase SPI bus speed to 2Mhz after IMU initialisation has completed (MPU6000 accepts maximum of 1Mhz for some registers but up to 20Mhz for main sensor and interrupt registers) 2012-08-28 17:29:48 +09:00
rmackay9 ccc659e8a9 ArduCopter: reduced Rate Roll and Pitch PID values
RATE_ROLL_P, RATE_PITCH_P reduced to 0.165 (was 0.185)
RATE_ROLL_D, RATE_PITCH_D reduced to 0.004 (was 0.008)
2012-08-26 10:45:45 +09:00
uncrustify 593f4bad21 uncrustify ArduCopter/APM_Config.h 2012-08-21 19:19:50 -07:00
uncrustify ad1f20924d uncrustify ArduCopter/config.h 2012-08-21 19:19:50 -07:00
uncrustify 06031868d8 uncrustify ArduCopter/system.pde 2012-08-21 19:19:50 -07:00
uncrustify 4ae0b9dc8a uncrustify ArduCopter/test.pde 2012-08-21 19:19:50 -07:00
uncrustify 8bb14446e5 uncrustify ArduCopter/setup.pde 2012-08-21 19:19:50 -07:00
uncrustify 700e03920a uncrustify ArduCopter/motors.pde 2012-08-21 19:19:50 -07:00
uncrustify a3f6cdc0bd uncrustify ArduCopter/navigation.pde 2012-08-21 19:19:50 -07:00
uncrustify 1d56079ba2 uncrustify ArduCopter/commands_logic.pde 2012-08-21 19:19:50 -07:00
uncrustify f8b7fdf7bb uncrustify ArduCopter/Attitude.pde 2012-08-21 19:19:50 -07:00
uncrustify 865deed57e uncrustify ArduCopter/Parameters.pde 2012-08-21 19:19:50 -07:00
uncrustify e4932136d9 uncrustify ArduCopter/ArduCopter.pde 2012-08-21 19:19:50 -07:00
uncrustify dfc77d37ca uncrustify ArduCopter/Log.pde 2012-08-21 19:19:50 -07:00
uncrustify 5dceeed7ce uncrustify ArduCopter/Parameters.h 2012-08-21 18:57:21 -07:00
uncrustify 6d9b4ec785 uncrustify ArduCopter/defines.h 2012-08-21 18:57:21 -07:00
uncrustify d662339d11 uncrustify ArduCopter/config_channels.h 2012-08-21 18:57:21 -07:00
uncrustify 11cf4a78eb uncrustify ArduCopter/UserVariables.h 2012-08-21 18:56:57 -07:00
uncrustify f3559747b0 uncrustify ArduCopter/GCS.h 2012-08-21 18:56:56 -07:00
uncrustify 66f63fe415 uncrustify ArduCopter/APM_Config_mavlink_hil.h 2012-08-21 18:56:56 -07:00
uncrustify 196fff3d55 uncrustify ArduCopter/planner.pde 2012-08-21 18:56:56 -07:00
uncrustify ad743cba6c uncrustify ArduCopter/sensors.pde 2012-08-21 18:56:50 -07:00
uncrustify c7d32df65f uncrustify ArduCopter/UserCode.pde 2012-08-21 18:56:01 -07:00
uncrustify e8760bec78 uncrustify ArduCopter/GCS_Mavlink.pde 2012-08-21 18:56:01 -07:00
uncrustify fef945e2cb uncrustify ArduCopter/flip.pde 2012-08-21 18:56:01 -07:00
uncrustify 6088067ff3 uncrustify ArduCopter/GCS.pde 2012-08-21 18:56:00 -07:00
uncrustify 1fba78b594 uncrustify ArduCopter/toy.pde 2012-08-21 18:56:00 -07:00
uncrustify 95bbbd9ff9 uncrustify ArduCopter/commands_process.pde 2012-08-21 18:56:00 -07:00
uncrustify 5ba8d42ad4 uncrustify ArduCopter/leds.pde 2012-08-21 18:55:44 -07:00
uncrustify ccf6e80c14 uncrustify ArduCopter/commands.pde 2012-08-21 18:55:43 -07:00
uncrustify c9953574ca uncrustify ArduCopter/radio.pde 2012-08-21 18:55:43 -07:00
uncrustify bcad02a1ba uncrustify ArduCopter/events.pde 2012-08-21 18:55:43 -07:00
uncrustify f62681634b uncrustify ArduCopter/limits.pde 2012-08-21 18:55:16 -07:00
uncrustify 5992611a68 uncrustify ArduCopter/inertia.pde 2012-08-21 18:54:57 -07:00
uncrustify 0c0652b6d8 uncrustify ArduCopter/control_modes.pde 2012-08-21 18:54:57 -07:00
Andrew Tridgell bd6581c523 AHRS: removed Quaternion build support from APM/ACM/rover 2012-08-22 10:42:21 +10:00
Andrew Tridgell 85e8ba7993 ACM: fixed TradHeli build 2012-08-22 09:55:31 +10:00
Robert Lefebvre e1d6103045 TradHeli: Creating Flybar Acro mode. 2012-08-21 16:54:01 -04:00
Andrew Tridgell dcaea1a47a ACM: build DMP version in autotest
this gives it a chance of keeping working
2012-08-21 15:58:59 +10:00
Andrew Tridgell 1ec772f69c AHRS: fixed reference to AHRS var_info for APM and ACM 2012-08-21 15:58:32 +10:00
Andrew Tridgell 878bcab4cf ACM: use ahrs.set_fast_gains() on arm/disarm 2012-08-21 15:38:31 +10:00
rmackay9 cdab521c7d ArduCopter: added ACCEL_ALT_HOLD and INERTIAL_NAV to config.h and commented out of APM_Config.h.
Reduces possibility of difference between arduino ide compiled code and script built code (i.e. autotester, mission planner)
2012-08-19 12:31:02 +09:00
rmackay9 1dd8606b17 ArduCopter: changed reset_throttle_counter to uint8_t to get rid of overflow bug that was preventing target altitude from being locked in after pilot input down throttle. 2012-08-19 11:50:35 +09:00
Jason Short df01d5acd7 ACM : removed 2-level DCM gain change - .1 will still be the default. 2012-08-18 15:43:34 -07:00
Jason Short 89784b99cf ACM : Fix for reloading the user DCM gains upon arming 2012-08-18 13:17:43 -07:00
Jason Short 5684934989 ACM | Attitude.pde - removed next_wp.alt reset. 2012-08-18 12:25:48 -07:00
Jason Short 123545f679 ACM : Alt hold adjustment - made angle boost work during alt hold changes.
increased length of delay when reverting to automatic hold to deal with latency of baro sensor
2012-08-18 09:30:46 -07:00
Jason Short 1e546b54be ACM : Nav rate limit lowered to prevent bad oscillations due to GPS latency. 2012-08-18 09:04:22 -07:00
Jason Short 21f9b7e531 ACM : temp fix for throttle output limit
I had a bad crash when I lost authority. The logs showed the throttle pegged at 1000 which killed my control. We went round and round on this and somehow settled on no limit. That wasn't a good idea. This should really be hard coded into the Motors Library, but for now I'm just sticking it here.
2012-08-18 09:04:22 -07:00
Jason Short 5bbde052ba ACM: Added a more sane limit to Angle boost 2012-08-18 09:04:21 -07:00
rmackay9 1a2dd5b74b ArduCopter: renamed "_new_alt" parameter to just "new_alt" in force_new_altitude and set_new_altitude functions 2012-08-18 21:46:48 +09:00
rmackay9 7a31e4e660 ArduCopter: modified altitude hold so that 1 second slow down period is executed after pilot moves throttle back into deadzone 2012-08-18 21:45:49 +09:00
rmackay9 b80a3943aa ArduCopter, ArduPilot: revert mavlink delay callback to be "unsigned long" 2012-08-18 20:34:41 +09:00
rmackay9 221e4ea32a ArduCopter: changed "unsigned long" to "uint32_t" 2012-08-18 19:05:55 +09:00
rmackay9 b3439f9b95 ArduCopter: added cast to (int) in printf statments.
Also modified dump_log function's last_log_num to be int16_t to match return type from DataFlash's find_last_log method.
2012-08-18 18:58:15 +09:00
rmackay9 bd84f58f83 ArduCopter: removed unused icount variable from commands_logic.pde to reduce compiler warnings. 2012-08-18 16:04:23 +09:00
rmackay9 310ce05dc2 ArduCopter: commented out get_acro_yaw2 function to reduce compiler warnings 2012-08-18 16:03:49 +09:00
rmackay9 f32c76648d ArduCopter: removed unused maggy variable from test.pde to reduce compiler warnings. 2012-08-18 16:03:26 +09:00
rmackay9 0dc3b23b59 ArduCopter: fixed small bug re arming_counter for TOY mode 2012-08-18 13:21:41 +09:00