filter

所属分类:模式识别(视觉/语音等)
开发工具:C++
文件大小:11KB
下载次数:0
上传日期:2022-04-02 01:32:42
上 传 者sh-1993
说明:  各种滤波器的封装,如线性滤波器、卡尔曼滤波器和粒子滤波器。
(Package for various filters such as Linear Filters, Kalman Filters, and Particle Fiters.)

文件列表:
.env (12, 2023-06-23)
.hadolint.yaml (42, 2023-06-23)
CMakeLists.txt (545, 2023-06-23)
Dockerfile (2122, 2023-06-23)
LICENCE (1072, 2023-06-23)
compose.dev.yml (811, 2023-06-23)
include (0, 2023-06-23)
include\filter (0, 2023-06-23)
include\filter\linear_filter.hpp (2318, 2023-06-23)
test (0, 2023-06-23)
test\CMakeLists.txt (324, 2023-06-23)
test\FindGTest.cmake (333, 2023-06-23)
test\linear_filter_tests.cpp (5127, 2023-06-23)

# filter Package for various filters and estimators. # Development Container Build a new development image ```shell mkdir -p ~/.filter/ccache export UID=$(id -u) export GID=$(id -g); docker compose -f compose.dev.yml build ``` Start an interactive development container ```shell docker compose -f compose.dev.yml run development ``` Build the repository in the container ```shell username@filter-dev:~/ws$ cmake -S src/filter/ -B build username@filter-dev:~/ws$ cmake --build build ``` # Test ```shell username@filter-dev:~/ws$ ctest --test-dir build ``` # Description The development container allows developers to sandbox repository dependencies from their host machine while allowing them to use familiar development tools. #### Dependencies Repository dependencies are built into the development image. This insulates the developer from potentially conflicting dependencies on their host while preventing development from accidentally depending on host packages and configurations. This uniform development environment should also make it easier for developers to collaboratively troubleshoot issues. #### Rebuilding image As repository dependencies change, the development image will have to be rebuilt. While early on this can happen frequently, dependencies tend to change more slowly later in a project. #### ccache `ccache` allows previous builds to speed up future builds. As the container is not persistent, we need to map the cache to the host so it can be reused in subsequent instantiations of the container. On the host, create the cache directory ```shell mkdir -p ~/.filter/ccache ``` This will then be mapped to `/home/username/.ccache` in the container. #### Volume mapping While the container itself by default is not persistent, several host directories are mapped into the container including - repository source code - ssh keys - git configuration - host credentials This allows for a more seamless development environment for - building source - in container committing with your user The full set of volume maps can be read in the [compose file](https://github.com/griswaldbrooks/filter/blob/master/compose.dev.yml). #### git Commits can be done from directly within the container, with the same host user. ```shell username@filter-dev:~/ws/src$ git config --list user.email=firstname.lastname@email.com user.name=Firstname Lastname core.editor=vim core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true remote.origin.url=git@github.com:griswaldbrooks/filter.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* branch.main.remote=origin branch.main.merge=refs/heads/main ``` #### Editing As the repository source is volume mapped into the container, it can be edited outside of the container and changes are immediately reflected inside the container. This means you can use your existing host tools (vim, atom, sublime, vs code) to develop, and build in the container. # Prerequisites ## docker Taken from https://docs.docker.com/engine/install/ubuntu/ #### Check version If docker is already installed, the below steps may not be required ```shell $ docker version Client: Docker Engine - Community Version: 20.10.12 API version: 1.41 Go version: go1.16.12 Git commit: e91ed57 Built: Mon Dec 13 11:45:33 2021 OS/Arch: linux/amd*** Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.12 API version: 1.41 (minimum version 1.12) Go version: go1.16.12 Git commit: 459d0df Built: Mon Dec 13 11:43:42 2021 OS/Arch: linux/amd*** Experimental: false containerd: Version: 1.4.13 GitCommit: 9cc61520f4cd876b86e77edfeb88fbcd536d1f9d runc: Version: 1.0.3 GitCommit: v1.0.3-0-gf46b6ba docker-init: Version: 0.19.0 GitCommit: de40ad0 ``` The development image was tested with version 20.10.12. #### Download and install ```shell curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh ``` Note, the above script does not cover removing old versions. #### Post actions Adding yourself to the `docker` group and refreshing shell obviates the need to run `sudo` with `docker`. ```shell sudo groupadd docker sudo usermod -aG docker $USER newgrp docker ``` ## docker compose v2 Taken from https://docs.docker.com/compose/cli-command/#install-on-linux #### Download release ```shell DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} mkdir -p $DOCKER_CONFIG/cli-plugins curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_*** -o $DOCKER_CONFIG/cli-plugins/docker-compose ``` #### Apply permissions ```shell chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose ``` #### Test ```shell docker compose version ``` # Alias While developing a tool on top of another tool can come with challenges, some may prefer to at least have some simple aliases to reduce the typing boilerplate. ```shell alias builddev="export UIDGID=$(id -u):$(id -g); docker compose -f compose.dev.yml build" alias rundev="docker compose -f compose.dev.yml run development" ``` As an aside, a handy way to find a previous command is ```shell history | grep keyword ``` to rerun the command using the offset number given from `history` ```shell !offsetnumber ``` # Troubleshooting #### ccache cannot compile ```shell "/usr/lib/ccache/cc" is not able to compile a simple test program. ``` Likely, the host ccache directory in your [home directory](https://github.com/griswaldbrooks/filter/blob/master/#ccache) was not created properly. Ensure that the directory is created and owned by the host user. ```shell mkdir -p ~/.filter/ccache sudo chown -R $(id -u):$(id -g) ~/.filter/ccache ```

近期下载者

相关文件


收藏者