BEIKE blog

備忘録です

駆け出し点群プログラマー日記

2019/12/25

ブログ初!!

メリークリスマス!!人生初ブログ投稿です。聖なる夜に点群とイチャイチャしているわけですが、なかなかいい雰囲気になりません!!とりあえず、やったことを忘れないように書くことにしました。 実は忘れてしまったから書き始めたことは内緒ですからね!

( ´ー`)フゥー...

追記(2020年4月28日):新しいPCを購入して久しぶりに点群で遊ぼうと思っていたら変なエラーが出るので、なんだこれとなったが前にも遭遇したことがあるやつだったのでメモ。

pclの何かしらのパッケージをビルドするときに

/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h:99:3: warning: ‘pcl::SAC_SAMPLE_SIZE’ is deprecated: This map is deprecated and is kept only to prevent breaking existing user code. Starting from PCL 1.8.0 model sample size is a protected member of the SampleConsensusModel class [-Wdeprecated-declarations]
   SAC_SAMPLE_SIZE (sample_size_pairs, sample_size_pairs + sizeof (sample_size_pairs) / sizeof (SampleSizeModel));
   ^~~~~~~~~~~~~~~

とターミナルに表示されて何コレと思う そんなときは/usr/include/pcl-1.8/pcl/sample_consensus/model_types.hの93行目から103行目を

namespace pcl
{
  /*
  const static std::map<pcl::SacModel, unsigned int>;
  
  PCL_DEPRECATED("This map is deprecated and is kept only to prevent breaking "
                 "existing user code. Starting from PCL 1.8.0 model sample size "
                 "is a protected member of the SampleConsensusModel class")
  SAC_SAMPLE_SIZE (sample_size_pairs, sample_size_pairs + sizeof (sample_size_pairs) / sizeof (SampleSizeModel));
  */
}

のようにコメントアウトしてやる

以上

rvizで点群を表示させる

$ roslaunch realsense2_camera demo_pointcloud.launch

addタグで見たいトピックを選ぶことで表示可能(今回は自動でやってくれるが、普段は選ばないといけないらしい)

f:id:beike:20191225020358g:plain
点群表示rviz(聖夜にて)


2019/12/26

記憶が蘇った!!

昨日は誰でも簡単にできるやり方でしたが、今回ちょっと難しく、、、。というのも、これが忘れてしまった例のやつです。人間の過去の記憶というものは実にあいまいで、思い出しにくい。 (´Д`)y~スパー

f:id:beike:20191226021016p:plain
ある記事より引用
こんな事があったのですが、忘れてましたね~。はい、、、。これが分かれば、後は楽多分、、、。 PCLやったことが今までなかったのでkaraageさんが提供していたPCLのサンプルコードをとりあえず動かしてみようと思っていました。とりあえず、動いたので優勝です。

karaageさんのサンプルコード動かすよ!

$ roslaunch realsense2_camera rs_camera.launch enable_pointcloud:=true
$ rosrun pcl_ros_processing color_filter_hsv input:=/camera/depth/color/points
$ rosrun rviz rviz

addタグでby topicにてcolor_filterのpointcloud2を選択

からの

Fixed Frameをcam_linkに変更

優勝(≧∇≦)

なかなか優勝できなかった理由

  • rs_cameraではなくrs_rgbdだと思っていた

  • enable_pointcloud:=trueのオプションをつけ忘れたので/camera/depth/color/pointsのトピックを拾うことができなかったため

  • Fixed Frameをmapのままにしてた

やっとスタート地点や!物体検知できるようにコード書いていくぞー!

メリークリスマスー!

参考サイト

qiita.com

github.com


2019/12/26

携帯を取り戻した

最近本当に寒いです、移動にかかる時間ってなんとかならないんですかね?暇すぎです!携帯を受け取りに落とし物センターまで行ってきたのですが中々渡してくれませんでした。もてあそばれているか、慎重なのか、、、。 (´Д`)y~スパー

今日は平面検出やってみました。

ということで

点群平面検出

なーんか知らないけど、点群の更新が遅い、、、。かくかくしている。これはPCスペックに依存したものなのだろうか?検証する必要がありそうだ。

推奨PC~~~~~(# ゚Д゚)!

f:id:beike:20191226175337g:plain
平面検出(処理のせいかカクつく)


2019/12/28

時間ない

そろそろお正月だ~と吞気に言いたいところですが、、。課題が山ほどあります。なのにPCLについて勉強して他をほったらかしにしているなんて、何してんだー! とはいうもののなかなかPCLとはお友達になれません。早く物体検知のぷろっグラム書きたい~。書けない~。わからない~。

(´Д`)y~スパー

