十大农业网站,做网站买域名要买几个后缀最安全,开网站做网站,北京到安阳火车票多主站ROS配置和mutimaster_fkie
ROS版本#xff1a;kinetic
操作系统#xff1a;Ubuntu 16.04。
multimaster_fkie#xff1a;github
1网络配置
1.1路由器
设置无线路由器并连接两台计算机/机器人。为这两台计算机设置静态IP地址。相互测试ping命令和ssh。
1.2主机
…多主站ROS配置和mutimaster_fkie
ROS版本kinetic
操作系统Ubuntu 16.04。
multimaster_fkiegithub
1网络配置
1.1路由器
设置无线路由器并连接两台计算机/机器人。为这两台计算机设置静态IP地址。相互测试ping命令和ssh。
1.2主机
我们将计算机0定义为主计算机C0将计算机1定义为客户端计算机C1。
在C0和C1上备份其/ etc / hosts文件并修改这些文件以注册其IP地址。
注意最好使用计算机名作为C0和C1的主机名。在这里“计算机名称”是/ etc / hosts文件中“ 127.0.1.1”旁边出现的名称。ROS和multimaster_fkie的node_manager以不同的方式对待不同种类的“主机名”。只是不要尝试“配置”它们。您最好再次检查/ etc / hostname的内容是否与/ etc / hosts中的名称一致。
一个/ etc / hosts文件示例如下图1所示。现在让我们使用我自己的计算机作为C0主机名yyhu-live。客户端计算机为C1主机名ai-airlab。
图1 C0上的/ etc / hosts文件示例。↑yyhu-live是我的计算机的主机名。127.0.0.1和192.168.5.101被分配了相同的主机名。
从两端使用新定义的主机名对C0和C1进行ping操作。
1.3 ROS网络
本节主要通过参考pdf组成。“ Sergi Hernandez Juan和Fernando Herrero Cotarelo的“多主ROS系统”
在每台计算机上将此行放入其.bashrc文件中。 export ROS_MASTER_URIhttp://yyhu-live:11311要通过SSH使用ROS在Ubuntu 16系统上用户必须在其.bashrc文件中注释以下行如图2所示。请参见此处。multimaster_fkie的官方网站也提到了此问题。
图2 .bashrc文件中要注释的行。第6至9行↑ 在每台计算机上使用以下命令检查是否启用了多播功能。 cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts在每台计算机上使用以下命令暂时启用多播功能。 sudo sh -c echo 0 /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts要永久启用多播功能请编辑/etc/sysctl.conf文件添加以下行。 net.ipv4.icmp_echo_ignore_broadcasts0并使用以下命令重新启动相关服务。 sudo service procps restart使用此命令显示当前定义的多播组。通常应该有一个224.0.0.1组。 netstat -g使用此命令查看是否所有计算机都响应广播。 ping 224.0.0.11.4测试多主ROS网络的可用性
在C0上启动roscore然后启动master_discovery节点。终端输出如图3所示。 rosrun master_discovery_fkie master_discovery _mcast_group:224.0.0.1图3在C0上启动master_discovery节点后的终端输出。↑
在C1上请使用不同的节点名称启动相同的节点。参考。 rosrun master_discovery_fkie master_discovery _mcast_group:224.0.0.1 __name:master_discovery_ai注意name参数前有两个下划线。
如果节点名称相同则C0将抱怨这种情况并自行终止。
在C0上启动master_sync节点终端输出如图4所示。 rosrun master_sync_fkie master_sync图4启动master_sync节点号C0后的终端输出。↑
在C1上启动具有不同节点名的 master_sync节点。 rosrun master_sync_fkie master_sync __name:master_sync_ai目前每个master_sync节点都应打印同步信息。此信息将在几秒钟的间隔内刷新。
通过每台计算机上的“ rostopic列表”和“ rosnode列表”列出当前主题和节点应该会看到相同的结果。如图5所示。 图5主题和节点列表。在C0上执行。↑
如果一切正常现在让我们尝试发布和订阅真实数据。在两台计算机中的任何一台上使用以下命令启动一个匿名节点。 rostopic pub -r 1 /test std_msgs/Int32 1上面的命令将启动一个匿名节点并发布一个名称为“ / test”的主题。此节点每秒将发布一个Int32类型值1。现在使用“ rostopic列表”和“ rosnode列表”查看新主题和节点是否存在。结果将类似于图6。 图6新的匿名节点。↑
如果/ test在C1上请使用 rostopic hz /test在C0上查看C0是否真的可以接收任何实际数据。结果如图7所示。 图7对ROS主题的频率测试。↑
2个node_manager GUI
现在我们已经配置了一个有效的多主ROS网络我们可以使用node_manager GUI可视化ROS网络中节点的信息并与这些节点进行交互。
2.1准备一个测试ROS节点
我们将测试node_manager的一些功能这需要一个示例ROS节点才能使用。
创建一个简单的ROS节点。该节点将仅每秒发布一次字符串消息。该节点是用Python编写的应该准备启动文件。关联的ROS软件包称为“ test_pub”而Python脚本称为“ simple_pub.py”。脚本和启动文件可以在这里找到。
由于node_manager严重依赖于名为“ screen”的工具因此我们必须将其安装在系统中。
目前任何ROS节点都应在“屏幕”中启动。node_manager假定“屏幕”具有与ROS节点的“名称”相关联的特定“名称”。在“屏幕”中启动ROS节点时我们必须明确指定“屏幕名称”和“ ROS节点名称”。以test_pub包为例我们使用以下命令启动其ROS节点由于已配置了系统范围的ROS_MASTER_URI因此需要在C0上运行roscore。 screen -S _simple_pub_launch -dm roslaunch test_pub simple_pub.launch其中“ screen”的-S参数指定“ screen”的名称而“ screen”的-dm参数告诉“ screen”以分离模式启动并执行指定为其余命令行参数的命令。注意-S参数和“屏幕”的名称之间有一个空格字符。一旦发出此命令就可以使用 screen -ls查看启动是否正常以及“屏幕”的名称是否正确设置。
将此示例节点存储在C1上以备后用。
2.2测试node_manager
现在停止C0和C1上所有正在运行的节点让roscore在C0上运行。在C0上通过以下方式启动node_manager node_manager如图8所示将显示node_manager的GUI。 图8 node_manager。↑
目前“ ROS网络”面板左上角图8中的1显示没有启用的网络。这是因为网络中没有运行master_discovery节点。在“ {SYSTEM}”叶图8中的2下只有其他两个ROS节点在运行。我们通过单击“ ROS网络”面板上的“开始”按钮图8中的3来启用网络。然后我们将看到“开始发现”对话框窗口如图9所示。 图9“开始发现”对话框窗口。↑
将所有内容保留为默认值“ MCast组”除外然后单击“确定”。一个新的master_discovery节点图10中的1将显示在{SYSTEM}叶子下而新启用的ROS网络id0将显示在“ ROS Network”面板中图10中的2。图10显示了此视图。 图10 master_discovery节点已启动。↑
现在我们可以使用图111中所示的按钮启动master_sync节点。 图11在node_manager中启动master_sync节点。↑
然后此按钮更改其颜色并启动一个新的master_sync节点图11中的2。
为了让ROS网络发现新的客户端我们必须在客户端上手动启动master_discovery节点本例中为C1。在C1上使用“其他”节点名称在“屏幕”内启动新的master_discovery节点。如图12所示我们将看到C1的信息。 screen -S _master_discovery_ai -dm rosrun master_discovery_fkie master_discovery _mcast_group:224.0.0.1 __name:master_discovery_ai图12 master_discovery节点在远程客户端上启动。↑
如果master_discovery节点成功启动我们可以在node_manager中看到其信息。
现在我们可以通过以下方式在C1上启动示例节点 screen -S _simple_pub_launch -dm roslaunch test_pub simple_pub.launch启动后C0上的node_manager将显示其信息如图131所示。 图13在远程计算机上启动的/ simple_pub_launch节点。↑
我们可以使用node_manager提供的工具图13中的2在C0上打开SSH会话以访问在C1上运行的“屏幕”。选择“ yyhu-live ai-airlab [http// yyhu-live11311 /]”下的任何节点单击按钮图13中的2或使用快捷方式“ F3”启动到SSH会话。包含该节点的“屏幕”。将弹出一个对话框如图14所示以请求SSH会话的用户名和密码。用户可能必须在打开的SSH会话中第二次输入他/她的密码。 图14 SSH登录对话框。↑
使用“ Ctrl ad”分离并关闭此窗口。
在C1上用户可以使用 screen -ls签出“屏幕”列表。
在C0上用户可以通过单击node_manager的GUI左侧的“停止选择的服务”按钮图13中的3来停止/ simple_pub_launch节点。单击后将终止C1上的“屏幕”进程命令“ rosnode list”将不显示/ simple_pub_launch的迹象。
2.3 default_cfg
现在用户仍然必须手动在C1上在“屏幕”中启动ROS节点以使node_manager看到并与其交互。实际上multimaster_fkie提供了一种在远程客户端中启动节点的方法。这是通过default_cfg节点实现的。
default_cfg节点需要启动文件。在该启动文件中用户列出了他/她希望让C0上的node_manager管理的所有节点。default_cfg节点提供了一些其他功能例如自动启动和重生延迟启动和条件启动。鼓励用户查看官方文档以了解所有可能的功能。
使用我们的test_pub包我们为default_cfg组成了一个新的启动文件如图15所示。 图15 default_cfg节点的test_pub启动文件。↑
请注意我们为simple_pub_launch节点在此启动文件中配置的ROS节点名称配置了延迟的自动启动。然后我们准备了另一个启动文件如图16所示用于启动default_cfg本身文件名为“ default_cfg_test.launch” 。 图16启动文件以启动default_cfg本身。↑
在此启动文件中我们启用了自动启动功能并告知defualt_cfg要启动的节点的信息。然后我们可以像往常一样使用“屏幕”启动default_cfg。 span stylecolor:#111111codescreen -S _default_cfg -dm roslaunch default_cfg_fkie default_cfg_test.launch
/code/span 然后如图17所示在C0上我们可以看到有两个新节点被启动。 图17在远程客户端上启动的defult_cfg。↑
如果我们可以快速操作计算机或设置较大的延迟时间来自动启动则可以看到/ simple_pub节点在请求的延迟后被启动如图15所示的启动文件中所示。
现在用户可以通过单击C0上的node_manager的“开始选择的服务”和“停止选择的服务”按钮图13中的4和3来停止或重新启动ROS节点以远程控制该节点。
2.4其他
要停止整个ROS网络请退出node_manager并停止roscore请使用节点面板较大的红叉上的红叉按钮请参见图18。单击后“ Close / Stop / Shutdown”关闭/停止/关闭对话框将显示在最前面如图19所示。选择“ stop ROS”以同时退出roscore。请注意选择“关闭主机”将关闭C0计算机。 图18较大的红叉。↑ 图19“关闭/停止/关闭”对话框。↑