根Ros环境

时间:2018-11-15 05:26:14

标签: bash cmake sh sudo ros

我在树莓派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还是很陌生。 有没有人遇到这个问题并找到解决方案?

3 个答案:

答案 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 虚拟环境。