2015-04-01 3 views
6

Я следую инструкциям getting started в DroneKit-Python для настройки DroneKit в виртуальной машине. Чтобы облегчить себе жизнь, я начал с Setting up SITL using Vagrant. Однако я не могу понять, как запустить SITL и поговорить с ним из сценариев примера.Как использовать dronekit с SITL vagrant VM от разработчика Wiki

Что я сделал:

  1. Ран Sitl бродячего сценарий и получил Sitl работает (проверено подключение к Планировщику миссия, работающее на Windows).
  2. Испытано как описано в разделе "Setting up on Linux", выполнив:

    пар нагрузки ../Tools/autotest/copter_params.parm

    пары набор ARMING_CHECK 0

Примечания - не " STABILIZE> ", который отображается в моей подсказке MAVProxy. Этой RAN (казалось бы) успешно

  1. Тогда я сделал Ctrl + D, чтобы выйти из симулятора Sitl и vagrant ssh к открыть свой запрос на виртуальную машину.
  2. Я установил dependencies as described here (после того, как подправить спецификация пип):

    Sudo APT-получить установку питона-пип питон-NumPy питон-OpenCV питон-серийный питон-Pyparsing питон-wxgtk2.8

Тогда MAVProxy

sudo pip install MAVProxy 

Тогда droneapi (обратите внимание, должны были быть установлены с помощью "Суда")

sudo pip install droneapi 

Затем из командной строки (бродяга @ бродяга-убунту-испытанный-32:/бродяга/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 на самом деле не работает.

Спасибо!

ответ

1

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

droneapi-питон будет установлен, но позволяет получить примеры сценариев:

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

Поднимают бродячую окно:

ardupilot$ vagrant up 

Запустите SITL, как описано в "Setting up SITL using 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. См. "Loading DroneKit" для получения информации о том, как это сделать автоматически при запуске mavproxy.

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

Запускаем DroneKit small_demo.py script:

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 
+0

Недостающую часть картины была правильно начиная MAVProxy поговорить с Sitl (а также создание Sitl, так что я мог одновременно поговорить с Планировщиком миссий). Это достигается путем запуска mavproxy с использованием: mavproxy.py --master = 127.0.0.1: 14550 Я исправлю документы, чтобы они зафиксировали это на следующей неделе. –

+0

@HamishWillee Должен ли я добавить что-то в свой ответ или это приемлемо? –

+0

Это запускает droneapi внутри виртуальной машины SITL, пока я пытаюсь подключиться к виртуальной машине SITL с хоста. Подход работает, но он a) не совсем соответствует тому, что я пытаюсь сделать b) не рекомендуется практиковать (или, по крайней мере, это не будет, когда я обновляю документы). Это хороший ответ на вопрос «как мне запустить SITL и droneAPI в рамках одного и того же vagrant vm" –

Смежные вопросы