Move3D is dedicated to PRM-like probabilistic motion planning ([Kavraki 95, Kavraki 96, Svestka 97]). The basic function of a probabilistic motion planner is shooting a free random configuration in the configuration space of the robot. Move3D proposes several function to generate free random configurations.
The function void p3d_init_random_seed(int seed) initializes the C random function with the integer seed. This function allows the user to shoot the same sequence of random numbers several times. The function void p3d_init_random(void) initializes the C random function with a value depending of the clock of the computer. This function allows the user to get random sequences ``really shot at random''.
The function double p3d_random(double a, double b) returns a random value between a and b. The function void p3d_shoot(p3d_rob *r, double *q) shoots a configuration in the configuration space of the robot r. The function double *p3d_shoot _graph(p3d_rob *r, p3d_graph *G) does exactly the same but returns a free configuration for the robot r (and updates the configurations counter of the graph G).
The function double *p3d_shoot_walk(p3d_rob *r, double *q, double *delta) shoots, for the robot r with n degrees of freedom, a configuration distant from a step dq of the configuration q : n values v equal to 1, 0 or -1 are shot and the new configuration is obtained by adding q[i]+ v*delta[i], for i from 1 to n.
The function void p3d_shoot_in_box(p3d_rob *r, double *q, double *qn, double *dq) shoots a configuration in the box of the configuration space centered in qn and of amplitude dq. Th function double *p3d_shoot_box(p3d_rob *r, p3d_graph *G, double *qn, double *dq) does exactly the same but returns a free configuration for the robot r (and updates the configurations counter of the graph G).