# Chrono
main page:
https://api.projectchrono.org/development/index.html
github:
https://github.com/projectchrono/chrono/tree/develop/data/vehicle
pychrono:
https://api.projectchrono.org/development/pychrono_introduction.html
## Install
### docker (必要なら)
```
xhost +local:docker
sudo docker run -itd --gpus all --name test -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw --device /dev/dri nvidia/opengl:base-ubuntu20.04 /bin/bash --login
sudo docker exec -it test /bin/bash
apt-get update
apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev git
apt-get install -y mesa-utils
```
#### check opengl by command 'glxgears'
```
root@ea0852980383:/# glxgears
Running synchronized to the vertical refresh. The framerate should be
approximately the same as the monitor refresh rate.
X connection to unix:1 broken (explicit kill or server shutdown).
root@ea0852980383:/#
```
### Anaconda
```
cd ~
wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
bash Anaconda3-2021.05-Linux-x86_64.sh
```
### Conda
```
~/anaconda3/bin/conda init bash
```
ここでTerminalを閉じる
Docker の場合は exit して再ログイン
#### # check GUI
```python
import matplotlib.pyplot as plt
import numpy as np
plt.plot([0,1,2], np.random.rand(3))
plt.show()
```
```
conda deactivate
which conda
# /root/anaconda3/condabin/conda
conda create --name test python=3.8
conda activate test
which python
# こうなっていることを確認 /root/anaconda3/envs/test/bin/python
```
### Pychrono
https://api.projectchrono.org/development/pychrono_installation.html
```
conda install -c projectchrono/label/develop pychrono
```
### other libraries
libirrlicht1.8
```
apt-get install libirrlicht1.8
```
opencascade
```
wget https://distrib-coffee.ipsl.jussieu.fr/pub/linux/altlinux/Sisyphus/x86_64/RPMS.classic/libopencascade-7.5.3-alt2.x86_64.rpm
apt-get install alien
alien libopencascade-7.5.3-alt2.x86_64.rpm
dpkg -i libopencascade_7.5.3-1_amd64.deb
ls /usr/lib64 | grep libTKBRep.so.7
# libTKBRep.so.7 <- これが無いって怒られた
# libTKBRep.so.7.5.3
export PATH=/usr/lib64:$PATH
export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
```
gcc 最新入れる
```
apt-get update
apt update
apt install software-properties-common
add-apt-repository ppa:ubuntu-toolchain-r/test
apt update
apt-get install gcc-11 --only-upgrade libstdc++6
```
確認
```
root@408866dc21f5:~# strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_DEBUG_MESSAGE_LENGTH
root@408866dc21f5:~# /lib/x86_64-linux-gnu/libc.so.6
GNU C Library (Ubuntu GLIBC 2.31-0ubuntu9.2) stable release version 2.31.
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 9.3.0.
libc ABIs: UNIQUE IFUNC ABSOLUTE
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.
```
こうすると
```
(test) root@ea0852980383:~/chrono/src/demos/python# python cascade/demo_CAS_cascade.py
```
これ怒られる
```
ImportError: /root/anaconda3/envs/test/lib/python3.8/site-packages/pychrono/../../../libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/lib64/libTKBRep.so.7)
```
なのでこうする
```
cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /root/anaconda3/envs/test/lib/python3.8/site-packages/pychrono/../../../libstdc++.so.6
```
次はこう怒られる
```
ImportError: /usr/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib64/libTKernel.so.7)
```
## Demo
https://api.projectchrono.org/development/tutorial_table_of_content_pychrono.html
### Git clone
```
cd ~
pwd # /root
git clone https://github.com/projectchrono/chrono.git
```
### Other pip install
```
which pip
# /root/anaconda3/envs/test/bin/pip
pip install numpy matplotlib
```
### Exec demo file
```
cd /root/chrono/src/demos/python
python core/demo_CH_coords.py
...
```
たまに PATHが通ってなくて怒られる
↓が無いって言われる
```
../../../../../../share/chrono/data/_template_POV.pov
```
これは↓でできる
```
cd ../../../../../../
ln -s /root share
```