Skip to content

Instantly share code, notes, and snippets.

View ibrahiminfinite's full-sized avatar

V Mohammed Ibrahim ibrahiminfinite

View GitHub Profile
@ibrahiminfinite
ibrahiminfinite / Cmake manual install
Created September 14, 2021 14:12
Guide for how to install specific version of cmake from source
Replace `v3.2/cmake-3.2.2.tar.gz` with version and sub version you need
```
sudo apt-get install build-essential
wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz
tar xf cmake-3.2.2.tar.gz
cd cmake-3.2.2
./configure
make
@ibrahiminfinite
ibrahiminfinite / recovery.cpp
Created November 19, 2021 05:02
Recovery Controller code
#include "hyq_cheetah/RecoveryStandController.hpp"
#include "hyq_cheetah/helpers/config.hpp"
#include <fstream>
#include <iomanip>
#include <nlohmann/json.hpp>
namespace hyq_cheetah
{
RecoveryControllerOutputData RecoveryStandController::Run(const StateEstimatorData &controllerInputData, const uint64_t &timeSinceStart, bool recover)
float GetHeight(float x, float y, Terrain &terrain)
{
/*
C10----------C11
| |
| |
| |
| |
C00----------C01
*/
@ibrahiminfinite
ibrahiminfinite / sample.py
Last active June 17, 2022 10:40
Image merge and compress
from PIL import Image
import numpy as np
from os import path, getcwd, listdir, makedirs
def merge_and_compress(image_paths, output_path, output_compression="png"):
# Load images from file
images_pil = []
cols = 0
@ibrahiminfinite
ibrahiminfinite / GSoC_Servo.md
Last active April 18, 2023 09:55
Proposal draft for GSoC 2023 - MoveIt Servo

Improved Realtime Control with MoveIt Servo [GSoC 2023]


@ibrahiminfinite
ibrahiminfinite / Servo Design .md
Last active May 12, 2023 15:07
This is a live document for the thoughts on new design of MoveIt Servo

C++ API overview

The input to servo at c++ level can be :

  1. Eigen::Vector6f (twist)
  2. Eigen::VectorXf (joint jog)
  3. Eigen::Isometry3d (pose)

The output of servo will be an Eigen::Matrix with 3 rows (position, velocity, acceleration) and num_joints columns (one for each joint)

// The parameter `angular_velocity_about_ee_frame` is used to select between the old behaviour and the proper behaviour.
const TwistCommand Servo::toPlanningFrame(const TwistCommand& command)
{
Eigen::Vector<double, 6> transformed_twist = command.velocities;
if (command.frame_id != servo_params_.planning_frame)
{
Eigen::Vector<double, 6> reordered_twist;
@ibrahiminfinite
ibrahiminfinite / GSoC_2023_report.md
Last active August 26, 2023 08:18
This document provides an overview of the improvements to MoveIt Servo as part of Google Summer of Code 2023.

Abstract


The current MoveIt Servo has enabled users to utilize reactive control. However, in its current implementation MoveIt Servo only provides a ROS interface to users. While the ROS interface is very versatile, it can also be a bottleneck for users who need harder real-time performance guarantees. There were also many aspects of the software design of the package itself that could be improved.

Project Goals

class SmoothingBaseClass
{
public:
SmoothingBaseClass();
virtual ~SmoothingBaseClass();
/**
* Initialize the smoothing algorithm
* @param node ROS node, typically used for parameter retrieval
* @param jmg typically used to retrieve vel/accel/jerk limits
@ibrahiminfinite
ibrahiminfinite / docker_ws.md
Created December 22, 2023 16:33
Docker file and run commands

The docker file is expected to be on the same folder level as the src folder in the workspace

FROM osrf/ros:humble-desktop

ENV ROS_DISTRO=humble

RUN apt-get update && apt-get install -y \
    python3-pip \
 ros-${ROS_DISTRO}-ros-gz \