Skip to content

Commit

Permalink
Merge pull request #134 from SemRoCo/devel
Browse files Browse the repository at this point in the history
Devel
  • Loading branch information
ichumuh authored Jan 3, 2024
2 parents 788cb9f + 25d68a3 commit 7d72f9c
Show file tree
Hide file tree
Showing 245 changed files with 33,886 additions and 11,998 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build_dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ jobs:
name: install pip requirements
run: |
sudo apt install libeigen3-dev
python3 -m pip install --upgrade pip
pip3 install -r requirements.txt
- if: ${{ steps.pip-load.outputs.cache-hit != 'true' }}
name: cache pip
Expand Down
136 changes: 64 additions & 72 deletions .github/workflows/main_unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,75 +30,67 @@ jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
path: 'ros_ws/src/giskardpy'
repository: SemRoCo/giskardpy
- name: Checkout giskard msgs
uses: actions/checkout@v3
with:
path: 'ros_ws/src/giskard_msgs'
repository: SemRoCo/giskard_msgs
- name: Checkout qpoases
uses: actions/checkout@v3
with:
path: 'ros_ws/src/qpOASES'
repository: SemRoCo/qpOASES
ref: noetic
- name: Checkout iai_pr2
uses: actions/checkout@v3
with:
path: 'ros_ws/src/iai_pr2'
repository: code-iai/iai_pr2
ref: mujoco_sim_setup
- name: Checkout iai_maps
uses: actions/checkout@v3
with:
path: 'ros_ws/src/iai_maps'
repository: code-iai/iai_maps
ref: master
- name: Setup Giskard workspace
uses: betwo/github-setup-catkin@master
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
with:
# Version range or exact version of ROS version to use, using SemVer's version range syntax.
ros-version: noetic
build-tool: 'catkin_tools'
# Root directory of the catkin workspace
workspace: $GITHUB_WORKSPACE/ros_ws
- name: install pip dependencies
run: pip3 install -r ros_ws/src/giskardpy/requirements.txt
- name: build Giskard
run: |
cd ros_ws
touch src/iai_pr2/iai_pr2_sim/CATKIN_IGNORE
touch src/iai_pr2/iai_pr2_donbot/CATKIN_IGNORE
catkin build
echo 'export ROS_HOSTNAME=localhost' >> ~/.bashrc
echo 'source $GITHUB_WORKSPACE/ros_ws/devel/setup.bash' >> ~/.bashrc
# - name: build betterpybullet
# run: |
# mkdir betterpybullet
# source $GITHUB_WORKSPACE/ros_ws/devel/setup.bash
# roscd giskardpy
# ./scripts/build_better_pybullet.sh /betterpybullet
- name: start roscore
run: |
roscore &
- name: casadi wrapper
run: |
roscd giskardpy
python3 -m pytest -s test/test_cas_wrapper.py
- name: PR2 TestWorld
run: |
roscd giskardpy
python3 -m pytest -s test/test_integration_pr2.py::TestWorld
- name: test godmap
run: |
roscd giskardpy
python3 -m pytest -s test/test_god_map.py
# - name: Setup upterm session
## if: always()
# if: failure()
# uses: lhotari/action-upterm@v1
- uses: actions/checkout@v3
with:
path: 'ros_ws/src/giskardpy'
repository: SemRoCo/giskardpy
- name: Checkout giskard msgs
uses: actions/checkout@v3
with:
path: 'ros_ws/src/giskard_msgs'
repository: SemRoCo/giskard_msgs
- name: Checkout qpoases
uses: actions/checkout@v3
with:
path: 'ros_ws/src/qpOASES'
repository: SemRoCo/qpOASES
ref: noetic
- name: Checkout iai_pr2
uses: actions/checkout@v3
with:
path: 'ros_ws/src/iai_pr2'
repository: code-iai/iai_pr2
ref: mujoco_sim_setup
- name: Checkout iai_maps
uses: actions/checkout@v3
with:
path: 'ros_ws/src/iai_maps'
repository: code-iai/iai_maps
ref: master
- name: Setup Giskard workspace
uses: betwo/github-setup-catkin@master
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
with:
# Version range or exact version of ROS version to use, using SemVer's version range syntax.
ros-version: noetic
build-tool: 'catkin_tools'
# Root directory of the catkin workspace
workspace: $GITHUB_WORKSPACE/ros_ws
- name: install pip dependencies
run: |
python3 -m pip install --upgrade pip
pip3 install -r ros_ws/src/giskardpy/requirements.txt
- name: build Giskard
run: |
cd ros_ws
touch src/iai_pr2/iai_pr2_sim/CATKIN_IGNORE
touch src/iai_pr2/iai_pr2_donbot/CATKIN_IGNORE
catkin build
echo 'export ROS_HOSTNAME=localhost' >> ~/.bashrc
echo 'source $GITHUB_WORKSPACE/ros_ws/devel/setup.bash' >> ~/.bashrc
- name: start roscore
run: |
roscore &
- name: casadi wrapper
run: |
roscd giskardpy
python3 -m pytest -s test/test_cas_wrapper.py
- name: test godmap
run: |
roscd giskardpy
python3 -m pytest -s test/test_god_map.py
# - name: Setup upterm session
## if: always()
# if: failure()
# uses: lhotari/action-upterm@v1
6 changes: 4 additions & 2 deletions .github/workflows/reusable_robot_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,9 @@ jobs:
path: 'ros_ws/src/giskardpy'
repository: SemRoCo/giskardpy
- name: install pip dependencies
run: pip3 install -r ros_ws/src/giskardpy/requirements.txt
run: |
python3 -m pip install --upgrade pip
pip3 install -r ros_ws/src/giskardpy/requirements.txt
- name: Checkout giskard msgs
uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -118,7 +120,7 @@ jobs:
with:
path: 'ros_ws/src/iai_robots'
repository: code-iai/iai_robots
ref: noetic
ref: master
- if: ${{ inputs.robot == 'pr2' }}
name: Checkout iai_pr2
uses: actions/checkout@v3
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ msg/_*.py
*.png
*.lprof
tmp_data/
tmp/

