Skip to content

Instantly share code, notes, and snippets.

View pgorczak's full-sized avatar

Philipp Gorczak pgorczak

  • German Maritime Search and Rescue Service
  • Dortmund, Germany
View GitHub Profile
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@pgorczak
pgorczak / dragon_pointcloud.py
Created August 16, 2018 16:26
Demo for fast numpy to ROS PointCloud2 conversion. Draws a colorful Dragon Curve :)
import numpy as np
from matplotlib.cm import get_cmap
import rospy
import sensor_msgs.msg as sensor_msgs
import std_msgs.msg as std_msgs
def point_cloud(points, parent_frame):
""" Creates a point cloud message.
@pgorczak
pgorczak / imgmatrix.py
Last active March 21, 2023 16:48
Arrange images of equal dimensions in a grid, using Python and OpenCV.
#! /usr/bin/env python
import argparse
import itertools
import cv2
import numpy as np
if __name__=='__main__':
parser = argparse.ArgumentParser(
@pgorczak
pgorczak / my_logger.py
Created August 24, 2015 14:48
Custom ROS Python logger
import logging
import rospy
# Messages sent to my_logger will not be directed to stdout.
# They will show up in rqt_console with my_logger associated to the node.
logging.getLogger('my_logger').addHandler(rospy.impl.rosout.RosOutHandler())
logging.getLogger('my_logger').setLevel(logging.INFO)
@pgorczak
pgorczak / gqrx_audio_stream.py
Created October 21, 2021 15:42
Simple solution for streaming audio from Gqrx to Firefox.
""" Simple solution for streaming audio from Gqrx to Firefox.
Requires the opusenc command line tool.
This program uses the fact that Opus files can be concatenated to form a valid
stream and that Firefox can play these streams natively. The drawback is the
overhead created by repeatedly inserting containers and metadata into the
stream.
- Check https://fastapi.tiangolo.com/tutorial/ to see how to run the server.
from pydrake.symbolic import Variable
from pydrake.systems.analysis import Simulator
from pydrake.systems.controllers import PidController
from pydrake.systems.framework import BasicVector, DiagramBuilder, LeafSystem
from pydrake.systems.primitives import SymbolicVectorSystem
k = 1
s = 1
m = 1
from pydrake.symbolic import Variable
from pydrake.systems.analysis import Simulator
from pydrake.systems.controllers import PidController
from pydrake.systems.framework import DiagramBuilder
from pydrake.systems.primitives import SymbolicVectorSystem
x, xd = Variable('x'), Variable('xdot')
f = Variable('f')
state = [x, xd]
k = 1
@pgorczak
pgorczak / lte-transport-block-size.md
Last active August 2, 2019 17:45
LTE transport block size table in convenient json (Table 7.1.7.2.1-1 from 3GPP TS 36.213)

LTE transport block size

This is the lookup table linking the transport block size index (determined by modulation and coding scheme) and the number of resource blocks to an LTE transport block size. It's taken from 3GPP [TS 36.213][36.213] (Table 7.1.7.2.1-1) at version 15.0.0. Multiply a TBS by 1000 to get the max throughput in bps.

Heatmap of block sizes

@pgorczak
pgorczak / README.md
Last active March 7, 2019 14:20
Helper class for exporting video from openFrameworks.

Video export for openFrameworks

This is a small helper that uses ffmpeg to record h264 video from openFrameworks.

It starts ffmpeg in a subprocess, so ffmpeg should be available on your system. Tested on Linux but probably works on macOS too.

How to use

@pgorczak
pgorczak / get_single_msg.py
Last active February 8, 2019 13:56
Utility function that gets a single message from a ROS topic
import threading
import rospy
def get_single_msg(topic, type_, timeout=None):
""" Utility function that gets a single message from a ROS topic.
Args:
topic: ROS topic (string).