Skip to content

一个无人船仿真模拟器,可以实现对环境、船体以及障碍物的自定义

License

Notifications You must be signed in to change notification settings

He-Ze/Autonomous-Surface-Vehicle-Simulator

Repository files navigation

Autonomous Surface Vehicle Simulator 使用说明

Version1.0 BY HeZe at 2020/06/11

Alt text

一、运行环境与软件准备

  • macOSWindowsLinux均可以运行

  • 需要下载软件JetbrainsIntelliJ以及JDK8,注意版本要正确

  • JDK8下载地址:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

  • 下载、安装完毕后,按照视频 https://youtu.be/weAIRonzOd0 提供的方法配置环境以及编译运行(压缩包里也有这个视频)

    需要注意以下几点:

    • 视频里的代码是在GitHub下载,因为我做了改动,所以直接解压我的压缩包之后记住文件夹路径即可,可跳过视频前一小段下载代码的过程
    • 有一步是根据自己的操作系统选择不同的文件,需要留意

二、仿真使用说明

1. 坐标系

如下图: Alt text

初始化的时候x=5

2. 图形界面功能

  • 按住鼠标右键拖动可以改变视角

  • 键盘a,s,d,w,q,e可以将镜头角度、方位改变

  • 按下空格键可以循环显示以下模式

    • 上图的主界面

    • 左上角显示相机影像

      Alt text

    • 纯相机影像 Alt text

    • 雷达图像

      Alt text

  • 右侧有四个条形方块,点击后每一个菜单都可以进行不同的控制,如调节船的速度、位置以及环境(如水速、水向等等)等等,由于字面意思已经能表达功能,这里不再叙述

  • 对于障碍物的添加也是在侧栏菜单中,有8种形状可以选择,同时可以设置位置、大小、颜色、各种转动等等

3.控制台功能

此版本支持以下命令:

  • position

    输入position,返回三元坐标位置信息,y为船的高度,默认值为0.8,随水流上下波动,返回格式为(x,y,z)

  • speed

    输入speed,返回三元坐标速度信息,y为上下速度,随水流上下波动会有变的速度,返回格式为(x,y,z)

  • distance

    输入distance,返回与(0,0,0)的距离,返回格式是一个浮点数

  • rotation

    输入rotation,返回转动四元组向量

==下面命令控制船运动,此仿真船的运动靠左右两个马达==

  • setleft

    输入“setleft+空格+数值”,如“setleft 50”,代表将左马达数值设为50

  • setright

    输入“setright+空格+数值”,如“setright 50”,代表将右马达数值设为50

  • setall

    输入“setall+空格+数值”,如“setleft 50”,代表将左右马达数值同时设为50

  • setspeed

    输入“setspeed+空格+数值1+空格+数值2”,如“setspeed 50 60” ,代表将左马达数值设为50,右马达数值设为60

  • reset

    重置船的位置并将马达数值设为0

==雷达与相机==

  • 由于目前还没有和其他同学合作跑算法,每个人设计的算法需要的结构可能都不一样,所以在跑算法的时候需要因人而异重新设计这部分的数据结构
  • 那么现在我设计的是这样的,不论是雷达还是相机,输入两个0至1之间的值,代表想测量的点在x、y的比例,调用相机则返回这一点的rgb值,具体格式为(R,G,B),调用雷达则返回这点的距离,注:现在仿真的雷达可以测的距离在1m至70m之间,在这个范围之外的都会返回0
  • camera

    输入“camera+空格+x比例+空格+y比例”,如“camera 0.5 0.5”,返回最中间这一点的rgb值

  • lidar

    输入“lidar+空格+x比例+空格+y比例”,如“lidar 0.5 0.5”,返回最中间这一点的距离

==另外,如果想对这两个的格式进行改动,粗略的描述如下==

  • 这两个的调用在主函数的1676行,文件路径是\Autonomous-Surface-Vehicle-Simulator-master\BoatVis\src\gebd\games\boat\BoatVis.java

  • 也就是下面这段代码

    public void getPhysicsBoatEntity2(int i,float q,float p) {
    		if (i==11) {
    
    			System.out.printf("%f\n", LidarCalculationHandler.getDepthAtPixelPercentages(q, p));
    		}
    		if(i==12){
    			int pp=(int)(480*q);
    			int qq=(int)(640*q);
    			CameraCalculationThread.aaa(qq,pp);
    		}
    	}

    i==11是雷达,i==12是相机,在IDE里鼠标放到调用的函数上面就可以编辑函数源代码

About

一个无人船仿真模拟器,可以实现对环境、船体以及障碍物的自定义

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages