Robossembler - Открытая робототехника
570 subscribers
44 photos
8 videos
2 files
209 links
Ваш персональный фронтир в борьбе роботов за лучшее будущее для кожаных мешков. Open Source Robotics и всё такое. По вопросам сотрудничества пишите @brylev, наш сайт robossembler.org
Download Telegram
Blech - язык программирования для сверх-надёжных приложений

Подразделение Bosch Research одноимённой компании разрабатывает с 2019 года новый язык программирования, ориентированный для приложений реального времени (читай embedded-систем). По мнению авторов другие языки, решающие своими методами проблемы безопасности языка Си, такие как Ada, C ++ или Rust являются языками общего назначения, которые улучшают только определенные аспекты программирования и не снижают сложность встроенных приложений. Краеугольными камнями Blech являются его модель вычислений (MoC) и простая интеграция с C.

Компилятор написан на функциональном языке F# и генерирует чистый код C.

#embedded #blech #bosch #programming

https://www.blech-lang.org/blog/2020/05/27/the-purpose-of-blech
​​ROS Actions в rclc

Библиотека rclc теперь поддерживает интерфейс Actions и в полной мере соответствует всем возможностям ROS2, о чём на днях объявили разработчики. Релиз библиотеки уже включён в сборку ROS2 Rolling.

rclc является системообразующим элементом фреймворка microROS, предназначенного для интеграции в экосистему ROS2 устройств с ограниченными ресурсами (embedded). Теперь в микроконтроллерах можно будет запускать все типы нод, предусмотренных спецификацией ROS2 - pub/sub, services, actions.

Насколько реализация actions будет требовательна к ресурсам MCU в прикладных задачах - пока неизвестно. По моей информации, полученной от имевших опыт людей, запуск pub/sub ноды в microROS ещё пару лет назад стоил около 100 Kb RAM, что, конечно же, не очень демократично. Тем не менее, проект активно развивается и, вполне возможно, что уже ситуация изменилась. В ближайшее время мы обязательно проверим Действия в действии.

#micro-ROS #embedded #action
​​Встроим в команду программиста встраиваемых систем ;)

Затея с поиском конструктора увенчалась неожиданным для меня успехом - к команде подключились три сверх-релевантных инженера, которые подхватили важные для нас направления. Все они мотивированы не просто "работу работать", а именно пользоваться результатами своего труда - собрать себе самим намотчик, двигатель или робота. Именно так open source и должен работать и это хороший признак того, что к проекту притягиваются соответствующие люди.

Сейчас мы также остро нуждаемся в embedded-программисте.

Какие задачи решаем?

Идея Robossembler прежняя - наш робот должен собрать самого себя, а потому ему нужен классный motor control даже в условиях несовершенной аппаратной платформы (как в нашем случае с печатным двигателем). Помимо управления двигателем также пригодятся ещё ряд стандартных любого прибора вещей: загрузчики, CAN шина, запись, сохранение и извлечение параметров и т.п. Сейчас у нас естьсамый-самый базовый MVP сервопривода - как-то он работает (периферия на ходу), но ему по-прежнему требуется тюнинг по части эффективности управления.

Исходники и текущие задачи (issues) тут в гитлабе

Что ждём от товарища?

1. Опыт программирования на Си с STM32 (или другом ARM) от 1 года
2. Знание теории управления и ros2-control
3. MicroPython или Rust как доп. плюс
3. Базовые познания в физике, схемотехнике, криптографии, протоколах USB, CAN
4. Разумеется, Makefile, Bash, Linux

Писать на @brylev

#vacancy #embedded
👍7
​​Контейнеры в IoT (дождались)

С тех пор как embedded-устройствами стали называть ARMv7 штуки с Debian на борту, я уже ничему не удивляюсь. Вот, собственно, и ESP32-native контейнеры подвезли.

Опытные разработчики, за плечами которых стоит V8 (компилятор Javascript в машинный код, также известен как NodeJS) и Dart (язык для фреймворка мобильных приложений Flutter) - оба сделаны в Гугле - обособились в стартап под названием Toit, где пишут целый стек технологий, прицеленных на сегмент интернета вещей. Давайте кратко пробежимся по нему.

Итак, в основе всего стоит одноименный язык программирования для разработки микроконтроллерных приложений, дизайн которого предусматривает высокоуровневость, объектно-ориентированность, декларативность, статическую анализируемость, безопасность и сборку мусора. Типизация в языке опциональная. Для выразительности присутствуют лямбда-функции, которые, тем не менее, рекомендуется заменять на более эффективные оригинальные "блоки" (blocks). Также присутствуют встроенные управления многозадачностью и собственный пакетный менеджер (куда ж без него).

Вроде бы всё типично, но изюминкой тут являются виртуальная машина, на которой исполняется скомпилированный код, и дополнительные инструменты для прошивки устройств и массогого деплоймента. Виртуальная машина по сути и является этой системой контейнеризации, для запуска изолированных сервисов. Она оптимизирована под over-the-air прошивку устройств (привет из фронтенд-разработки), позволяет по мере добавления нового кода сразу же грузить его в микроконтроллер (например по вайфаю, без программатора и USB) и получать моментальную обратную связь. Штука, которая выполняет роль этакого микрозагрузчика, называется Jaguar и написана на Go с щепоткой Toit. Управление деплойментом реализуется с помощью проприетарной утилиты Artemis и является точкой коммерциализации проекта - доступна только демо-версия для 10 устройств.

Проекту уже более 3-ёх лет. Текущая документация оставляет приятные ощущения - изобилует большим количеством разнообразных обучающих материалов от Hello World и моргания светодиодом до HTTP файлового сервера. Строгая ориентация в позиционировании на ESP32 несколько смущает и смахивает на намеренное "обрезание крыльев" под влиянием маркетологов или спонсоров в виде производителей одноимённых чипов. Тем не менее, в подвале главной страницы сайта языка вскользь упоминается возможность запускать это дело на десктопах.

Также обращает на себя внимание тот факт, что современные языко-строители всегда строят по сути экосистему. Одного компилятора недостаточно в современном мире для жизнеспособности проекта - всегда нужны инструменты управления зависимостями, их дистрибьюции, встроенные по соседству возможности CI/CD, расширения популярных IDE. Авторы Toif явно это понимают и всё выше перечисленное у них имеется.

#embedded #iot #esp32
👍10🤯2🙏1