Skip to content

HYD-PG/moos-ivp-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

moos-ivp-learning


  • 编译开始moos-ivp命令:cd ~/moos-ivp

  • ./build-moos.sh

  • ./build-ivp.sh

  • g++ -o wenjian wenjian.cpp


  • MOOS简介:
  • 最小配置启动MOOS:wget --no-check-certificate http://oceanai.mit.edu/2.680/examples/moosdb_alpha.moos
  • 启动后配置:MOOSDB moosdb_alpha.moos
  • 查看启动后的状态可以使用指令:uXMS --all
  • uPokeDB:可以更改MOOSDB中的其他变量 eg:uPokeDB DEPLOY=true SPEED=2 alpha.moos
  • 但是如上面所示:输入指令时需要挨个打开终端比较麻烦,因此可以使用指令pAntler:
  • 首先利用vi或者vim创立一个mission文件,具体方法为输入:vi 文件名
  • 然后在其中将运行的数量和代码写入其中eg:
  • // (wget http://oceanai.mit.edu/2.680/examples/db_and_uxms.moos)
  • ServerHost = localhost//IP地址
  • ServerPort = 9000//端口
  • Community = alpha
  • ProcessConfig = ANTLER
  • {
  • MSBetweenLaunches = 200
  • Run = MOOSDB @ NewConsole = false
  • Run = uXMS @ NewConsole = true//运行的两个指令
  • }
  • ProcessConfig = uXMS
  • {
  • AppTick = 4
  • CommsTick = 4
  • VAR = DB_CLIENTS, DB_UPTIME, DB_TIME
  • DISPLAY_SOURCE = true
  • DISPLAY_TIME = true
  • COLOR_MAP = DB_CLIENTS, red//变量
  • }
  • 最后保存输入pAntler 文件名---程序便一起运行

  • #ls 命令用于显示指定工作目录下之内容
  • 所用参数:
  • -a 显示所有文件及目录
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -t 将文件依建立时间之先后次序列出
  • -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
  • -R 若目录下有文件,则以下之文件亦皆依序列出
  • ————————————————-------------------------------------------------
  • 建立moosAPP应用:1.进入moos-ivp-extend/src文件中运行MyGenMOOSApp 文件名 p “作者”--------(问题:出现环境变量无法解决的问题,可进行换源)
  • 2.打开文件目录moos-ivp-extend/src/CMakeLists.txt,添加app名字:ADD_SUBDTRECTORY(p文件名)
  • 3.保存好后进行运行编译:./build.sh并进行相关的查阅 which p文件名(完成MOOSAPP的创建)
  • 4.找到自己的文件后缀名为.h类型的文件,进行变量的编写打开后缀名为.cpp 对变量进行赋值(若想实现订阅功能,则需要在.cpp文件中的迭代函数中使用Notify函数可向MOOSDB中传输数据,然后可以打开相关文件运行(换源))

  • C++类的相关知识:字符串转数字:strtoul()-----eg:string str = "5674032334252535" uint64_t value = strtoul(str.c_str(), NULL, 0);
  • 将接受和发布数据的内容先全部都写到OnNewMail()函数当中(函数位于.cpp文件中)
  • pAntler --MOOSTimeWarp=10 alder.moos

  • 设置发布新的变量:
  • 1.首先通过打开目录moos-ivp-extend/src 创建文件名称:MyGenMOOSApp 文件名 p "作者名"
  • 2.打开文件目录moos-ivp-extend/src/CMakeLists.txt打开这个txt文件,添加ADD_SUBDIRECTORY(文件名)
  • 3.cd ~/moos-ivp-extend ./build.sh进行编译运行
  • 4.从src进入到其中的文件,找到后缀名为.h的文档进行变量的添加 eg:int m_value;并进行保存
  • 5.然后打开后缀名为.cpp的文件,在Constructor中对初始变量赋值(或者利用后面的mission文件中的事件event命令进行修改赋值,此项往往被使用)并在RegisterVariables()中进行订阅变量Register("变量名",0)
  • 6.在OnNewMail()中编写判断条件或者运行数学逻辑,利用Notify函数进行发布(个人认为此函数写在Iterate中也可以)
  • 7.打开moos-ivp-extend中的build文件,输入cmake,运行后再输入make进行运行
  • 8.启动MOOSDB,查看启动后的状态可以使用指令:uXMS --all(一直启动即可)
  • //uPokeDB:可以更改MOOSDB中的其他变量 eg:uPokeDB 变量赋值 文件名.moos//(此项可有可无,只是可利用其进行变量的修改)
  • 但是如上面所示:输入指令时需要挨个打开终端比较麻烦,因此可以使用指令pAntler:
  • 首先利用vi或者vim创立一个mission文件,具体方法为输入:vi 文件名
  • 然后在其中将运行的数量和代码写入其中eg:
  • // (wget http://oceanai.mit.edu/2.680/examples/db_and_uxms.moos)
  • ServerHost = localhost//IP地址
  • ServerPort = 9000//端口
  • Community = alpha
  • ProcessConfig = ANTLER
  • {
  • MSBetweenLaunches = 200
  • Run = MOOSDB @ NewConsole = false
  • Run = uXMS @ NewConsole = true//运行的两个指令
  • Run = uTimerScript @ NewConsole = false //可添加
  • Run=自己所建文件
  • }
  • ProcessConfig = uXMS
  • {
  • AppTick = 4
  • CommsTick = 4
  • VAR = DB_CLIENTS, DB_UPTIME, DB_TIME
  • vent = var=NUM_VALUE, val="22", time = 0.50
    • event = var=NUM_VALUE, val="234", time = 1.00
    • event = var=NUM_VALUE, val="117", time = 1.50
    • reset_max = nolimit
    • reset_time = all-posted//输入事件,以上为例子,可进行更改
  • }
  • 9.pAntler 文件名.moos,查看控制台输出指令

  • 查看日志:aloggrep MOOSLog_27_10_2020_____09_22_24.alog NUM_RESULT NUM_VALUE

  • 配置helm文件(自动驾驶):

  • mkdir moos-ivp-jsmith/missions/lab_07

  • cd moos-ivp-jsmith/missions/lab07/s1_alpha

  • pAntler --MOOSTimeWarp=10 alpha.moos

  • Behavior=BHV_Loiter

  • {

  • name = east_zone

    • pwt = 100

    • condition = DEPLOY = true

    • condition = RETURN = false

    • condition = LOITER_REGION=east

    • updates = LOITER_UPDATE

  • duration = 150 //行为执行150s后,行为结束

  • endflag=LOITER_REGION=west//换区域

  • duration_idle_decay = false

  • perpetual = true

  • // 题目要求的相关参数设定

  • // ------------------------------------

  • acquire_dist = 10 // default

  • capture_radius = 3 // default

  • center_activate = false // default

  • clockwise = false // default

  • slip_radius = 15 // default

  • speed = 1.3 // default

  • spiral_factor = -2 // default

  • polygon = radial:: x=120, y=-75, radius=20, pts=8 // 重心、半径、定点数

  • post_suffix = HENRY // example

  • // 在界面上画出相关的图形

    • visual_hints = vertex_size = 1 // default
    • visual_hints = edge_size = 1 // default
    • visual_hints = vertex_color = dodger_blue // default
    • visual_hints = edge_color = white // default
    • visual_hints = nextpt_color = yellow // default
    • visual_hints = nextpt_lcolor = aqua // default
    • visual_hints = nextpt_vertex_size = 5 // default
    • visual_hints = label = west_zone // example
  • }

  • //返回点配置

  • Behavior=BHV_Waypoint

  • {

  • name = waypt_return

  • pwt = 100

  • condition = RETURN = true

  • condition = DEPLOY = true

  • perpetual = true

  • updates = RETURN_UPDATE

  • endflag = RETURN = false

  • endflag = DEPLOY = false

  • endflag = MISSION = complete

  • speed = 2.0

  • capture_radius = 2.0

    • slip_radius = 8.0
    • points = 0,0
  • }


  • pShare的用法:
  • 设立社区的过程:(1)初始化:Community=apples (2)运行Run=pShare Run= pLogger【运行时给予初始值是true or false】 并添加ProcessConfig = pLogger
  • {
  • AsyncLog = true
  • WildCardLogging = true
  • }

  • pShare的具体含义:

  • src_name:共享变量的名称

  • input=route=localhost:9201

  • output=src_name=PEARS,route=localhost:9200(注意共享的两个社区端口要互反)

  • 如上,另一个社区为

  • input=route=localhost:9200

  • output=src_name=APPLES,route=localhost:9201

  • gen_hazards --polygon=


  • 更改背景地图tiff_file = data/portsmouth2.tif
  • 并且在plogger模块中添加 log_the_image = true
  • PLOGGER_CMD = COPY_FILE_REQUEST = /home/jake/images/lake_george.tif
  • PLOGGER_CMD = COPY_FILE_REQUEST = /home/jake/images/lake_george.info

  • 与信标通信:uFldBeaconRangeSensor

  • https://oceanai.mit.edu/ivpman/pmwiki/pmwiki.php?n=IvPTools.UFldBeaconRangeSensor

  • ProcessConfig = uFldBeaconRangeSensor

  • {

  • AppTick = 4 // Standard MOOSApp configurations

  • CommsTick = 4

  • // Configuring aspects of te vehicles

  • reach_distance = default = nolimit

  • ping_wait = 30

  • ping_payments = upon_accept

  • report_vars = short

  • default_beacon_freq = never // Only on request (ping)

  • default_beacon_shape = circle

  • default_beacon_color = orange

  • default_beacon_width = 5

  • default_beacon_report_range = 100

  • beacon = label=01, x=200, y=0

  • beacon = label=02, x=400, y=-200

  • beacon = label=03, x=0, y=-200, color=red, shape=triangle, report_range=80

  • }


  • hazard路径模拟
  • pHandleSensorData 传感器数据输出
  • uFldNodeComms 与岸基进行信息传输,确定AUV的位置与轨迹
  • pHostInfo:MOOSapp自动发现自己的IP地址,并将其传输给MOOSDB
  • uFldNodeBroker:寻找岸基系统,确定其IP地址和pShare的输入路线以及确定本地的输出线路(一般为IP地址)
  • uFldshoreBroker:发送shoreside的IP地址与pShare的输入线路,自动确定本地的输出IP地址

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published