├── .github ├── ISSUE_TEMPLATE │ └── general-issue.md └── workflows │ ├── generate_agent_docker.yml │ ├── generate_base_docker.yml │ └── generate_libgen_docker.yml ├── 3rd-party-licenses.txt ├── CHANGELOG.rst ├── CONTRIBUTING.md ├── LICENSE ├── NOTICE ├── README.md ├── base ├── Dockerfile └── micro-ros_entrypoint.sh ├── micro-ROS-Agent ├── Dockerfile ├── disable_fastdds_shm.xml ├── disable_fastdds_shm_localhost_only.xml └── micro-ros_entrypoint.sh ├── micro-ROS-demos ├── Dockerfile └── micro-ros_entrypoint.sh ├── micro-ROS-static-library-builder ├── Dockerfile └── entrypoint.sh └── package.xml /.github/ISSUE_TEMPLATE/general-issue.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: General issue 3 | about: General issue template for micro-ROS 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Issue template 11 | 12 | - Hardware description: 13 | - RTOS: 14 | - Installation type: 15 | - Version or commit hash: 16 | 17 | #### Steps to reproduce the issue 18 | 19 | 20 | #### Expected behavior 21 | 22 | #### Actual behavior 23 | 24 | #### Additional information 25 | -------------------------------------------------------------------------------- /.github/workflows/generate_agent_docker.yml: -------------------------------------------------------------------------------- 1 | name: micro-ROS Agent Docker generation 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | name: 7 | description: "Manual trigger" 8 | 9 | jobs: 10 | agent_docker_generation: 11 | runs-on: ubuntu-latest 12 | strategy: 13 | fail-fast: false 14 | matrix: 15 | include: 16 | - ros_distribution: humble 17 | branch: humble 18 | - ros_distribution: jazzy 19 | branch: jazzy 20 | - ros_distribution: kilted 21 | branch: kilted 22 | - ros_distribution: rolling 23 | branch: rolling 24 | steps: 25 | - uses: actions/checkout@v4 26 | with: 27 | ref: ${{ matrix.branch }} 28 | - name: Set up QEMU 29 | uses: docker/setup-qemu-action@v3 30 | - name: Set up Docker Buildx 31 | uses: docker/setup-buildx-action@v3 32 | - name: Login to DockerHub 33 | uses: docker/login-action@v3 34 | with: 35 | username: ${{ secrets.DOCKERHUB_USERNAME }} 36 | password: ${{ secrets.DOCKERHUB_TOKEN }} 37 | - name: Build and push 38 | uses: docker/build-push-action@v6 39 | with: 40 | context: ./micro-ROS-Agent/ 41 | push: true 42 | platforms: linux/amd64,linux/arm64 43 | tags: microros/micro-ros-agent:${{ matrix.ros_distribution }} -------------------------------------------------------------------------------- /.github/workflows/generate_base_docker.yml: -------------------------------------------------------------------------------- 1 | name: micro-ROS Base Docker generation 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | name: 7 | description: "Manual trigger" 8 | 9 | jobs: 10 | base_docker_generation: 11 | runs-on: ubuntu-latest 12 | strategy: 13 | fail-fast: false 14 | matrix: 15 | include: 16 | - ros_distribution: humble 17 | branch: humble 18 | - ros_distribution: jazzy 19 | branch: jazzy 20 | - ros_distribution: kilted 21 | branch: kilted 22 | - ros_distribution: rolling 23 | branch: rolling 24 | steps: 25 | - uses: actions/checkout@v4 26 | with: 27 | ref: ${{ matrix.branch }} 28 | - name: Set up QEMU 29 | uses: docker/setup-qemu-action@v3 30 | - name: Set up Docker Buildx 31 | uses: docker/setup-buildx-action@v3 32 | - name: Login to DockerHub 33 | uses: docker/login-action@v3 34 | with: 35 | username: ${{ secrets.DOCKERHUB_USERNAME }} 36 | password: ${{ secrets.DOCKERHUB_TOKEN }} 37 | - name: Build and push 38 | uses: docker/build-push-action@v6 39 | with: 40 | context: ./base/ 41 | push: true 42 | platforms: linux/amd64,linux/arm64 43 | tags: microros/base:${{ matrix.ros_distribution }} -------------------------------------------------------------------------------- /.github/workflows/generate_libgen_docker.yml: -------------------------------------------------------------------------------- 1 | name: micro-ROS Static Library Builder 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | name: 7 | description: "Manual trigger" 8 | 9 | jobs: 10 | libgen_docker_generation: 11 | runs-on: ubuntu-latest 12 | strategy: 13 | fail-fast: false 14 | matrix: 15 | include: 16 | - ros_distribution: humble 17 | branch: humble 18 | - ros_distribution: jazzy 19 | branch: jazzy 20 | - ros_distribution: kilted 21 | branch: kilted 22 | - ros_distribution: rolling 23 | branch: rolling 24 | steps: 25 | - uses: actions/checkout@v4 26 | with: 27 | ref: ${{ matrix.branch }} 28 | - name: Set up QEMU 29 | uses: docker/setup-qemu-action@v3 30 | - name: Set up Docker Buildx 31 | uses: docker/setup-buildx-action@v3 32 | - name: Login to DockerHub 33 | uses: docker/login-action@v3 34 | with: 35 | username: ${{ secrets.DOCKERHUB_USERNAME }} 36 | password: ${{ secrets.DOCKERHUB_TOKEN }} 37 | - name: Build and push 38 | uses: docker/build-push-action@v6 39 | with: 40 | context: ./micro-ROS-static-library-builder/ 41 | push: true 42 | platforms: linux/amd64,linux/arm64 43 | tags: microros/micro_ros_static_library_builder:${{ matrix.ros_distribution }} -------------------------------------------------------------------------------- /3rd-party-licenses.txt: -------------------------------------------------------------------------------- 1 | Third Party Licenses 2 | ==================== 3 | 4 | This repository does not directly contain 3rd party source code. -------------------------------------------------------------------------------- /CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package micro_ros_dockers 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 5.0.0 (2023-06-12) 6 | ------------------ 7 | * Remove outdated demos dockers (`#96 `_) 8 | * make the agent image 4x smaller thanks to multi stage build (backport `#90 `_) (`#93 `_) 9 | * Use dos2unix to fix windows scripts format (`#86 `_) 10 | 11 | 4.0.0 (2022-05-25) 12 | ------------------ 13 | * Add Github Action for libgen (`#80 `_) (`#82 `_) 14 | * Fix workaround 15 | * Add rsync to library builder (`#78 `_) 16 | * Workaround for python3.9 17 | * Add Base Docker generation action 18 | * Add Agent Docker generation action 19 | * Add download of esp32 crosscompiler (`#73 `_) (`#75 `_) 20 | * support ROS_LOCALHOST_ONLY variable (backport `#69 `_) (`#71 `_) 21 | * Fix wget certificate (`#66 `_) 22 | * Use FastDDS as default middleware (`#63 `_) 23 | * Update to rolling 24 | * Update foxy docker 25 | * Disable shared memory (`#59 `_) 26 | * Update Kobuki demo to Foxy (`#47 `_) 27 | * Update static library builder 28 | * Add GCC 9 to builder 29 | * Add static library builder 30 | * Add python-pip3 to base image 31 | * Add issue template 32 | * Add new docker images to readme (`#57 `_) 33 | * Update micro_ros_setup repo in base image (`#56 `_) 34 | * Update README.md 35 | * Corrections to the README.md (`#55 `_) 36 | * Update README with new docker images (`#53 `_) 37 | * Update micro-ROS-Agent Dockerfile (`#54 `_) 38 | * typo (`#51 `_) 39 | * Update README.md 40 | * Properly source micro-ROS/base environment when launching bash (`#50 `_) 41 | * Add licensing (`#48 `_) 42 | * Use correct branch when downloading "micro-ros-build" repo on base/Dockerfile (`#49 `_) 43 | * Initial changes (`#46 `_) 44 | * Use this docker for running the PC side 45 | * Firmware docker file 46 | * Initial dockerfile for Kobuki demo 47 | * Fix ed dependency. (`#44 `_) 48 | * Add entrypoint for base. (`#43 `_) 49 | * Merge pull request `#42 `_ from micro-ROS/feature/ci 50 | * Add CI base image. 51 | * Merge pull request `#41 `_ from micro-ROS/feature/clean 52 | * Remove not used dockers. 53 | * Simplify and refactor DockerFiles. (`#40 `_) 54 | * Fix sh pipe error. 55 | * Hack build system to work with dashing. 56 | * Change Docker tags to use dashing. 57 | * Base firmware image. 58 | * Host client demos working. 59 | * Dashing agent working. 60 | * Use Dashing in base image. 61 | * Merge pull request `#36 `_ from micro-ROS/fix/paths 62 | * Normalise directory structure. 63 | * Merge pull request `#34 `_ from micro-ROS/master 64 | * Merge pull request `#33 `_ from micro-ROS/fix/missing_deps 65 | * Add automake dependency. 66 | * Update links. (`#31 `_) 67 | * Rework docker images. (`#30 `_) 68 | * Fixing documentation instructions 69 | * Adding documentation to the HIH6130 publisher demo 70 | * Deleting deprecreated development options 71 | * Merge remote-tracking branch 'origin/docker_sim' 72 | * Adding hih6130 publisher demo 73 | * Fixing Docker 74 | * Update shields to point to docker cloud. (`#28 `_) 75 | * Fixing micro-ROS docker 76 | * Hotfix/docker build (`#27 `_) 77 | * Fix Java ppa error. (`#26 `_) 78 | * Updating the dockercontainer to the new simulation branch 79 | * Make minor fixes 80 | * Improvement of the Readme instructions 81 | * Rework micro-xrce-dds simulation tutorial 82 | * Adding netcat package 83 | * Little changes in the instructions. 84 | * Merge pull request `#25 `_ from microROS/feature/Crystal_update 85 | * Updating instructions 86 | * Rework Readme to better understanding 87 | * Update Readme with the running error 88 | * Update the Readme with instructions 89 | * Update Readme 90 | * Fix installation path of the simulator 91 | * Update Readme.md 92 | * Minor text change 93 | * Minor text change 94 | * Adding readme 95 | * Adding readme for microros example 96 | * Minor changes in the docker 97 | * Changing the repo of Qemu in the dockerfile 98 | * Adding microROS dockerfile and minor modification in the microXRCEDDS dockerfile 99 | * Adding dockerfile for the simulation 100 | * Add Clang to environment required package 101 | * Update Dockerfile 102 | * Added new required packages for ROS2 Crystal update 103 | * Merge pull request `#24 `_ from microROS/microros_nuttx_master 104 | * Changing to the microros nuttx/apps repository 105 | * Merge pull request `#23 `_ from microROS/reorganize 106 | * Solving an error in Olimex docker and adding new stm32l1discovery board docker file 107 | * Changing the repository of NuttX 108 | * Deprecating tms57004 board, adding micrxrcedds docker for L1 board and Olimex board 109 | * Add badges 110 | * Rename folder 111 | * Update Olimex dockerfile 112 | * Unify precompiled linux dockerfiles 113 | * Unify NuttX precompiled dockerfiles 114 | * Update latest ubuntu 115 | * Update ubuntu version 116 | * Unify all versions in one 117 | * Add linux docker readme 118 | * Remove duplicated dockerfile 119 | * Add windows image 120 | * Add README to Linux folder 121 | * Add base Linux image 122 | * Feature/linuximage (`#8 `_) 123 | * Move micro-ROS Ubuntu 16.04 development Docker file 124 | * Added gdbserver 125 | * Added libcurlpp-dev apt package 126 | * ROS2 - development tools using Ubuntu 16.04 127 | * Add micro-ROS Ubuntu 18.04 development Docker file 128 | * Added gdbserver 129 | * Added libcurlpp-dev apt package 130 | * ROS2 - development tools using Ubuntu 18.04 131 | * Update README 132 | * Add micro-ROS Ubuntu development Docker file 133 | * Add micro-ROS Agent Ubuntu 16.04 file 134 | * Added gdbserver 135 | * Added libcurlpp-dev apt package 136 | * Renamed folder 137 | * ROS2 - development tools using Ubuntu latest 138 | * Move micro-ROS Agent Ubuntu 16.04 Docker file 139 | * Added ROS2 - Quick start agent for ubuntu 16.04 140 | * Move micro-ROS Agent Ubuntu 18.04 Docker file 141 | * Added ROS2 - Quick start agent for ubuntu 18.04 142 | * Move micro-ROS Agent Docker file 143 | * Update README 144 | * Added Quick start Agent 145 | * Move Ubuntu 16.04 micro-ROS client 146 | * Added ROS2&Nuttx - Quick start client for ubuntu 16.04 147 | * Move Ubuntu 18.04 micro-ROS client 148 | * Added ROS2&Nuttx - Quick start client for ubuntu 18.04 149 | * Update README 150 | * Change micro-ROS Client Ubuntu latest 151 | * Added ROS2&Nuttx - Quick start client for ubuntu 152 | * Move NuttX Olimex Ubuntu 16.04 Docker file 153 | * Added gdbserver 154 | * Added libcurlpp-dev apt package 155 | * ROS2 - development tools using Ubuntu 16.04 156 | * Move NuttX Olimex Ubuntu 18.04 Docker file 157 | * Added gdbserver 158 | * Added libcurlpp-dev apt package 159 | * ROS2 - development tools using Ubuntu 18.04 160 | * Move NuttX Olimex Docker file 161 | * Added gdbserver 162 | * Added libcurlpp-dev apt package 163 | * Renamed folder 164 | * ROS2 - development tools using Ubuntu latest 165 | * Restructure content 166 | * Update README 167 | * Reorganize docker containers into folders 168 | * Merge pull request `#21 `_ from microROS/fix_olimex_stm32_e407 169 | * Merge pull request `#22 `_ from microROS/fix_l1 170 | * Update Olimex dockerfile 171 | * Update L1 dockerfile 172 | * Merge pull request `#2 `_ from BorjaOuterelo/master 173 | * Fixes dockerfile and exp script errors 174 | * define target uC for olimex board 175 | * Add short README 176 | * Initial commit 177 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Want to contribute? Great! You can do so through the standard GitHub pull 4 | request model. For large contributions we do encourage you to file a ticket in 5 | the GitHub issues tracking system prior to any code development to coordinate 6 | with the system_modes development team early in the process. Coordinating up 7 | front helps to avoid frustration later on. 8 | 9 | Your contribution must be licensed under the Apache-2.0 license, the license 10 | used by this project. 11 | 12 | ## Add / retain copyright notices 13 | 14 | Include a copyright notice and license in each new file to be contributed, 15 | consistent with the style used by this project. If your contribution contains 16 | code under the copyright of a third party, document its origin, license, and 17 | copyright holders. 18 | 19 | ## Sign your work 20 | 21 | This project tracks patch provenance and licensing using a modified Developer 22 | Certificate of Origin (DCO; from [OSDL][DCO]) and Signed-off-by tags initially 23 | developed by the Linux kernel project. 24 | 25 | ``` 26 | system_modes Developer's Certificate of Origin. Version 1.0 27 | 28 | By making a contribution to this project, I certify that: 29 | 30 | (a) The contribution was created in whole or in part by me and I 31 | have the right to submit it under the "Apache License, Version 2.0" 32 | ("Apache-2.0"); or 33 | 34 | (b) The contribution is based upon previous work that is covered by 35 | an appropriate open source license and I have the right under 36 | that license to submit that work with modifications, whether 37 | created in whole or in part by me, under the Apache-2.0 license; 38 | or 39 | 40 | (c) The contribution was provided directly to me by some other 41 | person who certified (a) or (b) and I have not modified it. 42 | 43 | (d) I understand and agree that this project and the contribution 44 | are public and that a record of the contribution (including all 45 | metadata and personal information I submit with it, including my 46 | sign-off) is maintained indefinitely and may be redistributed 47 | consistent with this project and the requirements of the Apache-2.0 48 | license or any open source license(s) involved, where they are 49 | relevant. 50 | 51 | (e) I am granting the contribution to this project under the terms of 52 | Apache-2.0. 53 | 54 | http://www.apache.org/licenses/LICENSE-2.0 55 | ``` 56 | 57 | With the sign-off in a commit message you certify that you authored the patch 58 | or otherwise have the right to submit it under an open source license. The 59 | procedure is simple: To certify above system_modes Developer's Certificate of 60 | Origin 1.0 for your contribution just append a line 61 | 62 | Signed-off-by: Random J Developer 63 | 64 | to every commit message using your real name or your pseudonym and a valid 65 | email address. 66 | 67 | If you have set your `user.name` and `user.email` git configs you can 68 | automatically sign the commit by running the git-commit command with the `-s` 69 | option. There may be multiple sign-offs if more than one developer was 70 | involved in authoring the contribution. 71 | 72 | For a more detailed description of this procedure, please see 73 | [SubmittingPatches][] which was extracted from the Linux kernel project, and 74 | which is stored in an external repository. 75 | 76 | ### Individual vs. Corporate Contributors 77 | 78 | Often employers or academic institution have ownership over code that is 79 | written in certain circumstances, so please do due diligence to ensure that 80 | you have the right to submit the code. 81 | 82 | If you are a developer who is authorized to contribute to system_modes on 83 | behalf of your employer, then please use your corporate email address in the 84 | Signed-off-by tag. Otherwise please use a personal email address. 85 | 86 | ## Maintain Copyright holder / Contributor list 87 | 88 | Each contributor is responsible for identifying themselves in the 89 | [NOTICE](NOTICE) file, the project's list of copyright holders and authors. 90 | Please add the respective information corresponding to the Signed-off-by tag 91 | as part of your first pull request. 92 | 93 | If you are a developer who is authorized to contribute to system_modes on 94 | behalf of your employer, then add your company / organization to the list of 95 | copyright holders in the [NOTICE](NOTICE) file. As author of a corporate 96 | contribution you can also add your name and corporate email address as in the 97 | Signed-off-by tag. 98 | 99 | If your contribution is covered by this project's DCO's clause "(c) The 100 | contribution was provided directly to me by some other person who certified 101 | (a) or (b) and I have not modified it", please add the appropriate copyright 102 | holder(s) to the [NOTICE](NOTICE) file as part of your contribution. 103 | 104 | 105 | [DCO]: http://web.archive.org/web/20070306195036/http://osdlab.org/newsroom/press_releases/2004/2004_05_24_dco.html 106 | 107 | [SubmittingPatches]: https://github.com/wking/signed-off-by/blob/7d71be37194df05c349157a2161c7534feaf86a4/Documentation/SubmittingPatches 108 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | 2 | # This is the official list of copyright holders and authors. 3 | # 4 | # Often employers or academic institutions have ownership over code that is 5 | # written in certain circumstances, so please do due diligence to ensure that 6 | # you have the right to submit the code. 7 | # 8 | # When adding J Random Contributor's name to this file, either J's name on its 9 | # own or J's name associated with J's organization's name should be added, 10 | # depending on whether J's employer (or academic institution) has ownership 11 | # over code that is written for this project. 12 | # 13 | # How to add names to this file: 14 | # Individual's name . 15 | # 16 | # If Individual's organization is copyright holder of her contributions add the 17 | # organization's name, optionally also the contributor's name: 18 | # 19 | # Organization's name 20 | # Individual's name 21 | # 22 | # Please keep the list sorted. 23 | 24 | eProsima 25 | Pablo Garrido 26 | 27 | Robert Bosch GmbH 28 | Ingo Lütkebohle 29 | Ralph Lange 30 | 31 | Robert Wilbrandt 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # micro-ROS Dockers 2 | 3 | This repository contains Docker-related material aimed at setting up, configuring and developing a [micro-ROS](https://microros.github.io/)-based application. 4 | 5 | This set of Dockerfiles provides ready-to-use environments to easily execute micro-ROS examples in your host machine, as well as to use the standalone [micro-ROS build system](https://github.com/micro-ROS/micro_ros_setup). 6 | In addition, two images are provided that allow using micro-ROS as an external library, both in [ESP-IDF](https://github.com/micro-ROS/micro_ros_espidf_component/tree/main/docker). 7 | 8 | The Docker images can be found at [dockerhub](https://hub.docker.com/u/microros). 9 | 10 | The available images are listed below: 11 | 12 | | Image | Description | Status | 13 | | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | 14 | | base | Base image with a ROS 2 Kilted installation + micro-ROS specific build system tools. Used as base of any other micro-ROS image | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/base.svg?logo=docker)](https://hub.docker.com/r/microros/base/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/base.svg?logo=docker)](https://hub.docker.com/r/microros/base/)[![Compare Images](https://images.microbadger.com/badges/image/microros/base.svg)](https://microbadger.com/images/microros/base) | 15 | | micro-ros-agent | Image containing a pre-compiled micro-ROS-Agent, ready to use as a standalone application | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-agent.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-agent/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-agent.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-agent/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro-ros-agent.svg)](https://microbadger.com/images/microros/micro-ros-agent) | 16 | | micro-ros-demos | Contains pre-compiled micro-ROS demo applications, ready to use to get a taste of micro-ROS capabilities | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-demos.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-demos/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-demos.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-demos/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro-ros-demos.svg)](https://microbadger.com/images/microros/micro-ros-demos) | 17 | | micro_ros_static_library_builder | Allows to use a pre-compiled micro-ROS library to develop applications in external environments | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro_ros_static_library_builder.svg?logo=docker)](https://hub.docker.com/r/microros/micro_ros_static_library_builder/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro_ros_static_library_builder.svg?logo=docker)](https://hub.docker.com/r/microros/micro_ros_static_library_builder/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro_ros_static_library_builder.svg)](https://microbadger.com/images/microros/micro_ros_static_library_builder) | 18 | | micro-ros-olimex-nuttx | Contains a ready to flash example for Olimex STM32 E407 | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-olimex-nuttx.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-olimex-nuttx/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-olimex-nuttx.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-olimex-nuttx/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro-ros-olimex-nuttx.svg)](https://microbadger.com/images/microros/micro-ros-olimex-nuttx) | 19 | | esp-idf-microros | Allows to use micro-ROS as a component of the ESP-IDF build system | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/esp-idf-microros.svg?logo=docker)](https://hub.docker.com/r/microros/esp-idf-microros/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/esp-idf-microros.svg?logo=docker)](https://hub.docker.com/r/microros/esp-idf-microros/)[![Compare Images](https://images.microbadger.com/badges/image/microros/esp-idf-microros.svg)](https://microbadger.com/images/microros/esp-idf-microros) | 20 | 21 | ![](http://www.plantuml.com/plantuml/svg/VP71JiCm38RlUGfhzsXtn65lW0GFC6M9kreqpMHdWaeyF6v26b3HRlRt_wxzDoV9ZlCzJiQC510yiP-mrXXlUO68yO8incJA4q8apyc-lhn1IFuT6IYwAmgCXEpOZuinVd8YS42vCOhGSAGm7C09RAHPECdJa3wNece3JIXR51mlJh1RrcvdgHTfPVMGENTtQH_O0yRV-qlxl_sirTbnkDES-i0Fs8reJAkHRGDzGYaOemYUlsn87xCjaHfXkexPRjzTfMwiQVwoUlBsMxjG5vrm3klJVWC0) 22 | 23 | ## Pre-requisites 24 | 25 | You need to have **Docker** in your system. 26 | For installing Docker, refer to the official documentation at https://www.docker.com/. 27 | 28 | ## Usage 29 | 30 | To get an image, use the `docker pull` command: 31 | 32 | * e.g. `docker pull microros/base` 33 | 34 | You can select the preferred tag by appending `:tag` to the image name 35 | 36 | * e.g. `docker pull microros/base:kilted` 37 | 38 | Once you have the image locally, type `docker run` to start it. It is not mandatory, although usually useful, to launch your containers using the `--rm` and `--net=host` flags: 39 | 40 | * e.g. `docker run -it --rm --net=host microros/micro-ros-agent:kilted` 41 | 42 | `--rm` makes sure that the docker image will be removed after exiting. 43 | `--net=host` provides the container with the same network access as the host. 44 | `-it` allocates a pseudo-TTY for you and keeps stdin listening. 45 | Another used command is `-v` to map local files with docker container ones. 46 | `-v` is useful in case you may want to flash boards from within a Docker container. 47 | 48 | #### base image 49 | 50 | It is the base for the rest of the containers. 51 | It contains the necessary micro-ROS setup tools and dependencies. 52 | From this image, you can start any development targeting micro-ROS. 53 | 54 | 55 | #### micro-ros-agent 56 | 57 | This image is meant to be used as a stand-alone application. 58 | It includes the installation of the ROS 2 version selected by the tag selected, together with a micro-ROS Agent. 59 | The entry point of this image is directly the micro-ROS Agent, so upon execution of `docker run` you will be facing the micro-ROS Agent command line input. Running: 60 | 61 | * e.g. `docker run -it --net=host microros/micro-ros-agent:kilted udp4 -p 9999` 62 | 63 | will start a micro-ROS Agent listening to UDP messages on port 9999. 64 | 65 | #### micro-ros-demos 66 | 67 | `micro-ros-demos` is one of the example images. 68 | With this image, you can launch example applications using micro-ROS (compiled for Linux machines). 69 | This image entry point has a ROS 2 environment set up with micro-ROS examples. 70 | You can run regular ROS 2 tools to launch the examples. 71 | 72 | * eg: `docker run -it --net=host microros/micro-ros-demos bash` 73 | 74 | The currently available examples are listed [here](https://github.com/micro-ROS/micro-ROS-demos/rclc). 75 | 76 | #### micro-ros-olimex-nuttx (unmaintained) 77 | 78 | This image provides you with a ready-to-flash firmware for Olimex-STM32-E407 boards with demos included. 79 | To be able to flash, you need to map your devices to the Docker container as follows: 80 | 81 | * e.g. `docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb microros/micro-ros-olimex-nuttx:kilted` 82 | 83 | Once inside the container, you can flash the board by running `scripts/flash.sh` from the `firmware/NuttX` directory. 84 | 85 | There you can find a publisher and a subscriber examples. 86 | Both examples use serial transport to communicate with a micro-ROS Agent, so you should start an Agent with the same transport (You can use the `micro-ros-agent` image to do so). 87 | Once a Client-Agent communication is established you can use ROS 2 tools to view the publications from the Olimex or to publish messages to it. 88 | 89 | #### micro_ros_static_library_builder 90 | 91 | The `micro_ros_static_library_builder` docker image provides you with a set of include files and pre-compiled micro-ROS libraries to develop your micro-ROS application within the Arduino IDE environment. 92 | To be able to use it, use the following command to instantiate a container of this image: 93 | 94 | * e.g. `docker run -it -v $(pwd):/arduino_project --net=host microros/micro_ros_static_library_builder:kilted`. 95 | 96 | Note that folders added to `extras/library_generation/extra_packages` and entries added to `extras/library_generation/extra_packages/extra_packages.repos` will be taken into account by this build system. 97 | 98 | #### esp-idf-microros 99 | 100 | This Docker image allows you to use micro-ROS as a component of the ESP-IDF build system. 101 | 102 | To use it: 103 | 104 | * e.g. `docker run -it --user espidf --volume="/etc/timezone:/etc/timezone:ro" -v $(pwd):/micro_ros_espidf_component -v /dev:/dev --privileged --workdir /micro_ros_espidf_component microros/esp-idf-microros:latest /bin/bash"` 105 | 106 | Then, you can navigate to your example aplications and build it using the ESP IDF buildtool system script, `idf.py menuconfig/build/flash/monitor`. 107 | 108 | ## Automated builds 109 | 110 | These Dockerfiles are used for automatically creating images on Docker Hub. 111 | These builds are tagged with the ROS 2 version they will be compatible with: e.g. jazzy, rolling... 112 | The latest tag will always correspond to the latest release of ROS 2. 113 | 114 | These automatic builds have a direct relationship with the content of the micro-ROS repositories: 115 | 116 | | Image | Triggers | 117 | | -------------------------------- | -------------------------------------------------------------------------------------------------- | 118 | | base | https://github.com/micro-ROS/micro-ROS-build | 119 | | micro-ros-agent | https://github.com/micro-ROS/micro-ROS-Agent
https://github.com/eProsima/Micro-XRCE-DDS-Agent | 120 | | micro-ros-demos | https://github.com/micro-ROS/micro-ROS-demos | 121 | | micro_ros_static_library_builder | https://github.com/micro-ROS/micro_ros_arduino | 122 | | esp-idf-microros | https://github.com/micro-ROS/micro_ros_espidf_component | 123 | 124 | Apart from GitHub repositories changes, a build can be triggered whenever the base image is updated on Docker Hub. 125 | Base images are specified with the `FROM:` directive in the Dockerfile. 126 | 127 | ## Purpose of the Project 128 | 129 | This software is not ready for production use. It has neither been developed nor 130 | tested for a specific use case. However, the license conditions of the 131 | applicable Open Source licenses allow you to adapt the software to your needs. 132 | Before using it in a safety relevant setting, make sure that the software 133 | fulfills your requirements and adjust it according to any applicable safety 134 | standards, e.g., ISO 26262. 135 | 136 | ## License 137 | 138 | This repository is open-sourced under the Apache-2.0 license. See the 139 | [LICENSE](LICENSE) file for details. 140 | 141 | For a list of other open-source components included in this repository, 142 | see the file [3rd-party-licenses.txt](3rd-party-licenses.txt). 143 | 144 | ## Known Issues/Limitations 145 | 146 | There are no known limitations. 147 | 148 | If you find issues, [please report them](https://github.com/micro-ROS/micro_ros_setup/issues). 149 | -------------------------------------------------------------------------------- /base/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ros:kilted 2 | 3 | WORKDIR /uros_ws 4 | 5 | RUN git clone --depth 1 -b kilted https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup \ 6 | && . /opt/ros/$ROS_DISTRO/setup.sh \ 7 | && apt update \ 8 | && apt install -y ed python3-pip \ 9 | && apt install -y ros-$ROS_DISTRO-rmw-fastrtps-cpp \ 10 | && apt remove -y ros-$ROS_DISTRO-rmw-cyclonedds-cpp \ 11 | && apt autoremove -y \ 12 | && rosdep update --rosdistro $ROS_DISTRO\ 13 | && rosdep install --from-paths src --ignore-src -y \ 14 | && colcon build \ 15 | && rm -rf log/ build/ src/* \ 16 | && rm -rf /var/lib/apt/lists/* 17 | 18 | COPY ./micro-ros_entrypoint.sh /micro-ros_entrypoint.sh 19 | 20 | ENV RMW_IMPLEMENTATION=rmw_fastrtps_cpp 21 | 22 | RUN echo ". /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc 23 | RUN echo ". /uros_ws/install/setup.bash" >> ~/.bashrc 24 | 25 | ENTRYPOINT ["/micro-ros_entrypoint.sh"] 26 | CMD ["bash"] 27 | -------------------------------------------------------------------------------- /base/micro-ros_entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | exec "$@" -------------------------------------------------------------------------------- /micro-ROS-Agent/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ros:kilted AS micro-ros-agent-builder 2 | 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | WORKDIR /uros_ws 5 | RUN . /opt/ros/$ROS_DISTRO/setup.sh \ 6 | && git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_msgs src/micro_ros_msgs \ 7 | && git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro-ROS-Agent src/micro-ROS-Agent \ 8 | && colcon build \ 9 | && rm -rf log/ build/ src/ 10 | 11 | FROM ros:kilted-ros-core 12 | 13 | COPY --from=micro-ros-agent-builder /uros_ws /uros_ws 14 | 15 | WORKDIR /uros_ws 16 | 17 | # Disable shared memory 18 | COPY disable_fastdds_shm.xml disable_fastdds_shm_localhost_only.xml /tmp/ 19 | 20 | ENV RMW_IMPLEMENTATION=rmw_fastrtps_cpp 21 | ENV MICROROS_DISABLE_SHM=1 22 | 23 | RUN echo ". /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc 24 | RUN echo ". /uros_ws/install/setup.bash" >> ~/.bashrc 25 | 26 | # setup entrypoint 27 | COPY ./micro-ros_entrypoint.sh / 28 | ENTRYPOINT ["/bin/sh", "/micro-ros_entrypoint.sh"] 29 | CMD ["--help"] -------------------------------------------------------------------------------- /micro-ROS-Agent/disable_fastdds_shm.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CustomUdpTransport 7 | UDPv4 8 | 9 | 10 | 11 | 12 | 13 | 14 | CustomUdpTransport 15 | 16 | 17 | false 18 | 19 | 20 | -------------------------------------------------------------------------------- /micro-ROS-Agent/disable_fastdds_shm_localhost_only.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CustomUdpTransport 7 | UDPv4 8 | 9 |
127.0.0.1
10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | CustomUdpTransport 18 | 19 | 20 | false 21 | 22 | 23 |
24 | -------------------------------------------------------------------------------- /micro-ROS-Agent/micro-ros_entrypoint.sh: -------------------------------------------------------------------------------- 1 | . "/opt/ros/$ROS_DISTRO/setup.sh" 2 | . "/uros_ws/install/local_setup.sh" 3 | 4 | if [ "$MICROROS_DISABLE_SHM" = "1" ] ; then 5 | if [ "$ROS_LOCALHOST_ONLY" = "1" ] ; then 6 | export FASTRTPS_DEFAULT_PROFILES_FILE=/tmp/disable_fastdds_shm_localhost_only.xml 7 | else 8 | export FASTRTPS_DEFAULT_PROFILES_FILE=/tmp/disable_fastdds_shm.xml 9 | fi 10 | fi 11 | 12 | exec ros2 run micro_ros_agent micro_ros_agent "$@" 13 | -------------------------------------------------------------------------------- /micro-ROS-demos/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM microros/base:kilted 2 | 3 | WORKDIR /uros_ws 4 | 5 | RUN apt update \ 6 | && apt install -y liblog4cxx-dev clang \ 7 | && rm -rf /var/lib/apt/list/* 8 | 9 | RUN . /opt/ros/$ROS_DISTRO/setup.sh \ 10 | && . install/local_setup.sh \ 11 | && ros2 run micro_ros_setup create_firmware_ws.sh host \ 12 | && ros2 run micro_ros_setup build_firmware.sh 13 | 14 | # setup entrypoint 15 | COPY ./micro-ros_entrypoint.sh / 16 | ENTRYPOINT ["/bin/sh", "/micro-ros_entrypoint.sh"] 17 | -------------------------------------------------------------------------------- /micro-ROS-demos/micro-ros_entrypoint.sh: -------------------------------------------------------------------------------- 1 | export RMW_IMPLEMENTATION=rmw_microxrcedds 2 | exec $@ 3 | -------------------------------------------------------------------------------- /micro-ROS-static-library-builder/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ros:kilted 2 | 3 | RUN mkdir -p uros_ws 4 | WORKDIR uros_ws 5 | RUN apt update \ 6 | && apt install -y wget dos2unix zstd \ 7 | && rm -rf log/ build/ src/* \ 8 | && rm -rf /var/lib/apt/lists/* \ 9 | && wget --no-check-certificate https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q2-update/+download/gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2 \ 10 | && tar -xvf gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2 \ 11 | && rm -rf gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2 gcc-arm-none-eabi-5_4-2016q2/share/doc \ 12 | && wget --no-check-certificate https://www.pjrc.com/teensy/td_158/teensy-compile-linux64.tar.zst \ 13 | && mkdir teensy-compile \ 14 | && tar -xvf teensy-compile-linux64.tar.zst -C teensy-compile \ 15 | && rm -rf teensy-compile-linux64.tar.zst \ 16 | && wget --no-check-certificate https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q1-update/+download/gcc-arm-none-eabi-4_8-2014q1-20140314-linux.tar.bz2 \ 17 | && tar -xvf gcc-arm-none-eabi-4_8-2014q1-20140314-linux.tar.bz2 \ 18 | && rm -rf gcc-arm-none-eabi-4_8-2014q1-20140314-linux.tar.bz2 gcc-arm-none-eabi-4_8-2014q1/share/doc \ 19 | && wget --no-check-certificate https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 \ 20 | && tar -xvf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 \ 21 | && rm -rf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 gcc-arm-none-eabi-7-2017-q4-major/share/doc \ 22 | && wget --no-check-certificate https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 \ 23 | && tar -xvf gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 \ 24 | && rm -rf gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 gcc-arm-none-eabi-9-2020-q2-update/share/doc \ 25 | && wget --no-check-certificate https://github.com/espressif/crosstool-NG/releases/download/esp-2021r2/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz \ 26 | && tar -xvf xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz \ 27 | && rm -rf xtensa-esp32-elf-gcc8_4_0-esp-2021r2-linux-amd64.tar.gz 28 | 29 | # Install micro-ROS 30 | RUN git clone -b kilted https://github.com/micro-ROS/micro-ros-build.git src/micro-ros-build \ 31 | && . /opt/ros/$ROS_DISTRO/setup.sh \ 32 | && apt update \ 33 | && apt install -y rsync python3-pip python3-nose clang-format pyflakes3 python3-mypy python3-pytest-mock gperf ros-$ROS_DISTRO-osrf-testing-tools-cpp python3-lttng ros-$ROS_DISTRO-mimick-vendor python3-babeltrace \ 34 | && rosdep update --rosdistro $ROS_DISTRO \ 35 | && rosdep install --from-paths src --ignore-src -y \ 36 | && colcon build \ 37 | && . install/local_setup.sh \ 38 | && rm -rf log/ build/ src/* \ 39 | && rm -rf /var/lib/apt/lists/* 40 | 41 | COPY ./entrypoint.sh /entrypoint.sh 42 | 43 | ENTRYPOINT ["/bin/sh", "/entrypoint.sh"] 44 | -------------------------------------------------------------------------------- /micro-ROS-static-library-builder/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ -z "$MICROROS_LIBRARY_FOLDER" ] 5 | then 6 | export MICROROS_LIBRARY_FOLDER=microros_static_library 7 | fi 8 | 9 | GENERATION_SCRIPT=/project/$MICROROS_LIBRARY_FOLDER/library_generation/library_generation.sh 10 | 11 | # Convert bash script docker to unix for Windows users 12 | dos2unix $GENERATION_SCRIPT 13 | 14 | exec $GENERATION_SCRIPT "$@" -------------------------------------------------------------------------------- /package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | micro_ros_dockers 5 | 5.0.0 6 | Dockerfiles for micro-ROS environments 7 | Pablo Garrido 8 | Apache License 2.0 9 | 10 | --------------------------------------------------------------------------------