Как использовать дронкит с SITL vagrant VM из dev Wiki

Я следую инструкциям по началу работы в DroneKit-Python, чтобы настроить DroneKit на виртуальной машине. Чтобы облегчить себе задачу, я начал с Настройка SITL с помощью Vagrant. Однако я не могу понять, как запустить SITL и поговорить с ним из примеров сценариев.

Что я сделал:

  1. Запустил бродячий скрипт SITL и заработал SITL (проверено подключение к Mission Planner, работающему в Windows).
  2. Протестировано, как описано в разделе "Настройка в Linux", выполнив следующие действия:

    загрузка параметров ../Инструменты/автотест/copter_params.parm

    набор параметров ARMING_CHECK 0

ПРИМЕЧАНИЕ. В моем приглашении MAVProxy не отображается приглашение «STABILIZE>». Эти побежали (что оказалось) успешно

  1. Затем я нажал Ctrl+D, чтобы выйти из моделирования SITL, и vagrant ssh, чтобы открыть приглашение для виртуальной машины.
  2. Я установил зависимости, как описано здесь (после исправления спецификации pip):

    sudo apt-get install python-pip python-numpy python-opencv python-serial python-pyparsing python-wxgtk2.8

Затем MAVProxy

sudo pip install MAVProxy

Затем Droneapi (обратите внимание, нужно было установить с помощью «sudo»)

sudo pip install droneapi

Затем из командной строки (vagrant@vagrant-ubuntu-trusty-32:/vagrant/ArduCopter$) я получил клон git и перешел к демонстрации:

git clone http://github.com/diydrones/droneapi-python.git
cd droneapi-python/example/small_demo

Я запустил MavProxy, используя «mavproxy.py» (правильный тип для виртуальной машины Linux, обменивающейся данными через USB). Получил следующее:

Auto-detected serial ports are:
/dev/ttyS31
/dev/ttyS30
...
/dev/ttyS1
/dev/ttyS0
Logging to mav.tlog
libdc1394 error: Failed to initialize libdc1394

Наконец, несмотря на ошибку выше, я попытался загрузить и использовать модуль.

MAV> module load droneapi.module.api
MAV> DroneAPI loaded
Loaded module droneapi.module.api
api start small_demo.py
MAV> Exception in APIThread-0:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/droneapi/module/api.py", line 322, in run
self.fn()
File "/usr/local/lib/python2.7/dist-packages/droneapi/module/api.py", line 593, in <lambda>
APIThread(self, lambda: execfile(args[1], g), args[1])
...

ПРИМЕЧАНИЕ. Подсказка «MAV>», а не «MANUAL>», как указано в документах.

Вопрос в том, «почему это не удалось, и что мне нужно, чтобы заставить его работать?» Я предполагаю, что проблема в том, что SITL на самом деле не работает.

Спасибо!


person Hamish Willee    schedule 01.04.2015    source источник


Ответы (1)


Начиная с новой проверки кода ardupilot в вашей ОС хоста.

Droneapi-python будет установлен, но давайте получим примеры скриптов:

ardupilot$ git clone http://github.com/diydrones/droneapi-python.git

Поднимите бродячий ящик:

ardupilot$ vagrant up

Запустите SITL, как описано в "Настройка SITL с помощью Vagrant":

ardupilot$ vagrant ssh -c "sim_vehicle.sh -j 2"

Вывода будет много, но в конце я вижу это:

+ mavproxy.py --master tcp:127.0.0.1:5760 --sitl 127.0.0.1:5501 --out 10.0.2.2:14550 --out 127.0.0.1:14550 --out 127.0.0.1:14551 --cmd=
Connect tcp:127.0.0.1:5760 source_system=255
Logging to mav.tlog
libdc1394 error: Failed to initialize libdc1394
MAV> 

Init APM:Copter V3.3-dev (e1be8148)
Free RAM: 4096
FW Ver: 120
----------------------------------------

Firmware change: erasing EEPROM...
done.
0 0 0 online system 1
STABILIZE> Mode STABILIZE
APM: APM:Copter V3.3-dev (e1be8148)
APM: Frame: QUAD
APM: Calibrating barometer
APM: Initialising APM...
APM: barometer calibration complete
APM: GROUND START
Init Gyro**
INS
----------------------------------------
G_off: 0.00, 0.00, 0.00
A_off: 0.00, 0.00, 0.00
A_scale: 1.00, 1.00, 1.00

Ready to FLY  ublox Received 473 parameters
fence breach
GPS lock at 0 meters
APM: PreArm: RC not calibrated

Загрузите модуль Droneapi. См. "Загрузка DroneKit" для получения информации о том, как сделать это автоматически при запуске mavproxy.

STABILIZE> module load droneapi.module.api
STABILIZE> DroneAPI loaded

Запустите скрипт small_demo.py DroneKit:

STABILIZE> api start ../droneapi-python/example/small_demo/small_demo.py 

Выход:

STABILIZE> Mode: VehicleMode:STABILIZE
Location: Location:lat=-35.3632609,lon=149.1652299,alt=-0.280000001192,is_relative=False
Attitude: Attitude:pitch=-0.0046319803223,yaw=-0.571676075459,roll=-0.00480426847935
Velocity: [0.11, -0.06, -0.06]
GPS: GPSInfo:fix=3,num_sat=10
Armed: False
groundspeed: 0.0
airspeed: 0.0
Requesting 0 waypoints t=Fri May  1 02:18:50 2015 now=Fri May  1 02:18:50 2015
Home WP: MISSION_ITEM {target_system : 255, target_component : 0, seq : 0, frame : 0, command : 16, current : 0, autocontinue : 1, param1 : 0.0, param2 : 0.0, param3 : 0.0, param4 : 0.0, x : -35.3632621765, y : 149.165237427, z : 584.33001709}
Current dest: 0
Disarming...
Arming...
Overriding a RC channel
Current overrides are: {'1': 900, '4': 1000}
RC readback: {'1': 1500, '3': 1000, '2': 1500, '5': 1800, '4': 1500, '7': 1000, '6': 1000, '8': 1800}
Cancelling override
APIThread-0 exiting...
Got MAVLink msg: COMMAND_ACK {command : 400, result : 0}
APM: PreArm: RC not calibrated
Got MAVLink msg: COMMAND_ACK {command : 400, result : 4}
Got MAVLink msg: COMMAND_ACK {command : 11, result : 0}
AUTO> Mode AUTO
person John Wiseman    schedule 01.05.2015
comment
Недостающей частью картины был правильный запуск MAVProxy для связи с SITL (а также настройка SITL, чтобы я мог одновременно общаться с Планировщиком миссий). Это достигается запуском mavproxy с использованием: mavproxy.py --master=127.0.0.1:14550 Я исправлю документы, чтобы они зафиксировали это на следующей неделе. - person Hamish Willee; 04.05.2015
comment
@HamishWillee Должен ли я что-то добавить к моему ответу или это приемлемо? - person John Wiseman; 05.05.2015
comment
Это запускает droneapi на виртуальной машине SITL, пока я пытаюсь подключиться к виртуальной машине SITL с хоста. Подход работает, но он а) не совсем соответствует тому, что я пытаюсь сделать б) не рекомендуется (или, по крайней мере, не будет, когда я обновлю документы). Это хороший ответ на вопрос, как запустить SITL и DroneAPI в одной и той же vagrant vm. - person Hamish Willee; 07.05.2015