原因:
当我们在 single machine上进行试验时,如果出现了上述问题,除了指令输入错误、本地没该功能包,未选中 turtle_teleop_key终端进行操作等简单原因外,还有可能是
未正确设置环境变量 ROS_MASTER_URI, ROS_HOSTNAME
solutions:
vim ~/.basrhc
打开文件 .bashrc, 在文件末尾加上
export ROS_HOSTNAME=ubuntu.local
export ROS_MASTER_URI=http://ubuntu.local:11311
【ESC】, win + : , wq, [ENTER]保持
并注释掉其他 ROS_HOSTNAME, ROS_MASTER_URI的条件变量。
查看文件 /etc/hosts,其中需要有 环境变量名和IP地址的映射。例如:
此处,左侧为IP Address,右侧为你的环境变量名。通常情况下,不同机器的IP地址并不相同,同一台机器,连接不同网络时,IP地址也不相同。所以需要你在终端,使用指令 ifconfig 查看信息,如图
此处,我连接当前网络时,IP Address为 192.168.1.226。
至于信息中的 lo 数据段,它表示本地地址,127.0.0.1。
对于初学者,对于单机试验,只要确保文件 /etc/hosts中存在 127.0.0.1 localhost就行。
再重新在两个终端中先后运行指令
rosrun turtlesim turtle_teleop_key
rosrun turtlesim turtle_teleop_key
link
参考连接是 ros2 场景,使用环境变量ROS_DOMAIN_ID,但原理一致。
[Rolling] Cannot use turtle_teleop_key arrow keys · Issue #117 · ros/ros_tutorials · GitHub