Ssh Raspberry Pi无法订阅从基本PC发布的ros主题,但反之亦然?

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不显示任何输出,并

我正在使用泛素促甲状腺激素树莓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不显示任何输出,并且仍然卡住(即使使用
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'

此外,我能够通过ssh
scp
将文件从基本PC传输到基本PC,所以我想netwkr可能不是问题所在

问题很可能是主机名解析和/或ROS网络变量配置

我不喜欢在变量中使用主机名,因此我将给出仅使用IP的示例

另外,
'hostname-I'
绝对不适合在所有情况下设置ROS_IP变量。所以这也可能是你问题的一个根源

从主机名手册页

-一、 --所有ip地址>

显示主机的所有网络地址。此选项枚举所有网络接口上的所有配置地址。环回接口和IPv6链路本地地址被省略。与选项-i相反,此选项不依赖于名称解析。不要对订单进行任何假设 输出

您需要使用任何特定的ip地址,所以只需使用该地址或找到更好的方法来确定要设置的ip
echo$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
后,它工作了。非常感谢你!