DroneKit: изменение скорости в режиме AUTO / реализация "MAV_CMD_DO_CHANGE_SPEED"

Мне нужна помощь в выяснении того, как установить базовую скорость в режиме AUTO (который, по-видимому, реализуется командой Mavlink "MAV_CMD_DO_CHANGE_SPEED", но я не могу найти никаких примеров этого). То, что я думал, будет работать:

vehicle.commands.add(Command( 0, 0, 0, mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT, mavutil.mavlink.MAV_CMD_DO_CHANGE_SPEED, 0, 0, 1, 0.25, 0, 0, 0, 0, 0))

Основано на: https://pixhawk.ethz.ch/mavlink/ и https://github.com/mavlink/mavlink/blob/master/message_definitions/v1.0/common.xml

Но это не работает.

Может кто-нибудь мне помочь?

2 ответа

Вы можете установить параметр "WPNAV_SPEED" на желаемую скорость (в см) перед установкой режима на AUTO. Что-то вроде этого:

vehicle.parameters['WPNAV_SPEED'] = 500    
msg = vehicle.message_factory.command_long_encode(
    0, 0,    # target system, target component
    mavutil.mavlink.MAV_CMD_DO_CHANGE_SPEED, #command
    0, #confirmation
    0, #speed type, ignore on ArduCopter
    speed, # speed
    0, 0, 0, 0, 0 #ignore other parameters
    )

# send command to vehicle
vehicle.send_mavlink(msg)
vehicle.flush()

Следующее будет работать:

speed_type = 1  # 0 is airspeed (for plane with airspeed sensor), 1 is groundspeed
speed = 15
throttle_setting = 0
cmds.add( Command( 0, 0, 0, mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT, mavutil.mavlink.MAV_CMD_DO_CHANGE_SPEED, 0, 0, speed_type, speed, throttle_setting, 0, 0, 0, 0) )

Вы можете дважды проверить это, запустив код, затем подключившись к GCS и загрузив миссию с транспортного средства.

Другие вопросы по тегам