PulseMake Project

The PulseMake Project aim to develop a software stack for easily controlling different function generation devices. It comprises 3 components: PulseMake, the GUI front-end; sigcon, a library for connecting to and interacting with different function generation devices; and servodrive, a device for controlling a servo.

You may ask, isn't this whole thing similar to the PulseView stack? Well, yes. But re-inventing the wheel is a common tradition in software, and it was fun.


PulseMake is a Qt-based GUI front end for controlling different function generating devices. It runs on top of the signcon library. Currently, it supports only PWM generation, but it can be easily extended for other waveforms. Users can control the output frequency and duty cycle and set limits on the pulse width as a safety measure. As its name suggests, I pulled a lot of inspiration from the PulseView project.


sigcon is a Python-based library for communicating and interfacing with different function generation devices. It exposes a simple API that clients can use to open and close device connections, and send and receive data from the devices. Currently, sigcon only supports the servodrive device, but it can be easily extended by simply adding a new Python class that adheres to the sigcon API.


As its name implies, servodrive is a device for controlling servos or any other PWM-based device. Users can change the output frequency, duty cycle, and enable or disable outputs. servodrive was designed to be ready-to-go for anyone that needs to analyze the characteristics of a servo. Instead of coding up yet another Arduino sketch, you can simply hook up a servodrive and be ready to go.


pyransac is a general random sample consensus (RANSAC) framework. For convenience, some data models (such as a straight line) are already provided. However, you are free to define your own data models to remove outliers from arbitrary data sets using arbitrary data models.


A simple C-based SBus parsing library. SBus (alternatively S.Bus, S-Bus, and other similar variants) is a communication protocol developed popularly used in radio control (RC) applications. This project was developed as part of my final project for a real-time and embedded systems course.