ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 23 ноя 2016, 22:05

ilalexey писал(а):=DeaD=, загляни сюда. Если ничего не путаю, то это про тебя.

Спасибо! Забегался, не всё отслеживаю!

Добавлено спустя 1 час 24 минуты 13 секунд:
Если кто подскажет по следующей теме, буду рад:

Сейчас "проблемный" пакет "poly_ros" студент запускает на сборку командой "cmake .." в каталоге конкретного пакета "catkin_ws/src/poly_ros", при этом туда засунут файл CATKIN_IGNORE. При этом видимо система подключает при сборке все остальные пакеты и при наличии в них проблем всё рушится. Опытным путём установил, что если убрать из workspace два пакета "mavlink" и "robot_upstart", то сборка вроде бы выполняется успешно.

С пакетом "mavlink" проблема в том, что он non-catkin,
С пакетом "robot_upstart" какие-то заморочки с <Could not find a package configuration file provided by "roslint">

при этом без них всё собирается, это надо просто как-то их исключить из процедуры сборки, или я вообще не так всё делаю?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение Vooon » 23 ноя 2016, 22:38

Загляни в этот раздел: https://github.com/mavlink/mavros/tree/ ... stallation

Если коротко: ставишь catkin tool, потом "catkin build" (все в ws), или "catkin build --this -vi" (конкретный пакет с выводом всех шагов).
Еще бывает полезно добавить "--no-deps".

Прямой вызов cmake это не правильно. Но да, catkin_make не умеет cmake, там нужен catkin_make_isolated.
Но с тех пор как появился "catkin" я использую только его.

robot_upstart - не морочься, проще самому написать скрипт: https://github.com/vooon/rarog/blob/mas ... rarog.conf
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 25 ноя 2016, 22:40

Я так понимаю все эти туториалы устарели напрочь?

http://wiki.ros.org/catkin/Tutorials/CreatingPackage

И надо:
1) Читать http://catkin-tools.readthedocs.io/en/l ... start.html
2) Использовать "catkin build" вместо catkin_make и catkin_make_isolated ну и так далее в том же духе?

?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение Vooon » 26 ноя 2016, 00:40

Ну они не то чтобы устарели, catkin-tools вроде до сих пор бета.
Но они полезны только чтоб понять как каткин вообще работает.

Но пакет catkin-tools на много удобнее, так что читать 1.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 26 ноя 2016, 18:31

Спасибо большое! Почистил ~/catkin_ws/src от всякого хлама, использую "catkin build" для сборки. Проблема с "non-catkin" исчезла. Почти всё собирается теперь.

Остался один самодельный пакет "poly_ros", не знаю что там, но он не компилируется из-за 3 ошибок при подключении из mavros заголовочных файлов (+ 1 предупреждение оттуда же).
Может быть я вместе с хламом что-то полезное снёс, какие-то настройки, изучаю.

Вот так ошибки выглядят:

poly_ros_error.png


Добавлено спустя 2 часа 24 минуты 22 секунды:
Долго не мог разобраться, почему происходит такое:
1. Если я запускаю "cmake .." в каталоге ~/catkin_ws/src/poly_ros, то выдаётся ошибка про "non-catkin" пакет.
2. Если я удалив из catkin workspace пакет "mavlink тот же "cmake .." там же, то вроде бы всё собирается на ура.

И тут понял, похоже то ли студент не то делал, то ли я его не так понял, но видимо запускать надо "cmake .", а не "cmake ..", который все пакеты одновременно пытается собрать.
Всё верно?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение Vooon » 26 ноя 2016, 19:06

