mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-26 11:43:25 +00:00
docs: add gyro calibration snippet
This commit is contained in:
@@ -74,7 +74,7 @@ navigate(x=1.5, frame_id='body')
|
||||
|
||||
<!-- TODO: статья по пидам -->
|
||||
|
||||
If the copter has an unstable position using VPE, try to increase the *P* coefficient of speed PID controller - parameters are `MPC_XY_VEL_P` and `MPC_Z_VEL_P`.
|
||||
If the copter has an unstable position, try to increase the *P* coefficient of speed PID controller - parameters are `MPC_XY_VEL_P` and `MPC_Z_VEL_P`.
|
||||
|
||||
If the copter has an unstable height, try increasing `MPC_Z_VEL_P` coefficient or getting better hover throttle - `MPC_THR_HOVER`.
|
||||
|
||||
@@ -85,6 +85,8 @@ If the copter is consistently yawing, try:
|
||||
* different values for `EKF2_MAG_TYPE` parameter, that indicates how data from the magnetometer is used in EKF2;
|
||||
* changing values of `EKF2_MAG_NOISE`, `EKF2_GYR_NOISE`, `EKF2_GYR_B_NOISE` parameters.
|
||||
|
||||
> **Note** For better results perform gyro calibration directly before taking off, using [appropriate snippet](snippets.md#calibrate-gyro).
|
||||
|
||||
If the copter's height is deviating, try:
|
||||
|
||||
* increasing the value of `MPC_Z_VEL_P` coefficient;
|
||||
|
||||
@@ -362,3 +362,35 @@ flip()
|
||||
```
|
||||
|
||||
Requires the [special PX4 firmware for Clever](firmware.md#modified-firmware-for-clever). Before running a flip, take all necessary safty precautions.
|
||||
|
||||
### # {#calibrate-gyro}
|
||||
|
||||
Perform gyro calibration:
|
||||
|
||||
```python
|
||||
from pymavlink import mavutil
|
||||
from mavros_msgs.srv import CommandLong
|
||||
from mavros_msgs.msg import State
|
||||
|
||||
# ...
|
||||
|
||||
send_command = rospy.ServiceProxy('/mavros/cmd/command', CommandLong)
|
||||
|
||||
def calibrate_gyro():
|
||||
rospy.loginfo('Calibrate gyro')
|
||||
if not send_command(command=mavutil.mavlink.MAV_CMD_PREFLIGHT_CALIBRATION, param1=1).success:
|
||||
return False
|
||||
|
||||
calibrating = False
|
||||
while not rospy.is_shutdown():
|
||||
state = rospy.wait_for_message('mavros/state', State)
|
||||
if state.system_status == mavutil.mavlink.MAV_STATE_CALIBRATING or state.system_status == mavutil.mavlink.MAV_STATE_UNINIT:
|
||||
calibrating = True
|
||||
elif calibrating and state.system_status == mavutil.mavlink.MAV_STATE_STANDBY:
|
||||
rospy.loginfo('Calibrating finished')
|
||||
return True
|
||||
|
||||
calibrate_gyro()
|
||||
```
|
||||
|
||||
> **Note** In process of calibration the drone should not be moved.
|
||||
|
||||
@@ -80,17 +80,19 @@ navigate(x=-1, frame_id='navigate_target')
|
||||
|
||||
<!-- TODO: статья по пидам -->
|
||||
|
||||
Если коптер нестабильно удерживает позицию по VPE, попробуйте увеличить коэффициенты *P* PID-регулятора по скорости – параметры `MPC_XY_VEL_P` и `MPC_Z_VEL_P`.
|
||||
Если коптер нестабильно удерживает позицию, попробуйте увеличить коэффициенты *P* PID-регулятора по скорости – параметры `MPC_XY_VEL_P` и `MPC_Z_VEL_P`.
|
||||
|
||||
Если коптер нестабильно удерживает высоту, попробуйте увеличить коэффициент `MPC_Z_VEL_P` или лучше подобрать газ висения – `MPC_THR_HOVER`.
|
||||
|
||||
Если коптер сильно уплывает по рысканью, попробуйте:
|
||||
Если коптер уплывает по рысканью, попробуйте:
|
||||
|
||||
* перекалибровать гироскопы;
|
||||
* перекалибровать магнитометр;
|
||||
* попробовать разные значения параметра `EKF2_MAG_TYPE`, который определяет, каким образом данные с магнитометра используются в EKF2;
|
||||
* изменять значения параметров `EKF2_MAG_NOISE`, `EKF2_GYR_NOISE`, `EKF2_GYR_B_NOISE`.
|
||||
|
||||
> **Note** Для более хороших результатов выполняйте перекалибровку гироскопов непосредственно перед взлетом, используя [соответствующий сниппет](snippets.md#calibrate-gyro).
|
||||
|
||||
Если коптер уплывает по высоте, попробуйте:
|
||||
|
||||
* повысить значение коэффициента `MPC_Z_VEL_P`;
|
||||
|
||||
@@ -379,3 +379,35 @@ flip()
|
||||
```
|
||||
|
||||
Необходимо использование [специальной сборки PX4 для Клевера](firmware.md#прошивка-для-клевера). Перед выполнением флипа необходимо принять все меры безопасности.
|
||||
|
||||
### # {#calibrate-gyro}
|
||||
|
||||
Произвести калибровку гироскопа:
|
||||
|
||||
```python
|
||||
from pymavlink import mavutil
|
||||
from mavros_msgs.srv import CommandLong
|
||||
from mavros_msgs.msg import State
|
||||
|
||||
# ...
|
||||
|
||||
send_command = rospy.ServiceProxy('/mavros/cmd/command', CommandLong)
|
||||
|
||||
def calibrate_gyro():
|
||||
rospy.loginfo('Calibrate gyro')
|
||||
if not send_command(command=mavutil.mavlink.MAV_CMD_PREFLIGHT_CALIBRATION, param1=1).success:
|
||||
return False
|
||||
|
||||
calibrating = False
|
||||
while not rospy.is_shutdown():
|
||||
state = rospy.wait_for_message('mavros/state', State)
|
||||
if state.system_status == mavutil.mavlink.MAV_STATE_CALIBRATING or state.system_status == mavutil.mavlink.MAV_STATE_UNINIT:
|
||||
calibrating = True
|
||||
elif calibrating and state.system_status == mavutil.mavlink.MAV_STATE_STANDBY:
|
||||
rospy.loginfo('Calibrating finished')
|
||||
return True
|
||||
|
||||
calibrate_gyro()
|
||||
```
|
||||
|
||||
> **Note** В процессе калибровки гироскопов дрон нельзя двигать.
|
||||
|
||||
Reference in New Issue
Block a user