Snake robots are most commonly built as serial chains of rigid links connected by rotational joints. The shape of these robots, and thus the primary control space, is specified by the vector of joint angles. Unfortunately, differences in joint arrangement and other geometry features mean that shape controllers designed for one robot cannot be cleanly ported to different hardware. One solution to this problem is to specify shapes for snake robots as backbone curves in the workspace, and then use a separate algorithm to find the joint angles that best fit a given robot to the curve.
For snake robots with a universal joint at each point of articulation, fitting to the curve is relatively easy, and several good algorithms have appeared in the literature. The endpoint of each joint can be placed exactly on the curve, making the robot’s body a discretization of the curve. If the robot does not have universal joints, the fit becomes much harder. For example, if the axes of orthogonal joints do not coincide, the best fit to the helix turns out to be a zigzag line averaged around the backbone.
Simply sequentially fitting each module to the curve does not produce this optimal fit, as modules will alternately fit very well or very poorly to the curve, based on the alignment of the joint. To overcome this limitation, I developed an annealed chainfitting algorithm that fits groups of modules to the curve together. Selecting overlapping groups of modules to actively fit, gains the effect of “sculpting” or “cooling” the snake robot onto the curve, while protecting against any given joint from being solely at the head or tail of its group.