OpenNH

日常のひとこま(自分用のメモとかあれこれ)

ROS2環境のセットアップ (Ubuntu18.04)

目次

  • 目次
  • はじめに
  • ロケールのセットアップ
  • パッケージリポジトリをaptソースリストに追加
  • ROS2パッケージのインストール
  • 環境変数の設定
  • 動作確認

はじめに

今更ではあるけど、Ubuntu環境がぶっ壊れて再度ROS2の環境構築することがあったのでメモしておこうと思って書いたものです。あまり信用しないでください。
それにしても、マウス・キーボードどちらも受け付けられなくなってあれはどう対処すればよかったのだろうか…OSから再インストールしたけど他に方法があった気がしてならない。

なにはともあれUbuntu18.04で、ROS2 (Dashing Diademata)の環境構築メモです。

あと、ROS1がすでにインストールされている環境の場合は、ROS1を無効化してからROS2の環境構築してください。

続きを読む

Python3でROS2を初める(Ubuntu18.04LTS)

目次

  • 目次
  • はじめに
  • 環境構成
  • ROS2パッケージの生成
  • package.xmlの記述
  • setup.pyの記述
  • トピックの実装
    • publisher.py
    • subscriber.py
  • ビルドと実行
    • colcon build
    • 実行
  • 参考


はじめに


ROS2にはPython3用のクライアントライブラリ「rclpy」が提供されています。 そこでこの記事では、rclpyを使った基本的なpublisher/subscriberのROS2パッケージ作成方法について簡単に紹介します。
書き方が正しくない可能性がありますので、ご指摘はコメント欄にお願いします。

環境構成

colcon_ws
 ├── buld
 ├── install
 ├── log
 └── src
     └── <package1>
     └── <package2>
      ...


ROS2パッケージの生成


ros2 pkg createコマンドでROS2パッケージの雛形を生成します。今回はrclpyを利用するので、--build-typeでament_pythonを指定します。 なお、C++のROS2パッケージを生成する場合は、ament_cmakeとします。

$ cd ~/colcon_ws/src
$ ros2 pkg create --build-type ament_python py_hello_ros2

ここで、「py_hello_ros2」はパッケージ名であり任意に設定してください。

上記コマンドでパッケージを生成すると、以下のような構成となっているはずです。 ROS2のPython3パッケージではCMakeLists.txtは必要なく、package.xmlとsetup.pyだけでよくなりました。

$ cd py_hello_ros2
$ tree
.
├── package.xml
├── py_hello_ros2
│   └── __init__.py
├── resource
│   └── py_hello_ros2
├── setup.cfg
├── setup.py
└── test
    ├── test_copyright.py
    ├── test_flake8.py
    └── test_pep257.py
続きを読む

Markdownで文書作成するメリットと書き方

目次

  • 目次
  • Markdownのメリット・デメリット
    • メリット
    • デメリット
    • エクセル、ワードとの比較
  • エディタ環境
  • Markdownの書き方
  • ダイアグラムの記述方法
  • その他
    • csvファイルから表の作成
    • ヘッダー・フッターの記述
    • word形式に出力
    • 参考

Markdownのメリット・デメリット


ワードやエクセルにもいいところがありますが、複数人で同じファイルを管理したり、仕様書などのようにバージョン管理されている文書に関してはMarkdownを用いることが有効だと思っています。そこで、筆者が自分なりにメリット・デメリットをまとめてみました。この記事も、Markdownによって記述されています。

メリット

  • テキストなので軽い
  • Git等でバージョン管理が行える
  • 変更履歴を差分として残すことができる
  • シーケンス図などが簡単にきれいに記述できる
  • 見た目がきれい
  • html, pdf, docxファイルなど他形式への変換が可能
  • 環境に依存しない(Officeが無くても使える)

デメリット

  • 表の作成がしにくい  → エクセルで作成し読み込める
  • 書き方を覚える必要がある → 一度覚えてしまえば効率的。比較的覚えやすい
  • 作成結果をいちいち確認する必要がある → VScode,Atomを利用すれば書きながらプレビュー可能

