-
Notifications
You must be signed in to change notification settings - Fork 258
Update pilz tutorials for POLYLINE planner #1075
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?
Changes from all commits
bab6d63
fd37f42
c4646fe
719babb
1b204c2
f3c86f6
01633a3
9c5ce2c
bafade0
031dd77
16cea2b
dc5b85a
866df1f
151b41f
cd7f092
55c8f9d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| { | ||
| "name": "moveit2_tutorials_devcontainer", | ||
| "dockerComposeFile": ["../.docker/docker-compose.yml"], | ||
| "service": "gpu", | ||
| "shutdownAction": "stopCompose", | ||
| "workspaceFolder": "/root/ws_moveit", | ||
| "remoteUser": "root", | ||
| "mounts": [ | ||
| "source=/tmp/.X11-unix,target=/tmp/.X11-unix,type=bind,consistency=cached", | ||
| "source=${localEnv:HOME}/.Xauthority,target=/home/root/.Xauthority,type=bind", | ||
| "source=${localWorkspaceFolder},target=/root/ws_moveit/src/moveit2_tutorials,type=bind,consistency=cached" | ||
| ], | ||
| "remoteEnv": { | ||
| "ROS_DISTRO": "jazzy" | ||
| }, | ||
| "containerEnv": { | ||
| "RCUTILS_COLORIZED_OUTPUT": "1", | ||
| "RCUTILS_CONSOLE_OUTPUT_FORMAT": "[{severity} {time}] [{name}]: {message} ({function_name}() at {file_name}:{line_number})", | ||
| "DISPLAY": "${localEnv:DISPLAY}", | ||
| "LIBGL_ALWAYS_SOFTWARE": "1" | ||
| }, | ||
| "initializeCommand": "bash .devcontainer/initializeCommand.sh", | ||
| "customizations": { | ||
| "vscode": { | ||
| "extensions": [ | ||
| "ms-python.python", | ||
| "ms-python.autopep8", | ||
| "skellock.just", | ||
| "cheshirekow.cmake-format", | ||
| "ms-vscode.cmake-tools", | ||
| "redhat.vscode-xml", | ||
| "redhat.vscode-yaml", | ||
| "llvm-vs-code-extensions.vscode-clangd", | ||
| "lextudio.restructuredtext-pack", | ||
| "bbenoist.Doxygen", | ||
| "ms-vscode.live-server", | ||
| "esbenp.prettier-vscode", | ||
| "EditorConfig.EditorConfig", | ||
| "DavidAnson.vscode-markdownlint", | ||
| "mine.cpplint" | ||
| ] | ||
| } | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| #!/usr/bin/env bash | ||
|
|
||
| xhost +local:root >/dev/null 2>&1 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,40 +1,39 @@ | ||
| # Example command: | ||
| # Humble on a NVIDIA system: | ||
| # DOCKER_IMAGE=humble-humble-tutorial-source docker compose run gpu | ||
| # Rolling without discrete graphics: | ||
| # DOCKER_IMAGE=main-rolling-tutorial-source compose run cpu | ||
|
|
||
| x-common: &common-service | ||
| #image: moveit/moveit2:main-jazzy-tutorial-source | ||
| image: d130s/ros:moveit2-main-jazzy-tutorial-source # TEMPORARY dev | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift 🔎 Supported by static analysis🏁 Script executed: #!/bin/bash
printf '%s\n' '--- changed files and compose context ---'
git status --short
cat -n .docker/docker-compose.yml | sed -n '1,40p'
printf '%s\n' '--- Docker and manifest references ---'
fd -a -t f | rg '(^|/)(Dockerfile|docker-compose\.yml|.*\.repos|.*workflow.*\.ya?ml)$' | sort
rg -n -C 3 'upstream(_jazzy)?\.repos|moveit_msgs|d130s/ros|POLYLINE|jazzy' .docker .github 2>/dev/nullRepository: moveit/moveit2_tutorials Length of output: 4912 🏁 Script executed: #!/bin/bash
printf '%s\n' '--- Dockerfile ---'
cat -n .docker/Dockerfile | sed -n '1,35p'
printf '%s\n' '--- manifests ---'
cat -n .github/upstream.repos | sed -n '1,40p'
cat -n .github/upstream_jazzy.repos | sed -n '1,30p'
printf '%s\n' '--- compose documentation and image references ---'
rg -n -C 4 'docker-compose|Dev Container|dev container|moveit2-main-jazzy-tutorial-source|main-jazzy-tutorial-source|DOCKER_IMAGE' README.md .github .docker docs 2>/dev/nullRepository: moveit/moveit2_tutorials Length of output: 4871 🏁 Script executed: #!/bin/bash
set -eu
repo='d130s/ros'
tag='moveit2-main-jazzy-tutorial-source'
token="$(curl -fsSL "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull" | jq -r .token)"
manifest="$(curl -fsSL \
-H "Authorization: Bearer ${token}" \
-H 'Accept: application/vnd.oci.image.index.v1+json, application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.oci.image.manifest.v1+json, application/vnd.docker.distribution.manifest.v2+json' \
"https://registry-1.docker.io/v2/${repo}/manifests/${tag}")"
printf '%s\n' '--- manifest ---'
printf '%s\n' "$manifest" | jq '{mediaType, schemaVersion, manifests, config, layers}'
if printf '%s\n' "$manifest" | jq -e '.manifests' >/dev/null; then
digest="$(printf '%s\n' "$manifest" | jq -r '.manifests[] | select(.platform.os=="linux" and .platform.architecture=="amd64") | .digest' | head -n1)"
manifest="$(curl -fsSL \
-H "Authorization: Bearer ${token}" \
-H 'Accept: application/vnd.oci.image.manifest.v1+json, application/vnd.docker.distribution.manifest.v2+json' \
"https://registry-1.docker.io/v2/${repo}/manifests/${digest}")"
fi
config_digest="$(printf '%s\n' "$manifest" | jq -r '.config.digest')"
printf '%s\n' '--- image config history ---'
curl -fsSL -H "Authorization: Bearer ${token}" \
"https://registry-1.docker.io/v2/${repo}/blobs/${config_digest}" |
jq '{config: .config, history: .history}'Repository: moveit/moveit2_tutorials Length of output: 16246 🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- repository build manifest used by the image history ---'
cat -n moveit2_tutorials.repos | sed -n '1,120p'
printf '%s\n' '--- all moveit_msgs entries in repository manifests ---'
rg -n -C 3 '^[[:space:]]*moveit_msgs:|moveit_msgs' --glob '*.repos' .Repository: moveit/moveit2_tutorials Length of output: 1483 Build and publish a matching Jazzy Dev Container image. The selected image reports 🤖 Prompt for AI Agents |
||
| privileged: true | ||
| network_mode: host | ||
| command: /bin/bash | ||
| tty: true | ||
| volumes: | ||
| - /tmp/.X11-unix:/tmp/.X11-unix | ||
| - $XAUTHORITY:/root/.Xauthority | ||
| environment: | ||
| &common-env | ||
| QT_X11_NO_MITSHM: 1 | ||
| DISPLAY: $DISPLAY | ||
|
|
||
| services: | ||
| cpu: | ||
| image: moveit/moveit2:${DOCKER_IMAGE} | ||
| container_name: moveit2_container | ||
| privileged: true | ||
| network_mode: host | ||
| command: /bin/bash | ||
| volumes: | ||
| - /tmp/.X11-unix:/tmp/.X11-unix | ||
| - $XAUTHORITY:/root/.Xauthority | ||
| environment: | ||
| QT_X11_NO_MITSHM: 1 | ||
| DISPLAY: $DISPLAY | ||
| <<: *common-service | ||
| container_name: moveit2_container_cpu | ||
| profiles: | ||
| - cpu | ||
| gpu: | ||
| image: moveit/moveit2:${DOCKER_IMAGE} | ||
| container_name: moveit2_container | ||
| privileged: true | ||
| network_mode: host | ||
| command: /bin/bash | ||
| <<: *common-service | ||
| container_name: moveit2_container_gpu | ||
| deploy: | ||
| resources: | ||
| reservations: | ||
| devices: | ||
| - driver: nvidia | ||
| count: 1 | ||
| capabilities: [gpu] | ||
| volumes: | ||
| - /tmp/.X11-unix:/tmp/.X11-unix | ||
| - $XAUTHORITY:/root/.Xauthority | ||
| environment: | ||
| QT_X11_NO_MITSHM: 1 | ||
| DISPLAY: $DISPLAY | ||
| <<: *common-env | ||
| NVIDIA_VISIBLE_DEVICES: all | ||
| NVIDIA_DRIVER_CAPABILITIES: all | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| repositories: | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This new Analysis by antigravityRoot Cause
I also confirmed moveit_msgs for Jazzy is 2.6.0 (ref. repo.ros2.org, ros/rosdistro#43732), which doesn't include the new capabilities that Polyline feature depends on. |
||
| # MoveIt msgs containing POLYLINE planner message definitions (e.g. smoothness_level). | ||
| # Required on pre-Kilted ROS distros (e.g. Jazzy) where debian packages lack these definitions. | ||
| # TODO: Remove once moveit_msgs with POLYLINE fields is released into targeted distros. | ||
| moveit_msgs: | ||
| type: git | ||
| url: https://github.com/moveit/moveit_msgs.git | ||
| version: 2.7.2 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <launch> | ||
| <arg name="robot_description_xml_path" default="$(find-pkg-share moveit_resources_panda_moveit_config)/config/panda.urdf.xacro" /> | ||
| <arg name="srdf_path" default="$(find-pkg-share moveit_resources_panda_moveit_config)/config/panda.srdf" /> | ||
| <let name="moveitconfig_share_dir" | ||
| value="$(find-pkg-share moveit_resources_panda_moveit_config)" /> | ||
| <let name="tutorials_share" value="$(find-pkg-share moveit2_tutorials)" /> | ||
| <let name="child_frame_statictf" value="panda_link0" /> | ||
| <let name="arm_controller" value="panda_arm_controller" /> | ||
| <let name="gripper_controller" value="panda_hand_controller" /> | ||
|
|
||
| <node pkg="rviz2" exec="rviz2" output="log" | ||
| args="-d $(var tutorials_share)/launch/move_group.rviz"> | ||
| <param name="robot_description" value="$(command 'xacro $(var robot_description_xml_path)')" /> | ||
| <param from="$(var srdf_path)" /> | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win 🔎 Supported by static analysis🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
log="$(mktemp)"
trap 'kill "${launch_pid:-}" 2>/dev/null || true; rm -f "$log"' EXIT
timeout 30s ros2 launch moveit2_tutorials pilz_moveit.launch.xml >"$log" 2>&1 &
launch_pid=$!
for _ in {1..20}; do
if ros2 node list 2>/dev/null | grep -qx '/move_group'; then
break
fi
sleep 1
done
ros2 node list | grep -qx '/move_group' || {
cat "$log"
exit 1
}
ros2 param get /move_group robot_description_semantic | grep -q '<robot'Repository: moveit/moveit2_tutorials Length of output: 242 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- launch file ---'
cat -n doc/how_to_guides/pilz_industrial_motion_planner/launch/pilz_moveit.launch.xml
printf '%s\n' '--- directly related launch and parameter contracts ---'
rg -n -C 3 'robot_description_semantic|srdf_path|<param from=|pilz_moveit\.launch' \
doc moveit_config moveit2_tutorials 2>/dev/null || true
printf '%s\n' '--- repository files defining MoveIt launch parameter handling ---'
rg -n -C 4 'robot_description_semantic|semantic_description|param.*from|srdf' \
--glob '*.xml' --glob '*.py' --glob '*.yaml' --glob '*.md' . | head -n 300Repository: moveit/moveit2_tutorials Length of output: 50380 🌐 Web query:
💡 Result: In ROS 2, the Citations:
Load the SRDF into At lines 15 and 32, 🤖 Prompt for AI Agents |
||
| <param from="$(var moveitconfig_share_dir)/config/kinematics.yaml" /> | ||
| <param from="$(var moveitconfig_share_dir)/config/joint_limits.yaml" /> | ||
| <param from="$(var moveitconfig_share_dir)/config/pilz_industrial_motion_planner_planning.yaml" /> | ||
| </node> | ||
|
|
||
| <node pkg="tf2_ros" exec="static_transform_publisher" name="static_transform_publisher" | ||
| output="log" args="0.0 0.0 0.0 0.0 0.0 0.0 world $(var child_frame_statictf)" /> | ||
|
|
||
| <node pkg="robot_state_publisher" | ||
| exec="robot_state_publisher" name="robot_state_publisher" output="both"> | ||
| <param name="robot_description" value="$(command 'xacro $(var robot_description_xml_path)')" /> | ||
| </node> | ||
|
|
||
| <node pkg="moveit_ros_move_group" exec="move_group" output="screen"> | ||
| <param name="capabilities" value="pilz_industrial_motion_planner/MoveGroupSequenceAction pilz_industrial_motion_planner/MoveGroupSequenceService" /> | ||
| <param name="robot_description" value="$(command 'xacro $(var robot_description_xml_path)')" /> | ||
| <param from="$(var srdf_path)" /> | ||
| <param name="publish_robot_description" value="True" /> | ||
| <param name="publish_robot_description_semantic" value="True" /> | ||
| <param from="$(var moveitconfig_share_dir)/config/kinematics.yaml" /> | ||
| <param from="$(var moveitconfig_share_dir)/config/joint_limits.yaml" /> | ||
| <param from="$(var moveitconfig_share_dir)/config/gripper_moveit_controllers.yaml" /> | ||
| <param from="$(var moveitconfig_share_dir)/config/pilz_industrial_motion_planner_planning.yaml" /> | ||
| </node> | ||
|
|
||
| <node pkg="controller_manager" exec="ros2_control_node" output="both"> | ||
| <param name="robot_description" value="$(command 'xacro $(var robot_description_xml_path)')" /> | ||
| <param from="$(var moveitconfig_share_dir)/config/ros2_controllers.yaml" /> | ||
| </node> | ||
|
|
||
| <executable cmd="ros2 run controller_manager spawner joint_state_broadcaster" output="screen" shell="true" /> | ||
| <executable cmd="ros2 run controller_manager spawner $(var arm_controller)" output="screen" shell="true" /> | ||
| <executable cmd="ros2 run controller_manager spawner $(var gripper_controller)" output="screen" shell="true" /> | ||
|
|
||
| </launch> | ||
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.
This entire devcontainer folder must not be included in this PR (my bad). I'll remove.