如何在一台电脑(服务器)上运行多个不同的ROS和Gazebo环境及程序 |
您所在的位置:网站首页 › 一台电脑装多个cpu › 如何在一台电脑(服务器)上运行多个不同的ROS和Gazebo环境及程序 |
最近在服务器上跑ROS仿真导航代码的时候,发现和别人的程序之间会存在冲突问题。 我开着Gazebo仿真跑我的训练,当别人以他自己的账户登陆服务器的时候,roslaunch他自己的程序,会导致他打不开gazebo,而我开的Gazebo程序会突然报错。 难道服务器上只能让一个人用来跑仿真代码?这还叫什么服务器呢?于是我在docker内部配了同样的环境,并且用xhost+ 远程显示出来。 但是很不幸,docker容器虽然表面上看起来像是一个独立的主机,但是如果要想可视化出来,还是会导致冲突问题,要么显示不正常,要么报错。 最后找到了解决方式: 当开启roscore时,指定一个独立的端口号(否则会用默认的11311): roscore -p 10086注意,这里的端口号10086是随便写的能用就行,当然你也可以指定成别的,只要别指定成特殊的就行(像什么0,3306,8080,6006之类的就不要用)。 当调用终端的时候,在当前终端里输入: export ROS_MASTER_URI=http://localhost:10086 export GAZEBO_MASTER_URI=http://localhost:10085这样这个终端里之后运行的别的节点,就不会再和其他人的冲突了,相当于是创建了一个运行的时候独立的ROS和Gazebo环境。如果其他的终端如果想和这个终端里建立的环境产生联系的话,也需要同样export以上两行。注意10085也是我随便写的,注意,不同的使用者应该用不同的端口号,才能保证互相之间不会冲突。 之后,就可以不受限制的运行自己的ROS仿真程序了。 rosrun my_package my_node当然,也可以一劳永逸的,直接把上面的两个export写到自己服务器账户~下的.bashrc里面,省得每次开启终端的时候都要重复输入。(就像source /opt/ros/melodic/的setup.bash一样) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |