Skip to content

Tutorial fixes and additions: build deps, path optimization, Gazebo execution#165

Open
psardin001 wants to merge 24 commits intohumanoid-path-planner:develfrom
psardin001:devel
Open

Tutorial fixes and additions: build deps, path optimization, Gazebo execution#165
psardin001 wants to merge 24 commits intohumanoid-path-planner:develfrom
psardin001:devel

Conversation

@psardin001
Copy link
Copy Markdown
Contributor

tutorial_1 : build fixes

  • Add qttools5-dev dependency and fix hpp-plot dependency chain
  • Add --system-site-packages to the python venv
  • Use qgv from robotpkg instead of building from source
  • Avoid mixing robotpkg and source-built headers (was causing
    compilation failures in hpp-python)

tutorial_5 : path optimization

  • New tutorial: path optimization and time parameterization
  • Fix obstacle position, add path optimization and slow acceleration
  • Set constraint graph on problem before optimization

tutorial_6 : Gazebo execution (new)

Execute HPP-generated motions on a simulated robot via hpp_exec

psardin001 and others added 10 commits April 14, 2026 13:55
…celeration

- Move obstacle to [0.5, -0.2, 1.2] so it blocks the straight-line path
- Add RandomShortcut path optimization before time parameterization
- Use maxAcceleration=0.5 for slower, more visible motions
- Document that effortScale requires mass/inertia data (disabled for Staubli)
- tutorial_6: Dockerfile, controllers, init.py, launch_sim.py
- CMakeLists: install rules for tutorial_6 and tutorial_7
- Makefile: add hpp-core, hpp-manipulation, hpp-exec build targets
- README: update tutorial 6 description, add tutorial 7
- tutorial_5: remove duplicate graph.initialize()
- run_docker.sh: fix executable permission
robotpkg hpp-core/hpp-manipulation headers were shadowing the devel
versions built from source, causing compilation failures in hpp-python.

Remove robotpkg packages that overlap with source-built ones from the
Dockerfile and add hpp-manipulation-urdf to the Makefile with proper
dependency chain, so each package comes from exactly one source.

Test build — to be validated.
qgv has no hpp dependency, safe to keep from robotpkg binary.
Remove qgv source build from Makefile, add robotpkg-qt5-qgv to Dockerfile.
[tutorial_5] Set constraint graph on problem before optimization
Comment thread tutorial_1/Makefile Outdated
Comment thread tutorial_5/README.md Outdated
Comment thread tutorial_5/README.md Outdated
Comment thread tutorial_5/README.md Outdated
Comment thread tutorial_5/README.md Outdated
Comment on lines +98 to +99
TOPPRA typically produces shorter execution times than `SimpleTimeParameterization` because it
computes the time-optimal solution rather than a conservative polynomial approximation.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, TOPPRA does not stop at waypoint, making the velocity discontinuous. We need to better understand how those algorithms work.
Probably, TOPPRA should be used after SplineGradientBased_bezier3.

Comment thread tutorial_5/init.py Outdated
@florent-lamiraux
Copy link
Copy Markdown
Contributor

florent-lamiraux commented Apr 15, 2026

In tutorial_1/README.md we need to add a "Troubleshooting" section explaining that on some machines, id -u returns 1000 and that this index is already used in the docker image, making command adduser fail.

In this case in Dokerfile, replace

RUN addgroup --gid $DOCKER_GROUP user
RUN adduser --uid $DOCKER_USER --gid $DOCKER_GROUP user

by

RUN adduser user

Comment thread tutorial_6/README.md
Comment thread tutorial_6/README.md
Comment on lines +27 to +32
```
cd <your devel directory>
docker run --gpus all --env DISPLAY --env QT_X11_NO_MITSHM=1 \
--volume=/tmp/.X11-unix:/tmp/.X11-unix:rw --net host --privileged \
-v .:/home/user/devel --rm --name hpp -it hpp-tutorial-ros2
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For consistency, I would provide a run_ros_docker.sh script either in the root directory or in this directory.

psardin001 and others added 5 commits April 15, 2026 09:02
Co-authored-by: Florent Lamiraux <florent@laas.fr>
Co-authored-by: Florent Lamiraux <florent@laas.fr>
Co-authored-by: Florent Lamiraux <florent@laas.fr>
Co-authored-by: Florent Lamiraux <florent@laas.fr>
Comment thread tutorial_6/README.md
Comment thread tutorial_6/README.md
@nim65s
Copy link
Copy Markdown
Member

nim65s commented Apr 15, 2026

on some machines, id -u returns 1000

that is on virtually all machines, except corporate ones.

For consistency, I would provide a run_ros_docker.sh

If you are going to re-invent dev-containers, please try those that already exist first : https://containers.dev/

(IMHO, the right class of tool for this problem is a package manager, not a piece of the cloud stack)

Comment thread tutorial_1/Makefile
hpp-toppra_repository=${HPP_REPO}
hpp-toppra_branch=main
hpp-toppra_extra_flags=
toppra_repository=${HPP_REPO}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please explain why do you need to fork

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i approved a commit suggestion by @florent-lamiraux but i must admit i'm not sure why this change was needed. there was also an error in the suggestion so the lines were duplicated. I can clean up and revert the changes.

Copy link
Copy Markdown
Contributor

@florent-lamiraux florent-lamiraux Apr 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please explain why do you need to fork

For stability reasons. I do not want to depend on the develop branch of a third-party repository belonging to a private person.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

then why not use a tag ?

@florent-lamiraux
Copy link
Copy Markdown
Contributor

(IMHO, the right class of tool for this problem is a package manager, not a piece of the cloud stack)

Another solution is to create a docker image without sharing volumes, but I do not like this solution.
Will devcontainer allow to share volumes without the files created by the container belonging to a user unknown to the host machine ?

@nim65s
Copy link
Copy Markdown
Member

nim65s commented Apr 15, 2026

Will devcontainer allow to share volumes without the files created by the container belonging to a user unknown to the host machine ?

I guess that is what they were made for, yes.
I don't use those, though, so I'm not the best person to answer this kind of questions.

Comment thread tutorial_1/Dockerfile Outdated
Co-authored-by: Florent Lamiraux <florent@laas.fr>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants