Skip to content

Instantly share code, notes, and snippets.

View vrbadev's full-sized avatar
🇺🇦

Vojtěch Vrba vrbadev

🇺🇦
View GitHub Profile
@vrbadev
vrbadev / evt3_to_csv.py
Last active June 25, 2024 08:55
Script for extraction of events compressed in RAW file with EVT3 format to a CSV file. This script is in pure python and does not depend on any additional packages (optionally tqdm).
# -*- coding: utf-8 -*-
"""
Created on Mon Jun 24 18:16:30 2024
@author: Vojtech Vrba (vrba.vojtech@fel.cvut.cz)
Script for extraction of events compressed in RAW file with EVT3 format to a CSV file.
References:
- https://docs.prophesee.ai/stable/data/encoding_formats/evt3.html#chapter-data-encoding-formats-evt3
"""
@vrbadev
vrbadev / rosbags_info.py
Last active June 1, 2024 17:31
A ROS-independent script which simulates the ROS command "rosbag info" functionality.
# -*- coding: utf-8 -*-
"""
Created on Sat Jun 1 17:49:53 2024
@author: Vojtech Vrba (vrba.vojtech@fel.cvut.cz)
Required extra packages: rosbags
"""
from pathlib import Path
from rosbags.highlevel import AnyReader
@vrbadev
vrbadev / sigint_lambda_handler.py
Created May 22, 2024 14:36
Python termination signal handler using a lambda and a global variable
import signal
if __name__ == "__main__":
terminated = False
signal.signal(signal.SIGINT, lambda sig, frame: globals().update(terminated=True))
while not terminated:
# do something ...
@vrbadev
vrbadev / rosbag_extractor.py
Last active May 22, 2024 14:37
ROS-less python rosbag topic extraction (using rosbags library)
from pathlib import Path
from rosbags.highlevel import AnyReader
from contextlib import nullcontext
from tqdm import tqdm
# aux function to get a list of all rosbag topic names
def rosbag_topics(bag_path):
with AnyReader([Path(bag_path)]) as reader:
return reader.topics
@vrbadev
vrbadev / get_bitstamp_ohlc_data.py
Last active May 29, 2024 18:33
Simple Python script which gathers all available Bitstamp OHLC data for selected trading pair and interval.
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 23 14:04:42 2023
@author: Vojtech Vrba (vrbavoj3@fel.cvut.cz)
Simple Python script which gathers all available Bitstamp OHLC data for selected trading pair and interval.
The data is stored in a new CSV file / only new data is appended to the end of an existing CSV file.
"""
import datetime as dt
@vrbadev
vrbadev / Debian_12_ROS_Noetic_Installation.md
Last active June 21, 2024 05:31
[TUTORIAL] How to install ROS Noetic on Debian 12 Bookworm

Tutorial: How to install ROS Noetic on Debian 12 Bookworm

This is a short tutorial on building ROS Noetic in the Debian 12 ("bookworm") fresh-install environment. There are several packages not available (yet) from the official apt repositories, which have to be either built from source or installed from older Debian 11 ("bullseye") repository DEB packages. Several packages also have to be downgraded to maintain compatibility.

Preparation

  1. Add ROS repository for older Debian 10 ("buster") to our apt sources list:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu buster main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
@vrbadev
vrbadev / debian_from_ros_pkg.md
Created May 24, 2023 08:44 — forked from awesomebytes/debian_from_ros_pkg.md
How to create a debian from a ROS package
@vrbadev
vrbadev / fpgaint.c
Last active November 14, 2022 13:43
Cyclone V HPS - Linux kernel driver for non-blocking polling of FPGA-to-HPS interrupts (f2h_irq0 and f2h_irq1) (tested with linux-socfpga v5.19)
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/of.h>
#include <linux/init.h>
#include <linux/device.h>
@vrbadev
vrbadev / flatten_iterables.py
Created December 14, 2021 18:59
Simple Python recursive function to flatten any iterable nested object to unit-depth iterable of desired type
def flatten(*parents, dtype=tuple):
# internally, lists are used because they can be easily merged and expanded
result = list()
for i in range(len(parents)):
try:
# if i-th element iterable, use recursion to flatten all its elements and merge the result with current return list
result.extend(flatten(*parents[i], dtype=list))
except TypeError:
# if not iterable, add the element to return list
result.append(parents[i])
@vrbadev
vrbadev / linear_regression.c
Created April 9, 2021 16:40
Fast 2D linear regression in pure C without math libraries
#include <stdio.h>
#include <stdint.h>
float pwr2(float x)
{
return x * x;
}
float inv_sqrt(float number)
{