техно-свалка
467 subscribers
71 photos
22 videos
2 files
60 links
Склад AI и техно-экспериментов, robotics и случайных мыслей.
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 Adeept Tank поехал. Часть 3 — манипулятор и движение

Робот собран, запущен и слушается команд. Сегодня разбираем, как устроена рука и как заставить его ехать.
🦾 Манипулятор: 4 сервопривода на одной микросхеме

Все серво висят на плате PCA9685 (адрес 0x5f на шине I2C). У каждого сустава свой канал:

0 — плечо, поднимает всю руку
1 — локоть, сгибает посередине
2 — запястье, поворот кисти
3 — захват, клешня
4 — наклон камеры

⚙️ Как задаётся угол
Серво управляется не напряжением, а шириной импульса при частоте 50 Гц:

500 мкс → 0°
1450 мкс → 90° (центр)
2400 мкс → 180°

Нейтральные положения прописаны в переменных init_pwm0…7 — при старте робот разгоняет туда все серво.

🚗 Движение
Гусеницы крутят два мотора — M1 и M2.

📹 Камера и веб-управление

Софт Adeept стартует автоматически при включении. Веб-интерфейс на порту 5000: живое видео с камеры, кнопки движения и манипулятора, телеметрия.
#robotics
133👍32🔥16👏4😍2💯2🥰1
🚗 Два мотора, которые работают наоборот
У моего робота два типа двигателей, и они устроены по противоположным принципам. Пока разбиралась — залипла. Рассказываю.
Почему гусеницы, а не колёса
Гусеница распределяет вес по всей своей длине, а не по четырём точкам. Отсюда:
— переезжает пороги
— разворачивается на месте
Как танк поворачивает без руля
У робота нет рулевого механизма вообще. Поворот делается разницей скоростей двух гусениц:
Обе вперёд → едет прямо
Левая вперёд, правая назад → крутится на месте вокруг своей оси
Левая быстрее правой → плавная дуга
Два мотора — две философии
🔵 DC-мотор с редуктором (крутит гусеницы)
Вращается бесконечно. Управляешь скоростью и направлением.
🟢 Сервопривод (двигает руку)
Крутится только в диапазоне 0–180°. Управляешь углом, а не скоростью.
Самое красивое: командует ими один чип
И моторами, и сервоприводами рулит один PCA9685 — через ШИМ, импульсами. Но смысл импульса разный:
для серво ширина импульса = угол
для мотора ширина импульса = скорость
#robotics
25🤝21🔥20🥰5👌5👀5👍1
«Школа 21» переходит с C на Python и AI

Побывала на дне открытых дверей «Школы 21».

В этом году стартовую программу обновляют: вместо привычного входа через C участники начнут с Python и будут использовать AI-инструменты уже во время «бассейна».

За 12 дней нужно освоить основы, поработать в команде и собрать цифровой продукт. Лекций по-прежнему нет: обучение строится на практике и peer-to-peer.

Главное изменение — AI становится не подсказкой, а полноценным рабочим инструментом разработчика.

@school21sber @sberbank

#Школа21 #Сбер #Python #AI #Программирование #ITобразование
1🔥14👍13👏109
🧠 Локальный ИИ в 2026: что запускать на своём компьютере
Свой AI-ассистент без облака, подписок и слежки — реально уже сегодня. Из чего он состоит и что брать под вашу видеокарту.
Локальный ассистент = 3 части:
🔧 Движок — запускает модель (сам файл модели не работает, как mp3 без плеера)
🧠 Модель — отвечает, анализирует, пишет код
🖐 Агент — даёт модели доступ к файлам, IDE и терминалу

⚙️ Движки 
• Ollama — простой старт, локальный API для агентов
• LM Studio — запуск моделей через GUI
• llama.cpp — полный контроль над памятью
• vLLM — серверный inference для команд

