2011年草草参与过兰州的Robocup3D比赛,侥幸混了一个一等奖。那时候也是刚接触linux,作为自动化本科,代码能力也极低。回想这么多年,都是当linux和开发环境的传教士,自升修为却非常有限,奈何自身能力有限,那就做些能力范围之内的事情,争取能为国家做一点贡献吧。
Robocup3d的开发环境是建立在SimSpark的基础之上的,SimSpark中包含了spark、rcssserver3d两个文件夹,spark中包含的是SimSpark,也就是rcssserver3d运行的基础,rcssserver3d也就是Robocup3d运行的环境。因此,编译也要先编译spark,再编译rcssserver3d。rcssserver3d包含一个server(服务器)和一个monitor(监视器)。server就是接收agent(机器人)发送消息的服务器,monitor是把接收的消息在虚拟环境中显示出来的一个可视化的终端。
我是在Window11电脑上用wsl安装的Ubuntu 22.04。这是第一次尝试用wls,过程很复杂,但是结果非常惊喜。
环境部署:参考Installation on Linux · Wiki · RoboCup Simulation / SimSpark · GitLab
其中说明了Ubuntu22.04该如何安装,要提前换好更新源,这是基本操作,我这里不再说明。
1、Ubuntu 22.04中安装依赖库
sudo apt-get install g++ git make cmake libfreetype6-dev libode-dev libsdl1.2-dev ruby ruby-dev libdevil-dev libboost-dev libboost-thread-dev libboost-regex-dev libboost-system-dev qtbase5-dev qtchooser qt5-qmake
通过别的说明安装可能会出现qt4、qt5的版本问题,安装过程中缺什么库就补什么库。
git clone https://gitlab.com/robocup-sim/SimSpark.git
或者svn co https://svn.code.sf.net/p/simspark/svn/trunk simspark(这个也可以,但是慢)
2、安装SimSpark:
cd SimSpark/spark
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
3、RCSSServer3D:
# set to the rcssserver3d directory (rcssserver3d)
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
4、测试rcssserver3d
输入 rcsoccersim3d测试,应该就可以出现一个球场界面。
下面是输入rcssmonitor3d命令看到的:
5、安装Roboviz
首先,要先安装java:
sudo apt-cache search jdk
sudo apt-get install openjdk-8-jdk
其次,下载Roboviz。国外的网址应该是https://github.com/magmaOffenburg/RoboViz。
按说运行下面的命令就行了:
svn co https://github.com/magmaOffenburg/RoboViz roboviz
但是Github在国内是慢的不行,实在难以忍受,于是想找到国内的镜像。终于找到一个:
这个教程中的应该是CSDN自动生成的同步,上面“显示每天同步更新”,但直接点下载的话,下下来的是roboviz1.2的版本,非常古老不能用。我被这个坑了很久,最后发现是下载的版本不对。正确的是要鼠标点进去,下载最新的1.8.5版本。
第三,编译Roboviz。
cd roboviz/scripts #进到编译命令的文件夹里
./build.sh #完成后编译的结果在roboviz/bin文件夹里。
此过程很慢,新版本的roboviz应该是通过gradle部署的,中间要自动下载和编译很多东西。如果耐心和网速都很好,这个过程就不会觉得那么慢。由于对gradle完全不了解,试了很多次,最终还是想找下有没有加快这个速度的方法。找到了一个不知道有没有用,但用了以后编译一会儿就通过了。可以参考:部署智能合约Resolve dependencies of :runtimeClasspath解决办法 - 知乎
通过观察发现roboviz文件夹下有个gradle.properties文件。网上说在这里面加上这两行,速度会加快,应该是设置了一个代理,换了个源。
systemProp.http.proxyHost=mirrors.opencas.cn
systemProp.http.proxyPort=80
照着这个在里面加了两行:
第四,用roboviz替代rcssserver3d自带的monitor(rcssmonitor3d):
sudo gedit /usr/local/bin/rcsoccersim3d
把MON="$bindir/rcssmonitor3d"注释掉,改成编译的roboviz/bin/roboviz.sh。文件路径搞不准的就手动找到roboviz/bin/roboviz.sh,复制好路径。
最终,输入rcsoccersim3d测试。