本文主要是介绍roscore等ros命令执行后终端无输出,无反应,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
现象
在终端中输入 roscore 等 ros 命令,终端无输出,无反应。但是,Ctrl+C
后终端还是有输出的。
解决措施
打开.barshrc
文件
gedit ~/.bashrc
修改ROS_HOSTNAME
和ROS_MASTER_URI
变量的赋值语句,如果有ROS_IP
变量也需要修改。用 localhost 替代具体的 IP地址。
修改前。
export ROS_HOSTNAME=192.168.8.144
export ROS_MASTER_URI=http://192.168.8.144:11311
修改后。用 localhost 替代具体的 IP地址。
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311
如果没有主从机的需求,直接将这几行赋值语句,注释掉也行。
原因分析
直接原因:ros 没有找到 ros master 所在的位置。
这个问题一般是由于主从机配置问题导致的。在配置主从机时,需要在分别主机和从机中指定主机的 IP 地址,一般我们为了方便会将其设置为一个固定的 IP 地址。需要在.barshrc
文件中对 ROS_HOSTNAME
和 ROS_MASTER_URI
等变量赋值。
一般我们以机器人的机载电脑为作为主机,它的.barshrc
文件中 ROS_HOSTNAME
和 ROS_MASTER_URI
等变量赋值语句,类似于
export ROS_HOSTNAME=192.168.8.144
export ROS_MASTER_URI=http://192.168.8.144:11311
这种在主机上直接用具体 IP 地址来为变量赋值的方法,本来是没有问题的。但是连接 WIFI 时,该设备的 IP 地址是和网络有关的。下面具体说明:
-
如果设备处于需要工作的 WIFI 网络下,此时,由于已经对设备在该网络下的 IP 地址进行了设定,其地址就会是设定的
192.168.8.144
。此时,在终端中输入 roscore 等 ros 命令,应该是能正常工作的。 -
但是,如果取消了该 WIFI 网络连接,或连接到了没有设置 IP 的网络下,本机的 IP 地址就不再是
192.168.8.144
了,但是.barshrc
文件中还是使用了该 IP 地址对变量赋值,这导致启动 ros 节点无法找到ros master 所在位置。节点就会卡住,没有继续启动,也就没有输出了。为避免这种情况,在主机上,最好是用 localhost 替代具体的 IP地址。
这篇关于roscore等ros命令执行后终端无输出,无反应的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!