首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >树莓派不能订阅ros主题发布在基础个人电脑,但反过来说是有效的?

树莓派不能订阅ros主题发布在基础个人电脑,但反过来说是有效的?
EN

Stack Overflow用户
提问于 2019-12-28 14:16:58
回答 2查看 970关注 0票数 0

我正在使用无所不在的机器人Raspberry Pi 图像的RPi 3B+,这是Ubuntu和ROS运动。我的基本计算机正在运行Ubuntu18.04,并安装了ROS旋律。我在基本PC中创建了subo_base工作区,在RPi中创建了subo_rpi工作区(通过ssh评估RPi )。然后,我在基本PC和RPi中创建了一个包,并在每个包中添加了发行者和订阅者(http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29)文件。当我从RPi运行发布服务器时,基本PC可以订阅,但是当我从基本PC发布时,RPi不会显示任何输出,并且仍然会停滞不前(即使主题在使用rostopic list的RPi上是可见的)。

Base能够订阅RPi

RPi无法从PC订阅主题

其中一些代码用于基本PC。

代码语言:javascript
复制
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

代码语言:javascript
复制
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可能不是问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-30 15:27:43

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

我不喜欢在变量中使用主机名,所以我将只使用IP给出示例。

而且,'hostname -I'显然不适合在所有情况下设置ROS_IP变量。所以这也可能是你问题的根源之一。

从主机名手册页

-I,-全ip地址> 显示主机的所有网络地址。此选项枚举所有网络接口上的所有配置地址。省略了回环接口和IPv6链路本地地址.与选项-i相反,此选项不依赖于名称解析。不要对输出的顺序做任何假设。

您将希望使用任何您需要的特定ip地址,所以只需使用该地址或找到更好的方法来确定要设置的ip地址。echo $ROS_IPprintenv | grep ROS将告诉您当前设置的变量是什么,这样您就可以验证它的设置是否正确。

为了获得最起码的证据来证明事情正在进行,您可以尝试以下方法:

假设您的RPi ip为192.168.0.2,PC ip为192.168.0.3

您将需要决定哪台机器将是主计算机,在本例中,我将假设PC将是主计算机。

在PC上的终端中,运行以下命令: 在不同的终端运行中使用roscore (用它代替订阅服务器/发布节点来测试是否有效) rostopic pub /test/topic std_msgs/String 'Hello World from PC' -r 1现在位于RPi运行的SSH终端上: export ROS_MASTER_URI=http://192.168.0.3:11311 && export ROS_IP=192.168.0.2现在您应该能够从SSH窗口回显在PC上发布的主题。 rostopic echo /test/topic ctrl+c退出回显,您可以尝试在RPi上发布如下消息: rostopic pub /test2/topic std_msgs/String 'Hello World from RPi' -r 1现在在PC上打开一个新的终端,并尝试从RPi中响应这个主题,任何来自ROS安装空间的终端(通常是source /opt/ros/kinetic/setup.bash )都应该可以工作: rostopic echo /test2/topic

在多台机器上运行ROS的ROS wiki页面

关于设置多台机器的ROS回答

票数 1
EN

Stack Overflow用户

发布于 2022-04-08 19:31:17

ROS1

Machine1主服务器

  • 将运行roscore,但在配置完成之前不要运行它。
  • 有一个192.168.1.10的IP。

1-在终点站运行以下命令:

1.1- export ROS_MASTER_URI=http://192.168.1.10:11311.

1.2- export ROS_IP=192.168.1.10.

现在,运行roscore

Machine2从机

  • 不会运行roscore
  • Has和IP 192.168.1.15

1-在终点站运行以下命令:

1.1- export ROS_MASTER_URI=http://192.168.1.10:11311.

1.2- export ROS_IP=192.168.1.15.

2-现在,你已经和大师相连了。

ROS2

ROS2将在没有任何配置的情况下在局域网上填充信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59511691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档