autonomous.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:pysteamworks 作者: thedropbears 项目源码 文件源码
def drive_to_wall(self, initial_call):
        if initial_call:
            self.profilefollower.stop()
            if self.target == Targets.Centre:
                peg_range = self.centre_airship_distance
            else:
                peg_range = 1.5
            peg_range -= self.centre_to_front_bumper
            peg_range += 0.3
            r = self.range_filter.range
            print("AUTO DRIVE WALL RANGE: %s" % (self.range_finder.getDistance()))
            print("AUTO DRIVE WALL FILTER RANGE: %s" % (self.range_filter.range))
            # 40 is range finder max distance, better failure mode than inf or really small
            if not math.isfinite(r):
                r = 40
            elif r < 0.5:
                r = 40
            to_peg = None
            if r > (2 if self.target != Targets.Centre else 4):
                print("DEAD RECKON AUTO")
                to_peg = generate_trapezoidal_trajectory(
                    0, 0, peg_range + 0.1, 0, self.displace_velocity,
                    self.displace_accel, -self.displace_decel,
                    Chassis.motion_profile_freq)
            else:
                print("RANGE AUTO")
                to_peg = generate_trapezoidal_trajectory(0, 0,
                    self.range_finder.getDistance() - self.lidar_to_front_bumper + 0.1,
                    0, self.displace_velocity, self.displace_accel, -self.displace_decel,
                    Chassis.motion_profile_freq)
            self.profilefollower.modify_queue(self.bno055.getHeading(),
                linear=to_peg, overwrite=True)
            self.profilefollower.execute_queue()
            self.manipulategear.engage()

        if not self.profilefollower.executing:
            self.next_state("deploying_gear")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号