The Dynamic Whole-body Locomotion library (DWL) implements a set of functionalities to develop, design, and deploy motion planning, control and perception algorithms for legged locomotion. DWL has different modules such as: kinematics, dynamics, solvers (tree-search, optimization, etc), and environment descriptions. All these tools are designed for both fast prototyping and deployment thanks to its c++ implementation and Python bindings. The DWL toolbox can be used in various software frameworks such as ROS and LCM, and for real-time control and planning.
DWL was developed by Carlos Mastalli at Dynamic Legged Systems lab (DLS), Istituto Italiano di Tecnologia, Italy. The DWL is core toolbox used along of various software of the DLS lab at IIT.
The wb_state_publisher is a ros controller that publishes the actual whole-body state of the robot. The whole-body state is described as ROS message (i.e. dwl_msgs/WholeBodyState) inside dwl_msgs. This message structure can be transformed to the dwl::WholeBodyState class which contains functions that allows us to get the robot state in the desired frame (e.g. world, base and horizontal). For using this ros control plugin, it is required to define a ros_control::JointStateInterface hardware interface.
The dwl_rviz_plugin contains a set of tools and plugins for visualization of: the whole-body state of the robot (dwl_rviz_plugin::WholeBodyStateDisplay), the whole-body trajectory (dwl_rviz_plugin::WholeBodyTrajectoryDisplay), the terrain map (dwl_rviz_plugin::TerrainMapDisplay), the footstep regions (dwl_rviz_plugin::FootstepRegionDisplay), etc. These plugins subscribe to the standarized dwl messages (for more information see https://github.com/robot-locomotion/dwl-msgs).
You can also have tools that allows us to create our custom plugin such as: points (dwl_rviz_plugin::PointVisual), lines (dwl_rviz_plugin::LineVisual), polygons (dwl_rviz_plugin::PolygonVisual), arrows (dwl_rviz_plugin::ArrowVisual), etc.
The terrain server computes a risk associate to the terrain (i.e. terrain costmap) and its surface; information important for motion planning and control in legged locomotion. The terrain costmap quantifies how desirable it is to place a foot at a specific location. The cost value for each voxel in the map is computed using geometric terrain features such as height deviation, slope and curvature. It computes the slope and curvature through regression in a configurable window around the cell in question; the features are computed from a Octomap map. For instance, the estimated surface normals and curvatures are computed from a set of neighboring occupied voxels. It terrain servers is used in the different motion planning and control methods, see publication section.