如何设计控制汽车运动的程序

求解如何设计一个控制汽车前进后退向左向右移动的程序



```python
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author  :
#E-mail  :
#Ctime   :
#Mtime   :
#Version :
 
 
import RPi.GPIO as GPIO
import time
import sys
 
 
####  定义Car类
class Car(object):
    def __init__(self):
        self.enab_pin = [5,6,13,19]
####  self.enab_pin是使能端的pin
        self.inx_pin = [21,22,23,24]
####  self.inx_pin是控制端in的pin
        self.RightAhead_pin = self.inx_pin[0]
        self.RightBack_pin = self.inx_pin[1]
        self.LeftAhead_pin = self.inx_pin[2]
        self.LeftBack_pin = self.inx_pin[3]
####  分别是右轮前进,右轮退后,左轮前进,左轮退后的pin
        self.setup()
 
####  setup函数初始化端口
    def setup(self):
        print "begin setup ena enb pin"
        GPIO.setmode(GPIO.BCM)
        GPIO.setwarnings(False)
        for pin in self.enab_pin: 
            GPIO.setup(pin,GPIO.OUT)
            GPIO.output(pin,GPIO.HIGH)
####  初始化使能端pin,设置成高电平
        pin = None
        for pin in self.inx_pin:
            GPIO.setup(pin,GPIO.OUT)
            GPIO.output(pin,GPIO.LOW)
####  初始化控制端pin,设置成低电平
        print "setup ena enb pin over"
 
####  fornt函数,小车前进
    def front(self):
        self.setup()
        GPIO.output(self.RightAhead_pin,GPIO.HIGH)
        GPIO.output(self.LeftAhead_pin,GPIO.HIGH)
 
####  leftFront函数,小车左拐弯
    def leftFront(self):
        self.setup()
        GPIO.output(self.RightAhead_pin,GPIO.HIGH)
 
####  rightFront函数,小车右拐弯
    def rightFront(self):
        self.setup()
        GPIO.output(self.LeftAhead_pin,GPIO.HIGH)
 
####  rear函数,小车后退
    def rear(self):
        self.setup()
        GPIO.output(self.RightBack_pin,GPIO.HIGH)
        GPIO.output(self.LeftBack_pin,GPIO.HIGH)
 
####  leftRear函数,小车左退
    def leftRear(self):
        self.setup()
        GPIO.output(self.RightBack_pin,GPIO.HIGH)
 
####  rightRear函数,小车右退
    def rightRear(self):
        self.setup()
        GPIO.output(self.LeftBack_pin,GPIO.HIGH)
 
####  定义main主函数
def main(status):
    car = Car()
    if status == "front":
        car.front()
    elif status == "leftFront":
        car.leftFront()
    elif status == "rightFront":
        car.rightFront()
    elif status == "rear":
        car.rear()
    elif status == "leftRear":
        car.leftRear()
    elif status == "rightRear":
        car.rightRear()
    elif status == "stop":
        car.setup()
             
 
if __name__ == '__main__':


```

智能小车?下层是舵机驱动,简单点是arduino,上层是raspberry pi。

建议用32写个pid

1、首先你要明确使用什么单片机驱动,如果底层已经写好,只需要通信控制那比较简单
2、明确控制的方法,如果使用python则需要第三方通信,建议蓝牙orwifi
3、了解通信协议,使能方式,组报文或者驱动串口发送然后进行控制
4、如果底层没有写好,那就编写个底层驱动程序,接收驱动信号后,进行对应的移动
ps:正常一个软件需要前后端,硬件产品的设计更要前后端分离