麦卡姆轮运动原理

摘要:
安装模式水平前后移动,水平左右移动,移动树莓饼控制电路importcv2importnumpyasnpimporttimeimportTimeimportRPi。GPIOasGPIOGPIO。警告(False)GPIO。设置模式(GPIO.BCM)

安装方式

麦卡姆轮运动原理第1张

前进

麦卡姆轮运动原理第2张

 后退

麦卡姆轮运动原理第3张

水平左移

麦卡姆轮运动原理第4张

 水平右移

麦卡姆轮运动原理第5张

 麦卡姆轮运动原理第6张

 麦卡姆轮运动原理第7张

树莓派控制电路

import cv2
import numpy as np
import time
 
 
import time
import RPi.GPIO as GPIO
 
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
 
# 由于硬件引脚链接电机驱动正反,位置不一样,实际需要逐个测试,输入对应正确引脚
pinLQ1=26     # 左前电机引脚1
pinLQ2=19     # 左前电机引脚2
pinRQ1=20     # 右前电机引脚1
pinRQ2=21     # 右前电机引脚2

pinLH1=6     # 左后电机引脚1
pinLH2=5     # 左后电机引脚2
pinRH1=12    # 右后电机引脚1
pinRH2=16    # 右后电机引脚2


 
GPIO.setup(pinLQ1, GPIO.OUT) #设置脚为输出模式
GPIO.setup(pinLQ2, GPIO.OUT) #设置脚为输出模式
GPIO.setup(pinRQ1, GPIO.OUT) #设置脚为输出模式
GPIO.setup(pinRQ2, GPIO.OUT) #设置脚为输出模式

GPIO.setup(pinLH1, GPIO.OUT) #设置脚为输出模式
GPIO.setup(pinLH2, GPIO.OUT) #设置脚为输出模式
GPIO.setup(pinRH1, GPIO.OUT) #设置脚为输出模式
GPIO.setup(pinRH2, GPIO.OUT) #设置脚为输出模式


 


#停止
def stop(time1):
    print ("stop")
    GPIO.output(pinLQ1, GPIO.LOW)  #  A停止
    GPIO.output(pinLQ2, GPIO.LOW)  #灭
    GPIO.output(pinRQ1, GPIO.LOW)  # B停止
    GPIO.output(pinRQ2, GPIO.LOW)  #灭
    GPIO.output(pinLH1, GPIO.LOW)  #  A停止
    GPIO.output(pinLH2, GPIO.LOW)  #灭
    GPIO.output(pinRH1, GPIO.LOW)  # B停止
    GPIO.output(pinRH2, GPIO.LOW)  #灭
    time.sleep(time1)   #延时 秒
    
    

#左测前轮前进
def LQGO(move):
    if move==1:#前进
        GPIO.output(pinLQ1, 1)  #  A往前转
        GPIO.output(pinLQ2, 0)  #灭
    else:#后退
        GPIO.output(pinLQ1, 0)  #  A往前转
        GPIO.output(pinLQ2, 1)  #灭
    #time.sleep( time)   #延时 秒
    
#左侧后轮前进   
def LHGO(move):
    if move==1:#前进
        GPIO.output(pinLH1, 1)  #  A往前转
        GPIO.output(pinLH2, 0)  #灭
    else:
        GPIO.output(pinLH1, 0)  #  A往前转
        GPIO.output(pinLH2, 1)  #灭
    #time.sleep( time)   #延时 秒    
    
#右侧前轮前进   
def RQGO(move):
    if move==1:#前进
        GPIO.output(pinRQ1, 1)  #  A往前转
        GPIO.output(pinRQ2, 0)  #灭
    else:
        GPIO.output(pinRQ1, 0)  #  A往前转
        GPIO.output(pinRQ2, 1)  #灭        
        
#右侧后轮前进   
def RHGO(move):
    if move==1:#前进
        GPIO.output(pinRH1, 1)  #  A往前转
        GPIO.output(pinRH2, 0)  #灭
    else:
        GPIO.output(pinRH1, 0)  #  A往前转
        GPIO.output(pinRH2, 1)  #灭
        


#原地旋转左

def turn_right(Gtime):
    print ("turn_right")    
    LQGO(1)
    LHGO(0)
    RQGO(1)
    RHGO(0)
    time.sleep(Gtime)   #延时 秒
    
