View ik.py
''' | |
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 |
View jacobian_fd.py
'''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. |
View filter.py
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 |
View jsonrpc_example.py
'''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 | |
''' |
View arap.py
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 ) |
View contract.py
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: |
View server.py
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() |
View camera-server.py
import cv2 | |
import numpy as np | |
from http.server import BaseHTTPRequestHandler,HTTPServer | |
import io | |
import socket | |
import time | |
capture0 = None | |
capture1 = None |
View kd_tree.h
#ifndef __KD_TREE_HEADER_H | |
#define __KD_TREE_HEADER_H | |
#include <set> | |
#include <list> | |
#include <tuple> | |
#include <queue> | |
#include <vector> | |
#include <algorithm> |
View fsm.cpp
/*cppimport | |
<% | |
setup_pybind11(cfg) | |
%> | |
*/ | |
#include <pybind11/numpy.h> | |
#include <pybind11/pybind11.h> | |
namespace py = pybind11; | |
#include <cmath> |
NewerOlder