RoboCup仿真救援项目基础教程

目录

比赛官网

代码资源下载

一、双系统安装

1.1下载Ubuntu

1.2创建空磁盘分区

1.3制作启动盘

1.4安装Linux系统

1.4.1开始安装

 1.4.2系统分区

二、JAVA环境配置

三、项目运行

3.1准备代码

3.2编译项目

3.2.1服务器端编译

3.2.2客户端编译

3.3运行项目

3.4结果

 四、预计算模式启动

4.1编译

4.2预计算指令

4.3运行程序


最近学校在开展RoboCup仿真救援项目的相关内容,发现这个项目入手环境配置的流程比较复杂,所以这边进行一个记录和整合,也给后来人一些经验。

比赛官网

RoboCup中国赛官网

RoboCup世界赛官网

代码资源下载

RoboCup Rescue的代码仓库

或者可以下载主页资源RoboCup代码

下面介绍双系统的安装、JAVA环境配置、系统运行的指令和预计算的处理指令,大多数内容来源于比赛官方github。

一、双系统安装

项目需要在linux环境下运行,最好安装双系统或者虚拟机,这里主要介绍双系统安装linux的方法。

1.1下载Ubuntu

下载Ubuntu到官方网站下载一般速度都比较慢,可以选择清华大学开源软件镜像站作为替代

清华大学开源镜像网站

在网站往下面滑动找到最近的发行版本下载即可,可以尝试20.04或者18.04版本。

73af66ef432c41ed8bcc05d57b5128cf.png

1.2创建空磁盘分区

 按住Win + X,选择“磁盘管理”或者右键此电脑也有磁盘管理的选项

403069ffca7b4b02be4292888b830c04.png

选择剩余空间较大的可分配磁盘,右键并选择“压缩卷”,这里选择压缩E盘50~100G左右(一般可以到60左右,可以尽量多)的空间 

772cbcdf49464099a747dff02eb7ccce.png

 点击“压缩”之后,E盘后部出现黑色的50~100G未分配空间

1.3制作启动盘

备份待写入的U盘并将其插入电脑(一定要备份,不然里面的内容会被清空)

到rufus官网下载(rufus)启动盘的制作工具rufus,安装并打开

8269014931f0c0d6ef5895538e65548e.png

对于不同目标类型系统来说,它选择的分区类型不一样,这里可以到互联网上查询具体方法。

在引导类型选择右面点击那个选择,找到刚刚下载好的Linux系统的镜像文件,将该镜像文件刻录到U盘中(卷标选择U盘),点击开始就会自动的刻录。刻录的过程中会擦除U盘中的文件,所以如果有重要资料请一定要备份。

1.4安装Linux系统

重启 电脑,进入系统bios后设置优先u盘启动,设置后电脑自动重启并进入ubuntu安装界面。

0f1dc1646b114481bd93c4882d83aac3.png

这里点击“Install Ubuntu”,是安装系统;第一个是试用系统但是并不会安装。 

1.4.1开始安装

接下载就按照流程安装系统,语言可以选择自己需要的语言

a53530f48f624d0a96963b92232a1208.png

 大多数内容只需要顺着点就可以了。

注意到安装类型这里,千万不要点击第二个,不然你的WINDOWS系统就要没了。我们这里点击“其他选项”,可以自己配置分区等内容。

fdfb45b8f9c44792a6140880eb6dd6ff.png

 1.4.2系统分区

安装系统的最重要环节就是系统分区

单击“创建新分区表"点击的“+”创建4个主要的基础分区(这里之前未分配的50G就是给ubuntu系统的60G),按以下参数设置4个主要的基础分区:

20~25G     主分区     空间起始位置     Ext4日志文件系统           /    (建议保证20G以上的内存)

4G    逻辑分区         空间起始位置     交换空间      /swap

200MB     逻辑分区    空间起始位置     Ext4日志文件系统    /boot

剩余的空间     逻辑分区    空间起始位置     Ext4日志文件系统    /home

各分区功能如下:

主分区:安装系统和软件,需要较大内存;

