Instantly share code, notes, and snippets.

jamesgregson

Last active October 16, 2020 05:01
Simple & compact damped least-squares IK solver in <100 lines of python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 ''' james.gregson@gmail.com A pretty small 3D IK solver, < 100 lines of code but > 100 lines of comments. Low dependency (numpy, opencv-python, matplotlib) and includes visualization. Not particularly fast. Solves for joint rotations needed in a kinematic skeleton to minimize errors of a set of end-effectors with respect to a corresponding set of target positions. Assumes
Last active October 4, 2020 23:31
Finite difference Jacobians of numeric functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 '''Finite difference Jacobians Author: James Gregson Date: 2020-10-04 Utility function to differentiate numeric functions with finite differences. Useful for checking analytically derived Jacobian & gradient computations. See bottom of file for example usage.
Created July 10, 2020 03:11
Spatial, Fourier and matrix representations of 2D filtering operations
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 import unittest import numpy as np import scipy.sparse as sparse class Filter2D: def __init__( self, offy, offx, vals ): '''2D filtering operation with spatial, fourier and matrix features Args: - offy (integer sequence): vertical offsets of filter coefficients
Created January 4, 2020 19:05
(Over) Simplified JSONRPC in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 '''Very simplified JSON-RPC server with endpoint registration Try with: curl -X POST -H "Content-type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "say_hello", "params": {"name": "James", "age": 11}}' http://127.0.0.1:8000 curl -X POST -H "Content-type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "say_hello", "params": {"name": "James"}}' http://127.0.0.1:8000 curl -X POST -H "Content-type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "say_hello", "params": ["James", 10]}' http://127.0.0.1:8000 curl -X POST -H "Content-type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "say_hello", "params": ["James"]}' http://127.0.0.1:8000 '''
Last active March 17, 2023 22:10
Python ARAP mesh deformation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 from typing import * import time import numpy as np import scipy.sparse as sparse import scipy.sparse.linalg as spla def build_cotan_laplacian( points: np.ndarray, tris: np.ndarray ): a,b,c = (tris[:,0],tris[:,1],tris[:,2]) A = np.take( points, a, axis=1 ) B = np.take( points, b, axis=1 )
Last active October 26, 2019 23:26
Simple contract implementation with decorator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 import inspect def contract( expects=[], ensures=[] ): def func_wrapper( func ): return Contract(function=func,preconditions=expects,postconditions=ensures ) return func_wrapper class Contract: class Args:
Created October 16, 2019 04:01
Python3 http.server with basic authorization
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 import time import base64 from http.server import BaseHTTPRequestHandler, HTTPServer class MyHandler(BaseHTTPRequestHandler): def do_HEAD(self): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers()
Created September 29, 2019 20:50
Python3 Stereo MJPG streaming with opencv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 import cv2 import numpy as np from http.server import BaseHTTPRequestHandler,HTTPServer import io import socket import time capture0 = None capture1 = None
Last active September 24, 2019 14:29
Simple KDTree (3D)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters