MOOS-ivp 实验八 多水下机器人作业(2)
下面的实验主要需要的任务模块是uField模块,接下里先对这个模块进行讲解和说明。
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
四、pShare详解
消息发布步骤:
(1)使用者点击DEPLOY按钮
(2)DEPLOY=true,被pMarineViewer发布到MOOSDB中去
(3)Shoreside在其收件箱中看到DEPLOY的消息,然后向配置的目标发送消息
(4)车辆的pShare发布DEPLOY=true给车辆的MOOSDB
(5)helm收到消息之后启动车辆按照配置执行
上图是pShare的配置图,标注的指示为发送变量名称、目标机器的IP地址、目标机器的端口号
配置接受信息,只需要配置接受的端口号即可。
shoreside和vehicle的通讯是双向的,下面图展示了两个分别的pShare的配置块:
接受vehicle端口为9000发布的消息,发布控制和命令的消息到端口9200
接受端口为9200的消息,发布车辆状态的消息到端口9000
可以对发布到目标机器的变量进行重新命名,前面是本地名称,后面是变量发布到目标机器里的名称。
重命名的作用使得可以分别给不同IP的机器发送指令而不用担心重合,也可以分发一个指令给所有的机器。
如果要对指令初始化的指令进行修改的话,可以使用以下命令:
PSHARE_CMD=“cmd=output,src_name=DEPLOY_KEVIN,dest_name=DEPLOY,route=192.168.1.6:9200”
那么原始配置里就会扩充上这一句:
五、The uField Toolbox 概览
The uField Toolbox是什么呢?
你可以将其看作是十几MOOSapp的合集,每一个应用程序都是用来部署岸基、高级指挥中心的,并对车辆进行命令发布和控制。
更详细的内容可以通过网站ufield来进行查看
The uField Toolbox主要由以下三个内容组成:
(1)多个MOOSDB的Share配置
(2)模拟车辆之间的消息传递
(3)传感器模拟
该图包含了The uField Toolbox所包含的主要内容模块,并且我们会在在下面的实验中对其进行操作。
1.自动简化pShare的配置
初始条件:
(1)所有的车辆都在联网中、Internet或者局域网
(2)shoreside不知道有哪些车辆以及其位置
(3)vehicle知道shoreside的IP地址
下图展示了vehicle和shoreside之间的联系:
(1)机器自动发现自己的IP地址
(2)机器向shoreside进行ping,发布其机器名称、IP地址以及端口号
(3)shoreside更新其对于新机器的pShare的配置
(4)shoreside发布确认信息,证明收到机器的ping
(5)机器接受的到shoreside的确认信息,更新自己的pShare配置并且允许与shoreside进行通讯。
2.自动pShare配置的工具
(1)pHostinfo
一个MOOSapp,作用是自动确认本地机器的IP地址,并且将其发布到MOOSDB中。一旦启动之后,pHostinfo将会作出以下行动:
1.自动决定机器的地址
2.发布结果到PHI_HOST_IP
3.使用可用的操作系统工具发现自己的IP地址(没看懂啥意思)
4.有时机器可能会有许多个网络接口
5.有时候pHostinfo也会猜错
6.uFldNodeBroker使用此信息来启动与Shoreside的连接。
具体配置如图:
PHI_HOST_IP = 118.10.24.23
PHI_HOST_IP_ALL = 118.10.24.23,169.224.126.40
PHI_HOST_PORT_DB = 9000
PHI_HOST_IP_VERBOSE = OSX_ETHERNET2=118.10.24.23,OSX_AIRPORT=169.224.126.40
(2)uFldShoreBroker
uFldShoreBrokeris 的主要功能是在收到来自该社区的 ping 后与远程节点社区建立桥接关系。这些变量在配置块中使用像bridge = "src=DEPLOYALL, alias=DEPLOY"这样的行指定。
uFldShoreBrokeris 的基本工作是等待传入的 ping,并使用 ping 消息中的信息来 (a) 决定是否应该接受 ping,以及 (b) 将适当的响应发送回发送者,以及 © 设置新的传出 pSharerelationships如果确实接受了ping。
最简单的桥接安排指定 (a) 本地已知的变量,以及 (b) 远程已知的变量名称。这是通过 auFldShoreBrokerconfiguration 行完成的,类似于
//Posts (received on the Shoreside)
NODE_BROKER_PING = community=henry,hostip=192.168.1.1,port_db=9000,
pshare_iroutes=192.168.1.1:9200,timewarp=8
//Replies sent from shoreside with information about the shoreside community.
NODE_BROKER_ACK = community=shoreside,hostip=192.168.1.199,port_db=9000,
pshare_iroutes=192.168.1.199:9300,timewarp=8,status=ok
//Augments the local pShare configuration
PSHARE_CMD = src_name=DEPLOY_HENRY,dest_name=DEPLOY,route=192.68.1.199:9300
(3)uFldNodeBroker
一个MOOSapp,作用是监听传入节点、通知节点最近的shoresideIP地址和pShare的输入路径、自动配置本地的输出路径。一旦启动之后,会做出下面的动作:
1.等待pHostInfo发布自己的IP地址
2.向Shoreside发布NODE_BROKER_PING,从列表中猜测Shoreside的IP地址
3.然后等待Shoreside以NODE_BROKER_ACK的形式发出确认
4.相应的调整自己的pShare配置
bridge = src=DEPLOY_ALL, alias=DEPLOY
bridge = src=DEPLOY_$V, alias=DEPLOY//与包含宏的形式进行连接
bridge = src=DEPLOY_ALL, alias=DEPLOY
bridge = src=DEPLOY_$V, alias=DEPLOY
bridge = src=RETURN_ALL, alias=RETURN
bridge = src=RETURN_$V, alias=RETURN
这可以在岸边社区中用于轻松指挥车辆。当用户希望部署所有车辆时,发布 DEPLOY_ALL=“true” 即可。
如果用户只希望JAMES车辆返回,则可以发布RETURN_JAMES=“true”。这种模式非常普遍,以至于支持这种快捷方式。
bridge = src=DEPLOY_ALL, alias=DEPLOY
bridge = src=DEPLOY_$V, alias=DEPLOY
bridge = src=RETURN_ALL, alias=RETURN
bridge = src=RETURN_$V, alias=RETURN
这是通过 qbridge,“快速桥接”,参数完成的。可以通过以下方式完成上述四行配置:
qbridge = DEPLOY, RETURN
六、The Berta Mission
1.找到任务
可以在如下路径中找到任务模板文件,我们接下来的实验是在对该模板进行修改之后实现的
cd ivp/missions/m2_berta
./launch.sh 10
运行之后效果如图
2.启动任务
可以通过同时启动三个.moos文件启动任务
cd ivp/missions/m2_berta
pAntler shoreside.moos --MOOSTimeWarp 10
pAntler henry.moos --MOOSTimeWarp 10
pAntler gilda.moos --MOOSTimeWarp 10
当然更好的办法是通过launch脚本来进行启动,后面的10指的是wrap=10,仿真的速度为10倍速。
cd ivp/missions/m2_berta
./launch.sh 10```
3.使用Plug来快速配置
在进行多车配置的时候,很多行为块是相似的,仅仅是个别的坐标位置或者路线不同。这是可以使用plug来在脚本中对其进行快速配置。以plug开头的文件都是模板。我们可以在launch.sh文件中对其参数进行修改,生成新的moos文件。
下图是launch.sh文件中的相关快速生成的代码
nsplug meta_vehicle.moos targ_$VNAME1.moos -f WARP=$TIME_WARP \
VNAME=$VNAME1 START_POS=$START_POS1 \
VPORT="9001" SHARE_LISTEN="9301" \
VTYPE="kayak" SHORE_LISTEN=$SHORE_LISTEN
使用nsplug命令,在运行时生成新的.moos文件,但是初始参数的配置是由下面的信息进行设置的。这样一来的话,就可以对多个vehicle的bhv和moos文件进行配置了。
总结
今天主要是讲解了一些相关uField Toolbox 和pShare的资料,因为下面的实验展开需要用到相应的知识。下面进行的实验主要集中在对launch.sh文件进行初始配置,以及修改一些相关的.moos模板文件的配置。通过这些来实现实验要求。