我在树莓派3上设置了ros(动态)环境,并试图通过一个简单的bash脚本(称为roslaunch)使ros在启动时执行。 Ros在用户域中工作,但从根调用时失败。 这是我的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运行正常。
另外值得注意的是,如果我在用户域中运行时未注释上述源代码行,则会得到与在根目录中相同的错误。我认为这可能为我提供了解决方案,但我对ros还是很陌生。 有没有人遇到这个问题并找到解决方案?
答案 0 :(得分:0)
为了使用sudo -i
之类的命令将shell更改为root之后,以root身份运行节点,您可以获取位于普通用户.bashrc
内部的当前bash配置文件,并在root shell中使用它。
答案 1 :(得分:0)
尝试以下代码:
#!/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开发才能使用roscd,roslaunch,...
在下面的代码中,我添加了:
source /opt/ros/kinetic/setup.bash
获取ROS并能够使用它。
PS :如果仍然无法正常运行,则应在运行roslaunch之前尝试稍作延迟。
答案 2 :(得分:0)
我不小心进入了 conda 环境(仅限基础),这让我大吃一惊。尝试禁用任何 Python 虚拟环境。