エクセル、ワードとの比較

シーン                                エクセル, ワードの仕様書 マークダウン仕様書
変更管理 変更管理ページを設け記載するため、変更記録に抜け漏れが発生する。わざわざ修正箇所を赤字にしている。 バージョン管理ツールにログとして残るため明確
差分        とれるツールもあるが使い勝手が悪い Git diffで変更箇所が明確
修正点の指摘        指摘リストのエクセルなどを作り、担当が修正し、再度確認を行っている。 GitHubを利用すればプルリクエストで第三者も容易に修正提案ができ、マージを終了した時点で修正が完了し、再度確認をする必要もない。
仕様書参照        技術的には可能(ハイパーリンク機能)だが運用されていないため、毎回文書を開き直し、該当箇所を探している 相互にリンクを貼ることが当たり前になっていて、問題の箇所がすぐに見られる
表作成        エクセルが使いやすい エクセルには勝てないが、エクセルの表から変換可能。cvsファイルも読み込み可能。

(*コチラのサイトを参考にさせてもらいました)



エディタ環境

筆者はVScodeを利用しています。

Markdownに関するプラグインは以下の6こを入れています。

詳しくはコチラを参照してください。 oratio.hatenablog.com

続きを読む

tensorflow2.0 c++ apiをcmakeで利用する(Ubuntu18.04)

1. 目次

  • 1. 目次
  • 2. はじめに
  • 3. 環境
  • 4. bazel version 0.26.1 のインストール
  • 5. tensorflow 2.0.0 をソースからビルド
  • 6. パスを通していく
    • 6.1. 共有ライブラリのコピー
    • 6.2. ヘッダファイルの抽出
    • 6.3. FindTensorflow.cmakeの作成
  • 7. サンプルをcmakeで動かす
    • 7.1. モデルのダウンロード
    • 7.2. 下準備
    • 7.3. サンプルの実行


2. はじめに

tensorflowをpythonで利用するのは情報もたくさんあるしpipで簡単に導入できるのに、C++で利用したいとなったときに全然まとまった記事がなかったので苦労しました。知識ある人はササッとできてしまうのかもしれませんが、私みたいな素人がtensorflow c++ apiを導入しようとすると一苦労です。というか実際なかなかうまく入らずめちゃ大変でした。

Ubuntu18.04でtensorflow2.0 c++ apiを導入するためのメモを残しておきます。
新たにtensorflowをc++で利用したいって人の助けになればと思います。


3. 環境

OS Ubuntu 18.04
GPU Geforce GTX 960
CUDA ver.10.2
cuDNN ver.7.6
bazel ver. 0.26.1
tensorflow ver. 2.0.0


続きを読む

Redmineからslackにメンション通知する機能追加してみた

1. 目次

  • 1. 目次
  • 2. はじめに
  • 3. 対応できていること
    • 3.1. 注意点
  • 4. redmine-slackプラグインのインストール
    • 4.1. インストール方法
    • 4.2. Redmine起動でエラーが出た場合
      • 4.2.1. エラー内容の確認
      • 4.2.2. 解決方法
  • 5. メンション拡張機能の追加
    • 5.1. Slack APIトークンの取得
    • 5.2. Gemのインストール
    • 5.3. ソースの修正
  • 6. おわりに
    • 6.1. 参考記事


2. はじめに

Redmineからslackへの通知をしてくれる便利なプラグイン、”redmine-slack”の機能を拡張してみました。

@sciyoshiさんによって提供されているプラグインはとても便利です。ですが、基本的にslackはチームで利用しているので、誰あてのチケット通知なのかわからないと全通知を見なくはならなくなります。それは、めんどくさいし時間のむだ。

つまり、Redmineで作成したチケットの担当者にメンションで通知ができたらもっと便利になる!
ということでソースを修正してみました。


3. 対応できていること

