我目前正在尝试在基于Raspberry Pi的机器人和位于同一网络上的集群之间建立通信。尽管我能够使用另一台设备ping和SSH,但是当roscore在群集上运行时,我仍然无法初始化Raspicam节点(Ubiquiti Robotics节点)。另外,在完全相反的情况下(Roscore在Raspi上运行),我无法初始化ORB-SLAM节点(ORB-SLAM-ROSNode)。在这两种情况下都会显示以下错误:有没有人可以告诉我到底是怎么回事,是什么问题。另外,还有其他传输图像的方法(我正在尝试使用FLASK,但由于Raspicam发送H.264编解码器而OpenCV [VideoCapture()函数]无法解释数据,因此一切都失败了)。我听说过LCM(轻量级通信和编组)在使用LCM之前已经有人进行过此操作,或者是否有任何资源可以提供帮助。

编辑1:
所有工作都是在基于以太网的连接。我通过运行简单的教程进行了实验。请注意,在第一个实验中我在raspi上运行了roscore,并且“ rqt_graph”和“ rosnode list”命令在群集上运行良好。在第二次运行中,我在群集上运行了roscore,并通过在raspi上运行“ rqt_graph”和
“ rosnode list”再次进行了相同的实验,并且我能够在两个实验中看到所有rosnode。这是/.bashrc文件的屏幕截图。

评论

如果需要,请索取任何规格或我错过了任何规格!

#1 楼

与ROS master通讯
听起来您需要使用用户定义的环境变量指向ROS。我在~/.bashrc文件中定义了一组变量,这些变量定义了ROS的位置。这是我在运行roscore的设备上定义的:
# ROs
source /opt/ros/kinetic/setup.bash
# SOurce the local workspace
source /home/$USER/catkin_ws/devel/setup.bash
# Grab the machine IP addresses
machine_ip=(`hostname -I`)
rosport=':11311'
rosmasterbegin='http://'
# Now we set the ip location for roscore
export ROS_MASTER_URI=$rosmasterbegin${machine_ip[0]}$rosport
# This is the hostname of the current machine.
export ROS_HOSTNAME=${machine_ip[0]}
# This is the ROS distribution that we are running
export ROS_DISTRO=kinetic
# Sometimes you need to set ROS_IP for transforms and the parameter server
# https://answers.ros.org/question/163556/how-to-solve-couldnt-find-an-af_inet-address-for-problem/
export ROS_IP=${machine_ip[0]}

我建议您将Raspi上的ROS_MASTER_URI变量设置为运行roscore的集群到集群上hostname -I的输出。确保您使用正确的IP地址,因为您可能有很多地址(WiFi,以太网等)。仅仅因为您可以ping网络上的另一台计算机并不意味着可以找到ROS。如果您可以在问题中发布echo $ROS_MASTER_URIecho $ROS_HOSTNAME的输出,那将使更多的人可以为您提供帮助。我怀疑您使用的是默认环境变量,而它们对您不起作用。我建议您签出此链接以获取有关ROS环境变量的更多信息。

评论


$ \ begingroup $
我的rqt_graph和ros_node列表工作正常,所以我认为我的网络没有任何错误。当roscore在Raspi上运行时,我通过在远程PC上运行rqt_node来检查它,反之亦然。我检查了日志文件,它显示以下输出。我也运行了tcpdump,但是我没有确切的数据包信息(因为我在夏天正在研究它,所以我不能回到办公室来获取那些文件),但是问题与RPC XML服务器有关。
$ \ endgroup $
– DT1729
19年8月11日在22:05



$ \ begingroup $
哪台机器运行了这些命令?对于多机通信,您应该始终提及运行rqt_graph和rosnode列表或rostopic列表的机器。我不得不说,使用ROS来启动和运行Pis也是一个不平凡的过程。另外,这是Wifi还是以太网?更多信息将不胜感激。您的〜/ .bashrc文件是什么样的?
$ \ endgroup $
–robotsfoundme
19年8月11日在22:10



$ \ begingroup $
请检查问题中的编辑1。
$ \ endgroup $
– DT1729
19年8月11日在22:38

$ \ begingroup $
我看到您没有在〜/ .bashrc文件中采购本地catkin工作区。你在码头上吗?换句话说,您需要运行以下命令:source /path/to/my/catkin/workspace/devel/setup.bash
$ \ endgroup $
–robotsfoundme
19年8月11日在23:04



$ \ begingroup $
是的,当我在集群上运行orb slam节点时,但是我使用的是无处不在的机器人技术为树莓派提供的操作系统。优点是该节点已预先安装在操作系统中。注意:我在树莓派和群集上都使用了类似的.bashrc文件。
$ \ endgroup $
– DT1729
19年8月11日在23:07