如果你有很多工作空间和功能包了之后,同名节点可能会相互影响
工作空间有 a,b,c
每个工作空间下有个 hello功能包,那么,究竟是哪个工作空间下的功能包呢?
xrh@xrh:~$ env | grep ros
LD_LIBRARY_PATH=/home/xrh/ROStest/devel/lib:/home/xrh/testmoveit/devel/lib:/opt/ros/melodic/lib
ROS_ETC_DIR=/opt/ros/melodic/etc/ros
CMAKE_PREFIX_PATH=/home/xrh/ROStest/devel:/home/xrh/testmoveit/devel:/opt/ros/melodic
ROS_ROOT=/opt/ros/melodic/share/ros
PYTHONPATH=/opt/ros/melodic/lib/python2.7/dist-packages
ROS_PACKAGE_PATH=/home/xrh/ROStest/src:/home/xrh/testmoveit/src/beginner_tutorials:/home/xrh/testmoveit/src/moveit_tutorials:/home/xrh/testmoveit/src/panda_moveit_config:/opt/ros/melodic/share
PATH=/opt/ros/melodic/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
PKG_CONFIG_PATH=/home/xrh/ROStest/devel/lib/pkgconfig:/home/xrh/testmoveit/devel/lib/pkgconfig:/opt/ros/melodic/lib/pkgconfig
xrh@xrh:~$
env可以看到整个系统的环境变量
使用grep可以只看和ROS相关的。
最需要关注 ROS_PACKAGE_PATH=
运行一个功能包之后,系统会从ROS_PACKAGE_PATH=开始,依次向后查找,找到了就用其中的节点,没找到就往后找。如果好多个工作空间都有同名功能包,则一旦找到就不往后找了