├── .gitattributes ├── .github ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── ask_question.yml │ ├── bug_report.yml │ ├── config.yml │ ├── feature_request.yml │ ├── submit_info.yml │ └── typo.yml ├── PULL_REQUEST_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE │ ├── addition.md │ └── general.md ├── SECURITY.md ├── dependabot.yml └── workflows │ ├── builds.yml │ ├── dependabot-automerge.yml │ ├── gh-deploy.yml │ └── release.yml ├── .gitignore ├── .pre-commit-config.yaml ├── LICENSE ├── LICENSE-docs ├── Makefile ├── README.md ├── docs ├── en │ ├── index.md │ └── robots.txt ├── mkdocs-base.yml ├── mkdocs.en.yml ├── mkdocs.yml ├── overrides │ ├── assets │ │ └── favicon │ │ │ └── favicon.png │ ├── javascripts │ │ └── tablesort.js │ └── main.html └── zh │ ├── award │ ├── 国家级一等奖.md │ ├── 国家级二等奖.md │ ├── 省级一等奖.md │ ├── 省级三等奖.md │ └── 省级二等奖.md │ ├── contribution │ ├── contribution.md │ └── scripts.md │ ├── group │ ├── 全向行进组.md │ ├── 多车编队组.md │ ├── 摄像头四轮组.md │ ├── 无线充电组.md │ ├── 智能视觉组.md │ └── 负压电磁组.md │ ├── index.md │ ├── robots.txt │ └── year │ ├── 2021.md │ ├── 2022.md │ └── 2023.md ├── pyproject.toml ├── requirements-dev.txt ├── requirements.txt ├── scripts ├── __init__.py ├── build.py ├── config.py └── split.py ├── table.csv └── tests ├── __init__.py └── test_functions.py /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files 2 | * text=auto 3 | 4 | # Standard to msysgit 5 | *.doc diff=astextplain 6 | *.DOC diff=astextplain 7 | *.docx diff=astextplain 8 | *.DOCX diff=astextplain 9 | *.pdf diff=astextplain 10 | *.PDF diff=astextplain 11 | *.dot diff=astextplain 12 | *.DOT diff=astextplain 13 | *.rtf diff=astextplain 14 | *.RTF diff=astextplain 15 | 16 | # For GitHub Linguist 17 | *.md linguist-detectable=true 18 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @ittuann 2 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | ## 1. 目的 4 | 5 | 旨在为社区提供一个友善、包容、协作的环境,使每一个人都能够在这里安全地交流、分享和学习。 6 | 7 | ## 2. 我们的准则 8 | 9 | 我们致力于为每一个参与者提供一个无骚扰的经验,无论他们的年龄、身体大小、残疾、民族、性特征、性取向、表达方式、经验水平、教育程度、社会经济地位、国籍、外貌、种族、宗教或性别身份和表达方式。 10 | 11 | 我们的标准包括但不限于: 12 | 13 | - 采用友善和专业的语言 14 | - 尊重不同的观点和经验 15 | - 优雅地接受建设性的批评 16 | - 聚焦于与社区相关的内容 17 | - 对其他社区成员表示同情和尊重 18 | 19 | ## 3. 我们的职责 20 | 21 | 项目维护者有责任澄清和执行我们的行为标准,并采取适当和公正的纠正措施来应对任何违反这些标准的行为。 22 | 23 | 项目维护者有权和责任删除、编辑或拒绝与行为准则不符的评论、提交、代码、wiki编辑、问题和其他贡献,并将对持续不合作的参与者进行暂时或永久性的封禁。 24 | 25 | ## 4. 适用范围 26 | 27 | 本行为准则适用于项目空间的所有领域,以及在公共场合代表项目或其社区的行为,例如使用项目的电子邮件地址、在社交媒体上发帖、或作为指定的代表在线上或线下活动中。 28 | 29 | ## 5. 执行 30 | 31 | 若有任何骚扰或不恰当的行为发生,请立即联系项目团队。项目团队将审查并调查所有投诉,并作出对应的反应。项目团队有义务为事件的报告者保密。 32 | 33 | ## 6. 行为准则的编写和提议 34 | 35 | 此行为准则是基于开源项目的普遍准则,并由全国大学生智能汽车竞赛开源项目收集社区参与制定。 36 | 37 | 对行为准则的建议或改进提议,请通过 [Github issues](https://github.com/ittuann/NEFU-CMEE-DebateTeam/issues) 提出。 38 | 39 | --- 40 | 41 | 我们希望,通过强调友善与尊重,我们可以使这个社区变得更加开放和受欢迎。感谢每一位为维护友善和包容社区氛围的成员。 42 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Awesome Intelligent Car Race 2 | 3 | Pull Requests Wellcome! 一个丰富的平台需要车友们一起建设,也热烈欢迎大家加入并成为仓库的 Contributor ~ 4 | 5 | 如果您也想为这个项目添加一条新的内容,可以参考项目网页侧边栏内中完整的[🔭提交指南](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/)以了解如何开始。 6 | 7 | 您还可以通过直接新建 [Issues](https://github.com/ittuann/Awesome-IntelligentCarRace/issues) 的方式,直接在 GitHub 网页界面中进行无需 Git 操作的快速提交。过程中的每一个步骤都可以在[🔭提交指南-帮助通道](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/#_3)内找到。 8 | 9 | 如果您对参与本项目的开发感兴趣,请参考[提交指南-项目代码文档](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/#_2)以了解项目的完整流程。欢迎并感谢社区的任何贡献! 10 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/ask_question.yml: -------------------------------------------------------------------------------- 1 | name: 🤔 Ask question 2 | description: Consider using discussions for simple usage questions instead of issues. 3 | title: "[Ask] " 4 | labels: [ask] 5 | 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | ## Kindly note 11 | 12 | We encourage you to use Github discussions instead of asking about usage in issues. 13 | It's preferable to issues larger matters here. 14 | - type: textarea 15 | id: question-description 16 | attributes: 17 | label: Describe your question 18 | description: A clear and concise description is welcome. 19 | placeholder: Describe question 20 | validations: 21 | required: true 22 | - type: textarea 23 | id: system-info 24 | attributes: 25 | label: System Info 26 | description: Platform and version and other information that may be helpful. 27 | render: Shell 28 | placeholder: System information 29 | validations: 30 | required: true 31 | - type: textarea 32 | id: additional-context 33 | attributes: 34 | label: Additional context 35 | description: Add any other context or screenshots about the question here. 36 | placeholder: Additional context information 37 | - type: checkboxes 38 | id: checkboxes 39 | attributes: 40 | label: Validations 41 | description: Before submitting the issue, please make sure you do the following 42 | options: 43 | - label: Remember to follow the community guidelines and be friendly. 44 | required: true 45 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: 🐞 Bug report 2 | description: Report an issue 3 | labels: [pending triage] 4 | 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thanks for taking the time to fill out this bug report! 10 | - type: textarea 11 | id: bug-description 12 | attributes: 13 | label: Describe the bug 14 | description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks! 15 | placeholder: Bug description 16 | validations: 17 | required: true 18 | - type: input 19 | id: reproduction 20 | attributes: 21 | label: Reproduction 22 | description: Steps to reproduce the behavior. Alternatively, a [Minimal Reproduction](https://stackoverflow.com/help/minimal-reproducible-example) would be more appreciated. 23 | placeholder: How To Reproduce 24 | validations: 25 | required: true 26 | - type: textarea 27 | id: system-info 28 | attributes: 29 | label: System Info 30 | description: Platform and version and other information that may be helpful. 31 | render: Shell 32 | placeholder: System information 33 | validations: 34 | required: true 35 | - type: textarea 36 | id: additional-context 37 | attributes: 38 | label: Additional context 39 | description: Add any other context or screenshots about the problem here. 40 | placeholder: Additional context information 41 | - type: checkboxes 42 | id: checkboxes 43 | attributes: 44 | label: Validations 45 | description: Before submitting the issue, please make sure you do the following 46 | options: 47 | - label: Check that there isn't already an issue that reports the same bug to avoid creating a duplicate. 48 | required: true 49 | - label: Remember to follow the community guidelines and be friendly. 50 | required: true 51 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: GitHub Security Bug Bounty 4 | url: https://bounty.github.com/ 5 | about: Please report security vulnerabilities here. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: 🚀 New feature proposal 2 | description: Propose a new feature request 3 | title: "[feature] " 4 | labels: [feature] 5 | 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | Thanks for your interest in the project and taking the time to fill out this feature enhancement report! 11 | - type: textarea 12 | id: feature-description 13 | attributes: 14 | label: Clear and concise description of your idea 15 | description: "A clear and concise description of what the feature would do. If you intend to submit a PR for this issue, tell us in the description. Thanks!" 16 | validations: 17 | required: true 18 | - type: textarea 19 | id: helpful-description 20 | attributes: 21 | label: Describe how the idea would be helpful 22 | description: "A clear and concise description of how the feature would be helpful to users." 23 | validations: 24 | required: true 25 | - type: textarea 26 | id: additional-context 27 | attributes: 28 | label: Additional context 29 | description: Add any other context or screenshots about the feature request here. 30 | placeholder: Additional context information 31 | - type: checkboxes 32 | id: checkboxes 33 | attributes: 34 | label: Validations 35 | description: Before submitting the issue, please make sure you do the following 36 | options: 37 | - label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate. 38 | required: true 39 | - label: Remember to follow the community guidelines and be friendly. 40 | required: true 41 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/submit_info.yml: -------------------------------------------------------------------------------- 1 | name: ✨ 提交信息 2 | description: 提交/更正开源项目信息 3 | title: "[Submit] " 4 | labels: [submit] 5 | 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | ## 致谢 11 | 12 | 感谢您对于本仓库信息的补充,您的参与和付出将帮助更多人了解信息,并接触到这些宝贵的开源项目。 13 | - type: textarea 14 | id: open-source-link 15 | attributes: 16 | label: 开源链接 17 | description: 填入项目的链接 18 | placeholder: https://... 19 | validations: 20 | required: true 21 | - type: textarea 22 | id: open-source-group 23 | attributes: 24 | label: 组别 25 | description: 填入竞赛组别(请填入组别全称) 26 | validations: 27 | required: true 28 | - type: textarea 29 | id: open-source-info 30 | attributes: 31 | label: 学校、队伍名 32 | description: 填入学校信息、队伍名 33 | validations: 34 | required: true 35 | - type: textarea 36 | id: open-source-award 37 | attributes: 38 | label: 年份、获奖 39 | description: 填入项目获奖、年份信息 40 | validations: 41 | required: true 42 | - type: textarea 43 | id: open-source-remark 44 | attributes: 45 | label: 备注信息 46 | description: 可以填入备注信息(非必选) 47 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/typo.yml: -------------------------------------------------------------------------------- 1 | name: 👀 Typo / Grammar fix 2 | description: You can just go ahead and send a PR! Thank you! 3 | title: "[Typo] " 4 | labels: [] 5 | 6 | body: 7 | - type: markdown 8 | attributes: 9 | value: | 10 | ## PR Welcome! 11 | 12 | If the typo / grammar issue is trivial and straightforward, you can help by **directly sending a quick pull request**! 13 | If you spot multiple of them, we suggest combining them into a single PR. Thanks! 14 | - type: textarea 15 | id: additional-context 16 | attributes: 17 | label: Additional context 18 | description: Add any other context about the typo here. 19 | placeholder: Additional context information 20 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # Pull Requests 2 | 3 | 请切换到 **Preview** 标签,然后根据情况选择以下两个链接之一: 4 | 5 | - [向表格中增加信息](?template=addition.md) 6 | - [其他 Pull Requests](?template=general.md) 7 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/addition.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | # Source of information 8 | 9 | 10 | 11 | # Checklist 12 | 13 | - [ ] 我确定信息的正确性。 14 | - [ ] 我在提交 PR 前已经完整阅读了[提交指南](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/docs/contribution.md)。 15 | - [ ] 我在本地完成了测试,增加内容后项目可以正常运行。 16 | 17 | 18 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/general.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | # Description 8 | 9 | 10 | 11 | # Related Issues 12 | 13 | 14 | 15 | # Changes Made 16 | 17 | 18 | 19 | # Additional context 20 | 21 | 22 | 23 | 24 | # Checklist 25 | 26 | - [ ] I have tested these changes thoroughly. 27 | - [ ] I have updated the relevant documentation. 28 | - [ ] I have updated any necessary dependencies. 29 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | # 报告和修复安全问题 2 | 3 | 请勿打开 GitHub 问题或拉动请求 -- 这会让包括恶意行为者在内的所有人立即看到问题。 4 | 5 | 请使用 Github 的 Report a security vulnerability 来更安全地报告开源项目中的安全问题。 6 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /.github/workflows/builds.yml: -------------------------------------------------------------------------------- 1 | name: Builds 2 | 3 | on: 4 | push: 5 | branches: [main, dev] 6 | pull_request: 7 | branches: [main] 8 | workflow_dispatch: 9 | 10 | jobs: 11 | prettify: 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - name: Checking Out 16 | uses: actions/checkout@v4 17 | with: 18 | ref: ${{ github.head_ref }} 19 | persist-credentials: false 20 | 21 | - name: Inclusiveness Analyze 22 | uses: microsoft/InclusivenessAnalyzer@v1.0.1 23 | continue-on-error: true 24 | 25 | - name: Prettify markdown 26 | uses: creyD/prettier_action@v4.3 27 | with: 28 | prettier_options: --write **/*.{yml,md} 29 | commit_message: "Automatically Prettified Markdown" 30 | dry: True 31 | continue-on-error: true 32 | 33 | build: 34 | runs-on: ubuntu-latest 35 | 36 | needs: prettify 37 | 38 | strategy: 39 | fail-fast: true 40 | matrix: 41 | python-version: ["3.11"] 42 | 43 | steps: 44 | - name: Checking Out 45 | uses: actions/checkout@v4 46 | with: 47 | ref: ${{ github.head_ref }} 48 | fetch-depth: 0 49 | 50 | - name: Setup Python ${{ matrix.python-version }} 51 | uses: actions/setup-python@v5 52 | with: 53 | python-version: ${{ matrix.python-version }} 54 | 55 | - name: Install dependencies 56 | run: | 57 | python -m pip install --upgrade pip 58 | if [[ -f requirements.txt ]]; then python -m pip install -r requirements.txt; fi 59 | if [[ -f requirements-dev.txt ]]; then python -m pip install -r requirements-dev.txt; fi 60 | 61 | - name: Generate sub-tables & Build 62 | run: make 63 | 64 | - name: Lint & Format 65 | run: make lint 66 | 67 | - name: pre-commit 68 | run: make pre-commit 69 | 70 | - name: publish site as artifact 71 | uses: actions/upload-artifact@v4 72 | with: 73 | name: Awesome-IntelligentCarRace-Site 74 | path: site/ 75 | 76 | - name: Coverage test 77 | run: make unit-tests 78 | 79 | - name: Upload coverage reports to Codecov 80 | if: github.repository == 'ittuann/Awesome-IntelligentCarRace' && github.ref == 'refs/heads/main' 81 | uses: codecov/codecov-action@v5 82 | env: 83 | CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} 84 | continue-on-error: true 85 | 86 | - name: Upload coverage reporter to Codacy 87 | if: github.repository == 'ittuann/Awesome-IntelligentCarRace' && github.ref == 'refs/heads/main' 88 | uses: codacy/codacy-coverage-reporter-action@v1 89 | with: 90 | project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} 91 | coverage-reports: coverage.xml 92 | continue-on-error: true 93 | -------------------------------------------------------------------------------- /.github/workflows/dependabot-automerge.yml: -------------------------------------------------------------------------------- 1 | name: Dependabot auto-merge 2 | 3 | on: 4 | pull_request: 5 | workflow_dispatch: 6 | 7 | permissions: 8 | contents: write 9 | pull-requests: write 10 | 11 | jobs: 12 | dependabot-auto-merge: 13 | runs-on: ubuntu-latest 14 | 15 | if: github.event.pull_request.user.login == 'dependabot[bot]' 16 | 17 | steps: 18 | - name: Dependabot metadata 19 | id: dependabot-metadata 20 | uses: dependabot/fetch-metadata@v2 21 | with: 22 | github-token: "${{ secrets.GITHUB_TOKEN }}" 23 | 24 | - name: auto-merge for Dependabot PRs 25 | if: ${{ steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor' }} 26 | run: gh pr merge --auto --squash "$PR_URL" 27 | env: 28 | PR_URL: ${{github.event.pull_request.html_url}} 29 | GH_TOKEN: ${{secrets.GITHUB_TOKEN}} 30 | -------------------------------------------------------------------------------- /.github/workflows/gh-deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to Github Pages 2 | 3 | on: 4 | workflow_run: 5 | workflows: 6 | - Builds 7 | types: 8 | - completed 9 | workflow_dispatch: 10 | 11 | jobs: 12 | gh-deploy: 13 | runs-on: ubuntu-latest 14 | 15 | if: github.ref == 'refs/heads/main' && github.event.workflow_run.event == 'push' && github.event.workflow_run.conclusion == 'success' 16 | 17 | permissions: 18 | contents: write 19 | 20 | strategy: 21 | matrix: 22 | python-version: ["3.11"] 23 | 24 | steps: 25 | - name: Checking Out 26 | uses: actions/checkout@v4 27 | with: 28 | ref: ${{ github.head_ref }} 29 | fetch-depth: 0 30 | 31 | - name: Setup Python ${{ matrix.python-version }} 32 | uses: actions/setup-python@v5 33 | with: 34 | python-version: ${{ matrix.python-version }} 35 | 36 | - name: Install dependencies 37 | run: | 38 | python -m pip install --upgrade pip 39 | if [[ -f requirements.txt ]]; then python -m pip install -r requirements.txt; fi 40 | 41 | - name: Generate sub-tables & Build 42 | run: make 43 | 44 | - name: Prepare github pages 45 | id: prepare_pages 46 | run: | 47 | mkdocs --version 48 | 49 | git config --global user.name "github-actions[bot]" 50 | git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" 51 | MAIN_LATEST_HASH=$(git rev-parse --short=7 HEAD) 52 | 53 | echo "--- Clone gh-pages branch to pages directory. ---" 54 | git clone https://github.com/ittuann/Awesome-IntelligentCarRace.git pages 55 | cd pages 56 | git checkout gh-pages 57 | 58 | echo "--- Clean old files. ---" 59 | echo "--- Delete all tracked files ---" 60 | git rm -rf . || echo "No tracked files to remove." 61 | echo "--- Delete all untracked files ---" 62 | git clean -fxd 63 | 64 | echo "--- Copy new files. ---" 65 | cp -r ../site/* . 66 | git add . 67 | 68 | echo "--- Attempts to commit changes. If there are no changes the new commit will not be created. ---" 69 | git commit -s -m "Deployed GitHub Pages - $MAIN_LATEST_HASH" || echo "No changes to commit." 70 | 71 | echo "--- Check if there has been a new commit. ---" 72 | LOCAL_HASH=$(git rev-parse HEAD) 73 | REMOTE_HASH=$(git rev-parse @{u}) 74 | if [ "$LOCAL_HASH" != "$REMOTE_HASH" ]; then 75 | echo "has_changes=true" >> $GITHUB_OUTPUT 76 | echo "has_changes=true" 77 | else 78 | echo "has_changes=false" >> $GITHUB_OUTPUT 79 | echo "has_changes=false" 80 | fi 81 | 82 | - name: Push changes 83 | if: steps.prepare_pages.outputs.has_changes == 'true' 84 | uses: ad-m/github-push-action@master 85 | with: 86 | github_token: ${{ secrets.GITHUB_TOKEN }} 87 | branch: gh-pages 88 | directory: pages 89 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Auto Release 2 | 3 | on: 4 | workflow_dispatch: 5 | # workflow_run: 6 | # workflows: 7 | # - Builds 8 | # types: 9 | # - completed 10 | 11 | jobs: 12 | release: 13 | runs-on: ubuntu-latest 14 | 15 | if: > 16 | github.ref == 'refs/heads/main' && 17 | github.repository == 'ittuann/Awesome-IntelligentCarRace' 18 | 19 | steps: 20 | - name: Checking Out 21 | uses: actions/checkout@v4 22 | with: 23 | fetch-depth: 0 24 | 25 | - name: Check for data changes 26 | id: check_changes 27 | run: | 28 | if [[ "$(git rev-list --count HEAD)" -gt 1 ]]; then 29 | if git diff --name-only HEAD^ HEAD | grep -q "table.csv"; then 30 | echo "DATA_FILE_CHANGED=true" >> $GITHUB_ENV 31 | else 32 | echo "Date file has not changed in the last commit." 33 | fi 34 | DATA_FILE_SHA256=$(sha256sum table.csv | awk '{print $1}') 35 | echo "DATA_FILE_SHA256=$DATA_FILE_SHA256" >> $GITHUB_ENV 36 | echo "Data file SHA: $DATA_FILE_SHA256" 37 | echo "COMMIT_TIME=$(git log -1 --format=%cI)" >> $GITHUB_ENV 38 | fi 39 | 40 | - name: Upload new date artifact 41 | if: env.DATA_FILE_CHANGED == 'true' 42 | uses: actions/upload-artifact@v4 43 | with: 44 | name: date.csv 45 | path: table.csv 46 | 47 | - name: Auto create new date release 48 | if: env.DATA_FILE_CHANGED == 'true' 49 | uses: softprops/action-gh-release@v2 50 | with: 51 | files: table.csv 52 | tag_name: ${{ env.COMMIT_TIME }} 53 | name: Auto Release ${{ env.COMMIT_TIME }} 54 | body: | 55 | Automatically release the data table in `${{ env.COMMIT_TIME }}`. 56 | 57 | Commit SHA: ${{ github.sha }} 58 | 59 | File SHA256: `${{ env.DATA_FILE_SHA256 }}` 60 | draft: false 61 | prerelease: false 62 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__/ 2 | /.venv 3 | 4 | /site 5 | /table-url.csv 6 | /docs/**/*.csv 7 | 8 | /.cache 9 | /.pytest_cache 10 | /.ruff_cache 11 | /.mypy_cache 12 | /.coverage 13 | /htmlcov 14 | /coverage.xml 15 | /.vscode 16 | /.idea 17 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | default_language_version: 2 | python: python3.11 3 | 4 | repos: 5 | - repo: https://github.com/pre-commit/pre-commit-hooks 6 | rev: v5.0.0 7 | hooks: 8 | - id: check-toml 9 | - id: check-xml 10 | - id: check-yaml 11 | - id: trailing-whitespace 12 | - id: check-merge-conflict 13 | - id: check-symlinks 14 | - id: end-of-file-fixer 15 | - id: mixed-line-ending 16 | args: [--fix=auto] 17 | - id: check-case-conflict 18 | - id: detect-private-key 19 | - id: check-added-large-files 20 | - id: check-docstring-first 21 | 22 | - repo: https://github.com/psf/black 23 | rev: 25.1.0 24 | hooks: 25 | - id: black 26 | 27 | - repo: https://github.com/astral-sh/ruff-pre-commit 28 | rev: v0.11.8 29 | hooks: 30 | - id: ruff 31 | 32 | - repo: https://github.com/pre-commit/mirrors-mypy 33 | rev: v1.15.0 34 | hooks: 35 | - id: mypy 36 | 37 | - repo: https://github.com/asottile/pyupgrade 38 | rev: v3.19.1 39 | hooks: 40 | - id: pyupgrade 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 ittuann 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LICENSE-docs: -------------------------------------------------------------------------------- 1 | Attribution 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution 4.0 International Public License 58 | 59 | By exercising the Licensed Rights (defined below), You accept and agree 60 | to be bound by the terms and conditions of this Creative Commons 61 | Attribution 4.0 International Public License ("Public License"). To the 62 | extent this Public License may be interpreted as a contract, You are 63 | granted the Licensed Rights in consideration of Your acceptance of 64 | these terms and conditions, and the Licensor grants You such rights in 65 | consideration of benefits the Licensor receives from making the 66 | Licensed Material available under these terms and conditions. 67 | 68 | 69 | Section 1 -- Definitions. 70 | 71 | a. Adapted Material means material subject to Copyright and Similar 72 | Rights that is derived from or based upon the Licensed Material 73 | and in which the Licensed Material is translated, altered, 74 | arranged, transformed, or otherwise modified in a manner requiring 75 | permission under the Copyright and Similar Rights held by the 76 | Licensor. For purposes of this Public License, where the Licensed 77 | Material is a musical work, performance, or sound recording, 78 | Adapted Material is always produced where the Licensed Material is 79 | synched in timed relation with a moving image. 80 | 81 | b. Adapter's License means the license You apply to Your Copyright 82 | and Similar Rights in Your contributions to Adapted Material in 83 | accordance with the terms and conditions of this Public License. 84 | 85 | c. Copyright and Similar Rights means copyright and/or similar rights 86 | closely related to copyright including, without limitation, 87 | performance, broadcast, sound recording, and Sui Generis Database 88 | Rights, without regard to how the rights are labeled or 89 | categorized. For purposes of this Public License, the rights 90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 91 | Rights. 92 | 93 | d. Effective Technological Measures means those measures that, in the 94 | absence of proper authority, may not be circumvented under laws 95 | fulfilling obligations under Article 11 of the WIPO Copyright 96 | Treaty adopted on December 20, 1996, and/or similar international 97 | agreements. 98 | 99 | e. Exceptions and Limitations means fair use, fair dealing, and/or 100 | any other exception or limitation to Copyright and Similar Rights 101 | that applies to Your use of the Licensed Material. 102 | 103 | f. Licensed Material means the artistic or literary work, database, 104 | or other material to which the Licensor applied this Public 105 | License. 106 | 107 | g. Licensed Rights means the rights granted to You subject to the 108 | terms and conditions of this Public License, which are limited to 109 | all Copyright and Similar Rights that apply to Your use of the 110 | Licensed Material and that the Licensor has authority to license. 111 | 112 | h. Licensor means the individual(s) or entity(ies) granting rights 113 | under this Public License. 114 | 115 | i. Share means to provide material to the public by any means or 116 | process that requires permission under the Licensed Rights, such 117 | as reproduction, public display, public performance, distribution, 118 | dissemination, communication, or importation, and to make material 119 | available to the public including in ways that members of the 120 | public may access the material from a place and at a time 121 | individually chosen by them. 122 | 123 | j. Sui Generis Database Rights means rights other than copyright 124 | resulting from Directive 96/9/EC of the European Parliament and of 125 | the Council of 11 March 1996 on the legal protection of databases, 126 | as amended and/or succeeded, as well as other essentially 127 | equivalent rights anywhere in the world. 128 | 129 | k. You means the individual or entity exercising the Licensed Rights 130 | under this Public License. Your has a corresponding meaning. 131 | 132 | 133 | Section 2 -- Scope. 134 | 135 | a. License grant. 136 | 137 | 1. Subject to the terms and conditions of this Public License, 138 | the Licensor hereby grants You a worldwide, royalty-free, 139 | non-sublicensable, non-exclusive, irrevocable license to 140 | exercise the Licensed Rights in the Licensed Material to: 141 | 142 | a. reproduce and Share the Licensed Material, in whole or 143 | in part; and 144 | 145 | b. produce, reproduce, and Share Adapted Material. 146 | 147 | 2. Exceptions and Limitations. For the avoidance of doubt, where 148 | Exceptions and Limitations apply to Your use, this Public 149 | License does not apply, and You do not need to comply with 150 | its terms and conditions. 151 | 152 | 3. Term. The term of this Public License is specified in Section 153 | 6(a). 154 | 155 | 4. Media and formats; technical modifications allowed. The 156 | Licensor authorizes You to exercise the Licensed Rights in 157 | all media and formats whether now known or hereafter created, 158 | and to make technical modifications necessary to do so. The 159 | Licensor waives and/or agrees not to assert any right or 160 | authority to forbid You from making technical modifications 161 | necessary to exercise the Licensed Rights, including 162 | technical modifications necessary to circumvent Effective 163 | Technological Measures. For purposes of this Public License, 164 | simply making modifications authorized by this Section 2(a) 165 | (4) never produces Adapted Material. 166 | 167 | 5. Downstream recipients. 168 | 169 | a. Offer from the Licensor -- Licensed Material. Every 170 | recipient of the Licensed Material automatically 171 | receives an offer from the Licensor to exercise the 172 | Licensed Rights under the terms and conditions of this 173 | Public License. 174 | 175 | b. No downstream restrictions. You may not offer or impose 176 | any additional or different terms or conditions on, or 177 | apply any Effective Technological Measures to, the 178 | Licensed Material if doing so restricts exercise of the 179 | Licensed Rights by any recipient of the Licensed 180 | Material. 181 | 182 | 6. No endorsement. Nothing in this Public License constitutes or 183 | may be construed as permission to assert or imply that You 184 | are, or that Your use of the Licensed Material is, connected 185 | with, or sponsored, endorsed, or granted official status by, 186 | the Licensor or others designated to receive attribution as 187 | provided in Section 3(a)(1)(A)(i). 188 | 189 | b. Other rights. 190 | 191 | 1. Moral rights, such as the right of integrity, are not 192 | licensed under this Public License, nor are publicity, 193 | privacy, and/or other similar personality rights; however, to 194 | the extent possible, the Licensor waives and/or agrees not to 195 | assert any such rights held by the Licensor to the limited 196 | extent necessary to allow You to exercise the Licensed 197 | Rights, but not otherwise. 198 | 199 | 2. Patent and trademark rights are not licensed under this 200 | Public License. 201 | 202 | 3. To the extent possible, the Licensor waives any right to 203 | collect royalties from You for the exercise of the Licensed 204 | Rights, whether directly or through a collecting society 205 | under any voluntary or waivable statutory or compulsory 206 | licensing scheme. In all other cases the Licensor expressly 207 | reserves any right to collect such royalties. 208 | 209 | 210 | Section 3 -- License Conditions. 211 | 212 | Your exercise of the Licensed Rights is expressly made subject to the 213 | following conditions. 214 | 215 | a. Attribution. 216 | 217 | 1. If You Share the Licensed Material (including in modified 218 | form), You must: 219 | 220 | a. retain the following if it is supplied by the Licensor 221 | with the Licensed Material: 222 | 223 | i. identification of the creator(s) of the Licensed 224 | Material and any others designated to receive 225 | attribution, in any reasonable manner requested by 226 | the Licensor (including by pseudonym if 227 | designated); 228 | 229 | ii. a copyright notice; 230 | 231 | iii. a notice that refers to this Public License; 232 | 233 | iv. a notice that refers to the disclaimer of 234 | warranties; 235 | 236 | v. a URI or hyperlink to the Licensed Material to the 237 | extent reasonably practicable; 238 | 239 | b. indicate if You modified the Licensed Material and 240 | retain an indication of any previous modifications; and 241 | 242 | c. indicate the Licensed Material is licensed under this 243 | Public License, and include the text of, or the URI or 244 | hyperlink to, this Public License. 245 | 246 | 2. You may satisfy the conditions in Section 3(a)(1) in any 247 | reasonable manner based on the medium, means, and context in 248 | which You Share the Licensed Material. For example, it may be 249 | reasonable to satisfy the conditions by providing a URI or 250 | hyperlink to a resource that includes the required 251 | information. 252 | 253 | 3. If requested by the Licensor, You must remove any of the 254 | information required by Section 3(a)(1)(A) to the extent 255 | reasonably practicable. 256 | 257 | 4. If You Share Adapted Material You produce, the Adapter's 258 | License You apply must not prevent recipients of the Adapted 259 | Material from complying with this Public License. 260 | 261 | 262 | Section 4 -- Sui Generis Database Rights. 263 | 264 | Where the Licensed Rights include Sui Generis Database Rights that 265 | apply to Your use of the Licensed Material: 266 | 267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 268 | to extract, reuse, reproduce, and Share all or a substantial 269 | portion of the contents of the database; 270 | 271 | b. if You include all or a substantial portion of the database 272 | contents in a database in which You have Sui Generis Database 273 | Rights, then the database in which You have Sui Generis Database 274 | Rights (but not its individual contents) is Adapted Material; and 275 | 276 | c. You must comply with the conditions in Section 3(a) if You Share 277 | all or a substantial portion of the contents of the database. 278 | 279 | For the avoidance of doubt, this Section 4 supplements and does not 280 | replace Your obligations under this Public License where the Licensed 281 | Rights include other Copyright and Similar Rights. 282 | 283 | 284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 285 | 286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 296 | 297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 306 | 307 | c. The disclaimer of warranties and limitation of liability provided 308 | above shall be interpreted in a manner that, to the extent 309 | possible, most closely approximates an absolute disclaimer and 310 | waiver of all liability. 311 | 312 | 313 | Section 6 -- Term and Termination. 314 | 315 | a. This Public License applies for the term of the Copyright and 316 | Similar Rights licensed here. However, if You fail to comply with 317 | this Public License, then Your rights under this Public License 318 | terminate automatically. 319 | 320 | b. Where Your right to use the Licensed Material has terminated under 321 | Section 6(a), it reinstates: 322 | 323 | 1. automatically as of the date the violation is cured, provided 324 | it is cured within 30 days of Your discovery of the 325 | violation; or 326 | 327 | 2. upon express reinstatement by the Licensor. 328 | 329 | For the avoidance of doubt, this Section 6(b) does not affect any 330 | right the Licensor may have to seek remedies for Your violations 331 | of this Public License. 332 | 333 | c. For the avoidance of doubt, the Licensor may also offer the 334 | Licensed Material under separate terms or conditions or stop 335 | distributing the Licensed Material at any time; however, doing so 336 | will not terminate this Public License. 337 | 338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 339 | License. 340 | 341 | 342 | Section 7 -- Other Terms and Conditions. 343 | 344 | a. The Licensor shall not be bound by any additional or different 345 | terms or conditions communicated by You unless expressly agreed. 346 | 347 | b. Any arrangements, understandings, or agreements regarding the 348 | Licensed Material not stated herein are separate from and 349 | independent of the terms and conditions of this Public License. 350 | 351 | 352 | Section 8 -- Interpretation. 353 | 354 | a. For the avoidance of doubt, this Public License does not, and 355 | shall not be interpreted to, reduce, limit, restrict, or impose 356 | conditions on any use of the Licensed Material that could lawfully 357 | be made without permission under this Public License. 358 | 359 | b. To the extent possible, if any provision of this Public License is 360 | deemed unenforceable, it shall be automatically reformed to the 361 | minimum extent necessary to make it enforceable. If the provision 362 | cannot be reformed, it shall be severed from this Public License 363 | without affecting the enforceability of the remaining terms and 364 | conditions. 365 | 366 | c. No term or condition of this Public License will be waived and no 367 | failure to comply consented to unless expressly agreed to by the 368 | Licensor. 369 | 370 | d. Nothing in this Public License constitutes or may be interpreted 371 | as a limitation upon, or waiver of, any privileges and immunities 372 | that apply to the Licensor or You, including from the legal 373 | processes of any jurisdiction or authority. 374 | 375 | 376 | ======================================================================= 377 | 378 | Creative Commons is not a party to its public 379 | licenses. Notwithstanding, Creative Commons may elect to apply one of 380 | its public licenses to material it publishes and in those instances 381 | will be considered the “Licensor.” The text of the Creative Commons 382 | public licenses is dedicated to the public domain under the CC0 Public 383 | Domain Dedication. Except for the limited purpose of indicating that 384 | material is shared under a Creative Commons public license or as 385 | otherwise permitted by the Creative Commons policies published at 386 | creativecommons.org/policies, Creative Commons does not authorize the 387 | use of the trademark "Creative Commons" or any other trademark or logo 388 | of Creative Commons without its prior written consent including, 389 | without limitation, in connection with any unauthorized modifications 390 | to any of its public licenses or any other arrangements, 391 | understandings, or agreements concerning use of licensed material. For 392 | the avoidance of doubt, this paragraph does not form part of the 393 | public licenses. 394 | 395 | Creative Commons may be contacted at creativecommons.org. 396 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | MAKEFLAGS = --warn-undefined-variables 2 | MAKEFLAGS += --no-builtin-rules 3 | 4 | .PHONY: build serve live-serve install lint pre-commit unit-tests 5 | 6 | .DEFAULT_GOAL := build 7 | 8 | build: 9 | python -m scripts.split 10 | python -m scripts.build 11 | 12 | serve: 13 | python -m http.server --directory site 8000 --bind localhost 14 | 15 | live-serve: 16 | mkdocs serve -f ./docs/mkdocs.yml 17 | 18 | install: 19 | python -m pip install -r requirements.txt 20 | python -m pip install -r requirements-dev.txt 21 | pre-commit install 22 | 23 | lint: 24 | ruff check --fix . 25 | black --color --diff ./scripts 26 | mypy ./scripts 27 | pyupgrade --py311-plus ./scripts/build.py 28 | 29 | pre-commit: 30 | pre-commit run --verbose --all-files 31 | 32 | unit-tests: 33 | pytest 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 全国大学生智能汽车竞赛 开源项目收集 2 | 3 | [![GitHub Pages Status][github-image]][github-url] 4 | [![Netlify Status][netlify-image]][netlify-url] 5 | [![Vercel Status][vercel-image]][vercel-url] 6 | 7 | [github-image]: https://img.shields.io/github/deployments/ittuann/Awesome-IntelligentCarRace/github-pages?label=GitHub%20Pages&logo=github 8 | [github-url]: https://ittuann.github.io/Awesome-IntelligentCarRace 9 | [netlify-image]: https://api.netlify.com/api/v1/badges/a417caa8-be38-4fa6-8426-0d97ff68151b/deploy-status 10 | [netlify-url]: https://awesome-intelligentcarrace.netlify.app 11 | [vercel-image]: https://img.shields.io/github/deployments/ittuann/Awesome-IntelligentCarRace/Production?label=Vercel&logo=vercel 12 | [vercel-url]: https://awesome-intelligentcarrace.vercel.app 13 | 14 | [![Codecov Coverage](https://codecov.io/gh/ittuann/Awesome-IntelligentCarRace/graph/badge.svg?token=UZT4S22K06)](https://codecov.io/gh/ittuann/Awesome-IntelligentCarRace) 15 | [![pre-commit.ci Status](https://results.pre-commit.ci/badge/github/ittuann/Awesome-IntelligentCarRace/main.svg)](https://results.pre-commit.ci/latest/github/ittuann/Awesome-IntelligentCarRace/main) 16 | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/35d02f5299284eefadd465b0d01a8fce)](https://app.codacy.com/gh/ittuann/Awesome-IntelligentCarRace/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) 17 | [![FOSSA License Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace.svg?type=shield&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace?ref=badge_shield&issueType=license) 18 | 19 | > [!NOTE] 20 | > 请访问 GitHub Pages 链接以查看本项目: 21 | 22 | 如果您的网络环境在访问主站 [GitHub Pages](https://ittuann.github.io/Awesome-IntelligentCarRace) 时遇到不稳定的情况,可以尝试配置 [GitHub hosts 文件](https://github.com/ittuann/GitHub-IP-hosts) 或其他方式以缓解本地网络问题。 23 | 24 | 若您依然无法访问主站,您还可转向以下托管在不同平台的镜像站点,选择任一您能够顺利访问的主站镜像: [Cloudflare Pages 镜像](https://awesome-intelligentcarrace.pages.dev)、[Netlify 镜像](https://awesome-intelligentcarrace.netlify.app)、[Vercel 镜像](https://awesome-intelligentcarrace.vercel.app)。 25 | 26 | > For English-speaking participants, the English version of the Awesome Intelligent Car Racing Competition (NXP Cup) project, can be accessed via the following links: or 27 | 28 | ## 这是什么项目 29 | 30 | 本仓库意在收集并整理,历年参加 [全国大学生智能车竞赛(恩智浦杯/飞思卡尔杯)](https://baike.baidu.com/item/%E5%85%A8%E5%9B%BD%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%99%BA%E8%83%BD%E6%B1%BD%E8%BD%A6%E7%AB%9E%E8%B5%9B) 的全部开源项目。 31 | 32 | 特此向选择开源的车友们表示深深的感谢。 33 | 34 | 同时也期望本仓库不只作为一个项目列表,更希望它能够成为大家开源学习、交流和分享的平台。让我们一起维护和推进智能车竞赛的开源社区与文化,欢迎各位的交流和参与! 35 | 36 | > [!TIP] 37 | > **Star 🌟** 这个仓库,您将能在第一时间收到所有的更新和动态~ 38 | > 39 | > 同时,如果您觉得这个项目对您有所帮助,想要支持我们,或是在本合集中发现一些仓库对您有参考价值,也希望您能为其点上免费的 Star。您的每一个 Star 都是对我们开源项目的肯定和鼓励,感谢您对开源的支持! 40 | 41 | ## 参与贡献 ❤️ 42 | 43 | Pull Requests Wellcome! 一个丰富的平台需要车友们一起建设,也热烈欢迎大家加入并成为仓库的 Contributor ~ 44 | 45 | 如果您也想为这个项目添加一条新的内容,可以参考项目网页侧边栏内中完整的[🔭提交指南](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/)以了解如何开始。 46 | 47 | 您还可以通过直接新建 [Issues](https://github.com/ittuann/Awesome-IntelligentCarRace/issues) 的方式,直接在 GitHub 网页界面中进行无需 Git 操作的快速提交。过程中的每一个步骤都可以在[🔭提交指南-帮助通道](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/#_3)内找到。 48 | 49 | 如果您对参与本项目的开发感兴趣,请参考[提交指南-项目代码文档](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/#_2)以了解项目的完整流程。欢迎并感谢社区的任何贡献! 50 | 51 | ## 参与讨论 💬 52 | 53 | 推荐您直接使用本仓库的 [GitHub Discussions](https://github.com/ittuann/NEFU-CMEE-DebateTeam/discussions) 进行交流和讨论。这里集中了仓库所有的问题和讨论,同时在这里公开可见的讨论内容会被搜索引擎收录,从而帮助到更多有着相似问题或需求的人。 54 | 55 | 您还可以选择以下任意方式参与到本项目的讨论中。无论选择哪种方式参与本项目的讨论,或是提问、提出意见和建议等,我们都热烈欢迎并期待您的参与。 56 | 57 | [![GitHub Discussions](https://img.shields.io/badge/chat-on_github_discussions-brightgreen?logo=github&labelColor=171515&style=flat-square)](https://github.com/ittuann/NEFU-CMEE-DebateTeam/discussions) 58 | [![Gitter](https://img.shields.io/gitter/room/:ittuann/:Awesome-IntelligentCarRace-red?logo=gitter&style=flat-square)](https://app.gitter.im/#/room/#Awesome-IntelligentCarRace:gitter.im) 59 | [![Discord](https://img.shields.io/badge/chat-on_discord-brightgreen?logo=discord&labelColor=7289da&style=flat-square)](https://discord.gg/Wsk6vfjZXw) 60 | [![QQ Group:921573748](https://img.shields.io/badge/chat-on_qq_group-brightgreen?logo=tencent-qq&labelColor=1ebafc&style=flat-square)](https://qm.qq.com/cgi-bin/qm/qr?k=I1WBVAG2KYNjmXqZ1vFEqHEwQYJ47UAF&jump_from=webapi&authKey=JOKtfW49rAJ0q29SUpWG7QrqFbnG15QQK3kQLefCDAmdfpoDupfol1RhZutRBdez) 61 | 62 | ## 为何发起这个项目 63 | 64 | 智能车竞赛虽然历史悠久,但开源文化仍稍显薄弱。在少部分传统强校,会持续使用仅供校内的祖传代码,维护学校自身的优势。我尊重各校的选择和传统,但也希望能借助我这个开源项目,逐渐形成并壮大智能车竞赛的开源社区,为更多的同学带去参考和学习的机会。 65 | 66 | 作为来自非传统强校的学生,也曾是一名在机械自动化专业自学编程和嵌入式开发的同学,我深知开源的重要性和意义。两年前,我选择将自己国一的代码开源,目的就是希望能帮助到更多的同学。而现如今,我创建这个开源仓库,也是希望延续这份初衷与期望,为参加智能车竞赛的同学们搭建一个共享、学习和交流的地方。 67 | 68 | ## 致谢 69 | 70 | 感谢所有选择开源他们项目的车友,各位的无私分享为智能车竞赛带来了宝贵的资源。 71 | 72 | 同时感谢所有在 GitHub 上提交问题、提出建议和帮助改进这个项目的人。也感谢大家对于本仓库的贡献,您的参与和付出将帮助更多人接触和受益于这些宝贵的开源项目。 73 | 74 | [![Contributors](https://contrib.rocks/image?repo=ittuann/Awesome-IntelligentCarRace)](https://github.com/ittuann/Awesome-IntelligentCarRace/graphs/contributors) 75 | 76 |
77 | Star History 78 | 79 | 80 | Star History 81 | 82 |
83 | 84 | ## License 85 | 86 | The project is [MIT Licensed](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/LICENSE) 87 | 88 | The project documentation (e.g., `.md` files in the `/docs` folder) is [CC-BY-4.0 licensed](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/LICENSE-docs) 89 | 90 | [![FOSSA License Compliance Scan Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace.svg?type=large&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace?ref=badge_large&issueType=license) 91 | -------------------------------------------------------------------------------- /docs/en/index.md: -------------------------------------------------------------------------------- 1 | # Intelligent Car Racing Competition(NXP Cup) 2 | 3 | Awesome Intelligent Car Racing Competition ( NXP Cup ) / Autonomous Race Car Challenge 4 | 5 | Open source project collection website ✨ 6 | 7 | --- 8 | 9 | [![GitHub Pages Status][github-image]][github-url] 10 | [![Netlify Status][netlify-image]][netlify-url] 11 | [![Vercel Status][vercel-image]][vercel-url] 12 | 13 | [github-image]: https://img.shields.io/github/deployments/ittuann/Awesome-IntelligentCarRace/github-pages?label=GitHub%20Pages&logo=github 14 | [github-url]: https://ittuann.github.io/Awesome-IntelligentCarRace 15 | [netlify-image]: https://api.netlify.com/api/v1/badges/a417caa8-be38-4fa6-8426-0d97ff68151b/deploy-status 16 | [netlify-url]: https://awesome-intelligentcarrace.netlify.app 17 | [vercel-image]: https://img.shields.io/github/deployments/ittuann/Awesome-IntelligentCarRace/Production?label=Vercel&logo=vercel 18 | [vercel-url]: https://awesome-intelligent-car-race.vercel.app 19 | 20 | [![Codecov Coverage](https://codecov.io/gh/ittuann/Awesome-IntelligentCarRace/graph/badge.svg?token=UZT4S22K06)](https://codecov.io/gh/ittuann/Awesome-IntelligentCarRace){:target="\_blank"} 21 | [![pre-commit.ci Status](https://results.pre-commit.ci/badge/github/ittuann/Awesome-IntelligentCarRace/main.svg)](https://results.pre-commit.ci/latest/github/ittuann/Awesome-IntelligentCarRace/main){:target="\_blank"} 22 | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/35d02f5299284eefadd465b0d01a8fce)](https://app.codacy.com/gh/ittuann/Awesome-IntelligentCarRace/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade){:target="\_blank"} 23 | [![FOSSA License Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace.svg?type=shield&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace?ref=badge_shield&issueType=license){:target="\_blank"} 24 | 25 | Project GitHub Repository: {:target="\_blank"} 26 | 27 | Project GitHub Pages: {:target="\_blank"} 28 | 29 | > **Star Us 🌟**, You will receive all release notifications from GitHub without any delay~ 30 | 31 | ???+ question " FAQ: Network Issues" 32 | 33 | If you encounter instability in your network environment while accessing [Github Pages](https://ittuann.github.io/Awesome-IntelligentCarRace){:target="\_blank"}, you can switch to one of the following mirror sites hosted on different platforms. Choose any mirror that you can access smoothly: 34 | 35 | - Cloudflare Pages mirror site: {:target="\_blank"} 36 | - Netlify mirror site: {:target="\_blank"} 37 | - Vercel mirror site: {:target="\_blank"} 38 | 39 | ## TODO 40 | 41 | {{ read_csv('../table-url.csv') }} 42 | 43 | ## Acknowledgments 44 | 45 | Thank you to all the car enthusiasts who chose to open source their projects, your selfless sharing has resulted in a valuable resource for smart car racing. 46 | 47 | Thanks also to all of you who have submitted issues, made suggestions, and helped improve the project on Github. Thank you also for contributing to this repository, your participation and dedication will help more people access and benefit from these valuable open source projects. 48 | 49 | [![Contributors](https://contrib.rocks/image?repo=ittuann/Awesome-IntelligentCarRace)](https://github.com/ittuann/Awesome-IntelligentCarRace/graphs/contributors) 50 | 51 | [GitHub: ittuann/Awesome-IntelligentCarRace](https://github.com/ittuann/Awesome-IntelligentCarRace){ .md-button } 52 | 53 | ## License 54 | 55 | The project is [MIT Licensed](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/LICENSE){:target="\_blank"} 56 | 57 | ??? abstract "MIT License" 58 | 59 | MIT License 60 | 61 | Copyright (c) 2023 ittuann 62 | 63 | Permission is hereby granted, free of charge, to any person obtaining a copy 64 | of this software and associated documentation files (the "Software"), to deal 65 | in the Software without restriction, including without limitation the rights 66 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 67 | copies of the Software, and to permit persons to whom the Software is 68 | furnished to do so, subject to the following conditions: 69 | 70 | The above copyright notice and this permission notice shall be included in all 71 | copies or substantial portions of the Software. 72 | 73 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 74 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 75 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 76 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 77 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 78 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 79 | SOFTWARE. 80 | 81 | The project documentation (e.g., `.md` files in the `/docs` folder) is [CC-BY-4.0 licensed](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/LICENSE-docs){:target="\_blank"}. 82 | 83 | [![FOSSA License Compliance Scan Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace.svg?type=large&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace?ref=badge_large&issueType=license){:target="\_blank"} 84 | 85 | For error messages, copyright infringement, etc. on this repository, please submit [issues](https://github.com/ittuann/Awesome-IntelligentCarRace/issues){:target="\_blank"} in Github. 86 | 87 | If there is anything else you can email me [ittuann@outlook.com](mailto:ittuann@outlook.com) 88 | -------------------------------------------------------------------------------- /docs/en/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Sitemap: https://ittuann.github.io/Awesome-IntelligentCarRace/sitemap.xml 3 | Sitemap: https://ittuann.github.io/Awesome-IntelligentCarRace/en/sitemap.xml 4 | -------------------------------------------------------------------------------- /docs/mkdocs-base.yml: -------------------------------------------------------------------------------- 1 | # Configuration inheritance: https://www.mkdocs.org/user-guide/configuration/#configuration-inheritance 2 | # Repository 3 | repo_name: ittuann/Awesome-IntelligentCarRace 4 | repo_url: https://github.com/ittuann/Awesome-IntelligentCarRace 5 | 6 | # Copyright 7 | site_author: ittuann 8 | copyright: MIT & CC-BY-4.0 License 9 | 10 | # Configuration 11 | theme: 12 | name: material 13 | custom_dir: overrides 14 | font: 15 | text: Roboto 16 | code: Roboto Mono 17 | features: 18 | - navigation.top 19 | - navigation.footer 20 | - navigation.expand 21 | - navigation.tracking 22 | - navigation.indexes 23 | - navigation.instant.progress 24 | - navigation.instant 25 | - content.action.edit 26 | - content.code.copy 27 | - content.code.annotate 28 | - content.code.select 29 | - content.tabs.link 30 | - content.tooltips 31 | - search.suggest 32 | - search.highlight 33 | - search.share 34 | - toc.follow 35 | logo: assets/favicon/favicon.png 36 | favicon: assets/favicon/favicon.png 37 | icon: 38 | repo: fontawesome/brands/github 39 | edit: material/eye 40 | note: octicons/tag-16 41 | palette: 42 | - media: "(prefers-color-scheme: light)" 43 | scheme: default 44 | primary: deep purple 45 | accent: deep orange 46 | toggle: 47 | icon: material/brightness-7 48 | name: Switch to dark mode 49 | - media: "(prefers-color-scheme: dark)" 50 | scheme: slate 51 | primary: blue grey 52 | accent: deep purple 53 | toggle: 54 | icon: material/brightness-4 55 | name: Switch to light mode 56 | 57 | # Extensions 58 | markdown_extensions: 59 | - admonition 60 | - footnotes 61 | - attr_list 62 | - def_list 63 | - md_in_html 64 | - toc: 65 | permalink: true 66 | - pymdownx.caret 67 | - pymdownx.mark 68 | - pymdownx.tilde 69 | - pymdownx.critic 70 | - pymdownx.details 71 | - pymdownx.betterem 72 | - pymdownx.mark 73 | - pymdownx.smartsymbols 74 | - pymdownx.tabbed: 75 | alternate_style: true 76 | - pymdownx.highlight: 77 | anchor_linenums: true 78 | - pymdownx.superfences 79 | - pymdownx.tasklist: 80 | custom_checkbox: true 81 | - pymdownx.emoji 82 | - meta 83 | - tables 84 | 85 | extra_javascript: 86 | - https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js 87 | - javascripts/tablesort.js 88 | 89 | # Extra 90 | extra: 91 | social: 92 | - icon: octicons/globe-16 93 | link: https://ittuann.github.io/Awesome-IntelligentCarRace/ 94 | - icon: fontawesome/brands/github 95 | link: https://github.com/ittuann 96 | - icon: fontawesome/solid/envelope 97 | link: mailto: 98 | robots: robots.txt 99 | generator: false 100 | analytics: 101 | provider: google 102 | property: G-8SY1RE8KQW 103 | alternate: 104 | - name: Chinese 105 | link: / 106 | lang: zh 107 | - name: English 108 | link: /en/ 109 | lang: en 110 | -------------------------------------------------------------------------------- /docs/mkdocs.en.yml: -------------------------------------------------------------------------------- 1 | # Configuration inheritance 2 | INHERIT: mkdocs-base.yml 3 | watch: 4 | - mkdocs-base.yml 5 | - overrides 6 | 7 | # Project information 8 | site_name: Awesome-IntelligentCarRace 9 | site_description: Awesome Intelligent Car Racing Competition 10 | site_url: https://ittuann.github.io/Awesome-IntelligentCarRace/en/ 11 | 12 | # Build information 13 | docs_dir: en 14 | site_dir: ../site/en 15 | edit_uri: blob/main/docs/en 16 | 17 | # Configuration 18 | theme: 19 | language: en 20 | 21 | # Plugins 22 | plugins: 23 | - table-reader 24 | - rss 25 | - mkdocstrings: 26 | enabled: true 27 | default_handler: python 28 | handlers: 29 | python: 30 | options: 31 | docstring_style: google 32 | - search: 33 | lang: en 34 | - git-committers: 35 | repository: ittuann/Awesome-IntelligentCarRace 36 | branch: main 37 | 38 | # Navigation 39 | nav: 40 | - ✨Index: index.md 41 | - 🖨️Multilingual: 42 | - zh Chinese: https://ittuann.github.io/Awesome-IntelligentCarRace/ 43 | - en English: https://ittuann.github.io/Awesome-IntelligentCarRace/en/ 44 | -------------------------------------------------------------------------------- /docs/mkdocs.yml: -------------------------------------------------------------------------------- 1 | # Configuration inheritance 2 | INHERIT: mkdocs-base.yml 3 | watch: 4 | - mkdocs-base.yml 5 | - overrides 6 | 7 | # Project information 8 | site_name: Awesome-IntelligentCarRace 9 | site_description: 智能车竞赛 开源项目合集 | Awesome Intelligent Car Racing Competition 10 | site_url: https://ittuann.github.io/Awesome-IntelligentCarRace/ 11 | 12 | # Build information 13 | docs_dir: zh 14 | site_dir: ../site 15 | edit_uri: blob/main/docs/zh 16 | 17 | # Configuration 18 | theme: 19 | language: zh 20 | 21 | # Plugins 22 | plugins: 23 | - table-reader 24 | - rss 25 | - mkdocstrings: 26 | enabled: true 27 | default_handler: python 28 | handlers: 29 | python: 30 | paths: [../] 31 | options: 32 | docstring_style: google 33 | show_root_heading: true 34 | show_source: true 35 | - search: 36 | lang: zh 37 | separator: '[\s\u200b\-]' 38 | - git-committers: 39 | repository: ittuann/Awesome-IntelligentCarRace 40 | branch: main 41 | - redirects: 42 | redirect_maps: 43 | contribution.md: contribution/contribution.md 44 | 45 | # Navigation 46 | nav: 47 | - ✨首页: index.md 48 | - 🏆获奖: 49 | - 国家级一等奖: award/国家级一等奖.md 50 | - 国家级二等奖: award/国家级二等奖.md 51 | - 省级一等奖: award/省级一等奖.md 52 | - 省级二等奖: award/省级二等奖.md 53 | - 省级三等奖: award/省级三等奖.md 54 | - 🗃️组别: 55 | - 摄像头四轮组: group/摄像头四轮组.md 56 | - 智能视觉组: group/智能视觉组.md 57 | - 多车编队组: group/多车编队组.md 58 | - 全向行进组: group/全向行进组.md 59 | - 负压电磁组: group/负压电磁组.md 60 | - 无线充电组: group/无线充电组.md 61 | - 📅年份: 62 | - 2023: year/2023.md 63 | - 2022: year/2022.md 64 | - 2021: year/2021.md 65 | - 🔭提交指南: contribution/contribution.md 66 | - 🖨️Multilingual: 67 | - zh Chinese: https://ittuann.github.io/Awesome-IntelligentCarRace/ 68 | - en English: https://ittuann.github.io/Awesome-IntelligentCarRace/en/ 69 | -------------------------------------------------------------------------------- /docs/overrides/assets/favicon/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ittuann/Awesome-IntelligentCarRace/dc475a4a315f1caf1d59f85126cffcd2ee105b71/docs/overrides/assets/favicon/favicon.png -------------------------------------------------------------------------------- /docs/overrides/javascripts/tablesort.js: -------------------------------------------------------------------------------- 1 | document$.subscribe(function () { 2 | let tables = document.querySelectorAll("article table:not([class])"); 3 | tables.forEach(function (table) { 4 | // 为自定义排序添加标签 5 | let headerCells = table.querySelectorAll("th"); 6 | headerCells.forEach(function (cell) { 7 | if (cell.textContent.trim().includes("获奖")) { 8 | cell.setAttribute("data-sort-method", "award"); 9 | } 10 | }); 11 | 12 | // 自定义获奖等级排序 13 | const AWARD_ORDER = ["国1", "国2", "国3", "省1", "省2", "省3"]; 14 | 15 | Tablesort.extend( 16 | "award", 17 | function (item) { 18 | return typeof item === "string" && AWARD_ORDER.includes(item); 19 | }, 20 | function (a, b) { 21 | return AWARD_ORDER.indexOf(a) - AWARD_ORDER.indexOf(b); 22 | } 23 | ); 24 | 25 | new Tablesort(table); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /docs/overrides/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block extrahead %} 4 | {{ super() }} 5 | 6 | 7 | 8 | 9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /docs/zh/award/国家级一等奖.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 国家级一等奖开源项目 - 分表 7 | 8 | {{ read_csv('zh/award/国1.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/award/国家级二等奖.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 国家级二等奖开源项目 - 分表 7 | 8 | {{ read_csv('zh/award/国2.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/award/省级一等奖.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 省级一等奖开源项目 - 分表 7 | 8 | {{ read_csv('zh/award/省1.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/award/省级三等奖.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 省级三等奖开源项目 - 分表 7 | 8 | {{ read_csv('zh/award/省3.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/award/省级二等奖.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 省级二等奖开源项目 - 分表 7 | 8 | {{ read_csv('zh/award/省2.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/contribution/contribution.md: -------------------------------------------------------------------------------- 1 | # 提交指南 2 | 3 | 参与本项目的协作**需要**一个 GitHub 账号(可以前往 [GitHub 账号注册页面](https://github.com/signup) 进行注册),但**并不需要**高超的 GitHub 技巧。 4 | 5 | 如果您想要向这份表格中提交新的内容,请参考本提交指南的内容。 6 | 7 | !!! note "提交前请注意" 8 | 9 | 在提交 [Pull Request](https://github.com/ittuann/Awesome-IntelligentCarRace/pulls){:target="\_blank"} 前,请先阅读本提交引导文档。 10 | 11 | 如果您不熟悉 Git 等操作,可以直接查看[帮助通道](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/#_5)来在 GitHub 网页内提交 issue 补充信息。 12 | 13 | 常规的提交信息最少仅需 2 步:1.[向表格中增加信息](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/#_2) -> 2.(非必须但推荐)[测试添加后的效果](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/#_3) -> 3.[提交 Pull Request 更改](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/#_4)。 14 | 15 | 您也可以考虑直接使用[帮助通道](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/#_5),免去不熟悉的 Git 操作直接在 GitHub 网页界面中提交 issue,以此进行信息的补充。 16 | 17 | ## 1. 向表格中增加信息 18 | 19 | 首先,请登录您的 Github 账号。打开本项目的仓库链接: {:target="\_blank"} ,然后在页面的右上角点击 `Fork` 按钮,以将本仓库分支到您的个人账号。 20 | 21 | 确保您已经克隆了最新版本的仓库,并且在正确的 [`main`](https://github.com/ittuann/Awesome-IntelligentCarRace/tree/main){:target="\_blank"} 分支上进行操作。 22 | 23 | 想要在表格中添加新的内容,仅需要直接修改项目**根目录**的 [`table.csv`](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/table.csv){:target="\_blank"}。 24 | 25 | 在 [`table.csv`](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/table.csv){:target="\_blank"} 表格的最后一行后,追加您想要添加的一行新条目。请确保您提交的数据格式正确,并与表单内现有条目保持一致。信息的添加即可完成。 26 | 27 | 如果您已增加了信息但没有执行下一步在本地测试添加后的效果,请在 Pull Request 内**明确注明**。 28 | 29 | ## 1. 添加 badges 30 | 31 | 如果您是开源项目的维护者,希望您你能够在您的项目中添加一个徽章,以表示您的开源项目被收录在 Awesome Intelligent Car Race 合集中。 32 | 33 | 在您的项目的 README.md 文件顶部添加: 34 | 35 | ```plaintext 36 | [![Awesome Intelligent Car Race](https://awesome.re/badge.svg)](https://github.com/ittuann/Awesome-IntelligentCarRace) 37 | ``` 38 | 39 | 添加的徽章显示效果为: 40 | 41 | [![Awesome Intelligent Car Race](https://awesome.re/badge.svg)](https://github.com/ittuann/Awesome-IntelligentCarRace) 42 | 43 | ## 2. 测试添加后的效果 44 | 45 | 为了保提交不会引入任何错误,在本地测试添加信息后的网页效果时,首先需要安装 Python 环境和依赖。 46 | 47 | 如果您的环境中能够使用 make 命令,可以直接运行以下命令来安装必要的依赖: 48 | 49 | ```shell 50 | make install 51 | ``` 52 | 53 | 在安装依赖后,即可在本地构建站点: 54 | 55 | ```shell 56 | make 57 | ``` 58 | 59 | 在构建完成后,您可以在本地查看修改后的网站效果: 60 | 61 | ```shell 62 | make serve 63 | ``` 64 | 65 | 最后添加git pre-commit hook,然后运行以下命令来进行代码风格检查和单元测试,即可完成提交 PR 前的全部测试: 66 | 67 | ```shell 68 | pre-commit install 69 | 70 | make lint 71 | make unit-tests 72 | ``` 73 | 74 | 如果在运行项目过程中没有出现任何报错,那就代表您成功地完成了增加信息后的测试。您也可以在本地浏览打开`http://127.0.0.1:8000/Awesome-IntelligentCarRace/`查看效果。 75 | 76 | ## 3. 提交 Pull Request 更改 77 | 78 | 在确认所有更改都正常工作后,您可以将更改提交到您的分支,并创建一个 [Pull Request](https://github.com/ittuann/Awesome-IntelligentCarRace/pulls){:target="\_blank"},即可完成信息的补充。 79 | 80 | ## 项目代码文档 81 | 82 | 项目采用 CI/CD 流程自动完成构建和部署。主网站通过 [GitHub Action](https://github.com/ittuann/Awesome-IntelligentCarRace/actions){:target="\_blank"} 实现 CI/CD 流程进行自动构建和部署至 [GitHub Pages](https://ittuann.github.io/Awesome-IntelligentCarRace){:target="\_blank"}。 83 | 84 | 如果您想了解完整的工作流,可以查看本仓库的 [Github Action](https://github.com/ittuann/Awesome-IntelligentCarRace/actions){:target="\_blank"}。这里包含了整个自动化流程详细的步骤和运行记录。 85 | 86 | 项目代码覆盖率测试可在此查看: [Codecov](https://app.codecov.io/gh/ittuann/Awesome-IntelligentCarRace){:target="\_blank"} [![Codecov Coverage](https://codecov.io/gh/ittuann/Awesome-IntelligentCarRace/graph/badge.svg?token=UZT4S22K06)](https://codecov.io/gh/ittuann/Awesome-IntelligentCarRace){:target="\_blank"} ; 项目代码质量分析请访问: [Codacy](https://app.codacy.com/gh/ittuann/Awesome-IntelligentCarRace/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/35d02f5299284eefadd465b0d01a8fce)](https://app.codacy.com/gh/ittuann/Awesome-IntelligentCarRace/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade){:target="\_blank"} ; 仓库许可证合规性扫描请查看: [FOSSA](https://app.fossa.com/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace){:target="\_blank"} [![FOSSA License Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace.svg?type=small)](https://app.fossa.com/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace?ref=badge_small){:target="\_blank"} 87 | 88 | 项目也提供了代码文档,您可以通过以下链接查看:{:target="\_blank"} 89 | 90 | 该代码文档由源代码内的信息自动生成,确保了文档随代码的更新同步保持最新状态。 91 | 92 | 此外,项目也提供了 RSS 订阅的方式,分别是默认以内容更新日期排序的[RSS](https://ittuann.github.io/Awesome-IntelligentCarRace/feed_rss_created.xml){:target="\_blank"},和以文档创建日期排序的 [feed_rss_created](https://ittuann.github.io/Awesome-IntelligentCarRace/feed_rss_created.xml){:target="\_blank"}。您可以通过订阅 [RSS](https://ittuann.github.io/Awesome-IntelligentCarRace/feed_rss_created.xml){:target="\_blank"} 来获取项目的最新动态。 93 | 94 | ## 帮助通道 & 快速提交 95 | 96 | 如果您不熟悉上述 Git 等操作,但依然希望为项目补充或修改信息,不用担心,我们为您提供了另外一个便捷的途径,即直接在 GitHub 网页界面中提交。 97 | 98 | a. 提交 Issue: 99 | 100 | - 打开项目的 [Github 仓库页面](https://github.com/ittuann/Awesome-IntelligentCarRace){:target="\_blank"} 。 101 | - 转到 [Issues](https://github.com/ittuann/Awesome-IntelligentCarRace/issues){:target="\_blank"} 栏,点击的 [New issue](https://github.com/ittuann/Awesome-IntelligentCarRace/issues/new/choose){:target="\_blank"} 按钮。 102 | - 在显示的几个 Issues 模板中,选择 `✨ 提交信息` 。 103 | - 根据模板的提示完成信息的录入。 104 | - 提交 Issue 即可完成! 105 | 106 | b. 等待反馈: 107 | 108 | - 一旦您提交了 Issue,我或其他社区成员会在看到后开始处理。我们会不定期检查并将您提供的信息添加到项目中。 109 | - 同时,您也可以在 Issue 中追踪到我们对您请求的处理情况。 110 | 111 | 每一个人都可以为项目做出贡献,不论您是否熟悉技术操作。感谢您的参与和支持! 112 | -------------------------------------------------------------------------------- /docs/zh/contribution/scripts.md: -------------------------------------------------------------------------------- 1 | # Code Documentation 2 | 3 | !!! Info 4 | This documentation is automatically generated from the source code function description. 5 | 6 | ::: scripts.build 7 | options: 8 | show_root_heading: true 9 | 10 | --- 11 | 12 | ::: scripts.split 13 | options: 14 | show_root_heading: true 15 | 16 | --- 17 | 18 | ::: tests.test_functions 19 | options: 20 | show_root_heading: true 21 | -------------------------------------------------------------------------------- /docs/zh/group/全向行进组.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 全向行进组开源项目 - 分表 7 | 8 | {{ read_csv('zh/group/全向行进组.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/group/多车编队组.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 多车编队组开源项目 - 分表 7 | 8 | {{ read_csv('zh/group/多车编队组.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/group/摄像头四轮组.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 摄像头四轮组开源项目 - 分表 7 | 8 | {{ read_csv('zh/group/摄像头四轮组.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/group/无线充电组.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 无线充电组开源项目 - 分表 7 | 8 | {{ read_csv('zh/group/无线充电组.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/group/智能视觉组.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 智能视觉组开源项目 - 分表 7 | 8 | {{ read_csv('zh/group/智能视觉组.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/group/负压电磁组.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 负压电磁组开源项目 - 分表 7 | 8 | {{ read_csv('zh/group/负压电磁组.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/index.md: -------------------------------------------------------------------------------- 1 | # 全国大学生智能汽车竞赛 开源项目收集 2 | 3 | ## 这是什么项目 4 | 5 | 本仓库意在汇集,历年参加 [全国大学生智能车竞赛(恩智浦杯/飞思卡尔杯)](https://baike.baidu.com/item/%E5%85%A8%E5%9B%BD%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%99%BA%E8%83%BD%E6%B1%BD%E8%BD%A6%E7%AB%9E%E8%B5%9B){:target="\_blank"} 的全部开源项目。 6 | 7 | > **[Star 🌟 这个GitHub仓库](https://github.com/ittuann/Awesome-IntelligentCarRace)**,您将能在第一时间收到所有的更新和动态~ 8 | 9 | --- 10 | 11 | [![GitHub Pages Status][github-image]][github-url] 12 | [![Netlify Status][netlify-image]][netlify-url] 13 | [![Vercel Status][vercel-image]][vercel-url] 14 | 15 | [github-image]: https://img.shields.io/github/deployments/ittuann/Awesome-IntelligentCarRace/github-pages?label=GitHub%20Pages&logo=github 16 | [github-url]: https://ittuann.github.io/Awesome-IntelligentCarRace 17 | [netlify-image]: https://api.netlify.com/api/v1/badges/a417caa8-be38-4fa6-8426-0d97ff68151b/deploy-status 18 | [netlify-url]: https://awesome-intelligentcarrace.netlify.app 19 | [vercel-image]: https://img.shields.io/github/deployments/ittuann/Awesome-IntelligentCarRace/Production?label=Vercel&logo=vercel 20 | [vercel-url]: https://awesome-intelligent-car-race.vercel.app 21 | 22 | [![Codecov Coverage](https://codecov.io/gh/ittuann/Awesome-IntelligentCarRace/graph/badge.svg?token=UZT4S22K06)](https://codecov.io/gh/ittuann/Awesome-IntelligentCarRace){:target="\_blank"} 23 | [![pre-commit.ci Status](https://results.pre-commit.ci/badge/github/ittuann/Awesome-IntelligentCarRace/main.svg)](https://results.pre-commit.ci/latest/github/ittuann/Awesome-IntelligentCarRace/main){:target="\_blank"} 24 | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/35d02f5299284eefadd465b0d01a8fce)](https://app.codacy.com/gh/ittuann/Awesome-IntelligentCarRace/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade){:target="\_blank"} 25 | [![FOSSA License Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace.svg?type=shield&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace?ref=badge_shield&issueType=license){:target="\_blank"} 26 | 27 | 这个项目项目完全开源并托管至 GitHub 仓库: {:target="\_blank"} 28 | 29 | 项目 GitHub Pages 主站网页链接: {:target="\_blank"} 30 | 31 | ???+ question "FAQ: 访问 GitHub 不稳定?" 32 | 33 | 如果您的网络环境在访问主站 [GitHub Pages](https://ittuann.github.io/Awesome-IntelligentCarRace) 时遇到不稳定的问题,可以尝试配置 [GitHub Hosts 文件](https://github.com/ittuann/GitHub-IP-hosts){:target="\_blank"} 等方式以缓解本地网络情况。若您依然无法访问主站请转向 [GitHub 仓库](https://github.com/ittuann/Awesome-IntelligentCarRace) 说明内的最新镜像站点。 34 | 35 | > For English-speaking participants, the English version of the Awesome Intelligent Car Racing Competition ( NXP Cup ) project can be accessed via: {:target="\_blank"} 36 | 37 | ## 参与贡献 ❤️ 38 | 39 | Pull Requests Wellcome! 一个丰富的平台需要车友们一起建设,也热烈欢迎大家加入并成为仓库的 Contributor ~ 40 | 41 | 如果您也想为这个项目添加一条新的内容,可以参考项目网页侧边栏内中完整的[🔭提交指南](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/){:target="\_blank"}以了解如何开始。 42 | 43 | 您还可以通过直接新建 [Issues](https://github.com/ittuann/Awesome-IntelligentCarRace/issues){:target="\_blank"} 的方式,直接在 GitHub 网页界面中进行无需 Git 操作的快速提交。过程中的每一个步骤都可以在[🔭提交指南-帮助通道](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/#_3){:target="\_blank"}内找到。 44 | 45 | 如果您对参与本项目的开发感兴趣,请参考[提交指南-项目代码文档](https://ittuann.github.io/Awesome-IntelligentCarRace/contribution/contribution/#_2){:target="\_blank"}以了解项目的完整流程。欢迎并感谢社区的任何贡献! 46 | 47 | ## 开源项目合集总表 ✨ 48 | 49 | !!! abstract "筛选" 50 | 51 | 您可以在侧边栏中,查看按照年份/组别/获奖进行分类筛选的表格。 52 | 53 | {{ read_csv('../table-url.csv') }} 54 | 55 | ???+ example "下载表格" 56 | 57 | 如果您想要下载当前版本的汇总表,请前往 [GitHub 仓库](https://github.com/ittuann/Awesome-IntelligentCarRace/){:target="_blank"} 的 [Releases](https://github.com/ittuann/Awesome-IntelligentCarRace/releases/latest){:target="_blank"} 页面进行下载。 58 | 59 | ## 参与讨论 💬 60 | 61 | 推荐您直接使用本仓库的 [GitHub Discussions](https://github.com/ittuann/NEFU-CMEE-DebateTeam/discussions){:target="\_blank"} 进行交流和讨论。这里汇集了仓库所有相关的问题和讨论,同时在这里公开可见的讨论内容会被搜索引擎收录,从而帮助到更多有着相似问题或需求的人。 62 | 63 | 您还可以选择以下任意方式参与到本项目的讨论中。无论选择哪种方式参与本项目的讨论,或是提问、提出意见和建议等,我们都热烈欢迎并期待您的参与。 64 | 65 | [![GitHub Discussions](https://img.shields.io/badge/chat-on_github_discussions-brightgreen?logo=github&labelColor=171515&style=flat-square)](https://github.com/ittuann/NEFU-CMEE-DebateTeam/discussions) 66 | [![Gitter](https://img.shields.io/gitter/room/:ittuann/:Awesome-IntelligentCarRace-red?logo=gitter&style=flat-square)](https://app.gitter.im/#/room/#Awesome-IntelligentCarRace:gitter.im) 67 | [![Discord](https://img.shields.io/badge/chat-on_discord-brightgreen?logo=discord&labelColor=7289da&style=flat-square)](https://discord.gg/Wsk6vfjZXw) 68 | [![QQ Group:921573748](https://img.shields.io/badge/chat-on_qq_group-brightgreen?logo=tencent-qq&labelColor=1ebafc&style=flat-square)](https://qm.qq.com/cgi-bin/qm/qr?k=I1WBVAG2KYNjmXqZ1vFEqHEwQYJ47UAF&jump_from=webapi&authKey=JOKtfW49rAJ0q29SUpWG7QrqFbnG15QQK3kQLefCDAmdfpoDupfol1RhZutRBdez) 69 | 70 | ## 为何发起这个项目 71 | 72 | 智能车竞赛虽然历史悠久,但开源文化仍稍显薄弱。在少部分传统强校,会持续使用仅供校内的祖传代码,维护学校自身的优势。我尊重各校的选择和传统,但也希望能借助我这个开源项目,逐渐形成并壮大智能车竞赛的开源社区,为更多的同学带去参考和学习的机会。 73 | 74 | 作为来自非传统强校的学生,也曾是一名在机械自动化专业自学编程和嵌入式开发的同学,我深知开源的重要性和意义。两年前,我选择将自己国一的代码开源,目的就是希望能帮助到更多的同学。而现如今,我创建这个开源仓库,也是希望延续这份初衷,为参加智能车竞赛的同学们搭建一个共享、学习和交流的地方。 75 | 76 | ## 致谢 77 | 78 | 感谢所有选择开源他们项目的车友,各位的无私分享为智能车竞赛带来了宝贵的资源。 79 | 80 | 同时感谢所有在 GitHub 上提交问题、提出建议和帮助改进这个项目的人。也感谢大家对于本仓库的贡献,您的参与和付出将帮助更多人接触和受益于这些宝贵的开源项目。 81 | 82 | [![Contributors](https://contrib.rocks/image?repo=ittuann/Awesome-IntelligentCarRace)](https://github.com/ittuann/Awesome-IntelligentCarRace/graphs/contributors) 83 | 84 | [GitHub: ittuann/Awesome-IntelligentCarRace](https://github.com/ittuann/Awesome-IntelligentCarRace){ .md-button } 85 | 86 | ## License 87 | 88 | The project is [MIT Licensed](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/LICENSE){:target="\_blank"} 89 | 90 | ??? abstract "MIT License" 91 | 92 | MIT License 93 | 94 | Copyright (c) 2023 ittuann 95 | 96 | Permission is hereby granted, free of charge, to any person obtaining a copy 97 | of this software and associated documentation files (the "Software"), to deal 98 | in the Software without restriction, including without limitation the rights 99 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 100 | copies of the Software, and to permit persons to whom the Software is 101 | furnished to do so, subject to the following conditions: 102 | 103 | The above copyright notice and this permission notice shall be included in all 104 | copies or substantial portions of the Software. 105 | 106 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 107 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 108 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 109 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 110 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 111 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 112 | SOFTWARE. 113 | 114 | The project documentation (e.g., `.md` files in the `/docs` folder) is [CC-BY-4.0 licensed](https://github.com/ittuann/Awesome-IntelligentCarRace/blob/main/LICENSE-docs){:target="\_blank"}. 115 | 116 | [![FOSSA License Compliance Scan Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace.svg?type=large&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fittuann%2FAwesome-IntelligentCarRace?ref=badge_large&issueType=license){:target="\_blank"} 117 | 118 | 如遇本仓库错误信息、侵权等,请在 GitHub 本仓库中提交 [issues](https://github.com/ittuann/Awesome-IntelligentCarRace/issues){:target="\_blank"} 。 119 | 120 | 若有其他情况可以向我发送邮件 [ittuann@outlook.com](mailto:ittuann@outlook.com) 121 | -------------------------------------------------------------------------------- /docs/zh/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Sitemap: https://ittuann.github.io/Awesome-IntelligentCarRace/sitemap.xml 3 | Sitemap: https://ittuann.github.io/Awesome-IntelligentCarRace/en/sitemap.xml 4 | -------------------------------------------------------------------------------- /docs/zh/year/2021.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 2021 年开源项目 - 分表 7 | 8 | {{ read_csv('zh/year/2021.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/year/2022.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 2022 年开源项目 - 分表 7 | 8 | {{ read_csv('zh/year/2022.csv') }} 9 | -------------------------------------------------------------------------------- /docs/zh/year/2023.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide: 3 | toc: true 4 | --- 5 | 6 | # 2023 年开源项目 - 分表 7 | 8 | {{ read_csv('zh/year/2023.csv') }} 9 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.black] 2 | line-length = 120 3 | 4 | [tool.mypy] 5 | pretty = true 6 | warn_redundant_casts = true 7 | 8 | [tool.ruff] 9 | line-length = 120 10 | 11 | [tool.ruff.lint] 12 | select = [ 13 | # pycodestyle 14 | "E", 15 | # Pyflakes 16 | "F", 17 | # pyupgrade 18 | "UP", 19 | # flake8-bugbear 20 | "B", 21 | # flake8-simplify 22 | "SIM", 23 | # isort 24 | "I", 25 | ] 26 | extend-select = [ 27 | # pydocstyle 28 | "D", 29 | ] 30 | ignore = ["UP009", "D415"] 31 | 32 | [tool.ruff.lint.pydocstyle] 33 | convention = "google" 34 | 35 | [tool.coverage.report] 36 | exclude_lines = [ 37 | "if 0:", 38 | "if __name__ == .__main__.:", 39 | ] 40 | 41 | [tool.pytest.ini_options] 42 | addopts = "-ra --cov=./scripts --cov-report=term --cov-report=xml --cov-report=html --timeout=15 --reruns 2 --reruns-delay 1" 43 | -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- 1 | black 2 | ruff 3 | mypy 4 | pandas-stubs 5 | pyupgrade 6 | pre-commit 7 | pytest 8 | pytest-cov 9 | pytest-mock 10 | pytest-timeout 11 | pytest-rerunfailures 12 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | mkdocs-material[recommended]==9.5.34 2 | jieba 3 | mkdocs-git-committers-plugin-2==2.2.2 4 | mkdocs-rss-plugin==1.15.0 5 | mkdocs-table-reader-plugin==3.1.0 6 | mkdocs-redirects==1.2.1 7 | mkdocstrings[python]==0.26.1 8 | -------------------------------------------------------------------------------- /scripts/__init__.py: -------------------------------------------------------------------------------- 1 | """__init__.py 2 | 3 | Note: 4 | File : __init__.py 5 | Author : Baiqi.Lu 6 | License: MIT License. 7 | """ 8 | -------------------------------------------------------------------------------- /scripts/build.py: -------------------------------------------------------------------------------- 1 | """This script is used to build the documentation. 2 | 3 | Build multi-language documentation site. 4 | 5 | Note: 6 | File : build.py 7 | Author : Baiqi.Lu 8 | License: MIT License. 9 | 10 | Example: 11 | $ python ./scripts/build.py 12 | """ 13 | 14 | import re 15 | import shutil 16 | import subprocess 17 | import sys 18 | from pathlib import Path 19 | 20 | from scripts.config import cfg 21 | 22 | 23 | def build_docs() -> None: 24 | """Build Multi-Language Documentation.""" 25 | # Print information about current environment 26 | print(f"sys.path = {sys.path}") 27 | 28 | if cfg.SITE_PATH.exists(): 29 | print(f"Removing existing site dir: {cfg.SITE_PATH}") 30 | shutil.rmtree(cfg.SITE_PATH) 31 | 32 | # Build the main documentation 33 | file = cfg.DOCS_PATH / "mkdocs.yml" 34 | print(f"Building the main documentation, with configuration file: {file}") 35 | subprocess.run(["mkdocs", "build", "-f", str(file)], check=True) 36 | print(f"Main site successfully built at: {cfg.SITE_PATH}") 37 | 38 | # Build other localized documentations 39 | for file in cfg.DOCS_PATH.glob("mkdocs.*.yml"): 40 | language_code = file.stem.split(".")[1] 41 | print(f"Building the {language_code} site with configuration file: {file}") 42 | subprocess.run(["mkdocs", "build", "-f", str(file)], check=True) 43 | print(f"Sub site successfully built at: {cfg.SITE_PATH}") 44 | 45 | 46 | def update_404page_title(file_path: Path = cfg.SITE_PATH / "404.html") -> None: 47 | """Update the title of the 404 page.""" 48 | new_title = "Awesome Intelligent Car Race - 404 Page Not Found" 49 | 50 | if not file_path.exists(): 51 | raise FileNotFoundError(f"The specified 404.html {file_path} does not exist.") 52 | 53 | with open(file_path, encoding="utf-8") as file: 54 | content = file.read() 55 | 56 | if new_title in content: 57 | print("The title of the 404 page is already up-to-date.") 58 | 59 | # Replace the existing title with the new title 60 | updated_content = re.sub(r".*?", f"{new_title}", content) 61 | 62 | # Write the updated content back to the file 63 | with open(file_path, "w", encoding="utf-8") as file: 64 | file.write(updated_content) 65 | print("Successfully updated the title of the 404 page") 66 | 67 | 68 | if __name__ == "__main__": 69 | build_docs() 70 | update_404page_title() 71 | 72 | print( 73 | """ 74 | Serve multi-language site at http://localhost:8000 with: 75 | python -m http.server --directory site 8000 --bind localhost 76 | """ 77 | ) 78 | -------------------------------------------------------------------------------- /scripts/config.py: -------------------------------------------------------------------------------- 1 | """This module contains the configuration info. 2 | 3 | Note: 4 | File : config.py 5 | Author : Baiqi.Lu 6 | License: MIT License. 7 | """ 8 | 9 | from pathlib import Path 10 | 11 | 12 | class Config: 13 | """This class contains the configuration info.""" 14 | 15 | def __init__(self) -> None: 16 | """Initialize the configuration info with default paths.""" 17 | # 项目跟绝对路径 18 | self.PROJECT_PATH: Path = Path(__file__).parents[1].resolve() 19 | 20 | # 其他路径 21 | self.DOCS_PATH: Path = self.PROJECT_PATH / "docs" 22 | self.SITE_PATH: Path = self.PROJECT_PATH / "site" 23 | self.TABLE_PATH: Path = self.PROJECT_PATH / "table.csv" 24 | self.TABLE_URL_PATH: Path = self.PROJECT_PATH / "table-url.csv" 25 | 26 | def update_site_path(self, new_path: Path) -> None: 27 | """Update the site path.""" 28 | self.SITE_PATH = self.SITE_PATH / new_path 29 | 30 | 31 | # 实例化配置类 32 | cfg = Config() 33 | -------------------------------------------------------------------------------- /scripts/split.py: -------------------------------------------------------------------------------- 1 | """Split Scripts. 2 | 3 | This module provides functionalities to split a table based on the award filter column. 4 | 5 | Note: 6 | File : split.py 7 | Author : Baiqi.Lu 8 | License: MIT License. 9 | 10 | Example: 11 | $ python ./scripts/split.py 12 | """ 13 | 14 | from pathlib import Path 15 | 16 | import pandas as pd 17 | 18 | from scripts.config import cfg 19 | 20 | 21 | def awardSort(awards: pd.Series) -> pd.Series: 22 | """奖项排序. 23 | 24 | 根据指定的中文顺序对奖项进行排序。 25 | 26 | Args: 27 | awards (pd.Series): 包含奖项名称的系列 28 | 29 | Returns: 30 | pd.Series: 排序后的系列 31 | """ 32 | awardOrder = [ 33 | "国家级一等奖", 34 | "国家级二等奖", 35 | "国家级三等奖", 36 | "省级一等奖", 37 | "省级二等奖", 38 | "省级三等奖", 39 | ] 40 | return awards.map(lambda award: (0, awardOrder.index(award)) if award in awardOrder else (1, award)) 41 | 42 | 43 | def urlModification(inputFile: Path = cfg.TABLE_PATH, outputFile: Path = cfg.TABLE_URL_PATH) -> None: 44 | """修饰主表的URL链接. 45 | 46 | Args: 47 | inputFile (Path, optional): 输入的 CSV 文件路径。默认为将使用路径"./table.csv" 48 | outputFile (Path, optional): 输出的 CSV 文件路径。默认为将使用路径"./table.csv" 49 | 50 | Raises: 51 | ValueError: 如果输入的文件不存在,则抛出异常 52 | 53 | Examples: 54 | >>> urlModification() 55 | """ 56 | if not inputFile.exists(): 57 | raise ValueError(f"The specified {inputFile} does not exist.") 58 | 59 | df = pd.read_csv(inputFile, encoding="utf-8") 60 | df["链接"] = "<" + df["链接"] + '>{:target="_blank"}' 61 | df.to_csv(outputFile, index=False, encoding="utf-8") 62 | print(f"Successfully generate url modification table {outputFile}") 63 | 64 | 65 | def splitTable(filtration: str, outputDir: Path, inputFile: Path = cfg.TABLE_URL_PATH) -> None: 66 | """根据给定的过滤列将主表拆分. 67 | 68 | 根据给定的过滤列将主表拆分为多个子表,并将子表保存在指定的输出目录中。 69 | 每个子表的名称为过滤列的值,例如,如果过滤列为"年份",则将生成多个子表,分别为"2022.csv"、"2021.csv"等。 70 | 71 | Note: 72 | 应首先运行 urlModification() 以获得修饰后的主表 73 | 74 | Args: 75 | filtration (str): 过滤的列名称 76 | outputDir (Path): 输出目录路径 77 | inputFile (Path, optional): 输入的 CSV 文件路径。默认为将使用路径"./table-url.csv" 78 | 79 | Raises: 80 | ValueError: 如果输入的文件不存在,则抛出异常 81 | ValueError: 如果输出的目录不存在,则抛出异常 82 | ValueError: 如果指定的过滤列不是表的列,则抛出异常 83 | 84 | Examples: 85 | >>> splitTable("年份", cfg.DOCS_PATH / "zh" / "year") 86 | """ 87 | if not inputFile.exists(): 88 | raise ValueError(f"The specified input file {inputFile} does not exist.") 89 | if not outputDir.exists(): 90 | raise ValueError(f"The specified output directory {outputDir} does not exist.") 91 | 92 | df = pd.read_csv(inputFile, encoding="utf-8") 93 | if filtration not in df.columns: 94 | raise ValueError(f"The specified filtration {filtration} is not a column of the table.") 95 | grouped = df.groupby(filtration) 96 | 97 | for filtrate, group in grouped: 98 | sorted_group = group.sort_values(by="获奖", key=awardSort, ascending=True) 99 | filename = Path(outputDir) / f"{filtrate}.csv" 100 | sorted_group.to_csv(filename, index=False, encoding="utf-8") 101 | print(f"Successfully generate sub-table {filtrate}.csv") 102 | 103 | 104 | if __name__ == "__main__": 105 | urlModification() 106 | 107 | splitTable("年份", cfg.DOCS_PATH / "zh" / "year") 108 | splitTable("组别", cfg.DOCS_PATH / "zh" / "group") 109 | splitTable("获奖", cfg.DOCS_PATH / "zh" / "award") 110 | -------------------------------------------------------------------------------- /table.csv: -------------------------------------------------------------------------------- 1 | 名称,链接,获奖,组别,学校,年份,备注 2 | 进取号E,https://github.com/ittuann/Enterprise_E,国1,全向行进组,东北林业大学,2021, 3 | AuTop,https://github.com/SJTU-AuTop/RT1064-Code,省3,智能视觉组,上海交通大学,2021, 4 | 视觉小白队,https://github.com/0clock/smartcar2022,省2,智能视觉组,安徽科技学院,2022, 5 | DZXS-天眼,https://github.com/JinHeMu/smart-car,省1,智能视觉组,大连交通大学,2023, 6 | 铁滑团,https://github.com/HammerTa/intelegent_car_race_program_17,省1,摄像头四轮组,华北电力大学(保定),2022, 7 | 东林寻光-尾车,https://github.com/wu58430/smartcar-C,国1,多车编队组,东北林业大学,2022, 8 | 东林寻光-去畸变软件,https://github.com/wu58430/RUBO-UDIPM,国1,多车编队组,东北林业大学,2022,透视变换-去畸变软件 9 | 铁滑团,https://github.com/Y1ZzLu/openart_fw_18th,国1,智能视觉组,华北电力大学(保定),2023,openart固件 10 | 神魔都队,https://blog.csdn.net/qtzbxjg/article/details/128621625,国1,智能视觉组,中国石油大学(华东),2022, 11 | 昌平队,https://github.com/ittuann/Awesome-IntelligentCarRace/issues/9,省1,负压电磁组,合肥学院,2023, 12 | 地灵殿的装修队,https://github.com/FredBill1/RT1064_Smartcar,国2,智能视觉组,中国矿业大学(北京),2022, 13 | 顽强土拨鼠,https://www.bilibili.com/video/BV1vY411y7KX,国1,智能视觉组,攀枝花学院,2022, 14 | 青岛理工大学,https://github.com/a233a2/2022-17th-SmartCar-WirelessCharge,省3,无线充电组,青岛理工大学,2022, 15 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | """Awesome Intelligent Car Race. 2 | 3 | Note: 4 | File : __init__.py 5 | Author : Baiqi.Lu 6 | License: MIT License. 7 | """ 8 | -------------------------------------------------------------------------------- /tests/test_functions.py: -------------------------------------------------------------------------------- 1 | """Code Coverage Test. 2 | 3 | Note: 4 | File : test_functions.py 5 | Author : Baiqi.Lu 6 | License: MIT License. 7 | """ 8 | 9 | from pathlib import Path 10 | 11 | import pandas as pd 12 | import pytest 13 | 14 | from scripts.build import build_docs, update_404page_title 15 | from scripts.config import Config, cfg 16 | from scripts.split import awardSort, splitTable, urlModification 17 | 18 | 19 | def test_awardSort(): 20 | """Test case for the awardSort function.""" 21 | awards = pd.Series(["国家级一等奖", "省级三等奖", "国家级二等奖"]) 22 | sorted_awards = awardSort(awards) 23 | expected = pd.Series([(0, 0), (0, 5), (0, 1)]) 24 | pd.testing.assert_series_equal(sorted_awards, expected) 25 | 26 | 27 | def test_urlModification_success(): 28 | """Test case for the URLModification function with successful execution.""" 29 | output_file = cfg.DOCS_PATH / "test_output.csv" 30 | 31 | urlModification(outputFile=output_file) 32 | 33 | df_output = pd.read_csv(output_file) 34 | for url in df_output["链接"]: 35 | assert url.startswith("<") and url.endswith('>{:target="_blank"}'), f"URL {url} is not modified" 36 | output_file.unlink() 37 | 38 | 39 | def test_urlModification_fail(): 40 | """Test case for the URLModification function with failure.""" 41 | with pytest.raises(ValueError): 42 | urlModification(Path("non_existent.csv")) 43 | 44 | 45 | def test_splitTable_success(): 46 | """Test case for the splitTable function with successful execution.""" 47 | # 读取输入文件以确定预期年份 48 | df_input = pd.read_csv(cfg.TABLE_PATH) 49 | 50 | for column_header in ["年份", "组别", "获奖"]: 51 | expected_categories = sorted(set(df_input[column_header].astype(str))) 52 | expected_columns = list(df_input.columns) 53 | 54 | splitTable(column_header, Path(__file__).parent) 55 | 56 | for category in expected_categories: 57 | output_file = Path(__file__).parent / f"{category}.csv" 58 | # 验证文件成功生成 59 | assert output_file.exists(), f"Output file {output_file} not found" 60 | # 验证每个输出文件内容 61 | df_output = pd.read_csv(output_file) 62 | assert list(df_output.columns) == expected_columns, f"Columns in {output_file} do not match" 63 | assert all( 64 | df_output[column_header].astype(str) == category 65 | ), f"Category {category} not found in {output_file}" 66 | output_file.unlink() 67 | 68 | 69 | def test_splitTable_fail(): 70 | """Test case for the splitTable function with failure.""" 71 | with pytest.raises(ValueError): 72 | splitTable("获奖", Path(__file__).parent, Path("non_existent.csv")) 73 | with pytest.raises(ValueError): 74 | splitTable("获奖", Path("non_existent_dir"), cfg.TABLE_PATH) 75 | with pytest.raises(ValueError): 76 | splitTable("不存在的列标题", Path(__file__).parent, cfg.TABLE_PATH) 77 | 78 | 79 | def test_config_initialization(): 80 | """Test case for the initialization of the Config class.""" 81 | cfg_test = Config() 82 | assert cfg_test.PROJECT_PATH.is_dir(), "PROJECT_PATH should be a directory" 83 | assert cfg_test.TABLE_PATH.is_file(), "TABLE_PATH should be a file" 84 | 85 | 86 | def test_config_update_site_path(): 87 | """Test case for the update_site_path function.""" 88 | cfg_test = Config() 89 | old_path = cfg_test.SITE_PATH 90 | cfg_test.update_site_path(Path("new_site")) 91 | assert old_path / "new_site" == cfg_test.SITE_PATH, "SITE_PATH should be updated to new path" 92 | 93 | 94 | def test_build_docs(): 95 | """Test case for the build_docs function.""" 96 | build_docs() 97 | 98 | assert cfg.SITE_PATH.exists(), "cfg.SITE_PATH should be created" 99 | 100 | for config_file in cfg.DOCS_PATH.glob("mkdocs.*.yml"): 101 | language_code = config_file.stem.split(".")[1] 102 | expected_dir = cfg.SITE_PATH / language_code 103 | # 验证对应的文件夹是否存在 104 | assert expected_dir.exists(), f"Expected directory for {language_code} does not exist" 105 | 106 | 107 | def test_update_404page_title(): 108 | """Test case for the test_update_404page_title function. Need run build_docs() first.""" 109 | test_file_path = cfg.SITE_PATH / "404.html" 110 | update_404page_title() 111 | 112 | with open(test_file_path, encoding="utf-8") as file: 113 | updated_content = file.read() 114 | 115 | assert "Awesome Intelligent Car Race - 404 Page Not Found" in updated_content, "New title not found" 116 | assert "Awesome-IntelligentCarRace" not in updated_content, "Old title should be removed" 117 | 118 | 119 | def test_update_404page_title_fail(): 120 | """Test case for the test_update_404page_title function with failure.""" 121 | update_404page_title() 122 | with pytest.raises(FileNotFoundError): 123 | update_404page_title(Path("non_existent_dir")) 124 | --------------------------------------------------------------------------------