This repository provides MoveIt2 humble version package, we have named this repository 'Pros MoveIt Image.' All rights reserved.
The GitHub Action has been set to run at 00:00 on the second of every month. This can help us to keep updating from the base image ros:humble-ros-core-jammy.
The tag of the Docker image has 2 formats:
- 0.0.0
- This is triggered by adding new tag manually.
- 0.0.0-20241002
- This is triggered by
cronwhich is set in theyamlfile.
- This is triggered by
The system architecture is shown in the LucidChart.
r: Docolcon buildandsourcethesetup.bashin the/workspacesfolder.b: launch ros bridge serverm:make -j
We've written a run command rebuild_colcon.rc in /workspaces folder. You can do colcon build and source /workspaces/install/setup.bash by the following command:
source /workspaces/rebuild_colcon.rcWe have written the command source /workspaces/rebuild_colcon.rc as an alias 'r' in both /root/.bashrc and /root/.zshrc. Users only need to type 'r' to execute the command.
We provide push.sh and manifest.sh in script directory to do so.
-
Make sure your target docker image is named to the same as your target manifest location.
-
Suppose your target manifest is
ghcr.io/screamlab/pros_moveit_image:latest. Make sure you've tagged your Docker image with this name. -
Login to the target container registry.
-
Provide the container registry, image name, and tag as parameters to the script, like so:
./scripts/push.sh -c ghcr.io/screamlab -n pros_moveit_image -t 0.1.2
This script automatically detects your system architecture and push the re-tagged image to
ghcr.io/screamlab/pros_moveit_image:${ARCH}-${TAG}. -
Do the step above in another system architecture.
-
Make sure all your images with different architecture are all pushed to the container registry.
-
Run the following command:
./scripts/manifest.sh -c ghcr.io/screamlab -n pros_moveit_image -t 0.1.2
This script tries to delete the duplicated manifest name in local host and then push the manifest to the container registry.
The reference of src/csm is probably https://github.com/clearpathrobotics/csm/tree/catkinize_csm_eigen. However, there are several differences shown below and thus we don't use submodule here.
❯ diff -rq csm pros_jetson_driver_image/src/csm
Files csm/CMakeLists.txt and pros_jetson_driver_image/src/csm/CMakeLists.txt differ
Only in csm: .git
Files csm/.gitignore and pros_jetson_driver_image/src/csm/.gitignore differ
Files csm/package.xml and pros_jetson_driver_image/src/csm/package.xml differ
Files csm/README.md and pros_jetson_driver_image/src/csm/README.md differ
Only in pros_jetson_driver_image/src/csm: resource
Files csm/src/csm/orientation.cpp and pros_jetson_driver_image/src/csm/src/csm/orientation.cpp differ
-
To use buildx, make sure your Docker runtime is at least version 19.03. buildx actually comes bundled with Docker by default, but needs to be enabled by setting the environment variable DOCKER_CLI_EXPERIMENTAL.
export DOCKER_CLI_EXPERIMENTAL=enabled -
If you're on Linux, you need to set up
binfmt_misc. This is pretty easy in most distributions but is even easier now that you can just run a privileged Docker container to set it up for you.docker run --rm --privileged tonistiigi/binfmt:latest
or
docker run --rm --privileged docker/binfmt:latest
-
Create a new builder which gives access to the new multi-architecture features. This command creates a new builder instance. In this case, it supports both linux/arm64 and linux/amd64 platforms. The --name flag sets a name for the builder- "multi-platform-builder".
docker buildx create --use --platform=linux/arm64,linux/amd64 --name multi-platform-builder
-
This command inspects the builder created in the previous step and performs any necessary setup or configuration. The --bootstrap flag indicates that the builder should be initialized if it hasn't been already
docker buildx inspect --bootstrap
-
This command builds a Docker image using the builder created earlier.
docker buildx build --platform=linux/arm64,linux/amd64 --push --tag ghcr.io/otischung/pros_ai_image:latest -f ./Dockerfile .
Reference: https://stackoverflow.com/questions/70757791/build-linux-arm64-docker-image-on-linux-amd64-host
If you encounter that you can't build Dockerfile for arm64 due to libc-bin segmentation fault, try solve by the following instrucitons.
docker pull tonistiigi/binfmt:latest
docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-*
docker run --privileged --rm tonistiigi/binfmt --install all)-
ros2_laser_scan_matcher#17 116.6 --- stderr: ros2_laser_scan_matcher #17 116.6 In file included from /workspaces/src/ros2_laser_scan_matcher/include/ros2_laser_scan_matcher/laser_scan_matcher.h:47, #17 116.6 from /workspaces/src/ros2_laser_scan_matcher/src/laser_scan_matcher.cpp:38: #17 116.6 /opt/ros/humble/include/tf2_geometry_msgs/tf2_geometry_msgs/tf2_geometry_msgs.h:35:2: warning: #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead [-Wcpp] #17 116.6 35 | #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead #17 116.6 | ^~~~~~~ #17 116.6 --- #17 116.6 Finished <<< ros2_laser_scan_matcher [22.3s] #17 116.8 #17 116.8 Summary: 1 package finished [22.6s] #17 116.8 1 package had stderr output: ros2_laser_scan_matcher -
slam_toolboxWe need to build slam toolbox because the default version for ROS2 humble isn't up-to-date.
#17 117.4 [0.437s] WARNING:colcon.colcon_core.package_selection:Some selected packages are already built in one or more underlay workspaces: #17 117.4 'slam_toolbox' is in: /opt/ros/humble #17 117.4 If a package in a merged underlay workspace is overridden and it installs headers, then all packages in the overlay must sort their include directories by workspace order. Failure to do so may result in build failures or undefined behavior at run time. #17 117.4 If the overridden package is used by another package in any underlay, then the overriding package in the overlay must be API and ABI compatible or undefined behavior at run time may occur. #17 117.4 #17 117.4 If you understand the risks and want to override a package anyways, add the following to the command line: #17 117.4 --allow-overriding slam_toolbox #17 117.4 #17 117.4 This may be promoted to an error in a future release of colcon-override-check. -
rplidar_rosSee
logs/rplidar_ros.login this repository.