Unable to register with master node [http://localhost:11311/]: master may not be running yet.

树莓派和PC端都安装了ROS,然后将树莓派ROS当主机运行roscore,为了让两台机子的ROS可以通讯,需要在PC端的.bashrc文件中配置如下环境变量:

# PC端.bashrc文件
export ROS_MASTER_URI=http://192.168.0.100:11311    # ros主机ip(树莓派ip)
export ROS_HOSTNAME=192.168.0.148		    		# ros本机ip(PC端ip)

结果在PC端的pycharm中运行rospy初始化节点时出现连接不上的问题,且认为ROS_MASTER_URI值是本机IP(相当于.bashrc中环境变量没有生效)
pycharm运行报错
在ros文件中顺藤摸瓜,发现了获取ROS_MASTER_URI变量值的文件在/opt/ros/melodic/lib/python2.7/dist-packages/rosgraph/rosenv.py文件中,文件是使用os.environ.get方法获取ROS_MASTER_URI环境变量值,如果没有该值就使用默认值。

于是在pycharm中测试了os.environ.get方法发现确实无法获取.bashrc中定义的ROS_MASTER_URI值,但是在终端中运行python代码又可以获取ROS_MASTER_URI值,因此可以确定是pycharm没有配置好的问题,pycharm运行的话无法获取.bashrc文件中的环境变量值。

解决方法是在pycharm中手动添加环境变量值,如下:
Unable to register with master node [http://localhost:11311/]: master may not be running yet._第1张图片
Unable to register with master node [http://localhost:11311/]: master may not be running yet._第2张图片
Unable to register with master node [http://localhost:11311/]: master may not be running yet._第3张图片
重新运行程序就可以连接到设定ROS_MASTER_URI的master node了(注意了以后想在修改ROS_MASTER_URI值的话,不仅在

bashrc中需修改,在pycharm中也需要修改)

你可能感兴趣的:(http,python,pycharm)