/home逻辑分区:相当于windows“我的文档”;

 swap逻辑分区:充当虚拟内存,大小等于内存大小;

(当然这里还可创建自己的其他分区如/123分区,只要设置为逻辑分区、空间起始位置、Ext4日志文件系统即可,新手强烈建议忽略此步,按上面设置即可)

安装启动引导设备的参数选择:与/boot所在的编号一致。设置好后安装即可,之后的选项(所在地点、键盘布局、电脑名称、开机密码等)正常进行直到安装完毕。

如果重启电脑,打开后是下面这样,双系统已经安装成功。如果安装失败,可以自行网上查询

17275bbd227e4b77b127a25bd16714f7.jpeg

注意:部分电脑(例如thinkbook)双系统安装后可能由于Ubuntu系统缺少网卡驱动导致无法联网,可以蓝牙共享网络后上网搜索解决办法。

二、JAVA环境配置

比赛要用java语言编程,所以需要在Linux里面下载并且安装java。

  1. 先更新一下软件包
sudo apt update

官方的readme文档中可以看到,它支持的是JDK 17,所以也比较建议用jdk 17。

可以用下面的指令查看一下apt都支持哪些17的JDK包。

apt-cache search openjdk-17

可以看到支持的jdk包,这里比较建议安装openjdk-17-jdk。

  • openjdk-17-dbg:这个包包含了OpenJDK 17的调试符号。调试符号是编译程序时生成的信息,它允许调试器(如GDB)将内存地址转换为函数名、变量名等可读形式,从而更容易地诊断和修复程序中的错误。如果你需要调试Java应用程序或OpenJDK本身,这个包将非常有用。

  • openjdk-17-demo:这个包包含了OpenJDK 17的演示和示例程序。这些示例可以帮助你了解Java的特定功能或API如何使用,是学习Java和开发Java应用程序的有用资源。

  • openjdk-17-doc:这个包提供了OpenJDK 17的文档,包括Java Development Kit (JDK) 的开发文档。这些文档是深入理解Java平台、JDK类库、JVM内部工作原理等的宝贵资源。

  • openjdk-17-jdk:这是OpenJDK 17的完整开发工具包(JDK),包含了编译、运行和调试Java应用程序所需的所有工具和库。它还包括了openjdk-17-jre中的所有内容。

  • openjdk-17-jdk-headless:这个包是OpenJDK 17的JDK的“无头”版本,它不包含图形用户界面的库和工具,如AWT和Swing。这通常用于服务器环境或需要最小安装的嵌入式系统。

  • openjdk-17-jre:这是OpenJDK 17的Java运行时环境(JRE),它包含了运行Java应用程序所需的所有库和JVM(Java虚拟机),但不包含开发工具(如编译器和调试器)。这个包足够让Java应用程序在安装了它的系统上运行。

  • openjdk-17-jre-headless:这是OpenJDK 17的JRE的“无头”版本,类似于openjdk-17-jdk-headless,但它不包含开发工具和图形用户界面库。它通常用于需要Java运行时的服务器或嵌入式系统。

  • openjdk-17-jre-zero:这个包提供了一个替代的JVM实现,称为Zero VM。Zero VM是一种轻量级的JVM实现,适用于资源受限的环境。然而,它可能不支持所有Java特性,并且性能可能不如HotSpot VM。

  • openjdk-17-source:这个包包含了OpenJDK 17的源代码文件。这些源代码是理解Java平台内部工作原理、为OpenJDK贡献代码或学习Java编程语言本身的有用资源。

输入命令即可

sudo apt install openjdk-17-jdk

安装之后可以在终端输入指令验证是否安装成功

java -version

如果输出的是java版本,这就意味着安装成功。

三、项目运行

3.1准备代码

上面已经将代码运行成功,我们可以开始从U盘拷贝RoboCup代码进来。或者也可以在终端用git下载代码。

如果没有git可以在终端中输入指令安装

sudo apt-get install git

用git下载代码的方法如下

git clone https://github.com/roborescue/adf-sample-agent-java.git

