LanguageClient-neovim(cquery)で補完を有効にするため,colcon(ROS2)のワークスペースにcompile_commands.jsonを配置する

中小規模のpackageではvimで手軽に書きたい!! (neo)vimでC++を書く時,ROS2のような外部ライブラリはパスを設定しておかないと補完が効きません. neovim + LanguageClient-neovim (cquery) 環境では,cmake (or colcon build )の引数で CMAKE_EXPORT_COMPIL…

Gazeboで外部モデルロード時の設定

はじめに gazeboのworldにオブジェクトを追加する際,osrfのモデルレポジトリから引っ張ってきますが,初期ロード時にダウンロードしてキャッシュするため時間がかかります. そこで,予めレポジトリをローカルにcloneしてそこを指定するようにします[1]. …

KDLを使ってみました

後で追加 KDLを使ってマニピュレータのヤコビ行列を取得する際の注意点 KDL::Chainがある状態で以下の関数を呼び出すとヤコビ行列が取得できます.(便利) KDL::ChainJntToJacSolver::JntToJac(KDL::JntArray,KDL::Jacobian&); ヤコビ行列を受け取るクラスK…

XPS13 (9360) を買いました

年末セールで安かったので DellのXPS13を買いました.15%OFFクーポン使って約2万円引き. www.dell.com 家にも研究室にも程々に真っ当なデスクトップがあるのでi5, FHD, 8GB, 256GBを購入. 到着して早々にパーティション縮小してUbuntuを入れました. BIOSで…

Bundle Adjustment のためのcvsbaをROS (catkin)で使うために

はじめに SfM(Structure from Motion)とかいう単眼カメラを用いた三次元形状復元+自己位置推定手法を実装するためには, Bundle Adjustmentという多画像からパラメータ,3次元形状を推定する工程を実装する必要があるようです[1]. 自己実装は面倒なので,Op…

Atom Setup Manual

1. Atomのインストール AtomはGitGubが開発したマルチプラットフォーム (Ubuntu, Windows) テキストエディタ. 拡張機能 (Package)を入れることで様々なコードを書きやすくなる. C++, Python, Latex, markdownなど. AtomはAtom Official Page からダウンロ…

Eigen Mapの使い方

動機 最近何かと話題のROS (Robot Operating System)ですが,私も常用しています.もうやめられません. ROSではプログラムを主にC++かPythonで書きますが,私はC++ばっかり書いてます. Pythonの書き方知らないので さて,ロボット系では色々な場面で行列演…

ブログ開設

初めに 今年度からROSのためにUbuntuを使い初め,色々トラブルが発生した際の対処法を何処に書こうか迷走してました. Qiitaやローカルのmarkdownエディタで書いたりLatexで書いたりしてました. しかし,管理がメンドウになったので,今後はmarkdown記法が…

;(function(document){ var pres = document.getElementsByTagName("pre") for(var i=pres.length; i--; ){  var el = makeOl(pres[i]) pres[i].appendChild(el) } function makeOl(pre){ if (pre.className.indexOf("gist") !== -1) { return } var ol = document.createElement("ol") , li = document.createElement("li") , df = document.createDocumentFragment() , br = pre.innerHTML.match(/\n/g) || 0 ol.className = "preLine" ol.setAttribute("role", "presentation") // no lang, no line-number if( pre.className && ! /lang-./.test(pre.className) ){ br.length += 1 } for(var i=br.length; i--; ){ var li2 = li.cloneNode(true) df.appendChild(li2) } ol.appendChild(df) return ol } })(document)