# Using Math Equation with Jekyll

I have tried both MathJax and KaTex. It seems that MathJax works seamlessly with my current website.

## KaTex

• Xu Cheng provides a nice comparison between MathJax and KaTex . However, it is not the clear for beginners like me to configure it correctly within Jekyll.
• WillDrevo provides a more detailed instruction on how to using KaTex with Jekyll. This doesn’t work for me as well maybe because of the file structure under 1./public/  folder and nothing changes after I placed the 1.js  and 1.css  files as required.

## MathJax

The experiences on MathJax is less painful compared with KaTex. Gaston Sanchez lists every steps in adding MathJax to Jekyll but unfortunately it doesn’t work for me as well. In this end, this thread solves the problem by simply adding the following line to

 1 _layouts/default.html 
 

 1  

in the section of

 1 body 
 . And I can easily type a beautiful functions in my blog.

$\frac{Hello}{World^{2}}$

# How to run ORB-SLAM and code in-depth?

## Paper

Author: Raúl Mur-Artal and Juan D. Tardós

## How to run ORB-SLAM in Indigo

Simply remove line

 1  

from manifest.xml and still compile the package using

 1 rosmake 
 . The reason for it is because the opencv2 package doesn’t exist in ROS Indigo.

## Code in Depth

### ROS

• Extract configuration paths under package using package API

 1 ros::package::getPath("")+"/"+"" 
 

### OpenCV

• Avoid changing parameters in each compilation, using OpenCV yml parser

 1 cv::FileStorage fs(.c_str(), cv::FileStorage::READ); 
  The format of the configuration file is below:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 %YAML:1.0 # Camera Parameters. Adjust them! # Camera calibration parameters (OpenCV) Camera.fx: 609.2855 Camera.fy: 609.3422 Camera.cx: 351.4274 Camera.cy: 237.7324 # Camera distortion paremeters (OpenCV) -- Camera.k1: -0.3492 Camera.k2: 0.1363 Camera.p1: 0.0 Camera.p2: 0.0 # Camera frames per second Camera.fps: 30.0 ... ... # Constant Velocity Motion Model (0 - disabled, 1 - enabled [recommended]) UseMotionModel: 1 

and the parameters can be parsed in runtime. Another option is using parameter parser in ROS.

• How to convert 1g2o::SE3Quat /1g2o::Sim3  to Eigen matrix to 1cv::Mat 

Conversion between

 1 g2o 
  format and 1OpenCV 

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 cv::Mat Converter::toCvMat(const g2o::SE3Quat &SE3) { Eigen::Matrix eigMat = SE3.to_homogeneous_matrix(); return toCvMat(eigMat); } cv::Mat Converter::toCvMat(const Eigen::Matrix &m) { cv::Mat cvMat(3,1,CV_32F); for(int i=0;i<3;i++) cvMat.at(i)=m(i); return cvMat.clone(); } cv::Mat Converter::toCvMat(const g2o::Sim3 &Sim3) { Eigen::Matrix3d eigR = Sim3.rotation().toRotationMatrix(); Eigen::Vector3d eigt = Sim3.translation(); double s = Sim3.scale(); return toCvSE3(s*eigR,eigt); } 

To be continue …

# What Does the Name Means?

Even though as a PhD candidate who should be focused on fundamental research and theoretical contributions, myself, is more interested in technique and implementing the ideas into real codes. The word Tek-ode comes from Tek-nology and code-ing.

## What it about?

Most of the posts will be focused on some of my own experience when I developing ROS package for object recognition, pose estimation and path planning. During my work, I am also familiar with some of optimisation packages in SLAM such as Bundle Adjustment, G2O and most of the Structure-from-Motion packages. Some of related theoretical but simple posts will be here.