Skip to content

Instantly share code, notes, and snippets.

View ibrahiminfinite's full-sized avatar

V Mohammed Ibrahim ibrahiminfinite

View GitHub Profile
root@homepc:/home/spaceros-user/demos_ws# ros2 run rviz2 rviz2
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
[INFO] [1707670806.692115351] [rviz2]: Stereo is NOT SUPPORTED
[INFO] [1707670806.692194655] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[INFO] [1707670806.833245298] [rviz2]: Stereo is NOT SUPPORTED
Warning: link 'lidar_link' material 'black' undefined.
         at line 84 in /home/spaceros-user/spaceros/src/urdfdom/urdf_parser/src/model.cpp
Warning: link 'lidar_link' material 'black' undefined.
         at line 84 in /home/spaceros-user/spaceros/src/urdfdom/urdf_parser/src/model.cpp
@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 \
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 / 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

// 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 / 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)

@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 / 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
float GetHeight(float x, float y, Terrain &terrain)
{
/*
C10----------C11
| |
| |
| |
| |
C00----------C01
*/
@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)