🤖 Модели по видеопамяти 
6–8 ГБ → Qwen3 4B / 8B — чат, тексты, простой код 
12–16 ГБ → Qwen3 14B (универсал), DeepSeek-R1-Distill-14B (reasoning) 
24 ГБ → Qwen3-Coder-30B-A3B (код), Qwen3.6-27B (универсал) 
32 ГБ+ → Qwen3.6-35B-A3B; крупные DeepSeek V3/V4, Llama 4 — уже серверные

🔌 Через что работать 
• Cline — coding-агент в VS Code
• OpenCode — агент для терминала и IDE
• Aider — правки через Git и diff
• Open WebUI — локальный чат в стиле ChatGPT

🚀 Готовые связки 
• Ноут/слабая GPU → Ollama + Qwen3 4B/8B
• 12–16 ГБ → Ollama + Qwen3 14B + Open WebUI
• Код на 24 ГБ → Ollama + Qwen3-Coder-30B-A3B + Cline
• Универсал на 24 ГБ → Ollama + Qwen3.6-27B + Open WebUI

💡 Главное правило: 
берите не самую «умную» модель, а самую большую, что влезает в видеокарту целиком. Что свисает на CPU — тормозит адски. И помните: размер файла ≠ потребление VRAM (память ест ещё контекст и KV-cache).
3 козыря локали: 🔒 данные не уходят на сторону · ✈️ офлайн · 💸 ноль подписок

💸 Нет мощной GPU? Арендуй по часам 
Тот же стек можно гонять на арендованной карте. Бюджетный вариант — Vast.ai: для Qwen3-Coder 30B ищите инстанс с RTX 3090/4090/5090 или проф-картой 24+ ГБ. ⚠️ Это уже не локальный запуск — модель на чужом сервере. Не грузите приватные документы, ключи и закрытый код без шифрования и проверки хоста.
🔗 https://cloud.vast.ai/?ref_id=626108 
Подробнее в статье на vc.ru
#AI #нейросети #ollama #localllm #разработка #технологии
1👍3521🔥206😍1
Валентин Малых пишет, что ИИ-агенты начинают отрезать рекламодателей от пользователей. Но меняется не только реклама — меняется вся цепочка продвижения.

Теперь бренд борется не только за клик из поиска, но и за попадание в ответ Алисы AI, ChatGPT или Gemini.

GEO — Generative Engine Optimization — оптимизация бренда под упоминания, цитирование и рекомендации в генеративной выдаче.

Например, Алиса AI формирует ответы на основе результатов поиска Яндекса: выбирает страницы, извлекает факты и показывает ссылки на источники.
В русскоязычной выдаче это могут быть vc.ru, Хабр, Дзен, маркетплейсы, Карты и профильные медиа.

Изменение уже измеряется:
— при появлении AI-ответа переходы на обычную выдачу Google снижаются с 15% до 8%;
— по ссылкам внутри AI-ответа переходят примерно в 1% случаев;
— с быстрыми ответами Алисы AI ежемесячно взаимодействуют 48,3 млн человек;
— Яндекс уже показывает в Вебмастере Share of Voice — долю запросов, в которых Алиса упоминает сайт.

Было:
запрос → поисковая выдача → сайт → реклама → покупка.
Становится:
запрос → ответ ИИ → несколько вариантов → рекомендация → покупка.
SEO не исчезает, но поверх него появляются:
AEO — оптимизация под прямые ответы;
GEO — оптимизация под генеративную выдачу.

Подробнее о GEO и способах попадания в ответы ИИ:
https://telegra.ph/II-menyaet-reklamu-kak-brendam-popadat-v-otvety-Alisy-AI-ChatGPT-i-Gemini-07-28
#ai #geo @valuableai
129🔥18💯16👍8😍2
Из чего состоит нейросеть
Нейросеть — это слои, преобразующие данные.
Пример на Keras:
model = keras.Sequential([ keras.layers.Input(shape=(784,)), keras.layers.Dense(128, activation="relu"), keras.layers.Dropout(0.2), keras.layers.Dense(10, activation="softmax") ])

