编码器

编码器用于计算轮子的移动距离
1)高精度编码器太敏感,稍微抖动,会产生大量的不准确的值。 
2) 计数器的溢出。

 

编码器抖动

用AB两项抵消抖动数据

计数器溢出

解决办法:

1)定义变量

self.encoder_min = rospy.get_param('encoder_min', -32768)
        self.encoder_max = rospy.get_param('encoder_max', 32768)
        self.encoder_low_wrap = rospy.get_param('wheel_low_wrap', (self.encoder_max - self.encoder_min) * 0.3 + self.encoder_min )
        self.encoder_high_wrap = rospy.get_param('wheel_high_wrap', (self.encoder_max - self.encoder_min) * 0.7 + self.encoder_min )
        self.wheel_mult = 0

2) 处理逻辑

   enc = msg.data
        if (enc < self.encoder_low_wrap and self.prev_encoder > self.encoder_high_wrap) :
            self.wheel_mult = self.wheel_mult + 1     
        elif (enc > self.encoder_high_wrap and self.prev_encoder < self.encoder_low_wrap) :
            self.wheel_mult = self.wheel_mult - 1
         else:
            self.wheel_mult = 0


        self.wheel_latest = 1.0 * (enc + self.wheel_mult * (self.encoder_max - self.encoder_min)) / self.ticks_per_meter 
        self.prev_encoder = enc

 

你可能感兴趣的:(ROS机器人操作系统,编码器)