Skip to content

Instantly share code, notes, and snippets.

Avatar

George Hotz geohot

View GitHub Profile
@geohot
geohot / prius_kf.py
Last active Mar 9, 2021
Prius Steering Angle Kalman Filter
View prius_kf.py
%pylab inline
%load_ext autoreload
%autoreload 2
from tools.lib.route import Route
from tools.lib.logreader import LogReader
r,num = Route("ce2fbd370f78ef21|2020-11-27--16-27-28"),10
#r,num = Route("f66032c2b5aa18ac|2020-12-04--09-33-54"),30
alr = []
for n in range(num-1, num+5):
@geohot
geohot / clang_fore.diff
Created Jul 30, 2020
Add support for "fore" loops to clang
View clang_fore.diff
diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h
index 13f265223..61b0a83c6 100644
--- a/clang/include/clang/AST/Stmt.h
+++ b/clang/include/clang/AST/Stmt.h
@@ -2459,13 +2459,16 @@ class ForStmt : public Stmt {
public:
ForStmt(const ASTContext &C, Stmt *Init, Expr *Cond, VarDecl *condVar,
Expr *Inc, Stmt *Body, SourceLocation FL, SourceLocation LP,
- SourceLocation RP);
+ SourceLocation RP, bool is_fore_statement=false);
@geohot
geohot / aoc16.cc
Created Dec 16, 2019
AoC 16 Part 2, works for all offsets
View aoc16.cc
#include <vector>
int main() {
//char cdat[] = "12345678";
char cdat[] = "59791911701697178620772166487621926539855976237879300869872931303532122404711706813176657053802481833015214226705058704017099411284046473395211022546662450403964137283487707691563442026697656820695854453826690487611172860358286255850668069507687936410599520475680695180527327076479119764897119494161366645257480353063266653306023935874821274026377407051958316291995144593624792755553923648392169597897222058613725620920233283869036501950753970029182181770358827133737490530431859833065926816798051237510954742209939957376506364926219879150524606056996572743773912030397695613203835011524677640044237824961662635530619875905369208905866913334027160178";
//char cdat[] = "03036732577212944063491565474664";
int N = strlen(cdat)*10000;
int *dat = new int[N];
int *cc = new int[N+1];
for (int j = 0; j < N; j+=strlen(cdat)) {
View 00.mm
d4::pa_ax3 |- = x + x 0
d5::ax-1 |- implies
= x + x 0
implies = y + y 0 = x + x 0
d3:d4,d5:ax-mp |- implies = y + y 0 = x + x 0
3:d3:alpha_2 |- implies = y + y 0 forall x = x + x 0
d6::pa_ax3 |- = y + y 0
5:d6,3:ax-mp |- forall x = x + x 0
@geohot
geohot / widevine.sh
Created Dec 8, 2019
Install widevine on Ungoogled Chromium
View widevine.sh
#!/bin/bash -e
curl -O https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg
hdiutil attach googlechrome.dmg
SRC=/Volumes/Google\ Chrome/Google\ Chrome.app/Contents/Frameworks/Google\ Chrome\ Framework.framework/Libraries/WidevineCdm
DEST=/Applications/Chromium.app/Contents/Frameworks/Chromium\ Framework.framework/Libraries/
cp -R "$SRC" "$DEST"
hdiutil detach /Volumes/Google\ Chrome/
@geohot
geohot / pyreceive.py
Created May 24, 2018
Receiver for EON camera
View pyreceive.py
#!/usr/bin/env python
import os
import sys
import argparse
import zmq
import json
import cv2
import numpy as np
from hexdump import hexdump
import scipy.misc
@geohot
geohot / lines.py
Created May 8, 2018
Lines in homogeneous coordinates
View lines.py
# homogenous line from two points (this isn't on the internet...)
line = [0,0,0]
line[0] = (f1[1] - f2[1]) * (f1[1] * f2[0] - f1[0] * f2[1])
line[1] = (f1[0] - f2[0]) * (f1[0] * f2[1] - f1[1] * f2[0])
line[2] = (f1[0] * f2[1] - f1[1] * f2[0]) * (f1[1] * f2[0] - f1[0] * f2[1])
line = np.array(line)
# line intersection (https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection#Using_homogeneous_coordinates)
p = np.array([l1[1] * l2[2] - l2[1] * l1[2], l2[0] * l1[2] - l1[0] * l2[2], l1[0] * l2[1] - l2[0] * l1[1]])
p /= p[2]
@geohot
geohot / colorchecker.py
Created Feb 10, 2018
ColorChecker colors
View colorchecker.py
real_colors = [[115,82,68],[194,150,130],[98,122,157],[87,108,67],[133,128,177],[103,189,170],[214,126,44],[80,91,166],[193,90,99],[94,60,108],[157,188,64],[224,163,46],[56,61,150],[70,148,73],[175,54,60],[231,199,31],[187,86,149],[8,133,161],[243,243,242],[200,200,200],[160,160,160],[122,122,121],[85,85,85],[52,52,52]]
View fundamental_matrix.py
def getFundamentalMatrix(pts1, pts2):
vvec = []
for p1, p2 in zip(pts1, pts2):
vvec.append([p2[0] * p1[0], p2[0] * p1[1], p2[0], p2[1] * p1[0], p2[1] * p1[1], p2[1], p1[0], p1[1], 1])
vvec = np.array(vvec)
U, S, Vt = np.linalg.svd(vvec)
Fvl = Vt[-1]
om = Fvl.reshape(3,3)
@geohot
geohot / ransac_polyfit.py
Last active Mar 17, 2021
RANSAC polyfit. Fit polynomials with RANSAC in Python
View ransac_polyfit.py
def ransac_polyfit(x, y, order=3, n=20, k=100, t=0.1, d=100, f=0.8):
# Thanks https://en.wikipedia.org/wiki/Random_sample_consensus
# n – minimum number of data points required to fit the model
# k – maximum number of iterations allowed in the algorithm
# t – threshold value to determine when a data point fits a model
# d – number of close data points required to assert that a model fits well to data
# f – fraction of close data points required
besterr = np.inf