errorの原因

realsenseのlaunchを立ち上げていると赤文字のエラーがたくさん出てくる。logがどうたらこうたらと書いてあるのでlogがいっぱいになったのかそうかじゃあ消そうということで、消したが何も変わらず、、。調べると以下のように電流が足りないらしく、、、。どういうこっちゃ \ ( ゚Д゚)/ ヽ (´ー`)┌

f:id:beike:20191228234858p:plain
realsenseD435のissues(GitHub)を翻訳したもの

ということで、たくさんの機能を制限した。

roslaunch realsense2_camera rs_camera.launch enable_pointcloud:=true enable_infra2:=false  enable_infra1:=false  enable_gyro:=false enable_stereo:=false

なんとかerrorを出ないようにすることができた。 あー終わる気しない

( ゚Д ゚)y~スパー

参考サイト

github.com


2019/12/29

アウトレットパーク

久しぶりにショッピングに出かけました。人が多いですね。普段座ってばっかりいるので、とても疲れました。ショッピング中も目標としている点群処理ができるようになるのかばかリ考えていました。

(*´Д`)。oO

平面除去に成功

とにかく情報を集めてコードを書いて、なんとからしいところまで持ってこれました。

(´Д`)y~スパー

f:id:beike:20191230001841p:plain
平面除去前の点群デ―タ

f:id:beike:20191230001833g:plain
平面除去の処理をした点群デ―タ

物体検出的なことできそー

`∀´)Ψヶヶヶ


~追記(2020/1/4)~

publishするときにrosのメッセージ型に直すのをやっていませんでした。以下の通りにpcl→rosに変更しましょう。

sensor_msgs::PointCloud2 output;
pcl::toROSMsg(*cloud_output, output);
pub.publish(output);

使用したコード

github.com

参考サイト

githubにpushする際のoriginを変更する方法 - Qiita

blog.kaorun55.com

asobod11138.com


2019/12/30

雨の日

あと少しで年明けですね。今年の振り返りでも記事に書こうかなー。今日は雨でした。なんか憂鬱ですねー。

(´Д`)y~スパー

物体検出

f:id:beike:20191230162704p:plain
物体検出処理前の可愛いぬいぐるみとスイッチのPROコン
f:id:beike:20191230162656p:plain
物体検出

ただ平面除去しているだけなんですけどねー

(´Д`)y~スパー

seg.setDistanceThreshold(threshold); //閾値

を0.01ぐらいにしました


2019/12/31

晦日

あー、なんか一年終わった~。(まだ終わってない)

今日はずっと自宅にいたが、デザートを食べたかったのでコンビニにいったら久しぶりの知人たちに会った。元気そうだった。そろそろ成人式なんだよな~。 今年はいろんなことがあった年だった。とくにROS関係は結構やった。マイクロマウスもちょっとやった。デンソー杯なんとか、完走しなくてもいいからでたいな~。 そういえば、来年の目標立てないと!来年もいろんなことに挑戦する!

よいお年を( ´ ▽` )ノ~~~~~!

classを用いてコードを書き直した

github.com


2020/1/4

クラスタリングとTFを追加した

クラスタリングの処理と座標変換ライブラリーのTFを新たに前回のプログラミングに盛り込みました。平面除去をした際に除去しきれなかった部分と検出したい物体を分けるようにしました。TFはあまり気にしたことはなかったのですが、重要なライブラリーということをちらほらサイトで説明されていたのを見たのでやってみました。

f:id:beike:20200104145719p:plain
(左)点群生データ   (右)平面除去&クラスタリング
こんな感じになった。何度もコンパイルエラーになったりして大変だった。TFについては参考サイト欄に貼っておきます。

点群のサイズ確認方法

std::cout << cloud_output->points.size() << std::endl;

使用したコード

github.com

参考サイト

www.slideshare.net

robotry.hatenablog.com