Input задаёт формат входа: изображение 28 × 28 превращается в 784 числа.
Dense связывает каждый нейрон со всеми нейронами прошлого слоя и ищет признаки.
ReLU обнуляет отрицательные значения: max(0, x). Без неё сеть линейна.
Dropout случайно отключает часть нейронов при обучении и снижает переобучение.
Softmax превращает выходы в вероятности: кошка — 0,81; собака — 0,14; лиса — 0,05.
Другие слои:
Conv2D — изображения
LSTM/GRU — последовательности
Embedding — токены в векторы
Normalization — стабилизация
Attention — выбор важного
Архитектуру задаёт разработчик, модель обучает веса.
данные → слои → результат
Подробнее:
https://telegra.ph/Kakie-eshchyo-byvayut-nejroseti-07-29
1👍2522🔥18🙏4
MNIST: как нейросеть распознаёт рукописные цифры

В прошлом посте разбирали, из каких слоёв состоит нейросеть. Теперь соберём рабочий пример на MNIST.

MNIST — классический учебный датасет из 70 000 изображений рукописных цифр от 0 до 9:
— 60 000 изображений для обучения
— 10 000 для проверки
— размер каждой картинки — 28 × 28 пикселей

Загружаем данные:
from tensorflow import keras from tensorflow.keras import layers import numpy as np

(x_train, y_train), (x_test, y_test) = ( keras.datasets.mnist.load_data() )
В x_train находятся изображения, а в y_train — правильные ответы.

Например:

print(x_train.shape)
# (60000, 28, 28)

print(y_train[0])
# 5


Для нейросети картинка — это таблица чисел от 0 до 255. Нормализуем значения до диапазона от 0 до 1:

x_train = x_train.astype("float32") / 255
x_test = x_test.astype("float32") / 255


Затем превращаем каждое изображение 28 × 28 в массив из 784 чисел:

x_train = x_train.reshape(-1, 784)
x_test = x_test.reshape(-1, 784)


Теперь собираем модель:

model = keras.Sequential([
    layers.Input(shape=(784,)),
    layers.Dense(128, activation="relu"),
    layers.Dropout(0.2),
    layers.Dense(10, activation="softmax")
])



Настраиваем обучение:

model.compile(
optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"]
)


Запускаем обучение:
model.fit( x_train, y_train, epochs=3, batch_size=32, validation_split=0.1 )


Проверяем модель на данных, которые она не видела во время обучения:

test_loss, test_accuracy = model.evaluate(
x_test,
y_test
)

print("Точность:", test_accuracy)
Получаем предсказание для одной картинки:

image = x_test[0:1]

probabilities = model.predict(image)
predicted_digit = np.argmax(probabilities)

print("Вероятности:", probabilities[0])
print("Ответ модели:", predicted_digit)
print("Правильный ответ:", y_test[0])
130👍23🔥15😍2
Квантизация моделей: что означают Q8 и Q4
Внутри нейросети хранятся миллиарды чисел — весов. Они определяют, какие связи модель считает важными.Обычно веса записываются с точностью 16 бит. Но для локального запуска модель можно сжать:
Q8 — примерно 8 бит на вес.
Q4 — примерно 4 бита на вес.

Чем меньше бит, тем меньше памяти занимает модель. Но вместе с размером снижается и точность хранения чисел. Для каждой группы рассчитывают общий коэффициент масштаба — scale.
Например, есть веса:
−1,20 | −0,30 | 0,40 | 1,10

Самое большое значение по модулю — 1,20. Делим его на 7:
scale = 1,20 / 7 ≈ 0,171

Теперь исходные веса заменяются компактными кодами:
−1,20 → −7

−0,30 → −2
0,40 → 2
1,10 → 6
В памяти хранятся эти коды и один общий scale.
Во время работы модель умножает коды на коэффициент и получает приблизительные веса:
−1,20 | −0,34 | 0,34 | 1,03`

Они немного отличаются от исходных, но не сильно.Архитектура модели не меняется. Меняется только способ хранения весов.
В итоге, Q4 меньше FP16 в 3–4 по памяти.
#нейросети
1🔥21👀15👍13