git clone git@github.com:roborescue/rcrs-server.git

分别下载的是客户端和服务器两个工程项目。

3.2编译项目

当代码下载好后,在两个工程所在的文件夹里面分别打开终端

3.2.1服务器端编译

在服务器端的终端依次输入指令

cd rcrs-server
./gradlew completeBuild

先进入到工程的文件夹里面,然后全编译

这里需要工具gradle,得安装一下,可以用指令

sudo apt install gradle
3.2.2客户端编译

在客户端的终端依次输入指令

cd adf-sample-agent-java

./gradlew clean

./gradlew build

打开工程文件并编译。

注:代码编译过之后,如果没有做修改,后面的运行可以不用再重新编译。

编译过后,都会有一个绿色的successful 。

4ef8d0b0362c44b98e206d6a518e1dba.png

8caf96cb750643e2a98477f54f705157.png

3.3运行项目

服务器端依次输入指令

 cd scripts

./start.sh -m ../maps/test/map -c ../maps/test/config

上面test是测试地图,智能体数量并不多,可以修改为kobe、berlin等地图,这个可以到文件中查看。

这时服务器已经准备好了,如下图。同时也会打开图形化界面

3f0eb44e13f349c58befeba4e4debd6d.png

服务端准备好后,在刚刚已经打开的客户端的终端中输入指令

./launch.sh

可以看到对于lanuch脚本,我们可以进行很多操作

92ff7fd4efb744b5bab31c76126ef0bd.png

 我们选择运行,即输入下面的这个指令

./launch.sh -all

就会启动整个项目,等待项目中所有智能体的连接。

068bc881211a49298f182a5b52e6fec3.png

3.4结果

非预计算模式下(NON_PRECOMPUTE),进度条只能到75%,当出现Done connecting to server,就意味着所有的智能体都挂载到服务端了。

这是整个项目都已经准备就绪,点击GUI界面的RUN就可以看到智能体开始运动,跑图开始

ab2f081aef5641e1970eb5c87f073a02.png

 在地图上也出现了很多黑色的障碍。

bd167d3d149c4437aeee7dbcb57e9b1b.jpeg

 四、预计算模式启动

在比赛的时候,官方一般都要求以预计算模式运行,如果项目的代码写的没有太大的问题,都可以以预计算方式启动。预计算可以有效地提高代码效率并且加快运行速度。这边再介绍一下预计算的指令

4.1编译

第一步也是编译,分别对服务器和客户端进行编译

服务器编译的指令依次为

./gradlew clean

./gradlew completeBuild

客户端编译的指令依次为

./gralew clean

./graldew build

编译成功后,会出现successful。

4.2预计算指令

第二步进行预计算

在命令⾏中切换到rcrs-server-master⽬录下,依次输入下面的指令((PS:可以⽤tab键提示路径,可以输⼊ls命令查看当前⽬录)

cd scripts

bash start-precompute.sh -m ../maps/berlin/map -c ../maps/berlin/config

服务端此时会启动。

切换到客户端的目录下,输⼊如下命令启动客户端

bash launch.sh -t 1,0,1,0,1,0 -h localhost -pre 1

当运行成功后,会各有一个智能体成功挂在到服务器上,同时出现绿色的successful的字样。

这时我们切换到服务端的终端,ctrl+c,终止运行,输⼊bash ./kill.sh 结束掉服务端进程。

之后输⼊如下命令,进⾏服务端计算

bash start-comprun.sh -m ../maps/berlin/map -c ../maps/berlin/config/

要注意和前面的地图是对应的。运行之后,服务端会进入到一个等待的状态。

4.3运行程序

第三步运行代码

我们再切换回客户端的命令行

输⼊命令

bash ./launch.sh -all

出现绿色的successful,说明预计算成功。⾄此已经完成全部流程,接下来等待计算完成即可,此后会⾃动弹出图形化界⾯,⾃动开始跑图,不需要再做⼈⼯⼲预。

以上就是在预计算模式下运行该项目。

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Serein朔一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值