Project

General

Profile

Revision 1094

Added by Rich Hong about 15 years ago

simulating rangefinder and smart run around

changed the position of IR sensors defined in libsim
libsim and libdragonfly use different numbering for IRs (#418, #419)
added smart_run_around to template, right now it just hits wall, backs
up then segfaults

View differences:

motion.c
10 10
#define TIME 1 /*sec*/
11 11
#define ROBOT_WIDTH 131 /*mm*/
12 12

  
13
#define MOTOR_CONVERSION_FACTOR 1000.0
13
#define MOTOR_CONVERSION_FACTOR 10.0
14 14

  
15 15
#define FUDGE 10 /* minimum rangefinder distance until collision */
16 16

  
......
23 23
 **/
24 24
int move_robot(Robot* r)
25 25
{
26
    printf("Called motion\n");
27 26
	Pose old_pose = r->pose;
28 27
	
29 28
	short speed1 = r->shared->motor1;
......
50 49
	  r->pose.y += sin(theta) * speed1 / MOTOR_CONVERSION_FACTOR;
51 50
	  for (divide = 0; divide < 5; divide++) {
52 51
	    /* Lets just call this a collision... */
53
	    printf("%d: %d\n",divide,r->shared->ranges.d[divide]);
52
	    //printf("%d: %d\n",divide,r->shared->ranges.d[divide]);
54 53
	    if (r->shared->ranges.d[divide] < FUDGE) {
55 54
		/* Restore x,y, but allow rotation */
56 55
		r->pose.x = old_pose.x;
......
60 59
		update_rangefinders(r);
61 60
		return 0;
62 61
	    }
63
	}
62
		}
64 63
	  return 0;
65 64
	}
66 65
	radius = ROBOT_WIDTH * speed1 / (speed1 - speed2);
......
84 83
	update_rangefinders(r);
85 84
	for (divide = 0; divide < 5; divide++) {
86 85
	    /* Lets just call this a collision... */
87
	    printf("%d: %d\n",divide,r->shared->ranges.d[divide]);
86
	    //printf("%d: %d\n",divide,r->shared->ranges.d[divide]);
88 87
	    if (r->shared->ranges.d[divide] < FUDGE) {
89 88
		/* Restore x,y, but allow rotation */
90 89
		r->pose.x = old_pose.x;

Also available in: Unified diff