# Generated by dynamic reconfigure
*.cfgc
Expand Down
34 changes: 22 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -161,18 +161,28 @@ include_directories(
# )

catkin_install_python(PROGRAMS
scripts/giskard.py
scripts/interactive_marker.py
scripts/joystick_e_stop.py
scripts/clear_world.py
scripts/joint_goal_publisher.py
scripts/move_base_simple_goal.py
scripts/print_joint_state.py
scripts/fake_servers.py
scripts/move_base_simple_goal_diff_drive.py
scripts/base_joint_state_publisher.py
scripts/giskard_pr2_standalone_example.py
scripts/python_interface_example.py
scripts/tools/clear_world.py
scripts/tools/collision_matrix_tool.py
scripts/iai_robots/boxy/boxy_standalone.py
scripts/iai_robots/donbot/donbot.py
scripts/iai_robots/donbot/donbot_standalone.py
scripts/iai_robots/hsr/hsr_standalone.py
scripts/iai_robots/hsr/iai_hsr.py
scripts/iai_robots/hsr/iai_hsr_real_time.py
scripts/iai_robots/pr2/iai_pr2.py
scripts/iai_robots/pr2/pr2_mujoco.py
scripts/iai_robots/pr2/pr2_standalone.py
scripts/iai_robots/tiago/tiago_standalone.py
scripts/iai_robots/tracy/tracy.py
scripts/iai_robots/tracy/tracy_standalone.py
scripts/other_robots/armar/armar_standalone.py
scripts/examples/giskard_pr2_standalone_example.py
scripts/tools/interactive_marker.py
scripts/tools/joystick_e_stop.py
scripts/tools/move_base_simple_goal.py
scripts/tools/move_base_simple_goal_diff_drive.py
scripts/tools/print_joint_state.py
scripts/examples/python_interface_example.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

## Mark executables and/or libraries for installation
Expand Down
13 changes: 4 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,18 +45,13 @@ If it doesn't work, make sure that your ```$PYTHONPATH``` includes something lik

#### Alternative QP solvers
Giskard supports multiple QP solvers and will automatically use the fasted installed solver.
The default is `qpalm`, as it is the easiest to install.

You may want to install `qpSWIFT` manually.
It is faster than `qpalm` up until ~600 constraints after which `qpalm` becomes faster.
For reference, using the default setup, the PR2 usually requires 300-500 constraints for most goals.
To install `qpSWIFT`, follow the instructions on their github page: https://github.com/qpSWIFT/qpSWIFT.

Giskard also supports two additional solvers, which are slower than `qpalm`, sorted by how fast they are for Giskard's usecase:
- `Gurobi`: A commercial solver, slower than `qpalm`, but the difference decreases with rising number of constraints:
- `qpalm`: Default solver, because it is the easiest to install and still reasonably fast.
- `qpSWIFT`: Fastest open source solver in most cases. Install instructions: https://github.com/qpSWIFT/qpSWIFT.
- `gurobi`: Commercial solver. Slightly slower than `qpSWIFT` on most robots. Outperforms `qpSWFIT` on systems with a lot of dof and/or a large prediction horizon.
- ```sudo pip3 install gurobipy```
- You can apply for a free academic license or buy one here: https://www.gurobi.com/academia/academic-program-and-licenses/
- `qpOASES`: Fine up until ~100 constraints, afterwards it because extremely slow: https://github.com/SemRoCo/qpOASES/tree/noetic
- If you have vpn access to or are in the local network of the IAI of the University of Bremen, follow these instructions: https://ai.uni-bremen.de/wiki/intern/adm/gurobi

[//]: # (- `Clarabel.rs`: `sudo pip3 install clarabel` (https://github.com/oxfordcontrol/Clarabel.rs))

Expand Down
Loading

0 comments on commit 7d72f9c

Please sign in to comment.