* 以下にでてくる<#channel>は利用者がredmineの通知を登録しているslackのチャンネルのことです。

  • チケット作成通知

    • 担当者がいる場合、担当者に対してメンション付きで<#channel>に通知
    • 担当者がいない場合、メンションなしで<#channel>に通知
  • チケット更新通知

    • 担当者と更新者が異なる場合、担当者に対してメンション付きで<#channel>に通知
    • 担当者と更新者が同一の場合、メンションなしで<#channel>に通知
  • wiki作成・更新通知

    • 作成および更新時に、メンションなしで<#channel>に通知

イメージとしては、以下の感じです。

f:id:FounderLeis:20200106202226p:plain

3.1. 注意点

  • slackのユーザー名(フルネーム)とredmineのユーザー名(ログインID)を統一して利用してください。
    例)
    • slack user ID : asuka.saito
    • redmine login ID : asuka.saito

理由としては、redmineのユーザー名(ログインID)を利用して、slackのユーザー名(フルネーム)に紐づくslackのユーザーIDを取得しているためです。


続きを読む

Ubuntu18.04でのメインエディタをVSCodeに変えてみた

1. 目次

  • 1. 目次
  • 2. はじめに
  • 3. VScodeのインストール
  • 4. VScodeのアンインストール
  • 5. 追加した拡張機能
  • 6. ローカルファイルから拡張機能の追加
  • 7. 参考サイト

徹底解説Visual Studio Code

徹底解説Visual Studio Code


2. はじめに

Atomを使ってきたけど、markdownからhtmlに変換がうまくできなかったり、コードを書く際に予測補完が微妙に使いづらい部分があったのでメインのエディタを変えようと思い、VScodeを導入してみました。VScodeのインストールから追加した拡張機能などをメモとして残しておきます。

環境: Ubuntu18.04


3. VScodeのインストール

VScode (Visual Studio Code) は、マイクロソフトにより開発されたソースコードエディタで、WindowsLinuxmacOS上で動作します。これまで利用してきたAtom同様、拡張機能を追加することで使いやすくカスタマイズすることができます。ちょっと使ってみてAtomより全然使いやすいですね〜。

まず、下記リンクからUbuntu用の.debファイルをダウンロードします。

ダウンロード先(default):
~/Download/code_1.41.1-1576681836_amd64.deb

ターミナルからaptでインストール

$ cd ~/Download

$ sudo apt install ./code_1.41.1-1576681836_amd64.deb

# インストールできたか確認
$ code --version
1.41.1
26076a4de974ead31f97692a0d32f90d735645c0
x64
続きを読む

WSLでapt upgradeやapt installでエラーが出た場合の対処

目次

はじめに

WSL(Windows Subsystem for Linux)でUbuntu 18.04 LTSを利用しているのですが、apt upgradeやapt install ~を実行する際に、”apt --fix-broken install”と表示されるエラーに悩まされました。

Ubuntuにおいて、
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install ~
は、息をするのと同じくらいよく使われるコマンドだと思います。しかし、WSLで利用しているとエラーが生じることがよくあるようで、質問サイトなどでもよく見かけました。

その対処方法を紹介します。

エラーの内容

例えば 'sudo apt upgrade' コマンドにおいて、

$ sudo apt upgrade  
---(略)---  
You might want to run 'apt --fix-broken install' to correct these.  
---(略)---  

と出た場合、素直に'apt --fix-broken install'コマンドを打ちます。しかし、またエラーが出て実行できないかと思います。

$ sudo apt --fix-broken install  
---(略)---  
Errors were encountered while processing:  
   /%何らかのパス%/'filename'.deb

とエラーが出た場合の対処になります。

”apt --fix-broken install”でのエラー

上述した'apt --fix-broken install'でエラーがでた.debファイルを"sudo dpkg --force-all -i ~"で強制的に無視することで対処することができました。そして、再度"sudo apt upgrade"を実行するとアップグレードが完了するはずです。

$ sudo dpkg --force-all -i /%何らかのパス%/'filename'.deb

$ sudo apt upgrade

$ sudo apt update # 確認のため
---(略)---  
All packages are up to date.

最後に"apt update”を実行して”All packages are up to date.”と表示されれば問題なくすべて更新されています。