Ssh Raspberry Pi无法订阅从基本PC发布的ros主题,但反之亦然?
我正在使用泛素促甲状腺激素树莓Pi作为RPI3b+,这是Ubuntu Xenial和ROS动力学。我的基础计算机运行的是Ubuntu 18.04,并且安装了ROS Melodic。 我在基本PC中创建了Ssh Raspberry Pi无法订阅从基本PC发布的ros主题,但反之亦然?,ssh,ubuntu-16.04,raspberry-pi3,ubuntu-18.04,ros,Ssh,Ubuntu 16.04,Raspberry Pi3,Ubuntu 18.04,Ros,我正在使用泛素促甲状腺激素树莓Pi作为RPI3b+,这是Ubuntu Xenial和ROS动力学。我的基础计算机运行的是Ubuntu 18.04,并且安装了ROS Melodic。 我在基本PC中创建了subo_base工作区,在rpi中创建了subo_rpi工作区(通过ssh评估rpi)。 然后我在基本PC和RPi中创建了一个包,并在每个包中添加了Publisher和Subscriber()文件。 当我从RPi运行发布服务器时,基本PC可以订阅,但当我从基本PC发布时,RPi不显示任何输出,并
subo_base
工作区,在rpi中创建了subo_rpi
工作区(通过ssh评估rpi)。
然后我在基本PC和RPi中创建了一个包,并在每个包中添加了Publisher和Subscriber()文件。
当我从RPi运行发布服务器时,基本PC可以订阅,但当我从基本PC发布时,RPi不显示任何输出,并且仍然卡住(即使使用rostopic list在RPi上可以看到主题)
一些代码用于基本PC
aakash@aakash:~$ mkdir -p ~/subo_base/src
aakash@aakash:~$ cd ~/subo_base/
aakash@aakash:~/subo_base$ catkin_make
aakash@aakash:~/subo_base$ source devel/setup.bash
aakash@aakash:~/subo_base$ echo $ROS_PACKAGE_PATH
aakash@aakash:~/subo_base$ cd ~/subo_base/src/
aakash@aakash:~/subo_base/src$ catkin_create_pkg motion_plan std_msgs rospy roscpp
连接到RPi
aakash@aakash:~/subo_base/src/motion_plan/scripts$ export ROS_MASTER_URI=http://ubiquityrobot.local:11311
aakash@aakash:~/subo_base/src/motion_plan/scripts$ export ROS_IP='hostname -I'
此外,我能够通过sshscp
将文件从基本PC传输到基本PC,所以我想netwkr可能不是问题所在 问题很可能是主机名解析和/或ROS网络变量配置
我不喜欢在变量中使用主机名,因此我将给出仅使用IP的示例
另外,'hostname-I'
绝对不适合在所有情况下设置ROS_IP变量。所以这也可能是你问题的一个根源
从主机名手册页
-一、 --所有ip地址>
显示主机的所有网络地址。此选项枚举所有网络接口上的所有配置地址。环回接口和IPv6链路本地地址被省略。与选项-i相反,此选项不依赖于名称解析。不要对订单进行任何假设
输出
您需要使用任何特定的ip地址,所以只需使用该地址或找到更好的方法来确定要设置的ipecho$ROS_IP
或printenv | grep ROS
将告诉您当前设置了哪些变量,以便您可以验证设置是否正确
要获得工作正常的最低限度证明,您可以尝试以下方法:
假设您的RPi ip为192.168.0.2,PC ip为192.168.0.3
您需要决定哪台机器将成为主机,在本例中,我假设PC将成为主机
在电脑的终端上运行以下命令:
roscore
在另一个终端运行中(这是用来代替订阅者/发布者节点来测试工作是否正常的)
rostopicpub/test/topic std_msgs/String'Hello World from PC'-r 1
现在,在RPi运行的SSH终端上:
导出ROS\u主URI=http://192.168.0.3:11311 &&出口ROS_IP=192.168.0.2
现在,您应该能够从SSH窗口回显PC上发布的主题
rostopic回波/测试/主题
ctrl+c退出echo,您可以尝试在RPi上发布一些消息,如:
rostopicpub/test2/topic std\u msgs/String“来自RPi的Hello World'-r 1
现在在PC上打开一个新的终端,并尝试回应RPi中的主题,任何来源于ROS installspace的终端,通常source/opt/ROS/kinetic/setup.bash
,都应该可以工作:
rostopicecho/test2/topic
在我在RPi(主控)中明确设置了ROS_IP
后,它工作了。非常感谢你!