Рос среды в корне - PullRequest
       5

Рос среды в корне

0 голосов
/ 15 ноября 2018

У меня есть среда ro (кинетическая), настроенная на Raspberry Pi 3, и я пытаюсь заставить ro запускаться при запуске с помощью простого скрипта bash, который вызывает roslaunch.Ros работает в пользовательском домене, но не работает при вызове из root.Вот мой скрипт launch_ros.sh:

#!/bin/bash
source /home/pi/ros_catkin_ws/devel/setup.bash
export PYTHONPATH=/opt/ros/kinetic/lib/python2.7/dist-packages
roslaunch my_pkg pkg_launch.launch

Когда я запускаю sudo /home/pi/Desktop/ros_launch.sh, roscore вылетает с

ERROR: cannot launch node of type [rosout/rosout]: can't locate node
[rosout] in package [rosout] failed to start core service [/rosout]
The traceback for the exception was written to the log file

Но, если я закомментирую

source /home/pi/ros_catkin_ws/devel/setup.bash

и выполните /home/pi/Desktop/ros_launch.sh, ros работает нормально.

Также стоит отметить, если я оставлю строку исходного кода без комментария при запуске в пользователедомен я получаю ту же ошибку, что и в корне.Я думаю, что это может указывать мне на решение, но я все еще очень плохо знаком с Рос.Кто-нибудь сталкивался с этой проблемой и нашел решение?

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Попробуйте следующий код:

#!/bin/bash
source /opt/ros/kinetic/setup.bash
source /home/pi/ros_catkin_ws/devel/setup.bash
export PYTHONPATH=/opt/ros/kinetic/lib/python2.7/dist-packages  
roslaunch my_pkg pkg_launch.launch

Вам нужен источник вашего рабочего пространства, чтобы иметь возможность найти свой собственный пакет. Но вам нужен исходный код ROS devel, чтобы можно было использовать roscd, roslaunch, ...

В коде ниже я добавил:

source /opt/ros/kinetic/setup.bash

для получения ROS и возможности его использования.

PS : если он все еще не работает, попробуйте сделать небольшую задержку перед запуском roslaunch.

0 голосов
/ 21 ноября 2018

Чтобы запустить узел с правами root после смены оболочки на root с помощью таких команд, как sudo -i, вы можете создать свой текущий профиль bash, который находится внутри вашего обычного пользователя .bashrc, и использовать его внутри корневой оболочки.

...