概述
MOOS-ivp 实验八 多水下机器人作业(1)pShare初步讲解
不知不觉,实验已经来到了第八个,也进入到了有一定难度的各种模块的学习。接下来主要讲解的就是多机器人作业的相关内容。
文章目录
- MOOS-ivp 实验八 多水下机器人作业(1)pShare初步讲解
- 前言
- 一、提前准备
- 1.The Shoreside (Topside) / Vehicle Topology
- 二、任务1-用pShare来配置pXReady
- 1.任务目标
- 2.复制pxready任务
- 2.将xrelay任务分成两个独立的MOOS社区
- 3.启动两个社区,并确认共享有效
- 三、The Alpha pShare Mission
- 1.复制alpha任务
- 2.把alpha任务拆分为两个独立的MOOS社区
- 3.配置.moos文件
- 4.pShare格式
- 5.运行显示
- 总结
前言
在今天的实验中,我们将我们的关注点放在水下机器人的多机器人作业的配置中去,我们的第一个关注点就是两个独立运行的MOOSDB进程之间如何进行交流,其中每个MOOSDB都跟一个独立的水下机器人链接。最后,可能会顺便学习一下关于声学传感和铱星连接的相关内容。我们最初的主要目的还是放在网络连接上,虽然有很多节点运行在我们的笔记本中。
我们需要对下面这些模式非常熟悉,这对我们以后的实验和水下机器人的操作至关重要。
(1)沿岸以及车辆的拓扑结构(Shoreside / Vehicle Topology)(这是啥?我也不懂。。。)
(2)通过xrelay任务来认识pShare
(3)使用Shoreside / Vehicle Topology来转换Alpha任务
(4)使用辆车辆任务的pShare来转换Alpha任务
(5)使用uField工具箱来简化pShare配置
提示:以下是本篇文章正文内容,下面案例可供参考
一、提前准备
1.The Shoreside (Topside) / Vehicle Topology
下图描述了本实验中使用的MOOS社区的布局。这个布局将在剩余的学习中被使用,包括在河面上的操作。
可以从图上看到,有一定数量的车辆被部署在外面,它们和岸基都有一定程度的链接,通过岸基的指挥以及电脑的控制。每一个节点(岸基和车辆)都有一个专门的MOOS社区来组成。其沟通的模式和方式会有所不同。
二、任务1-用pShare来配置pXReady
今天试验的第一步就是熟悉pShare,在最初的几个任务里我们会在.moos文件中对pShare进行配置。后面的几个实验里,我们会使用uField工具箱来自动对share进行配置。
1.任务目标
在这个部分我们的任务是:
(1)复制一个xready文件
(2)创建两个.moos文件启动两个MOOSDB进程
(3)启动两个社区并且确保两个社区之间使用pshare进行共享
2.复制pxready任务
代码如下(示例):
cp -rp moos-ivp/ivp/missions/xrelay moos-ivp-janedoe/missions/lab_08/xrelay_pshare
或者直接从moos-ivp文件中找到相关目录进行复制。
最开始的文件夹中只有一个.moos文件,文件里配置了两个pxready应用程序,分别是苹果和梨。
打开.moos文件看一下,就知道。
我们需要把这个转换成为两个任务文件,每个都能发布一个MOOSDB,每个社区都有自己的名字,大概情况如下图所示:
新的xrelay任务包含两个MOOSDBs,每个都有自己的pXRelay应用程序。pXRelay应用程序不需要唯一命名,但是MOOS社区是唯一命名的。
2.将xrelay任务分成两个独立的MOOS社区
最初配置的xrelay任务推出了三个重要的应用程序。MOOSDB和两个pXRelay应用程序。在本实验中,您将创建两个。moos文件,每个文件都启动了一个MOOSDB和一个pXRelay应用程序。您还需要在每个社区推出pShare应用程序。
只需在命令行上键入“pShare - help”,就可以找到一些关于pShare的快速文档。或者可以在这里找到更完整的文档:
pshare
pShare配置块类似于:
代码如下(示例):
ServerHost = localhost
ServerPort = 9000
Community = apples
ProcessConfig = pShare
{
AppTick = 4
CommsTick = 4
input = route = localhost:9200
output = src_name=APPLES, route=localhost:9201
}
请注意,pShare监听的端口与MOOSDB服务的端口不同。(就是ServerPort和localhost不能相同)请记住,相同的共享配置对双方都无效。它们必须在共享的变量名、共享输入路由、目的主机IP和端口号方面相互补充。(两个.moos文件中的pshare端口号应该相互补充的状态,但是两个文件的ServerPort应该保持一致,确保在一个服务器中)
新的xrelay任务需要将pShare配置为以互补的配置共享APPLES和PEARS消息。
3.启动两个社区,并确认共享有效
使用两个单独的终端窗口,启动两个MOOS社区,并确认修改后的xrelay任务像以前一样工作。我们仍然需要发布一个信息到其中一个社区,来让任务进行下去。
需要注意的三个点:
(1)确保每一端共享输入路由中指定的端口与另一端的目的端口匹配,反之亦然
(2)请确保使用的端口号与MOOSDB端口号不同。
(3)试试用uPokeDB随便发布信息一下,测试一下pshare是否好用。我们先发布一个APPLES=99 试试效果
下面是我写的两个.moos文件的相关配置,分别命名为xready1和xready2
xready1
ServerHost = localhost
ServerPort = 9000
Community = apples
//------------------------------------------
// Antler configuration block
ProcessConfig = ANTLER
{
MSBetweenLaunches = 200
Run = MOOSDB @ NewConsole = false
Run = pLogger @ NewConsole = false
Run = pXRelay @ NewConsole = true ~ pXRelay_APPLES
Run = pShare @ NewConsole = false
Run = uXMS @ NewConsole = true
}
//------------------------------------------
ProcessConfig = pShare
{
AppTick = 4
CommsTick = 4
input = route = localhost:9200
output = src_name=APPLES, route=localhost:9201
}
//------------------------------------------
// pLogger config block
ProcessConfig = pLogger
{
AsyncLog = true
WildCardLogging = true
}
//------------------------------------------
// pXRelay_APPLES config block
ProcessConfig = pXRelay_APPLES
{
AppTick = 1
CommsTick = 1
INCOMING_VAR = APPLES
OUTGOING_VAR = PEARS
}
//------------------------------------------
// uXMS config block
ProcessConfig = uXMS
{
AppTick = 4
CommsTick = 4
PAUSED = false
DISPLAY_SOURCE = true
DISPLAY_TIME = true
DISPLAY_COMMUNITY = true
VAR = APPLES
VAR = PEARS
VAR = APPLES_ITER_HZ
VAR = PEARS_ITER_HZ
VAR = APPLES_POST_HZ
VAR = PEARS_POST_HZ
}
xready2
ServerHost = localhost
ServerPort = 9001
Community = pears
//------------------------------------------
// Antler configuration block
ProcessConfig = ANTLER
{
MSBetweenLaunches = 200
Run = MOOSDB @ NewConsole = false
Run = pLogger @ NewConsole = false
Run = pXRelay @ NewConsole = true ~ pXRelay_PEARS
Run = pShare @ NewConsole = false
Run = uXMS @ NewConsole = true
}
//------------------------------------------
ProcessConfig = pShare
{
AppTick = 4
CommsTick = 4
input = route = localhost:9201
output = src_name=PEARS, route=localhost:9200
}
//------------------------------------------
// pLogger config block
ProcessConfig = pLogger
{
AsyncLog = true
WildCardLogging = true
}
//------------------------------------------
// pXRelay_APPLES config block
ProcessConfig = pXRelay_PEARS
{
AppTick = 1
CommsTick = 1
INCOMING_VAR = APPLES
OUTGOING_VAR = PEARS
}
//------------------------------------------
// uXMS config block
ProcessConfig = uXMS
{
AppTick = 4
CommsTick = 4
PAUSED = false
DISPLAY_SOURCE = true
DISPLAY_TIME = true
DISPLAY_COMMUNITY = true
VAR = APPLES
VAR = PEARS
VAR = APPLES_ITER_HZ
VAR = PEARS_ITER_HZ
VAR = APPLES_POST_HZ
VAR = PEARS_POST_HZ
}
分别启动并发布一条消息
uPokeDB APPLES=99 xrelay2.moos
可以看到结果
说明两个moos社区的消息已经共享了。
三、The Alpha pShare Mission
这一部分的任务是:
(1)准备一份阿尔法任务的副本进行实验。
(2)创建两个.moos文件来启动两个MOOSDB进程。
(3)使用pshare来用两个MOOS社区来实现alpha任务
(4)部署两个社区,确认分享成功
1.复制alpha任务
cp -rp moos-ivp/ivp/missions/s1_alpha moos-ivp-janedoe/missions/lab_08/alpha_pshare
在文件夹里我们需要创建两个分离的MOOS社区:岸基社区和 alpha水下航行器社区。在岸基社区里,我们需要有MOOSDB和pMarineViewer。在这两个社区里都需要添加pShare配置块,并且将pShare配置添加到Antler配置块中。
这里主要问题是怎么给给每个方向的共享配置变量。
2.把alpha任务拆分为两个独立的MOOS社区
这一步需要创建两个独立的MOOS社区shoreside.moos以及alpha.moos。shoreside.moos里需要包含 MOOSDB and pMarineViewer。alpha.moos里需要包含除了pMarineViewer以外的所有模块。如何进行配置呢?
这里给一个提示:从车辆到岸基需要共享一个NODE_REPORT变量,这个变量由配置块pNodeReporter发布,其中包含了许多关于车辆的信息,并且由pMarineViewer使用对车辆进行渲染。在车辆上生成叫NODE_REPORT_LOCAL到达岸基上称为NODE_ REPORT。大概配置格式如下:
output = src_name=NODE_REPORT_LOCAL, dest_name=NODE_REPORT, route=localhost:9200
我们还需要分享两个变量:VIEW SEGLIST and VIEW POINT来给pMarineViewer一个模拟的反馈量。
3.配置.moos文件
首先我们需要对shoreside.moos文件进行相应配置。需要将其中的pMarineViewer配置块单独拿出来,并且加上pshare模块:
ServerHost = localhost
ServerPort = 9005
Community = shoreside
MOOSTimeWarp = 20
TERM_REPORTING = true
LatOrigin = 43.825300
LongOrigin = -70.330400
//------------------------------------------
// Antler configuration block
ProcessConfig = ANTLER
{
MSBetweenLaunches = 200
Run = MOOSDB @ NewConsole = false
Run = pMarineViewer @ NewConsole = false
Run = pShare @ NewConsole = false //增加这部分内容
}
//------------------------------------------
// pShare config block
ProcessConfig = pShare //增加对pshare的配置
{
AppTick = 4
CommsTick = 4
input = route = localhost:9201
ooutput = src_name=MOOS_MANUAL_OVERRIDE, route=localhost:9200
output = src_name=DEPLOY, route=localhost:9200 //发送MOOS_MANUAL_OVERRIDE、DEPLOY和RETURN的相关状态
output = src_name=RETURN, route=localhost:9200
}
下面需要对alpha.moos任务文件进行修改,需要发送的消息是NODE_REPORT_LOCAL以及VIEW_SEGLIST、VIEW_POINT相关的消息:
ServerHost = localhost
ServerPort = 9005
Community = alpha
MOOSTimeWarp = 20
TERM_REPORTING = true
// Forest Lake
LatOrigin = 43.825300
LongOrigin = -70.330400
// MIT Sailing Pavilion (use this one)
// LatOrigin = 42.358456
// LongOrigin = -71.087589
//------------------------------------------
// Antler configuration block
ProcessConfig = ANTLER
{
MSBetweenLaunches = 200
Run = MOOSDB @ NewConsole = false
Run = pLogger @ NewConsole = false
Run = uSimMarine @ NewConsole = false
Run = pMarinePID @ NewConsole = false
Run = pHelmIvP @ NewConsole = false
Run = uProcessWatch @ NewConsole = false
Run = pNodeReporter @ NewConsole = false
Run = pShare @ NewConsole = false
}
//------------------------------------------
// pShare config block
ProcessConfig = pShare
{
AppTick = 4
CommsTick = 4
input = route = localhost:9200
output = src_name=NODE_REPORT_LOCAL, dest_name=NODE_REPORT, route=localhost:9201
output = VIEW_SEGLIST, route=localhost:9201
output = VIEW_POINT, route=localhost:9201
}
4.pShare格式
这里对pShare稍微做一个简单的解释:
Output:一个配置块中可以有需要的任意多的“输出”指令。输出指令的详细形式如下,其中各部分指令含义是
src_name:共享变量的名称
dest_name:它到达目的地时应有的名称(可选)。如果这个量不存在,则不会发生重命名。
route:对于路径的描述,可以以端口形式给出例如:port:udp,或者以muticast形式给出“multicast_X”。这个跟命令行配置很相似
Input
这个形式相比上面输出显得更为简单,只需要对接受路径进行配置即可。配置格式跟上面的route相同
上图是典型的格式配置
5.运行显示
任务跟之前的alpha任务完全相同,不过是由两个MOOS文件相互分享变量来执行的。
总结
今天这篇内容初步讲解了pshare的相关用法,并用一个xready的例子和alpha任务来进行展示。主要是对.moos文件进行相关的配置,接下来的内容是pshare的更进一步的讲解以及使用uField工具箱进行配置。
今天中午女朋友心情不好,打电话安慰了一中午,时间过得总是那么的快。而我自己也累得口干舌燥,与女人对话的过程不亚于学习一篇艰难的论文。你需要多角度多方面多情景下的互联互通,你得把共情能力发挥到极致,有时候甚至得发散思维并且在脑海中重新构建场景,更有时候得梦回纯真年代怀揣童心幻想未来。一套心理大保健下来,仿佛身体被掏空~。在这里,我坚信我的女朋友肯定不会看我写的技术性文章,所以哥怀揣大无畏精神写下这段话,看看究竟什么时候被发现了去跪搓衣板。牛批的人生,就是这么的无所畏惧!
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
最后
以上就是疯狂路灯为你收集整理的MOOS-ivp 实验八 多水下机器人作业(1)pShare初步讲解MOOS-ivp 实验八 多水下机器人作业(1)pShare初步讲解前言一、提前准备二、任务1-用pShare来配置pXReady三、The Alpha pShare Mission总结的全部内容,希望文章能够帮你解决MOOS-ivp 实验八 多水下机器人作业(1)pShare初步讲解MOOS-ivp 实验八 多水下机器人作业(1)pShare初步讲解前言一、提前准备二、任务1-用pShare来配置pXReady三、The Alpha pShare Mission总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复