Open3D SLAM: A Flexible Pointcloud-based SLAM System for Education - Open3D SLAM: Гибкая образовательная система SLAM на базе Pointcloud
Основное различие между open3d_slam и другими библиотеками SLAM заключается в том, что open3d_slam был разработан таким образом, чтобы быть простым и использоваться в образовательных целях. На самом деле, open3d_slam использует только хорошо зарекомендовавшие себя алгоритмы в их базовой форме. Open3D SLAM гарантирует, что это облегчит работу новичкам. Это работает с pointclouds, не требуется никаких дополнительных данных, таких как IMU. Open3D_slam может создавать карту с нуля или локализовать на заданной карте. Данная карта также может быть дополнена новыми измерениями.
Open3D SLAM основывается на Open3D, хорошо поддерживаемой и высокопроизводительной библиотеке для обработки 3D-данных.
Документация: https://open3d-slam.readthedocs.io/en/latest/
GitHub: https://github.com/leggedrobotics/open3d_slam
Основное различие между open3d_slam и другими библиотеками SLAM заключается в том, что open3d_slam был разработан таким образом, чтобы быть простым и использоваться в образовательных целях. На самом деле, open3d_slam использует только хорошо зарекомендовавшие себя алгоритмы в их базовой форме. Open3D SLAM гарантирует, что это облегчит работу новичкам. Это работает с pointclouds, не требуется никаких дополнительных данных, таких как IMU. Open3D_slam может создавать карту с нуля или локализовать на заданной карте. Данная карта также может быть дополнена новыми измерениями.
Open3D SLAM основывается на Open3D, хорошо поддерживаемой и высокопроизводительной библиотеке для обработки 3D-данных.
Документация: https://open3d-slam.readthedocs.io/en/latest/
GitHub: https://github.com/leggedrobotics/open3d_slam
👍1🔥1 1
В 60-е годы советский физик Валентин Турчин создал Рефал — язык программирования, ориентированный на обработку символов и разработку ИИ.
Представьте, что у нас есть «рефал-функция» с одним правилом:
И если быть точнее, язык был создан в 1966–1968 годах.
Вместо последовательных инструкций, он использует правила для преобразования выражений. Рефал-функции сопоставляют образцы с выражениями, делая код компактным и понятным.
Представьте, что у нас есть «рефал-функция» с одним правилом:
Образец:add(X, Y)
Шаблон:X + Y
Если мы подадим на вход этой функцииadd(2, 3), то:
1. Образецadd(X, Y)совпадает с выражениемadd(2, 3).
2. ПеременнойXприсваивается значение2, аY— значение3.
3. В шаблонеX + Yпроисходит замена переменных, и получается2 + 3.
4. В «поле зрения» Рефал-автомата вместоadd(2, 3)появляется2 + 3.
И если быть точнее, язык был создан в 1966–1968 годах.
🔥1 1
Купит ли Qualcomm Intel?
Anonymous Poll
24%
Да, купит
24%
Да, купит, но частично (например отдел разработки десктопных процессоров)
29%
Нет, не купит
24%
50 на 50
👍2 1
SQL Workbench позволяет выполнять и тестировать SQL-запросы в браузере.
➡️https://sql-workbench.com/
#полезное
➡️https://sql-workbench.com/
#полезное
SQL Workbench
SQL Workbench - Free Online SQL Editor and Workbench | Query local & remote CSV, Parquet and JSON data
Free browser-based SQL editor powered by DuckDB. Query and visualize CSV, JSON, Parquet and Arrow files locally or from remote URLs. No installation required.
⚡1🔥1
Поделить нельзя — умножить, или Алгоритм быстрого деления по методу Ньютона-Рафсона
Все мы в школе проходили деление «столбиком» — простой алгоритм, который несложно реализовать, вот только не очень быстрый. В прошлый раз мы рассматривали, как компилятор оптимизирует деление в случаях, когда делитель известен во время компиляции, но применение его напрямую, чтоб оптимизировать деление для делителей, определяемых в run-time, невозможно: вычисление констант сдвига и умножения само по себе требует деления.
В этот раз поговорим о другом методе, сводящем деление к умножениям и битовым сдвигам, основанном на методе поиска корней функции
Все мы в школе проходили деление «столбиком» — простой алгоритм, который несложно реализовать, вот только не очень быстрый. В прошлый раз мы рассматривали, как компилятор оптимизирует деление в случаях, когда делитель известен во время компиляции, но применение его напрямую, чтоб оптимизировать деление для делителей, определяемых в run-time, невозможно: вычисление констант сдвига и умножения само по себе требует деления.
В этот раз поговорим о другом методе, сводящем деление к умножениям и битовым сдвигам, основанном на методе поиска корней функции
🔥3 1
Нашёл интересную статью, может кому то да и будет интересно.
Ассемблер для программистов на языках высокого уровня: Hello World
Обсудим основы языка и сопоставим их с конструкциями высокоуровневого программирования. Завершив прочтение этого руководства, вы сможете ориентироваться в ассемблерном коде, будете знать, где искать информацию, и даже сможете самостоятельно писать простые программы.
Ассемблер для программистов на языках высокого уровня: Hello World
Обсудим основы языка и сопоставим их с конструкциями высокоуровневого программирования. Завершив прочтение этого руководства, вы сможете ориентироваться в ассемблерном коде, будете знать, где искать информацию, и даже сможете самостоятельно писать простые программы.
⚡2❤1
#статья
Статья про создание своей C++ библиотеки с документаций и CMake готова!
Ждите публикацию!
А пока можете поставить звезды на GitHub репозиторий продукта статьи: https://github.com/alxvdev/libnumerixpp
Статья про создание своей C++ библиотеки с документаций и CMake готова!
Ждите публикацию!
А пока можете поставить звезды на GitHub репозиторий продукта статьи: https://github.com/alxvdev/libnumerixpp
🔥1 1
Дисковая и файловая подсистемы
Диски в Linux: LVMRAID - Программный RAID-массив средствами LVM (Logical Volume Management)
Диски в Linux: Перенос каталога /home на отдельный раздел/том LVM
Диски в Linux: Основы LVM - Logical Volume Management, Менеджер логических томов
Файловые системы в Linux: Квотирование в XFS
Хранение файлов в Linux: Индексные дескрипторы (inodes)
Хранение файлов в Linux: Жесткие ссылки (hard links)
Резервное сохранение в Linux: Использование утилит копирования
Резервное сохранение в Linux: Возможности жестких ссылок
Диски в Linux: LVMRAID - Программный RAID-массив средствами LVM (Logical Volume Management)
Диски в Linux: Перенос каталога /home на отдельный раздел/том LVM
Диски в Linux: Основы LVM - Logical Volume Management, Менеджер логических томов
Файловые системы в Linux: Квотирование в XFS
Хранение файлов в Linux: Индексные дескрипторы (inodes)
Хранение файлов в Linux: Жесткие ссылки (hard links)
Резервное сохранение в Linux: Использование утилит копирования
Резервное сохранение в Linux: Возможности жестких ссылок
Bython - python со скобками
Это проект, который заменяет все отступы в Python на фигурные скобки. Больше не нужно о них париться — если накосячите с табами и пробелами или перенесете кусок кода с другим стилем отступов, то ничего не сломается.
https://pypi.org/project/Bython/
Это проект, который заменяет все отступы в Python на фигурные скобки. Больше не нужно о них париться — если накосячите с табами и пробелами или перенесете кусок кода с другим стилем отступов, то ничего не сломается.
https://pypi.org/project/Bython/
👍1😁1
Перегрузка функций
C++ позволяет определять функции с одним и тем же именем, но разным набором параметров. Подобная возможность и называется function overloading. Компилятор уже сам выбирает нужный тип функции.
При этом различные версии функции могут также отличаться по возвращаемому типу. Однако компилятор при выборе ориентируется именно на кол-во параметров и их тип.
Простейший пример:
Функции могут отличаться и количеством аргументом, и их типом и так далее.
Но стоит учитывать что функция с параметрами-ссылками и обычными параметрами считаются одинаковыми. Но если в одной функции параметр является константой и ссылкой/указателем, то эти функции уже будут различаться компилятором.
C++ позволяет определять функции с одним и тем же именем, но разным набором параметров. Подобная возможность и называется function overloading. Компилятор уже сам выбирает нужный тип функции.
При этом различные версии функции могут также отличаться по возвращаемому типу. Однако компилятор при выборе ориентируется именно на кол-во параметров и их тип.
Простейший пример:
#include <iostream>
int max(int, int);
double max(double, double, double);
int main() {
int result1 = {max(1, 3)};
double result2 = {max(3.0000001, 3.000001)};
std::cout << result1 << std::endl;
std::cout << result2 << std::endl;
return 0;
}
int max(int a, int b) {
return (a >= b ? a : b);
}
double sum(double a, double b) {
return (a >= b ? a : b);
}
Функции могут отличаться и количеством аргументом, и их типом и так далее.
Но стоит учитывать что функция с параметрами-ссылками и обычными параметрами считаются одинаковыми. Но если в одной функции параметр является константой и ссылкой/указателем, то эти функции уже будут различаться компилятором.
👍1🔥1
«Ненавижу, _____, C++-массивы», или Почему про них нужно знать, но не нужно использовать в своей каждодневной работе
Встроенные массивы нужно уметь готовить, но вот вопрос: а стоит ли, если в С++ есть более безопасные альтернативы? Вопрос этот, скорее, риторический, может быть даже и философский. Оставим себе лишь надежду на то, что после этой небольшой заметки ответить на этот вопрос будет чуточку легче.
Встроенные массивы нужно уметь готовить, но вот вопрос: а стоит ли, если в С++ есть более безопасные альтернативы? Вопрос этот, скорее, риторический, может быть даже и философский. Оставим себе лишь надежду на то, что после этой небольшой заметки ответить на этот вопрос будет чуточку легче.
👍1🔥1