MOOS-ivp 实验三 MOOS简介

标签: moos-ivp  linux

MOOS-ivp 实验三 MOOS简介

实验三主要包含三个实验目标:
1.moos发布-订阅结构体系
2.启动MOOSDB并且进行交互
3.日志记录器的运行与生成



前言

本次实验将会生成一个实验文件:pXRelayTest
然后对这个实验文件进行实验验证。

一、提前准备

1.确定文件路径已经添加完成

$ which MOOSDB
/Users/you/moos-ivp/bin/MOOSDB
$ which pHelmIvP
/Users/you/moos-ivp/bin/pHelmIvP

需要提前确定好是否搭建完成moos的路径,输入以上代码进行检查。

2.MOOS和MOOS-ivp的关系

MOOS-ivp是一个基于MOOS的更大模块的集合,它包含了牛津大学研发的moos的基本模块,并且还包含了MIT的其他架构和模块,以下是其关系的示意图:

在这里插入图片描述
可以看到这是一个层层包含的关系。

3.MOOS的架构

MOOS的架构是一种基于订阅-发布内容的架构。MOOSDB模块通过订阅和发布各个MOOSapp的内容来对其进行服务。具体结构如下图所示:
在这里插入图片描述
对于自主机器人来说,每一个机器人上都有一个MOOS community。一个MOOS community由一个MOOSDB和许多MOOSapp所组成。接下来要做的实验内容就是涉及到了MOOS community之间的通讯以及单个MOOS community内部的app的订阅和发布。
MOOSDB不同于常见的数据库,它只保存最近发布的MOOS变量。当一个新的app要发布时,必选向MOOSDB注册需要的邮件。在这个app启动时,会收到一封邮件,里面包含了注册变量的最新值。即使这个邮件里有很久之前对MOOSSDB的发布内容。但对于新发布的app来说之前的所有内容都是未知的。(讲道理,第一次看感觉不是很理解这里的讲解,后续搞懂了再详细写一写)

3.启动MOOS

MOOSDB可以直接从命令行里进行启动,启动之后界面如下所示:

root@ubuntu:~# MOOSDB
------------------- MOOSDB V10 -------------------
  Hosting  community                "#1"
  Name look up is                   off
  Asynchronous support is           on
  Connect to this server on port    9000
--------------------------------------------------
network performance data published on localhost:9090
listen with "nc -u -lk 9090"

正常MOOSDB需要两种参数,一种是运行机器的IP地址,另一种是服务客户端的端口参数。默认的话是主机的IP地址以及端口9000上运行。此时MOOSDB本身已经发布了一些变量,可以打开另一个终端用uXMS进行查看。输入第一行的命令,即可查看消息。

root@ubuntu:~# 
uXMS DB_CLIENTS DB_TIME DB_UPTIME --serverhost=localhost --serverport=9000
==============================================================
uXMS_581  0/0(154)
==============================================================
VarName  (S)ource  (T)ime (C) VarValue (SCOPING:EVENTS)
---------- --------- ------ --- -------------------------
DB_CLIENTS MOOSDB_#1 38.14  "uXMS_581,"
DB_TIME  MOOSDB_#1 38.14  1387380731.414707
DB_UPTIME  MOOSDB_#1 38.14  39.00859

如果想查看uXMS的具体内容 可以通过在命令行输入 s、t、c来分别查看源、时间、变量。如下图所示:

_301                                              1/0(469)
==============================================================
Configuration Warnings: 1
 [1 of 1]: Community/Vehicle name not found in mission file

VarName      (S)ource   (T)ime  (C)ommunity  VarValue (SCOPING:PAUSED)
-----------  ---------  ------  -----------  -------------------------
APPCAST_REQ   n/a        n/a                 n/a
DB_CLIENTS   MOOSDB_#1  80.49   #1           "uXMS_301,"
DB_TIME      MOOSDB_#1  80.49   #1           1601170133.257782
DB_UPTIME    MOOSDB_#1  80.49   #1           81.366143

4.最小配置启动MOOS

通过下载alpha.moos可以通过最小的配置来启动moos。需要先对其进行下载,原本命令没有忽略验证证书,但是会因为验证无法通过而报错,故做此改进:

wget --no-check-certificate http://oceanai.mit.edu/2.680/examples/moosdb_alpha.moos

