-
Notifications
You must be signed in to change notification settings - Fork 46
feat: updated docker setup for manipulation demo #641
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
docs/setup/setup_docker.md
Outdated
2. Install the eProsima Fast DDS middleware (should come preinstalled with ROS 2): | ||
|
||
```shell | ||
apt install ros-"${ROS_DISTRO}"-fastrtps |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ROS_DISTRO env variable is only available when ros2 is installed
apt install ros-"${ROS_DISTRO}"-fastrtps | |
source /opt/ros/jazzy/setup.bash # or humble | |
sudo apt install ros-"${ROS_DISTRO}"-fastrtps |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added step to docs with sourcing ROS 2 in aca7613
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please add sudo
for apt as well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added sudo
in 5f3d0c2
``` | ||
|
||
## 3. Run the tests to confirm the setup | ||
## 4. Run the tests to confirm the setup |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When I run tests in the image without DEPENDENCIES=all_groups
tests fail
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 4 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================================================================================================= 5 warnings, 4 errors in 2.61s =========================================================================================================================
(rai-framework-py3.10) root@robo-pc-005:/rai# =============================================================================================================================== warnings summary ================================================================================================================================
../root/.cache/pypoetry/virtualenvs/rai-framework-LG7o02pr-py3.10/lib/python3.10/site-packages/pydub/utils.py:300
../root/.cache/pypoetry/virtualenvs/rai-framework-LG7o02pr-py3.10/lib/python3.10/site-packages/pydub/utils.py:301
../root/.cache/pypoetry/virtualenvs/rai-framework-LG7o02pr-py3.10/lib/python3.10/site-packages/pydub/utils.py:310
../root/.cache/pypoetry/virtualenvs/rai-framework-LG7o02pr-py3.10/lib/python3.10/site-packages/pydub/utils.py:314
Warning: invalid escape sequence '\('
../root/.cache/pypoetry/virtualenvs/rai-framework-LG7o02pr-py3.10/lib/python3.10/site-packages/pydub/utils.py:170
Warning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
============================================================================================================================ short test summary info ============================================================================================================================
ERROR tests/communication/sounds_device - ModuleNotFoundError: No module named 'sounddevice'
ERROR tests/rai_bench/manipulation_o3de/tasks - ModuleNotFoundError: No module named 'hydra'
ERROR tests/rai_bench/tool_calling_agent - ModuleNotFoundError: No module named 'hydra'
ERROR tests/smoke - ImportError: This feature is based on sounddevice. Make sure sounddevice is installed.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 4 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================================================================================================= 5 warnings, 4 errors in 2.61s =========================================================================================================================
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update the command for running tests in 5bfdd91
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Cytrus14
how about:
poetry run pytest tests/{agents,messages,tools,types}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the proposed command is more comprehensive. Changed in 17a3719
2. On the host machine, download the latest binary release for the Robotic Arm Demo: | ||
|
||
```shell | ||
./scripts/download_demo.sh manipulation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
downloaded binary is specific to ros2 version. Is it possible to run this example in such setup:
host: ros2 jazzy
docker: ros2 humble
?
I think communication-wise it might not work, so I would resolve it by mentioningin the docs that we advise against such setup with 2 different ros2 versions. Then download script will work fine
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Addressed in 6ff5bd1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the warning should also be added to docker docs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added in ad28165
@Cytrus14 |
docs/setup/setup_docker.md
Outdated
4. Configure the DDS middleware using the `fastrtps_config.xml` file included in the RAI repository: | ||
|
||
```shell | ||
export FASTRTPS_DEFAULT_PROFILES_FILE=/path/to/fastrtps_config.xml |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please give the path explicitely:
export FASTRTPS_DEFAULT_PROFILES_FILE=$(pwd)/docker/fastrtps_config.xml
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated in 64cc205
@coderabbitai full review |
✅ Actions performedFull review triggered. |
WalkthroughA new Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Docker
participant Poetry
participant ROS2
participant FastDDS
User->>Docker: Build image (with DEPENDENCIES arg)
Docker->>Docker: Validate DEPENDENCIES (core_only/all_groups)
Docker->>Docker: Install system packages (incl. zip)
Docker->>Docker: Install Poetry 2.1.3
Docker->>Docker: Copy project context
Docker->>Docker: Set FastDDS and RMW env vars
Docker->>Poetry: Install dependencies (core_only or all_groups)
Docker->>ROS2: Install ROS dependencies, build workspace
Docker->>FastDDS: Use fastrtps_config.xml for communication
sequenceDiagram
participant User
participant Host
participant DockerContainer
participant ROS2
participant FastDDS
User->>Host: Clone repo, build Docker image
User->>Host: Source ROS2, set ROS_DOMAIN_ID
User->>Host: Configure FastDDS (fastrtps_config.xml)
User->>DockerContainer: Run container with env vars and network settings
DockerContainer->>ROS2: Use FastDDS for communication
DockerContainer->>Host: Communicate via shared DDS domain
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (5)
docker/Dockerfile (2)
21-24
: Shell-level check works, but quoting is unnecessary noisy
Docker performs$ARG
/$ENV
interpolation before the line is executed, so the internalbash
sees literal values.
You can simplify/clarify the check and avoid the double quoting:-RUN /bin/bash -c 'if [ "${DEPENDENCIES}" != "core_only" ] && [ "${DEPENDENCIES}" != "all_groups" ]; then \ +RUN /bin/bash -c 'if [ "$DEPENDENCIES" != core_only ] && [ "$DEPENDENCIES" != all_groups ]; then \
47-51
: Duplicateif
block – consider DRYing with Poetry’s--with
flag
Rather than branching, you can pass--without dev,tests,…
whencore_only
is requested.
Not blocking, but makes the layer cache friendlier.docs/setup/setup_docker.md (2)
70-78
: Provide an explicit, copy-pastable path forFASTRTPS_DEFAULT_PROFILES_FILE
Users unfamiliar with the repo layout may struggle to locate the file.- export FASTRTPS_DEFAULT_PROFILES_FILE=/path/to/fastrtps_config.xml + export FASTRTPS_DEFAULT_PROFILES_FILE=$(pwd)/docker/fastrtps_config.xml
58-67
: Small typo: mismatch between fenced code block and list indentation
Markdown renderers show the code block as plain text.
Indent the fenced block by four spaces (or switch to indented style) to satisfy MD046 and keep consistency.docs/demos/manipulation.md (1)
110-115
: Grammar: drop redundant “of”- docker run --net=host --ipc=host --pid=host -e ROS_DOMAIN_ID=$ROS_DOMAIN_ID --gpus all -it rai:jazzy # or rai:humble + docker run --net=host --ipc=host --pid=host -e ROS_DOMAIN_ID=$ROS_DOMAIN_ID --gpus all -it rai:jazzy # or rai:humble(The phrase “inside of the docker container” appears a few lines below; change to “inside the docker container” for clarity.)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
.dockerignore
(1 hunks)docker/Dockerfile
(1 hunks)docker/fastrtps_config.xml
(1 hunks)docs/demos/manipulation.md
(3 hunks)docs/setup/setup_docker.md
(1 hunks)src/rai_extensions/rai_open_set_vision/rai_open_set_vision/agents/base_vision_agent.py
(2 hunks)src/rai_extensions/rai_open_set_vision/rai_open_set_vision/tools/segmentation_tools.py
(1 hunks)src/rai_extensions/rai_open_set_vision/rai_open_set_vision/vision_markup/boxer.py
(2 hunks)
🧰 Additional context used
🧠 Learnings (3)
docs/demos/manipulation.md (8)
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: examples/rosbot-xl.launch.py:40-44
Timestamp: 2024-11-28T14:37:22.619Z
Learning: In the `rosbot-xl.launch.py` and `turtlebot.launch.py` launch files, the `run-nav.bash` scripts are different for each demo and should remain as separate calls to maintain clarity in the demo launches.
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: examples/rosbot-xl.launch.py:34-38
Timestamp: 2024-11-28T14:35:45.411Z
Learning: The demo scripts and launch files in the `examples` directory are not yet implemented as ROS 2 packages, so `FindPackageShare` cannot be used to locate them.
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: src/rai_bringup/launch/sim_whoami_demo.launch.py:57-69
Timestamp: 2024-11-28T15:46:06.103Z
Learning: In this project, prefer to keep ROS2 launch files simple and easy to use, and avoid adding non-standard features like executable verification and error handling unless necessary.
Learnt from: maciejmajek
PR: RobotecAI/rai#379
File: tests/communication/ros2/test_connectors.py:57-62
Timestamp: 2025-01-21T12:43:24.467Z
Learning: The ROS2 node discovery mechanism in tests is planned to be implemented in the future. Current tests use xfail to document this limitation.
Learnt from: maciejmajek
PR: RobotecAI/rai#383
File: tests/tools/ros2/test_topic_tools.py:84-105
Timestamp: 2025-01-24T13:42:58.814Z
Learning: The ROS2 node discovery in the test suite is asynchronous, and the current implementation doesn't wait for topic discovery. This is a known limitation that causes tests like `test_receive_message_tool` and `test_receive_image_tool` to be marked as `xfail`. A proper discovery mechanism with timeout will be implemented in the future to ensure reliable topic communication.
Learnt from: maciejmajek
PR: RobotecAI/rai#508
File: src/rai_core/rai/tools/ros2/nav2.py:34-38
Timestamp: 2025-04-07T16:16:36.242Z
Learning: The tools in src/rai_core/rai/tools/ros2/nav2.py are intentionally simplified versions of the more generic ROS2 tools, with a simplified implementation approach that uses global variables.
Learnt from: boczekbartek
PR: RobotecAI/rai#314
File: src/rai_bringup/launch/sim_whoami_demo.launch.py:0-0
Timestamp: 2024-12-02T13:51:47.310Z
Learning: In `sim_whoami_demo.launch.py`, the `robot_description_package` launch argument is already declared in the imported `rai_whoami_node` launch file `rai_whoami_node`, so it doesn't need to be redeclared in `sim_whoami_demo.launch.py`.
Learnt from: maciejmajek
PR: RobotecAI/rai#386
File: src/rai/rai/tools/ros/tools.py:30-30
Timestamp: 2025-01-25T14:33:56.413Z
Learning: In the RAI package, ROS2-related Python packages (e.g., tf_transformations) are currently installed via rosdep rather than being declared in pyproject.toml.
docker/Dockerfile (3)
Learnt from: maciejmajek
PR: RobotecAI/rai#386
File: src/rai/rai/tools/ros/tools.py:30-30
Timestamp: 2025-01-25T14:33:56.413Z
Learning: In the RAI package, ROS2-related Python packages (e.g., tf_transformations) are currently installed via rosdep rather than being declared in pyproject.toml.
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: src/rai_bringup/launch/sim_whoami_demo.launch.py:57-69
Timestamp: 2024-11-28T15:46:06.103Z
Learning: In this project, prefer to keep ROS2 launch files simple and easy to use, and avoid adding non-standard features like executable verification and error handling unless necessary.
Learnt from: maciejmajek
PR: RobotecAI/rai#508
File: src/rai_core/rai/tools/ros2/nav2.py:34-38
Timestamp: 2025-04-07T16:16:36.242Z
Learning: The tools in src/rai_core/rai/tools/ros2/nav2.py are intentionally simplified versions of the more generic ROS2 tools, with a simplified implementation approach that uses global variables.
docs/setup/setup_docker.md (9)
Learnt from: maciejmajek
PR: RobotecAI/rai#386
File: src/rai/rai/tools/ros/tools.py:30-30
Timestamp: 2025-01-25T14:33:56.413Z
Learning: In the RAI package, ROS2-related Python packages (e.g., tf_transformations) are currently installed via rosdep rather than being declared in pyproject.toml.
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: src/rai_bringup/launch/sim_whoami_demo.launch.py:57-69
Timestamp: 2024-11-28T15:46:06.103Z
Learning: In this project, prefer to keep ROS2 launch files simple and easy to use, and avoid adding non-standard features like executable verification and error handling unless necessary.
Learnt from: maciejmajek
PR: RobotecAI/rai#379
File: tests/communication/ros2/test_connectors.py:57-62
Timestamp: 2025-01-21T12:43:24.467Z
Learning: The ROS2 node discovery mechanism in tests is planned to be implemented in the future. Current tests use xfail to document this limitation.
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: examples/rosbot-xl.launch.py:34-38
Timestamp: 2024-11-28T14:35:45.411Z
Learning: The demo scripts and launch files in the `examples` directory are not yet implemented as ROS 2 packages, so `FindPackageShare` cannot be used to locate them.
Learnt from: maciejmajek
PR: RobotecAI/rai#508
File: src/rai_core/rai/tools/ros2/nav2.py:34-38
Timestamp: 2025-04-07T16:16:36.242Z
Learning: The tools in src/rai_core/rai/tools/ros2/nav2.py are intentionally simplified versions of the more generic ROS2 tools, with a simplified implementation approach that uses global variables.
Learnt from: rachwalk
PR: RobotecAI/rai#393
File: tests/communication/sounds_device/test_connector.py:68-77
Timestamp: 2025-01-30T16:48:57.540Z
Learning: When testing audio processing in Python, using mock audio data (e.g., b"mock_audio_data") is preferred over loading real audio files to ensure test reliability, speed, and isolation, unless there's a specific need to test file format compatibility or audio properties.
Learnt from: maciejmajek
PR: RobotecAI/rai#416
File: src/rai_core/rai/communication/ros2/connectors.py:241-267
Timestamp: 2025-02-10T21:35:25.819Z
Learning: Avoid circular imports in the ROS2 connector modules by placing utility functions in dedicated utility modules that don't import from the connector modules.
Learnt from: maciejmajek
PR: RobotecAI/rai#367
File: src/rai/rai/communication/ros2/api.py:370-373
Timestamp: 2025-01-16T16:40:58.528Z
Learning: The ROS2 high-level API in `src/rai/rai/communication/ros2/api.py` is intentionally designed to be synchronous for simpler usage, without requiring callback handling.
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: examples/rosbot-xl.launch.py:40-44
Timestamp: 2024-11-28T14:37:22.619Z
Learning: In the `rosbot-xl.launch.py` and `turtlebot.launch.py` launch files, the `run-nav.bash` scripts are different for each demo and should remain as separate calls to maintain clarity in the demo launches.
🧬 Code Graph Analysis (1)
src/rai_extensions/rai_open_set_vision/rai_open_set_vision/tools/segmentation_tools.py (1)
src/rai_core/rai/communication/ros2/ros_async.py (1)
get_future_result
(21-37)
🪛 LanguageTool
docs/demos/manipulation.md
[uncategorized] ~132-~132: Possible missing comma found.
Context: ...``` #### 2. Running the demo !!! note Source the setup shell Ensure ROS 2 is so...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~142-~142: This phrase is redundant. Consider using “inside”.
Context: ...ell) Launch the Robotic Arm Demo script inside of the docker container: ```shell ...
(OUTSIDE_OF)
docs/setup/setup_docker.md
[style] ~46-~46: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 1187 characters long)
Context: ...ons between docker and host (Optional) !!! tip "ROS 2 communication" If you i...
(EN_EXCESSIVE_EXCLAMATION)
🪛 markdownlint-cli2 (0.17.2)
docs/demos/manipulation.md
99-99: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
105-105: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
119-119: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
126-126: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
138-138: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
144-144: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
150-150: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
156-156: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
docs/setup/setup_docker.md
12-12: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
21-21: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
27-27: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
35-35: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
41-41: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
58-58: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
64-64: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
70-70: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
76-76: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
82-82: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
90-90: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
96-96: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
102-102: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
🔇 Additional comments (8)
.dockerignore (1)
1-182
: LGTM! Comprehensive .dockerignore with good project-specific exclusions.The
.dockerignore
file is well-structured and includes appropriate exclusions for Python, ROS, and project-specific files. The explicit include pattern!examples/imgs/*.md
correctly preserves markdown files in the examples/imgs directory while excluding other content.docker/fastrtps_config.xml (1)
1-17
: LGTM! Valid Fast DDS configuration for containerized environments.The XML configuration correctly defines a custom UDPv4 transport and sets up the participant profile as default. Disabling built-in transports and using a custom transport is a common pattern for ensuring consistent DDS behavior in Docker containers.
src/rai_extensions/rai_open_set_vision/rai_open_set_vision/vision_markup/boxer.py (2)
20-20
: LGTM! Adding torch import for CUDA availability check.The torch import is necessary for the
torch.cuda.is_available()
check introduced in the constructor.
75-76
: Excellent improvement for robust device selection.The explicit CUDA availability check prevents runtime errors when CUDA is requested but not available. This is much safer than the previous implicit device selection and provides better fallback behavior in containerized environments.
src/rai_extensions/rai_open_set_vision/rai_open_set_vision/tools/segmentation_tools.py (2)
348-350
: Excellent addition of explicit timeout with clear justification.The explanatory comment clearly explains why a 60-second timeout is necessary for vision processing tasks, especially on CPU. This prevents indefinite waiting and provides better user experience.
356-356
: Consistent timeout application for Grounded SAM service call.Good consistency in applying the same 60-second timeout to the Grounded SAM service call, ensuring both vision processing steps have appropriate timeout handling.
src/rai_extensions/rai_open_set_vision/rai_open_set_vision/agents/base_vision_agent.py (2)
37-37
: LGTM! Adding flag to track weight path initialization state.The boolean flag helps prevent issues during weight re-downloading by ensuring path construction logic runs only once.
47-55
: ```bash
#!/bin/bashPrint the _init_weight_path method for full context
sed -n '42,120p' src/rai_extensions/rai_open_set_vision/rai_open_set_vision/agents/base_vision_agent.py
</details> </blockquote></details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
docs/demos/manipulation.md
Outdated
!!! note Source the setup shell | ||
|
||
Ensure ROS 2 is sourced on the host machine. Ensure that every command inside the docker container is run in a sourced shell using `source setup_shell.sh`. | ||
|
||
1. Launch the Robotic Arm Visualization on the host machine: | ||
|
||
```shell |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Missing export of ROS_DOMAIN_ID
before it is referenced
The run command relies on $ROS_DOMAIN_ID
, but newcomers might not have exported it yet.
Consider adding:
Before running the container:
```shell
export ROS_DOMAIN_ID=99 # choose the ID you used on the host
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 LanguageTool</summary>
[uncategorized] ~132-~132: Possible missing comma found.
Context: ...``` #### 2. Running the demo !!! note Source the setup shell Ensure ROS 2 is so...
(AI_HYDRA_LEO_MISSING_COMMA)
</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>
138-138: Code block style
Expected: indented; Actual: fenced
(MD046, code-block-style)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
In docs/demos/manipulation.md around lines 132 to 138, the instructions use the
environment variable ROS_DOMAIN_ID without ensuring it is exported, which can
cause issues for new users. Add a note before the container run command
instructing users to export ROS_DOMAIN_ID with a chosen value, for example, by
adding a shell snippet: export ROS_DOMAIN_ID=99, to ensure the variable is set
in their environment before running the container.
</details>
<!-- This is an auto-generated reply by CodeRabbit -->
<!-- fingerprinting:phantom:triton:cougar -->
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarified that the ROS_DOMAIN_ID variable should be exported on host machine in ba7f697
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Cytrus14 Perfect! Thank you for addressing that concern. Clarifying that ROS_DOMAIN_ID
should be exported on the host machine will definitely help users avoid potential setup issues when running the Docker container.
/| /|
( :v: )
|(_)|
🧠 Learnings used
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: examples/rosbot-xl.launch.py:40-44
Timestamp: 2024-11-28T14:37:22.619Z
Learning: In the `rosbot-xl.launch.py` and `turtlebot.launch.py` launch files, the `run-nav.bash` scripts are different for each demo and should remain as separate calls to maintain clarity in the demo launches.
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: examples/rosbot-xl.launch.py:34-38
Timestamp: 2024-11-28T14:35:45.411Z
Learning: The demo scripts and launch files in the `examples` directory are not yet implemented as ROS 2 packages, so `FindPackageShare` cannot be used to locate them.
Learnt from: boczekbartek
PR: RobotecAI/rai#324
File: src/rai_bringup/launch/sim_whoami_demo.launch.py:57-69
Timestamp: 2024-11-28T15:46:06.103Z
Learning: In this project, prefer to keep ROS2 launch files simple and easy to use, and avoid adding non-standard features like executable verification and error handling unless necessary.
Learnt from: boczekbartek
PR: RobotecAI/rai#314
File: src/rai_bringup/launch/sim_whoami_demo.launch.py:0-0
Timestamp: 2024-12-02T13:51:47.310Z
Learning: In `sim_whoami_demo.launch.py`, the `robot_description_package` launch argument is already declared in the imported `rai_whoami_node` launch file `rai_whoami_node`, so it doesn't need to be redeclared in `sim_whoami_demo.launch.py`.
If you found this review helpful, would you consider giving us a shout-out on X?
Thank you for using CodeRabbit!
Co-authored-by: Bartek Boczek <[email protected]>
… between host and docker
…om git, added a .dockerignore file
ba7f697
to
5fef90e
Compare
Purpose
This PR introduces updates to the Docker setup and implements changes necessary to run the manipulation demo within a containerized environment.
Proposed Changes
docs/demos/manipulation.md
anddocs/setup/setup_docker.md
.Issues
Testing
main
branch. Specifically, add these lines to the dockerfile after theRUN git clone https://github.com/RobotecAI/rai.git .
command:Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Chores
.dockerignore
file to optimize Docker image builds by excluding unnecessary files and directories.