Cmake звать вообще не нужно. Нужно выкачать релиз пакета mavlink в ws/src и все (делается wstool'ом). Catkin сам все сделает.
Потом мавр у вас старый (<= 0.17), но уже без поддержки gcc 4.8. Нужно хотя-бы 4.9.
Можно исправить через "catkin clean; CXX=g++4.9 catkin build". Или прописать через флаги cmake (catkin config).
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 27 ноя 2016, 00:35

Решил, что лучше всего снести (убрать в архив) имеющийся ~/catkin_ws и создать новый, по вот этой инструкции:
https://github.com/mavlink/mavros/tree/ ... stallation

Вроде ничего принципиального оно за пределами ~/catkin_ws не меняет, кроме rosdep install, её запустил с ключом -s чтобы сначала посмотреть, что делать будет, и она выдала такую ошибку:

ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies:
mavlink: Cannot locate rosdep definitions for [python-future]

При попытке, несмотря на эту ошибку, собрать всё командой "catkin build" пакет "mavlink" упал, сообщив "ImportError: No module named future".

На файле ~/catkin_ws/src/mavlink/pymavlink/generator/mavgen.py

Видимо вот на этом участке:
11: from __future__ import print_function
12: from future import standart_library
13: standart_library.install_aliases()

Поставил pip командой "sudo easy_install pip", поставил модуль "future" для питона командой "sudo pip install future"
По команде "catkin build" успешно собрались "mavros_msgs" и "mavlink", теперь "libmavcon" падает с "OSError: [Errno 12] Cannot allocate memory".

Вот на всякий случай полный скрин:

Workspace configuration appears valid.
--------------------------------------------------------------------------------
Found '6' packages in 0.1 seconds.
Starting ==> mavlink
Starting ==> mavros_msgs
Finished <== mavros_msgs [ 32.6 seconds ]
Finished <== mavlink [ 1 minute and 19.1 seconds ]
Starting ==> libmavconn
[build] Runtime: 1 minute and 54.8 seconds [4/4 Jobs | 1/4 Active | 2/6 Completed]
Traceback (most recent call last):
File "/usr/bin/catkin", line 9, in <module>
load_entry_point('catkin-tools==0.3.1', 'console_scripts', 'catkin')()
File "/usr/lib/python2.7/dist-packages/catkin_tools/commands/catkin.py", line 229, in main
sys.exit(args.main(args) or 0)
File "/usr/lib/python2.7/dist-packages/catkin_tools/verbs/catkin_build/cli.py", line 334, in main
summarize_build=opts.summarize # Can be True, False, or None
File "/usr/lib/python2.7/dist-packages/catkin_tools/verbs/catkin_build/build.py", line 828, in build_isolated_workspace
wide_log(msg, rhs=msg_rhs, end='\r')
File "/usr/lib/python2.7/dist-packages/catkin_tools/common.py", line 430, in wide_log
wide_log_fn(msg, **kwargs)
File "/usr/lib/python2.7/dist-packages/catkin_tools/common.py", line 366, in __wide_log
width = terminal_width()
File "/usr/lib/python2.7/dist-packages/catkin_tools/common.py", line 288, in terminal_width
return terminal_width_windows() if os.name == 'nt' else terminal_width_linux()
File "/usr/lib/python2.7/dist-packages/catkin_tools/common.py", line 280, in terminal_width_linux
width = os.popen('tput cols', 'r').readline()
OSError: [Errno 12] Cannot allocate memory

Забыл еще вчера написать по наличию памяти:

Код: Выделить всё
ubuntu@aristoteles:~/catkin_ws$ free -m
             total       used       free     shared    buffers     cached
Mem:           923        229        694          0          3         20
-/+ buffers/cache:        206        717
Swap:            0          0          0
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 27 ноя 2016, 12:10

Едем дальше:

1. Команда "catkin build libmavconn" выполняется успешно, сначала собрав "mavlink", а потом "libmavconn".
2. Приплыли, теперь даже "catkin build mavros --no-deps" падает по той же ошибке с нехваткой памяти.
3. Выяснил, что "free -m" не даёт всю информацию о доступной памяти. Вызвал "cat /proc/meminfo", выяснил, что "MemAvailable: 711732Kb".

PS:
Vooon писал(а):Можно исправить через "catkin clean; CXX=g++4.9 catkin build". Или прописать через флаги cmake (catkin config).

На старом ~/catkin_ws/ это не помогло (без нового mavros+mavlink), а новые я даже без "poly_ros" построить пока не могу :(
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 27 ноя 2016, 23:03

Я только одного не пойму, какого лешего памяти не хватает постоянно на одной и той же простой команде "tput cols"?
Оно что, мегабайты сотнями и десятками жрёт, чтобы узнать, какой ширины окно терминала?

Добавлено спустя 49 минут 51 секунду:
Выяснил, что при выводе каждого сообщения авторы catkin-tools запускают процесс "tput cols":
Код: Выделить всё
width = os.popen('tput cols', 'r').readline()


Не знаю, как там что работает в питоне, но похоже на утечку памяти в этом месте, иначе не могу объяснить почему тут падает всё время.
Поправил код, теперь результат сохраняется в "свойстве функции" и отдаётся готовый начиная со второго раза.

Теперь ловлю уже "virtual memory exhausted", правда всё в тех же местах. Интересно, может там еще где утечка памяти?

Ладно, надоело, закончим упражнения :) ключ "-j1" решил вроде все проблемы. В том числе "catkin build -j1" после "catkin clean --all". И в том числе без моих исправлений с вызовом "tput cols". Правда полное время сборки - 51 минута почти.

PS: Возможно есть смысл добавить упоминание про ключ "-j1" в инструкцию по установке mavros, а то как сейчас вижу по выдаче гугла - я не один по этим граблям прошелся.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 28 ноя 2016, 12:04

Так, добавил в свежеиспеченный ~/catkin_ws/ со свежеустановленными и собранными mavlink+ros "свой" пакет poly_ros (в нём только package.xml, CMakeLists.txt и исходник в папке /src) и вылезли ровно те же ошибки.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение Vooon » 29 ноя 2016, 23:47

Да нет, жрет точно не tput. Каткин по умолчанию ставит количество параллельных задач = кол-ву CPU.
А g++ может легко и непринужденно сожрать 500 мегов. Поэтому на одноплатниках всегда нужно давать "-j2" или даже "-j1".

"rosdep update" должен был знать о python-future, хотя у меня нет уверенности, что такой deb пакет есть в старых дистрах.
Например на travis'е я накололся, в 12.04 его нет - нужно отправлять патч в rosdistro (а так не хочется…).
Поэтому "pip install future"

Добавлено спустя 35 секунд:
Все, rosdistro исправлен.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 30 ноя 2016, 00:08

В mavros есть пакет libmavconn, в нём файлик thread_utils.h, в котором идёт строка "#include <thread>"

Вроде это штука конкретно из C++11, который в ROS Indigo не по фэншую.

Я так понимаю, там такой расклад:

ROS Indigo - C++03
ROS Jade - C++03, но можно собирать C++11
ROS Kinetic - C++11

Завтра попробую такое добавить в CMakeLists.txt (хоть и крайне не рекомендуют это делать, поскольку там какие-то проблемы с ABI-compability, я так понимаю на эти грабли можно встать в любой момент, но нам надо по быстрому запустить хоть что-то :) ):
Код: Выделить всё
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")


