feat: Add e2e docker compose test environment - #56
Conversation
…test environments. Signed-off-by: Gary Bey <beyhy94@gmail.com>
…Dockerfile in docker compose to guarantee sync with localised codebase. Signed-off-by: Gary Bey <beyhy94@gmail.com>
arjo129
left a comment
There was a problem hiding this comment.
Thanks for the initial push. I've got some small recommendations. Overall this is a step in the right direction.
| command: | ||
| - bash | ||
| - -c | ||
| - "source /nav2_traffic_ws/install/setup.bash && ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py robots:='robot1={x: 3.0, y: 5.0, yaw: 0.0};' use_rviz:=False" No newline at end of file |
|
|
||
| container_name: next_gen_prototype | ||
| restart: no | ||
| network_mode: host |
There was a problem hiding this comment.
I think itd be good if we exercised per-container networking.
| network_mode: host | ||
|
|
||
| environment: | ||
| RMW_IMPLEMENTATION: rmw_cyclonedds_cpp |
There was a problem hiding this comment.
While I test against cyclone-dds I think it'd be better if we defaulted to zenoh. The goal of this set of docker files should be to give people a rough idea of how to configure their own local network.
There was a problem hiding this comment.
Addressed in commit 884caa1.
Left in commented out rmw_zenoh_cpp to indicate that the e2e docker compose can default to Zenoh.
As a default, using Dockerfile.base, docker_compose.yml has been verified using rmw_fastrtps_cpp, both to keep the docker image minimal.
Users would be encouraged to install rmw_zenoh_cpp on their own to utilize as default RMW via docker_compose.yml.
| COPY . /tmp/next_gen_prototype | ||
|
|
||
| # Install ROS 2 dependencies via rosdep for both underlay and prototype branch | ||
| RUN apt-get update && \ |
There was a problem hiding this comment.
This apt-get update is needed as containers can grow old and then the apt mirrors list can grow out of date.
| libssl-dev \ | ||
| pkg-config \ | ||
| && rm -rf /var/lib/apt/lists/* | ||
| ros-${ROS_DISTRO}-rmw-cyclonedds-cpp \ |
There was a problem hiding this comment.
I'd rather we install these in another container. The base container should contain the bare minimum and default to the default RMW.
Signed-off-by: Gary Bey <beyhy94@gmail.com>
…N line. Signed-off-by: Gary Bey <beyhy94@gmail.com>
…se image minimal. Signed-off-by: Gary Bey <beyhy94@gmail.com>
…d default FastDDS-based execution of nav2 integration demo that allows per-container nav2 robot simulation. Signed-off-by: Gary Bey <beyhy94@gmail.com>
New Feature Implementation 🌟
Implemented feature
Added docker compose.yaml (with override for headless), accompanied with modification to
Dockerfile.basein order to provide an easy-to-set-up test environment that includes the demonstration of Nav2 Integration.This addresses #50.
Implementation description
docker-compose.ymlanddocker-compose.headless.override.ymlin directory,docker.Dockerfile.basewith optimised build time and inclusion of localised codebase so in-container commands indocker-compose.ymlcan be executed without error.Instructions 📘
Follow the steps below to see how it looks like in action:
Warning
This build process typically takes about 20 minutes, depending on your internet speed. So grab a coffee and take a break while it builds. ☕
xhost +local:docker && docker compose -f docker/docker-compose.yml up -d --force-recreateTip
To run headless, use the following command below instead:
To stop the deployment, use the command below:
Verify ✅
Upon running the monolithic version, you should see 2
RVizwindow appear.Send the following commands to verify that
next_gen_prototypeprocesses Nav2 Destination Goals accordingly:After running both commands above, both
robot0androbot1should start moving towards their destination, as visualized in their respectiveRVizwindows, similar to what is shown in the.gifanimation below:https://github.com/open-rmf/next_gen_prototype/blob/main/nav2_integration/docs/images/nav2_traffic_demo.gif
GenAI Use
We follow OSRA's policy on GenAI tools
Generated-by: Gemini Pro