parent
commit
b2542d3f36
  1. BIN
      3D_model_for _printing.jpg
  2. BIN
      Engine_test.mp4
  3. BIN
      components.jpg
  4. BIN
      components2.jpg
  5. BIN
      first_launch.mp4
  6. BIN
      first_version_platform.jpg
  7. 98
      lidar.py
  8. BIN
      lidar_platform.jpg
  9. BIN
      lidar_platform2.jpg
  10. BIN
      platform_second_version.jpg
  11. BIN
      platform_second_version2.jpg
  12. BIN
      platform_version_two_first_launch.mp4
  13. 115
      upravlenie.py
  14. BIN
      Деталь 1 первый уровень.STL
  15. BIN
      Деталь 2 второй уровень.STL
  16. BIN
      Деталь 3 третий уровень.STL
  17. BIN
      Деталь 4 четвёртый уровень.STL

BIN
3D_model_for _printing.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
Engine_test.mp4

Binary file not shown.

BIN
components.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

BIN
components2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

BIN
first_launch.mp4

Binary file not shown.

BIN
first_version_platform.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

98
lidar.py

@ -0,0 +1,98 @@
import RPi.GPIO as GPIO
import serial
import time
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import keyboard
# Настройки GPIO
IN1 = 23
IN2 = 24
IN3 = 17
IN4 = 27
ENA = 26
ENB = 19
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(IN1, GPIO.OUT)
GPIO.setup(IN2, GPIO.OUT)
GPIO.setup(IN3, GPIO.OUT)
GPIO.setup(IN4, GPIO.OUT)
GPIO.setup(ENA, GPIO.OUT)
GPIO.setup(ENB, GPIO.OUT)
# Параметры для лидара
lidar_port = '/dev/ttyUSB1' # Убедитесь, что это правильный порт
baud_rate = 115200
# Настройка серийного соединения
ser = serial.Serial(lidar_port, baud_rate, timeout=1)
# Параметры скорости
speed = 10 # Регулируйте скорость по необходимости
GPIO.output(ENA, speed)
GPIO.output(ENB, speed)
# Функции управления движением
def move_forward():
GPIO.output(IN1, GPIO.HIGH)
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.HIGH)
GPIO.output(IN4, GPIO.LOW)
print("Робот движется вперед")
def move_backward():
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.HIGH)
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.HIGH)
print("Робот движется назад")
def stop():
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.LOW)
print("Робот остановлен")
def read_lidar_data():
try:
line = ser.readline().decode('utf-8', errors='ignore').strip()
if line:
print(f"Считанные данные от лидара: {line}") # Отладка
return line # Вернем считанные данные
else:
print("Нет данных")
return None
except Exception as e:
print(f"Ошибка чтения данных от лидара: {e}")
return None
# Визуализация карты препятствий
def update_plot(frame):
data = read_lidar_data() # Получаем данные от лидара
if data is not None:
# Логика для визуализации данных
# Вставьте здесь ваш код для построения карты препятствий
pass # Замените на свою логику
# Основной цикл
def main():
print("Нажмите 'W' для запуска автономного движения и ' ' (пробел) для остановки.")
while True:
if keyboard.is_pressed('w'):
move_forward()
print("Автономное движение включено")
if keyboard.is_pressed('s'):
move_backward()
if keyboard.is_pressed(' '):
stop()
print("Автономное движение остановлено")
# Добавьте паузу, чтобы избежать высокой загрузки CPU
time.sleep(0.1)
# Запуск программы
if __name__ == "__main__":
main()

BIN
lidar_platform.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

BIN
lidar_platform2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

BIN
platform_second_version.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

BIN
platform_second_version2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

BIN
platform_version_two_first_launch.mp4

Binary file not shown.

115
upravlenie.py

@ -0,0 +1,115 @@
import RPi.GPIO as GPIO
import time
import keyboard
# Настройка пинов
GPIO.setmode(GPIO.BCM)
# Пины для управления моторами
IN1 = 17
IN2 = 27
IN3 = 22
IN4 = 23
# Пины для управления скоростью (PWM)
ENA = 18
ENB = 19
# Настройка пинов как выходов
GPIO.setup(IN1, GPIO.OUT)
GPIO.setup(IN2, GPIO.OUT)
GPIO.setup(IN3, GPIO.OUT)
GPIO.setup(IN4, GPIO.OUT)
GPIO.setup(ENA, GPIO.OUT)
GPIO.setup(ENB, GPIO.OUT)
# Создание ШИМ (PWM) на пинах ENA и ENB с частотой 1000 Гц
pwm_a = GPIO.PWM(ENA, 1000)
pwm_b = GPIO.PWM(ENB, 1000)
# Старт ШИМ с нулевой скоростью (0% скважности)
pwm_a.start(0)
pwm_b.start(0)
# Функции управления
def move_forward(speed):
GPIO.output(IN1, GPIO.HIGH)
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.HIGH)
GPIO.output(IN4, GPIO.LOW)
pwm_a.ChangeDutyCycle(speed)
pwm_b.ChangeDutyCycle(speed)
print(f"Moving forward at speed {speed}")
def move_backward(speed):
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.HIGH)
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.HIGH)
pwm_a.ChangeDutyCycle(speed)
pwm_b.ChangeDutyCycle(speed)
print(f"Moving backward at speed {speed}")
def move_left(speed):
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.HIGH)
GPIO.output(IN3, GPIO.HIGH)
GPIO.output(IN4, GPIO.LOW)
pwm_a.ChangeDutyCycle(speed)
pwm_b.ChangeDutyCycle(speed)
print(f"Turning left at speed {speed}")
def move_right(speed):
GPIO.output(IN1, GPIO.HIGH)
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.HIGH)
pwm_a.ChangeDutyCycle(speed)
pwm_b.ChangeDutyCycle(speed)
print(f"Turning right at speed {speed}")
def stop():
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.LOW)
GPIO.output(IN3, GPIO.LOW)
GPIO.output(IN4, GPIO.LOW)
pwm_a.ChangeDutyCycle(0)
pwm_b.ChangeDutyCycle(0)
print("Stopped")
try:
speed = 50 # Начальная скорость (50% ШИМ)
print("Use W/A/S/D to move and adjust speed, release key to stop")
while True:
# Проверка нажатия клавиш для движения
if keyboard.is_pressed('w'):
move_forward(speed)
elif keyboard.is_pressed('s'):
move_backward(speed)
elif keyboard.is_pressed('a'):
move_left(speed)
elif keyboard.is_pressed('d'):
move_right(speed)
else:
# Если ни одна из клавиш не нажата, остановить моторы
stop()
# Регулировка скорости
if keyboard.is_pressed('q'): # Уменьшение скорости
speed = max(0, speed - 10)
print(f"Speed decreased to {speed}%")
time.sleep(0.1)
elif keyboard.is_pressed('e'): # Увеличение скорости
speed = min(100, speed + 10)
print(f"Speed increased to {speed}%")
time.sleep(0.1)
time.sleep(0.05) # Небольшая задержка для плавного опроса клавиш
except KeyboardInterrupt:
stop() # Остановка моторов при прерывании программы
finally:
pwm_a.stop()
pwm_b.stop()
GPIO.cleanup() # Очистка конфигурации GPIO

BIN
Деталь 1 первый уровень.STL

Binary file not shown.

BIN
Деталь 2 второй уровень.STL

Binary file not shown.

BIN
Деталь 3 третий уровень.STL

Binary file not shown.

BIN
Деталь 4 четвёртый уровень.STL

Binary file not shown.
Loading…
Cancel
Save