启动之后可以得到以下配置:

root@ubuntu:~# MOOSDB moosdb_alpha.moos
------------------- MOOSDB V10 -------------------
  Hosting  community                "alpha"
  Name look up is                   off
  Asynchronous support is           on
  Connect to this server on port    9000
--------------------------------------------------
network performance data published on localhost:9090
listen with "nc -u -lk 9090"

5.MOOS scope

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

版权声明:本文为weixin_44151170原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44151170/article/details/108812281

智能推荐

实验三

实验三 用C#编写一个命令行/控制台hello world程序,实现如下功能:在屏幕上连续输出50行“hello cqjtu!重交物联2018级”;同时打开一个网络UDP 套接字,向室友电脑或树莓派发送这50行消息。 用VS2015/2017 的C#编写一个简单的Form窗口程序,有一个文本框 textEdit和一个发送按钮button,运行程序后,可以在文本框里输入文字,...

实验三

实验三&远程服务器Linux系统入门 配置服务器的cuda、cudnn、conda、tensorflow等深度学习环境 bash: sudo: command not found错误的解决方法: 报上述错误其实是sudo没有安装的原因,我们只需要对sudo进行安装就行了。 apt-get update apt-get install sudo apt-get类似低级pip install ...

ansible模块简介及实验

文章目录 模块功能简表: ansible模块帮助命令 常用模块帮助文档参考 模块实验: setup模块 功能: 实验内容: 实验步骤: 1、选项filter 进行信息过滤 2、选项gether_subset 指定要获取的具体信息名称 command模块 功能: 注意: 实验: 步骤: 1、使用command查看远程主机的IP: 2、command 命令并非使用 shell 执行,因此变量 和 sh...

spring data 简介(三)

目录 SpringData_JpaRepository接口 SpringData_JpaSpecificationExecutor接口 SpringData_自定义Repository方法 如何为某一个Repository 上添加自定义方法 SpringData_JpaRepository接口 接口更改: 测试: 结果: 先执行select ,在执行update  SpringData_...

UI框架简介(三)

我们继续上面内容啊! 我个人建议呢!框架不需要我们去写,那么我们拿到一套框架,首先应该应该看哪里呢?你想啊,如果你从框架入口区看的话,是可以,但是它所涉及到的继承和各种管理,各种关联会有很多的。看起来比较费劲。我就觉得从一个简单的类看起来比较容易。那么框架中什么样的比较容易读懂呢? 答案就是:工具层,这些类只是提供工具方法的,方便其他类去调用的,看起来简单,易理解。那么我们为什么要看这写类呢?因为...

猜你喜欢

三、HDFS简介

一、HDFS简述: 1、Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。 2、本身是用来存储数据的,当存储较大文件的时候会对文件进行切换。 二、HDFS的体系结构 1、NameNode:管理整个文件的元数据。 2、DataNode:负责管理用户的文件数据块。 3、Secondary NameNode用来监控hdfs状态的辅...

c# XML与类互转,及错误解决方法

 转换方法 小技巧:在建立xml对应类时可自动建立,方法如下: 将完整的XML文本复制下来 新建一个类,将光标放在准备粘贴的位置 点击VS左上角的 [编辑] - [选择性粘贴] - [将XML粘贴为类]   问题及解决 问题:在转换后的实体类中,有些属性因为业务需求,需要修改类型为Int32,Uint32等数字类型,但是给出的xml文本中,此项可能会没有值,导致在反序列化时会出...

基于React的适配PC端和移动端的轻量音乐播放器

基于React的适配PC端和移动端的轻量音乐播放器 技术:React16 之前基于Vue写了一个播放器,带各种功能,最后把自己绕死了。这次用React重写了个,舍弃了那些没用的功能,只保留了基本功能。并且利用媒体查询适配移动端和手机端。组件之间传值利用props,这个播放器先供自己用,以后会抽离成为一个插件。 点击查看项目演示 (可能因为会资源问题有歌曲播放不出来,如果发现我会及时解决的,目前是好...

tensorboard使用

tensorflow可以使用tensorboard实现可视化 在文件目录下打开终端,输入 就可以在浏览器里查看了……...

git:添加远程库,建立本地与远程关联

本机环境: win10、git version 2.24.0 git添加远程库小结,学习内容: 现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步 首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库: 在Repository name填入learngit,其...