#水平向右    
def right_go(Gtime):
    print ("turn_right")
    LQGO(1)
    LHGO(0)
    RQGO(0)
    RHGO(1)
    
    time.sleep(Gtime)   #延时 秒
    
    
#原地左转
def tuen_left(Gtime):
    print ("tuen_left")
    LQGO(0)
    LHGO(1)
    RQGO(0)
    RHGO(1)

    time.sleep(Gtime)   #延时 秒
     
    
#水平左移动
def left_go(Gtime):
    print ("tuen_left")
    
    LQGO(0)
    LHGO(1)
    RQGO(1)
    RHGO(0)
    time.sleep(Gtime)   #延时 秒     

#前进      
def go(Gtime):
    print ("go_qian")
    LQGO(1)
    LHGO(1)
    RQGO(1)
    RHGO(1)
    time.sleep(Gtime)   #延时 秒
 
#后退      
def back(Gtime):
    print ("turn_back")
    LQGO(0)
    LHGO(0)
    RQGO(0)
    RHGO(0)
    time.sleep(Gtime)   #延时 秒
    


#运动测试
def move_test():
    stop(1) 
    #go(0.5)
    #back(0.5)
    #turn_right(0.5)
    #tuen_left(0.5)
    #left_go(0.5)
    #right_go(0.5)
    #time.sleep( 3)   #延时 秒
    stop(1)
   
   
move_test()

  

免责声明:文章转载自《麦卡姆轮运动原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇chrome扩展程序开发之在目标页面运行自己的JS判断一个数是否是素数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

小白自制Linux开发板 六. SPI TFT屏幕修改与移植

本文章参考:https://www.bilibili.com/read/cv9947785?spm_id_from=333.999.0.0 本篇通过SPI接口,使用ST7789V TFT焊接屏(13pin)为我们的小开发板进行显示加持,废话不多说了,直接开搞。 1. 硬件设置 我们在第四篇中使用了F1C200s的SPI0通信接口连接了ESP8266作为无线...

从点一个灯开始学写Linux字符设备驱动

关注、星标嵌入式客栈,精彩及时送达 [导读] 前一篇文章,介绍了如何将一个hello word模块编译进内核或者编译为动态加载内核模块,本篇来介绍一下如何利用Linux驱动模型来完成一个LED灯设备驱动。点一个灯有什么好谈呢?况且Linux下有专门的leds驱动子系统。 点灯有啥好聊呢? 在很多嵌入式系统里,有可能需要实现数字开关量输出,比如: L...

ESP32开发(2)esp32-cam采集图像

ESP32-CAM摄像头开发板 USB转串口下载器 杜邦连接线若干        注意:GPIO0连接GND(下拉)的作用是让ESP32-CAM进入下载启动模式,这个模式里,才能利用Arduino IDE给ESP32编程,否则IDE会报错,代码烧录完成后,我们需要断开GPIO0和GND的连接,让ESP32进入正常的内存启动模式。 配置ESP32环...

STM32 串口功能 库函数 详解和DMA 串口高级运用(转载)

数据传输时要从支持那些相关的标准?传输的速度?什么时候开始?什么时候结束?传输的内容?怎样防止通信出错?数据量大的时候怎么弄?硬件怎么连接出发,当然对于stm32还要熟悉库函数的功能 具起来rs232和485电平的区别硬件外围芯片,波特率(反映传一位的时间),起始位和停止位,数据宽度,校验,硬件流控制,相应连接电脑时的接口怎么样的。配置,使用函数,中断,查...

STM32f103之外部中断

一、背景 有个需求,IO口检测上升沿,然后做相应的动作。在此记录STM32F103的外部中断结构及配置方法, 以备下次快速上手使用。 有许多不太明白,又是老司机(:-D)帮忙,真的是站在别人的肩膀上会让你看的更远,走的更快, 感谢老司机。 二、正文 STM32f103有68个可屏蔽中断。(...

RK30SDK开发板驱动分析(一):platform device 的概念与注册

做过51单片机或者ARM开发的人都知道,单片机内部都有自己的“片内外设”,比如UART,比如I2C,比如SPI等等。。。 写单片机程序的时候,比如对于UART的驱动,我们都是在程序中直接写一套函数,来操作相关的UART寄存器,在程序中的其它地方调用这些函数,完成串口的收发。 在小规模的单片机程序中,这样做是再正常不过的。 但是,在规模庞大的LINUX内核中...