本文仅用于个人安装记录。
官方安装教程
https://api.projectchrono.org/8.0.0/tutorial_install_chrono.html
Windows下安装
windows下安装就按照教程好了。采用cmake-gui进行配置,建议首次安装只安装核心模块。然后依此configure下irrlicht,sensor模块(依赖其他内容),GPU模块等。
configure后,generate后,用visual studio编译全部模块,需要i5-12代CPU 16线程编译将近20分钟,还是比ubuntu下慢很多啊。
Ubuntu下安装:
ubuntu下的安装主要是一个一个自己编译。
1、核心模块安装
核心模块需要:Eigen库,这个默认已经安装好了。
Step 1. 下载代码
由于GPU模块需要第三方库支持,所以使用git下载后更新子模块
Error when building GPU module
git clone https://api.projectchrono.org/8.0.0/tutorial_install_chrono.html
cd chrono
git submodule init
git submodule update
经过这一番操作之后,src/chrono_thirdparty
下面会有很多路径,里面已经下载了源码。如果没有,则在编译GPU时会找到不chrono_thirdparty/chpf/particle_writer.hpp
等。
Step 2. 编译
进入chrono下载路径,创建build后进入,执行cmake。
此时使用 ccmake 工具查看配置页,能够看到已经识别出了Eigen
编译后安装。make -jx, sudo make install。install后的内容会安装到默认路径:/usr/local/bin/
,在里面可以看到一系列的可执行文件。到这个路径下运行正常即可认为配置成果。
# 如果安装中遇到提示,缺少依赖,安装即可。例如:fatal error: cannot find 'ld': lglut等。
# glut 安装指令
sudo apt install freeglut3
sudo apt install freeglut3-dev
2、安装Irrlicht模块
这个模块是可视化模块,基本上也算是核心的。
如果是windows下安装,按照官方的教程即可,但需要visual studio这个恶心的玩意进行编译。
在ubuntu下,这里采用源码安装:
Step 1. 下载代码:
https://sourceforge.net/projects/irrlicht/files/Irrlicht%20SDK/1.8/
下载1.8.4版本
Step 2. 编译Irrlicht
参考 https://github.com/zaki/irrlicht
由于linux下需要源码编译,所以进入:source路径。此时如果直接执行make指令,只会生成静态链接库.a
,而我们需要动态链接库。执行指令
make sharedlib
可以看到能生成.so文件,然后执行 sudo make install安装。
Step 3. 编译带Irrlicht的chrono
此时回到chrono的build路径,用ccmake .指令修改配置,设置 ENABLE_MODULE_IRRLICHT
为true,然后按键c进行configure,之后会自动弹出来,要求配置Irrlicht的路径。如果正常,会自动填写路径。如果没有,则手动修改 IRRLICHT_INSTALL_DIR
和 IRRLICHT_LIIBRARY
为刚刚安装的路径:
再次按下c,后configure如果没有问题,则按键g,进行generate。
之后再次执行make,和install之后,可以在安装路径下面看到生成了依赖 IRR 的可执行程序。选一个demo_IRR_assests
执行如果正常即可。
我在运行时遇到一个bug,报错:在/usr/local/lib下找不到libirrlicht.so.1.8,但这个路径下确实有这两个库。后来发现,应该是没有刷新缓存。执行
sudo ldconfig
指令一遍即可。
3、安装Sensor模块
https://api.projectchrono.org/module_sensor_installation.html
安装sensor模块,依赖较多。硬件需要:NVIDIA GPU显卡、显卡驱动;软件包括:CUDA, OptiX, GLFW, GLEW, OpenGL等。
Step 1. cuda的安装
这个略了,因为本身电脑自带cuda。
Step 2. OptiX安装
安装7.7版本;
Step 3/4 GLEW/GLFW安装
GLFW等需要下载代码后自行编译。
然后再在configure里面enable需要用到的模块,然后把没有找到的路径加进去。