Closed gdamion closed 4 years ago
Если еще не решили проблему, поробуйте удалить из скрипта run_docker.bash
строку
-e ROS_IP=localhost \
Решил проблему! Было даже не обязательно убирать строку с ROS_IP. Проблема куда банальнее: всегда на всякий случай скрипт запускал с sudo, но оказалось, что start_scene.bash с sudo просто не работает. Честно говоря, впервые такое вижу: обычно наоборот с sudo все работает, а без него - нет ;)
А, да.
Это связано с тем, что для каждого пользователя (баш-сессии) прописываются определенные переменные окружения. В частности, при запуске терминала вызывается скрипт ~/.bashrc, который прописывает настройки и подобное. Он же вызывает и <ros-path>/setup.bash
, которые прописывает, где находятся всякие рос-овские штуки.
Для пользователя root
это не настроено и не нужно.
При запуске симулятора происходит ошибка инициализации плагина ROS: Plugin 'ROSInterface': loading... RosInterface: ROS_MASTER_URI is not set Error with plugin 'ROSInterface': load failed (failed initialization).
В свою очередь в симуляторе высвечивается: stack traceback: [string "CHILD SCRIPT drone"]:80: in function
Lua runtime error: [string "CHILD SCRIPT drone"]:80: attempt to index global 'simROS' (a nil value)
При этом, когда я в этом же терминале проверяю наличие этой переменной, то она есть: echo $ROS_MASTER_URI http://localhost:11311
Примечательно, что вне данного скрипта ROS в докере работает, roscore выполняется. Также в самой папке csim файл плагина libsimExtROSInterface.so на месте. Использую docker на ubuntu 18.04. Пробовал и с обновленной версией докера, и со старой, все одно и то же.
Также проверил исходный код плагина:
В данном методе проходит инициализация плагина. И когда он не обнаруживает ROS_MASTER_URI, он рушится, хоть ROS_MASTER_URI и есть...
Буду очень благодарен за помощь!