MOOS-ivp 实验三 MOOS简介
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提供了大量能使我们快速便捷地处理数据的函数和方法。
智能推荐
实验三
实验三 用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,这个播放器先供自己用,以后会抽离成为一个插件。 点击查看项目演示 (可能因为会资源问题有歌曲播放不出来,如果发现我会及时解决的,目前是好...
git:添加远程库,建立本地与远程关联
本机环境: win10、git version 2.24.0 git添加远程库小结,学习内容: 现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步 首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库: 在Repository name填入learngit,其...
