This is a project to create an autonomous control rover for the rover “legnedary rover PRz” the goal is to win the competition one of the tasks is autonomy
- Nvidia Jetson xavier nx
- Camera Oak-D-pro-w
- GPS NEO-6M-0U-BLOX
- ROS2
- DepthAI
- OpenCV
- Open3d
Add xhost +local:docker
- Bash
echo 'xhost +local:docker' >> ~/.bashrc
- Zsh
sudo xhost +local:docker >> ~/.zshrc
On ARM base architecture
sudo docker build -t trb_1 .
If you want to test it on x86_64 architecture
sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes &&
sudo docker buildx create --use &&
sudo docker buildx build --platform linux/arm64 -t trb_1 --load .
In ARM base architecture
sudo docker run -it --platform linux/arm64 --name trb_1_arm --privileged --network=host --ipc=host -v /dev:/dev trb_1_arm
In x86 for tests
sudo docker run -it --platform linux/arm64 --name trb_1_arm --privileged --network=host --ipc=host -e DISPLAY=$DISPLAY -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/$(id -u)/wayland-0:/run/user/$(id -u)/wayland-0 -v /dev:/dev trb_1_arm
Exit after finishing the work
exit
Run the following command to enter your container
sudo docker start -ai trb_1_arm
You will be in the same state as you left the container
- ROS2
- Terminator
When making modifications within a running Docker container (such as installing new dependencies or making system
changes), you can save these changes as a new Docker image using docker commit
. This allows you to preserve your
modifications without needing to rebuild the container from scratch.
-
Check running containers
docker ps -a
Find the
CONTAINER ID
orNAME
of the running container you want to save. -
Create a snapshot (which is just another image) of the current container state
docker commit <container_id/container_name> <IMAGE NAME YOU WANT TO CREATE>
Replace
<container_id>
with the actual ID of your container. -
Run a new container from the saved snapshot
sudo docker run -it --name <GIVE YOUR OWN NAME> --privileged --network=host --ipc=host --env=DISPLAY <IMAGE NAME YOU WANT TO CREATE>
- The snapshot (
trb_snapshot
) can be used as a base for further development. - This method allows you to keep changes without modifying the original
Dockerfile
. - If you want to make the changes permanent, consider updating the
Dockerfile
and rebuilding the image usingdocker build
. - creating snapshot is useful when you want to save the state of the container and use it later on, for example, when you want to test something and you don't want to rebuild the image from scratch.
-
main
- main branch, should be always stable - every pull request to this branch should be reviewed by at least 2-3 persons.
- merge to this branch can be done only by the project manager.
- merge to this branch can be done from dev branch.
- every merge means new version of the project.
-
dev
- development branch
- merge to this branch can be done only if all feature tests are passed.
- merge to this branch can be only done by feature reviewer
- acceptance criteria for merge to this branch:
- have all functionality tests passed.
- merge to this branch means end of milestone.
-
feature
- branches for specific features
- use to develop new features
-
bug
- branches for specific bugs
- use to fix bugs from feature branch
-
test
- branches for specific features
- use only to test specific feature - do not add new features to this branch
├── **main**
│ └── **dev**
│ ├── **feature**
│ │ ├── **bug**
│ │ └── **test**
│ │
│ ├── **feature**
│ │ ├── **bug**
│ │ └── **test**
│ │
- Create a new branch for each feature or bug fix.
- Branch names should be descriptive:
Example:
[feature/bug/test]/[milestone]/[short-description]
feature/ros_introduction/start_with_ros
- Commit messages should be descriptive - obligatory use of Conventional Commits
- Issues have to be created with templates provided in the repository
- Issue template - create issue ticket
- Bug report - report a bug for specific issue
- Every issue have to have assignees and reviewer
- Pull requests should be descriptive and have annotation to issue
- trzeba wymusić komunikacje UDP zamiast SharedMemory, bo middleware fastdds błędnie uznaje komunikacje hosta z dockerem jako wspólne urzędzenie i ustawia komunikacje jako SharedMemory
sudo docker start -ai <nazwa_contenera>
touch /root/fastdds.xml
echo '<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
<transport_descriptors>
<transport_descriptor>
<transport_id>CustomUdpTransport</transport_id>
<type>UDPv4</type>
</transport_descriptor>
</transport_descriptors>
<participant profile_name="participant_profile" is_default_profile="true">
<rtps>
<userTransports>
<transport_id>CustomUdpTransport</transport_id>
</userTransports>
<useBuiltinTransports>false</useBuiltinTransports>
</rtps>
</participant>
</profiles>' > /root/fastdds.xml