New in Electric

Only released in EOL distros:  

walk_msgs provides the C++/ROS conversion algorithms and also an abstract class easing the implementation of a ROS trajectory generator node.

Such a node provides the walk_msgs/GetPath service for a custom pattern generator algorithm.

The package also provides a node loading a precomputed movement stored as a YAML file in order to display it through rviz.

To display a pre-computed movement stored as a YAML file, take a look at the tutorials.

Walking trajectory displayed in rviz



Trajectory generation node.

Published Topics

com (nav_msgs/Path)
  • Center of mass trajectory.
footprints (visualization_msgs/MarkerArray)
  • Footprints position.
left_foot (nav_msgs/Path)
  • Left foot trajectory.
right_foot (nav_msgs/Path)
  • Right foot trajectory.
zmp (nav_msgs/Path)
  • ZMP trajectory.


yaml (string)
  • YAML file location on the filesystem.
world_frame_id (string)
  • World frame name in which the trajectories are expressed.

Writing your own pattern generator node

The goal is to write a generator node which can generate reference walking trajectories using your own algorithm. The first step is to take a look at the walk_interfaces documentation to wrap your algorithm into a PatternGenerator class.

Once this is done, the next step is to use this package to provide a generator node. A generator node provides the walk_msgs/GetPath service so that the user can trigger the trajectory generation and retrieve the result.

There is two possibilities:

  • Your algorithm does not need any additional parameters and takes 2d footprints as input: you can directly write a generator node, use the walk_msgs/Footprint and the walk_msgs/GetPath service types.

  • Your algorithm requires additional parameters. You can define your own footprint message and GetPath service. Your new service can add additional fields but you must not remove any fields nor rename them. You can also change the footprint type. See halfsteps_pattern_generator and in particular halfsteps_pattern_generator/GetPath for an example. You can notice that all footprints in this pattern generator includes additional information (i.e. sliding data).

In both cases, you can then inherit the walk_msgs::AbstractNode class to ease the node implementation. Practically speaking you will have to implement the convertFootprint and setupPatternGenerator method which respectively realize the conversion between your footprint type and the ROS one and realize the setup specific to your algorithm.

Once the subclass is written, you only have to initialize ROS, instantiate it and call the spin method to start the node. halfsteps_pattern_generator generator node is implemented using these recommendations.

Wiki: walk_msgs (last edited 2012-01-10 12:59:42 by ThomasMoulard)