Добавлено спустя 2 минуты 30 секунд:
Vooon писал(а):Поэтому на одноплатниках всегда нужно давать "-j2" или даже "-j1".

Вот это бы в инструкции указать, я бы лично по неопытности денёк сберег :)
Но всё равно 100500 раз дергать внешний процесс - как-то нехорошо.

Vooon писал(а):Все, rosdistro исправлен.

Это в смысле теперь rosdep знает про python-future? Тоже удобнее будет, спасибо.
А то я сейчас остался в непонимании - оно вылетело при встрече незнакомого пакета или просто других проблем не нашло.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение Vooon » 30 ноя 2016, 00:11

Официально не по феншую, но пользуюсь еще с hydro (вот уж где грабли!).
Ну и если можно, то лучше уже перейти на Kinetic. Нового релиза весной вроде не будет, все надежды на ROS2 :)
Но там пока слишком сыро все.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение =DeaD= » 30 ноя 2016, 00:46

Ок, понял, значит будем пользовать C++11, раз даже вертолёты не падают, чего уж нам с гусеничным роботом бояться :) переход на ROS Kinetic поставим в план, вижу что под малину он уже есть.

Я так понимаю MAVLINK_DIALECT еще желательно поставить? Или его можно выставить в "common" для pixhawk?
Командой в CMakeLists.txt типа
Код: Выделить всё
add_definitions(-DMAVLINK_DIALECT=common)


Добавлено спустя 11 минут 57 секунд:
Ошибка
Код: Выделить всё
#error Unknown C++11 or C++0x wall clock class

я так понимаю с подключением C++11 должна тоже пропасть.

Остаются только грабли с "#include <Eigen/Eigen>"
Это надо тоже отдельно от ROS ставить вручную?

Добавлено спустя 17 минут 9 секунд:
Ага, вроде понял, Eigen вообще из одних заголовков состоит, скачать, подцепить в каталог, где её найдет компилятор или прописать путь в CMakeLists.txt, профит. Так?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: ROS, Raspberri Pi, RPLidar, Pixhawk и все-все-все

Сообщение Vooon » 30 ноя 2016, 00:54

=DeaD= писал(а):Я так понимаю MAVLINK_DIALECT еще желательно поставить?


Его теперь вообще нет :) Ну если говорить про 0.18+.

А C++11 уже давно в прошивках APM и PX4, что уж говорить о бортовом компе.

Eigen должен был установить rosdep. Проверь libeigen3-dev (кстати очень крутая библиотека, код становится похож на формулу).

Добавлено спустя 6 минут 35 секунд:
Ну eigen можно конечно и из исходников поставить, там главное чтобы cmake его нашел.

Раньше у ейгена не было своего cmake find package скрипта, поэтому свою версию держали в росе.
Но в современных версиях это уже не нужно. Я правда тяну кусок fallback кода для совместимости.
А то на 14.04 не собирается.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Пред.След.

Вернуться в ROS - Robot Operating System

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2