├── .devcontainer
└── devcontainer.json
├── .gitignore
├── .gitmodules
├── LICENSE
├── README.md
└── doc
├── install
├── install.sh
└── melodic.rosinstall
└── media
├── demo_circle.png
└── plan_circle.png
/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | // For format details, see https://aka.ms/devcontainer.json.
2 | {
3 | "name": "OW - ROS Melodic - REEMC",
4 | "image": "ghcr.io/tum-ics/ow_docker:melodic-reemc-devel-vscode",
5 |
6 | "containerEnv" : {
7 | "CONT_PWD" : "${containerWorkspaceFolder}",
8 | "DISPLAY" : "${localEnv:DISPLAY}",
9 | "QT_X11_NO_MITSHM" : "1"
10 | },
11 |
12 | "remoteUser": "devel",
13 |
14 | "remoteEnv": {
15 | "DISPLAY": "${localEnv:DISPLAY}"
16 | },
17 |
18 | "runArgs": [
19 | "--name", "${containerWorkspaceFolderBasename}_devcont",
20 | "--hostname", "${containerWorkspaceFolderBasename}_devcont",
21 | "--add-host=${containerWorkspaceFolderBasename}_devcont=127.0.1.2",
22 | "--privileged",
23 | "--net=host",
24 | // remove this line if Nvidia-container-toolkit not used
25 | "--runtime=nvidia"
26 | ],
27 |
28 | "mounts": [
29 | {
30 | "source": "/dev/dri",
31 | "target": "/dev/dri",
32 | "type": "bind"
33 | },
34 | {
35 | "source": "/tmp/.X11-unix",
36 | "target": "/tmp/.X11-unix",
37 | "type": "bind"
38 | },
39 | {
40 | "source": "/dev",
41 | "target": "/dev",
42 | "type": "bind"
43 | }
44 | ],
45 |
46 | "customizations": {
47 | "vscode": {
48 | "extensions": [
49 | "ms-vscode.cpptools",
50 | "ms-vscode.cpptools-extension-pack",
51 | "cschlosser.doxdocgen",
52 | "shd101wyy.markdown-preview-enhanced",
53 | "ms-python.python"
54 | ],
55 | "settings": {
56 | "remote.autoForwardPorts": false
57 | }
58 | }
59 | }
60 |
61 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .catkin_tools
2 | .vscode
3 | .catkin_workspace
4 | .editorconfig
5 | *.pyc
6 | bags
7 | build
8 | devel
9 | logs
10 | src/CMakeLists.txt
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "src/ow_balancer"]
2 | path = src/ow_balancer
3 | url = https://github.com/TUM-ICS/ow_balancer.git
4 | [submodule "src/ow_cmd_gen"]
5 | path = src/ow_cmd_gen
6 | url = https://github.com/TUM-ICS/ow_cmd_gen.git
7 | [submodule "src/ow_com"]
8 | path = src/ow_com
9 | url = https://github.com/TUM-ICS/ow_com.git
10 | [submodule "src/ow_com_tg"]
11 | path = src/ow_com_tg
12 | url = https://github.com/TUM-ICS/ow_com_tg.git
13 | [submodule "src/ow_console"]
14 | path = src/ow_console
15 | url = https://github.com/TUM-ICS/ow_console.git
16 | [submodule "src/ow_controller"]
17 | path = src/ow_controller
18 | url = https://github.com/TUM-ICS/ow_controller.git
19 | [submodule "src/ow_core"]
20 | path = src/ow_core
21 | url = https://github.com/TUM-ICS/ow_core.git
22 | [submodule "src/ow_dcm_planner"]
23 | path = src/ow_dcm_planner
24 | url = https://github.com/TUM-ICS/ow_dcm_planner.git
25 | [submodule "src/ow_fcm"]
26 | path = src/ow_fcm
27 | url = https://github.com/TUM-ICS/ow_fcm.git
28 | [submodule "src/ow_fk"]
29 | path = src/ow_fk
30 | url = https://github.com/TUM-ICS/ow_fk.git
31 | [submodule "src/ow_fs_planner"]
32 | path = src/ow_fs_planner
33 | url = https://github.com/TUM-ICS/ow_fs_planner.git
34 | [submodule "src/ow_ftg"]
35 | path = src/ow_ftg
36 | url = https://github.com/TUM-ICS/ow_ftg.git
37 | [submodule "src/ow_hw_interface"]
38 | path = src/ow_hw_interface
39 | url = https://github.com/TUM-ICS/ow_hw_interface.git
40 | [submodule "src/ow_ik"]
41 | path = src/ow_ik
42 | url = https://github.com/TUM-ICS/ow_ik.git
43 | [submodule "src/ow_joint_tracker"]
44 | path = src/ow_joint_tracker
45 | url = https://github.com/TUM-ICS/ow_joint_tracker.git
46 | [submodule "src/ow_msgs"]
47 | path = src/ow_msgs
48 | url = https://github.com/TUM-ICS/ow_msgs.git
49 | [submodule "src/ow_plugin_loader"]
50 | path = src/ow_plugin_loader
51 | url = https://github.com/TUM-ICS/ow_plugin_loader.git
52 | [submodule "src/ow_rbdl"]
53 | path = src/ow_rbdl
54 | url = https://github.com/TUM-ICS/ow_rbdl.git
55 | [submodule "src/ow_reemc"]
56 | path = src/ow_reemc
57 | url = https://github.com/TUM-ICS/ow_reemc.git
58 | [submodule "src/ow_ros_control_plugin"]
59 | path = src/ow_ros_control_plugin
60 | url = https://github.com/TUM-ICS/ow_ros_control_plugin.git
61 | [submodule "src/ow_state_machine"]
62 | path = src/ow_state_machine
63 | url = https://github.com/TUM-ICS/ow_state_machine.git
64 | [submodule "src/ow_state_publisher"]
65 | path = src/ow_state_publisher
66 | url = https://github.com/TUM-ICS/ow_state_publisher.git
67 | [submodule "src/ow_walking_planner"]
68 | path = src/ow_walking_planner
69 | url = https://github.com/TUM-ICS/ow_walking_planner.git
70 | [submodule "src/ow_zmp"]
71 | path = src/ow_zmp
72 | url = https://github.com/TUM-ICS/ow_zmp.git
73 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2020 Institute for Cognitive Systems (ICS), Technical University of Munich (TUM)
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # [OpenWalker](https://github.com/TUM-ICS/openwalker)
3 |
4 |
5 |
6 | [](https://ics-robotics.github.io/ow_docs/doxy/html/index.html)
7 | [](https://github.com/TUM-ICS/openwalker/blob/main/LICENSE)
8 | [](https://github.com/TUM-ICS/ow_docker/pkgs/container/ow_docker)
9 |
10 | The **OpenWalker Project** aims to fulfill the need for a standard walking controller architecture providing the minimal components required to generate stable walking on biped robots with planar feet. The project is based on [ros_control](http://wiki.ros.org/ros_control) and provides modules and templates for fast prototyping of balancing/walking controller components.
11 |
12 | A description of all implemented algorithms and modules is available in the [online documentation](https://ics-robotics.github.io/ow_docs/doxy/html/index.html).
13 |
14 | https://github.com/user-attachments/assets/06298efd-9874-4d7f-9132-65cdcc7e03e7
15 |
16 | https://github.com/user-attachments/assets/90bb2a4c-2b83-4cfc-b2d0-f711a1de4dec
17 |
18 | ## Install (Docker)
19 |
20 | We release a [Docker image](https://github.com/TUM-ICS/ow_docker/pkgs/container/ow_docker) that can directly be used with [VS Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/tutorial) to develop and run the project.
21 |
22 | ### Requirements
23 |
24 | - [Docker](https://docs.docker.com/engine/install/ubuntu/)
25 | - [Nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)
26 | - [VS Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/tutorial)
27 |
28 | ### 1. Pull the image
29 |
30 | ```bash
31 | docker pull ghcr.io/tum-ics/ow_docker:melodic-reemc-devel-vscode
32 | ```
33 |
34 | ### 2. Clone this repository and start the [devcontainer](https://code.visualstudio.com/docs/devcontainers/tutorial)
35 |
36 | If the nvidia-container-toolkit is not used, edit [devcontainer.json](.devcontainer/devcontainer.json) and remove ```--runtime=nvidia```
37 |
38 | ```bash
39 | git clone --recursive https://github.com/TUM-ICS/openwalker.git
40 | cd openwalker && code .
41 | ```
42 |
43 | ### 3. Build the workspace inside the devcontainer
44 |
45 | ```bash
46 | source /opt/pal/setup.bash
47 | catkin build -DCATKIN_ENABLE_TESTING=0 -DCMAKE_BUILD_TYPE=Release
48 | ```
49 |
50 | ## Install (Manual)
51 |
52 | Alternatively, the project can also be installed on an Ubuntu 18.04 machine.
53 |
54 | ### Requirements
55 |
56 | - Ubuntu 18.04 / [Ros Melodic](http://wiki.ros.org/melodic/Installation)
57 | - Compiler supporting C++11
58 |
59 |
60 | ### 1. Clone this repository and set up the ROS environment.
61 |
62 | ```bash
63 | git clone --recursive https://github.com/TUM-ICS/openwalker.git
64 | cd openwalker && source /opt/ros/melodic/setup.bash
65 | ```
66 |
67 | ### 2. Install the required build tools.
68 |
69 | ```bash
70 | ./doc/install/install.sh
71 | ```
72 |
73 | ### 3. Populate the workspace with the REEM-C packages.
74 |
75 | ```bash
76 | rosinstall src/reemc /opt/ros/melodic doc/install/melodic.rosinstall
77 | ```
78 |
79 | ### 4. Install the required dependencies.
80 |
81 | ```bash
82 | sudo rosdep init
83 | rosdep update
84 | rosdep install --from-paths src --ignore-src --rosdistro melodic -y --skip-keys="opencv2 pal_laser_filters speed_limit_node sensor_to_cloud hokuyo_node libdw-dev gmock walking_utils rqt_current_limit_controller simple_grasping_action reemc_init_offset_controller walking_controller"
85 | ```
86 |
87 | ### 5. Build the workspace.
88 |
89 | ```bash
90 | catkin build -DCATKIN_ENABLE_TESTING=0 -DCMAKE_BUILD_TYPE=Release
91 | ```
92 |
93 | ## Run
94 |
95 | The following demo generates dynamic walking for the humanoid robot [REEM-C](http://wiki.ros.org/Robots/REEM-C) of PAL Robotics.
96 | It uses [Gazebo](http://gazebosim.org/) for the physics simulation and [Rviz](http://wiki.ros.org/rviz) for visualization.
97 | The robot can execute predefined foot-step plans or be controlled with a joystick by a user.
98 |
99 | For Docker users, this [readme](https://github.com/TUM-ICS/ow_docker?tab=readme-ov-file#access-vscode-dev-container-outside-vscode) describes how to connect terminals with the container.
100 |
101 | ### 1. Launch the simulation.
102 |
103 | ```bash
104 | source devel/setup.bash
105 | roslaunch ow_reemc gazebo.launch
106 | ```
107 |
108 | ### 2. Run the controller.
109 |
110 | ```bash
111 | source devel/setup.bash
112 | roslaunch ow_reemc sim.launch
113 | ```
114 |
115 | ### 3. Call one of the following services to start walking.
116 |
117 | ```bash
118 | source devel/setup.bash
119 |
120 | # Step in place.
121 | rosservice call /open_walker/plan_fixed_stamp
122 |
123 | # Walk in a straight line.
124 | rosservice call /open_walker/plan_fixed_line
125 |
126 | # Walk to the side
127 | rosservice call /open_walker/plan_fixed_sidestep_left
128 | rosservice call /open_walker/plan_fixed_sidestep_right
129 |
130 | # Walk in circles.
131 | rosservice call /open_walker/plan_fixed_circle_right
132 | rosservice call /open_walker/plan_fixed_circle_left
133 |
134 | # Generic plan with 20 steps of 0.2 m length and 0.1 rad angle
135 | rosservice call /open_walker/plan_fixed "n_steps:
136 | data: 20
137 | length:
138 | data: 0.2
139 | lateral:
140 | data: 0.0
141 | angle:
142 | data: 0.1"
143 | ```
144 |
145 |
146 |
147 |
148 | # Credits
149 |
150 | OpenWalker was developed by Emmanuel Dean, Florian Bergner, Rogelio Guadarrama-Olvera, Simon Armleder, and Gordon Cheng from the [Institute for Cognitive Systems (ICS)](https://www.ce.cit.tum.de/ics/home/), Technical University of Munich, Germany.
151 |
152 | # Acknowledgement
153 |
154 | This project has received funding from the European Union‘s Horizon 2020 research and innovation programme under grant agreement No 732287.
155 |
--------------------------------------------------------------------------------
/doc/install/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo apt update && sudo apt install \
4 | python3-pip \
5 | python-pip \
6 | python-rosdep \
7 | python-rosinstall \
8 | python-rosinstall-generator \
9 | python-wstool \
10 | build-essential \
11 | python-catkin-tools \
12 | ros-melodic-moveit-simple-controller-manager \
13 | ros-melodic-joy \
14 | ros-melodic-jsk-rviz-plugins \
15 | ros-melodic-urdf-test \
16 | ros-melodic-moveit-ros-planning-interface \
17 | ros-melodic-rviz-imu-plugin \
18 | ros-melodic-urdf-geometry-parser \
19 | ros-melodic-realsense2-description \
20 | ros-melodic-moveit-ros-visualization \
21 | ros-melodic-four-wheel-steering-msgs \
22 | ros-melodic-moveit-planners-ompl
--------------------------------------------------------------------------------
/doc/install/melodic.rosinstall:
--------------------------------------------------------------------------------
1 | # REEM-C packages
2 | - git: {local-name: reemc_robot, uri: 'https://github.com/pal-robotics/reemc_robot.git', version: 'kinetic-devel'}
3 | - git: {local-name: reemc_simulation, uri: 'https://github.com/pal-robotics/reemc_simulation.git', version: 'indigo-devel'}
4 | - git: {local-name: reemc_moveit_config, uri: 'https://github.com/pal-robotics/reemc_moveit_config', version: 'indigo-devel'}
5 | - git: {local-name: reemc_tutorials, uri: 'https://github.com/pal-robotics/reemc_tutorials.git', version: 'kinetic-devel'}
6 |
7 | # PAL packages
8 | - git: {local-name: pal_gazebo_plugins, uri: 'https://github.com/pal-robotics/pal_gazebo_plugins.git', version: 'melodic-devel'}
9 | - git: {local-name: pal_hardware_gazebo, uri: 'https://github.com/pal-robotics/pal_hardware_gazebo.git', version: 'melodic-devel'}
10 | - git: {local-name: head_action, uri: 'https://github.com/pal-robotics/head_action', version: 'indigo-devel'}
11 | - git: {local-name: pal_msgs, uri: 'https://github.com/pal-robotics/pal_msgs', version: 'indigo-devel'}
12 | - git: {local-name: play_motion, uri: 'https://github.com/pal-robotics/play_motion', version: 'kinetic-devel'}
13 | - git: {local-name: pal_hardware_interfaces, uri: 'https://github.com/pal-robotics/pal_hardware_interfaces.git', version: 'indigo-devel'}
14 | - git: {local-name: hey5_description, uri: 'https://github.com/pal-robotics/hey5_description.git', version: 'master'}
15 | - git: {local-name: tf_lookup, uri: 'https://github.com/pal-robotics/tf_lookup.git', version: 'master'}
16 | - git: {local-name: backward_ros, uri: 'https://github.com/pal-robotics/backward_ros.git', version: 'kinetic-devel'}
17 | - git: {local-name: dynamic_introspection, uri: 'https://github.com/pal-robotics/dynamic_introspection.git', version: 'kinetic-devel'}
18 | - git: {local-name: ros_control_monitor, uri: 'https://github.com/pal-robotics/ros_control_monitor.git', version: 'kinetic-devel'}
19 | - git: {local-name: ddynamic_reconfigure, uri: 'https://github.com/pal-robotics/ddynamic_reconfigure.git', version: 'kinetic-devel'}
20 | - git: {local-name: pal_camera_client, uri: 'https://github.com/pal-robotics/pal_camera_client.git', version: 'indigo-devel'}
21 | - git: {local-name: pal_transmissions, uri: 'https://github.com/pal-robotics/pal_transmissions.git', version: 'kinetic-devel'}
22 | - git: {local-name: realsense_gazebo_plugin, uri: 'https://github.com/pal-robotics/realsense_gazebo_plugin', version: 'melodic-devel'}
23 |
24 | # PAL forks
25 | - git: {local-name: gazebo_ros_pkgs, uri: 'https://github.com/pal-robotics-forks/gazebo_ros_pkgs.git', version: 'melodic-devel'}
26 | - git: {local-name: ros_control, uri: 'https://github.com/pal-robotics-forks/ros_control.git', version: 'kinetic-devel'}
27 | - git: {local-name: ros_controllers, uri: 'https://github.com/pal-robotics-forks/ros_controllers.git', version: 'kinetic-devel'}
28 |
29 | # Others
30 | - git: {local-name: teleop_tools, uri: 'https://github.com/ros-teleop/teleop_tools', version: 'kinetic-devel'}
31 | - git: {local-name: twist_mux, uri: 'https://github.com/ros-teleop/twist_mux', version: 'melodic-devel'}
32 | - git: {local-name: twist_mux_msgs, uri: 'https://github.com/ros-teleop/twist_mux_msgs', version: 'melodic-devel'}
33 | - git: {local-name: humanoid_msgs, uri: 'https://github.com/ahornung/humanoid_msgs.git', version: 'master'}
34 | - git: {local-name: pal_statistics, uri: 'https://github.com/pal-robotics/pal_statistics', version: 'kinetic-devel'}
35 | - git: {local-name: axcli, uri: 'https://github.com/po1/axcli.git', version: 'master'}
36 |
37 |
--------------------------------------------------------------------------------
/doc/media/demo_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TUM-ICS/openwalker/03c73d212d95bab7a945e91c12442d984601d1d4/doc/media/demo_circle.png
--------------------------------------------------------------------------------
/doc/media/plan_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TUM-ICS/openwalker/03c73d212d95bab7a945e91c12442d984601d1d4/doc/media/plan_circle.png
--------------------------------------------------------------------------------