ラベルライターが欲しい

そうだ、ラベルライター買おう

年末の大掃除で、電子部品とか趣味のグッズとかを100均ケースを駆使して整理。

各ケースにマスキングテープで手書きでラベル付けしていくのだが、まぁ字が汚い(汗)。

これ、ラベルライターつかったら便利じゃね?と思ったのが事の発端。

機種調査

そんなに絵心があるわけではないので、コスパ優先で小型で安価なもの、スマホ操作ベースのものをセレクト。やっぱりSDKがあったらよいよね、ということでその点でも調べてみる。

キングジム

名称 お値段 SDK ハック例
テプラLite 7.5K
テプラPRO SR-MK1 1.5K -

ラベルライターといえばキングジムのテプラ。その小型ラベルライターのLite。この機種向けのSDKはなし。

この手の通信はBLEだろうなと思ったら、ハックしてる人発見。

TEPRA Lite ではじめる BLE リバースエンジニアリング / tepra-lite-ble-reverse-engineering - Speaker Deck

Androidのみになるが、テプラPRO SR-MK1が

TEPRA-Print SDKに対応している模様。

www.kingjim.co.jp

カシオ

名称 お値段 SDK ハック例
KL-SP10 7.5K -

カシオ ネームランドの、小型ラベルライター。SDKは他のもの向けにもなさそうな感じ。

ブラザー工業

名称 お値段 SDK ハック例
P-TOUCH CUBE PT-P710BT 10.8K -
P-TOUCH CUBE PT-P300BT 6.6K -

Maker向け機器もつくってて個人的には好きなメーカーさん。b-PAC SDKが公開されている。対応環境はWindows限定になるが、COM オートメーションサーバーということでExcelVBAからも使える模様。

以下に対応機種一覧があるが、お安いP300BTについての記載はなし。

b-PAC 動作環境 | アプリケーション開発ツールb-PAC | 開発者向け情報 | ブラザー

ということで

SDKがそもそもないカシオは除外して、キングジムかブラザーのどれかかなぁ。

ここからは本来の機能や使えるテープの種類とかかみてみて決めよう。

GR-ROSEの同人誌をつくってみたお話し

はじめに

この記事は がじぇるねGR Advent Calendar 2021 の19日目です。

「GR-ROSEの同人誌を作りましょう!」、そいって仲間をあつめたのは2019年冬、まだコロナの第一感染者が発見される前だったと思います。

2018年9月のプロデューサーミーティング、

11月の発表会が終わって、手に入れたGR-ROSEでいろいろやりたい。でも、情報が圧倒的に少ない。

そのころ、既にM5Stackの同人誌を技術書典で出していた私は、ここぞとばかりに「GR-ROSEの同人誌を作りましょう」ととある人に声をかけ、川崎で一緒にビールを飲みながらその可能性について話をしました。

そして、2020年2月の技術書典8にて、技術サークル 薔薇の騎士団から同人誌「GR-ROSEで行こう!」がリリースされることとなりました。

techbookfest.org

knightsofrose.booth.pm

今回は、前回の技術書典11までに4冊の同人誌を出してきたことを振り返り、どうやって同人誌を作ったかとか、その中であったあれこれをまとめていこうと思います。

なぜ同人誌?

一般的な同人誌については、Wikipedia等をみてもらうとして、

ja.wikipedia.org

技術系の同人誌とした場合、「個人もしくは有志が、とある技術の普及や自らの成果のアピール等を目的に、自費でつくる書籍(もしくは電子書籍)」という感じでしょうか。

昨今、同人誌印刷専門業者があり、同人誌を作成する敷居は非常に低くなっていると思います。

www.shippo.co.jp

そして、技術系同人誌の広まりを後押ししたのは技術書典の開催かと思います。

techbookfest.org

私も、技術書典3を初めて見に行ってその魅力に惹かれ、技術書典5にて初めて出展する側に参加した経緯があります。

昨今、特にIT系やデバイス系において、技術進歩の速さや多様化は凄まじいものがあります。

一般書籍は、どうしてもビジネス的な成功が必須となるため、なかなかニッチなものや賞味期限の短い(例えばバージョンアップが頻繁にあるとか、β版だとか)ものは取り上げにくい面があります。

同人誌はそのそういった内容のものでも、書き手の思いがあれば作ることができます。作成する側のエンジニアにとっては、自分の活動をアピールする手段として、成果のまとめとして形にできるという魅力があります。

また、文章という形に技術をまとめ説明するというスキルは、エンジニアにとっても必要となる技術の1つかと思います。この点に着目してか、技術同人誌の執筆に補助金を出して支援している企業さんもあります。無料で技術同人誌を作成して技術書典で配布している有名企業さんもあります。

GR-ROSEについては、現状はまさにニッチな分野であり(汗)、同人誌を作って世の中にアピールしたいという思いで、同人誌を出すことにしたのでした。

1冊目が出るまで

同人誌ができるまでにやったこととしては、

  • 仲間集め

    • 一人で書くなら不要ですが、私は基本みんなでワイワイやるのが好きなことと、一人の作業負担を軽減できる(執筆以外もいろいろやることがあるので)という面もあって、共同執筆者を探しました。
  • 書籍作成ツール等の決定

    • 記事を本にするためには、入稿できる形のデータを作成する必要があります。その為の書籍作成ツールを選定します。これについては、Re:VIEWを使おうとおもっていたので、ざっくりとどう使うかについて調べました。あと、MarkdownRe:VIEWで使えるように変換してくれるmd2reviewというツールもあるので、元原稿はMarkdownで作成することに決め、原稿はgithubで管理することとしました。

reviewml.org

  • 同人誌の内容についての、方向性決めとスケジュール認識あわせ

    • メンバーが集まったら、それぞれどういうことを書きたいか・書けるかを共有して、本の方向性を決めました。あとざっくりしたスケジュールを共有。印刷のための入稿締め切り日から、校正や入稿用のデータ作成に必要な日数を考慮して、原稿の締め切り目途を算出して共有します。
  • タイトル決め

  • 表紙作成

    • 表紙は同人誌の顔なので、悩みが多いです。キャラクタ作成もしたかったので、まずは描いてくれる絵師さんを探す必要がありまあした。執筆メンバーや執筆メンバーの知り合いに描ける人がいればよいのですが、残念ながらそのような知り合いはいなかったため、SKIMAというサービスを使って探しました。運がよいことに、引き受けてくれる方がいらっしゃったので、作成の意図や表紙のアイデアをSKIMAのシステムを使って伝え、作成依頼をしました。

skima.jp

  • 執筆

  • 校正・チェック

  • 入稿(印刷申し込み)

技術書典8

ちょっとずつ追記していきますm( )m

MoveIt!の現状を調べてみる(その1 インストール編)

はじめに

1年ほどMoveIt!をいじってなかったので、最新はどうなっているかをMoveIt!のチュートリアルを元にして調べていく。

Pilz Industrial Motion PlannerやMoveIt Grasps、Perception Pipelineあたりが気になるところ。

ROS2への移行が加速している状況だと思うが、MoveIt2への完全移行はまだ時間がかかりそうなイメージ。

ROS1となるとMelodicかNoeticかの選択となるが、新し目の機能についてはNoeticに入ってる感じなのでNoeticを選択。

MoveIt!についても、MelodicはVer1.0、NoeticはVer1.1とマイナーバージョンが異なる。Pythonで書かれたコードを使う場合、NoeticはPython3に移行されているので、昔Python2で作っていたものは対応が必要となる。ということで、MelodicとNoeticではちょっとした壁があることに注意やね。

インストール編

基本、チュートリアルに従って進めていく。

ros-planning.github.io

左上のVersionでNoeticが選択されていることを確認。

f:id:azuzuzu:20210530204346p:plain
Version選択

チュートリアルでは、ソースから最新版をビルドする内容となっている。なので、ROSの環境だけでなくビルド環境も入れておく。

catkinだが、実行時に

The 'osrf-pycommon>0.1.1' distribution was not found and is required by catkin-tools

のエラーが出たので、

$ sudo apt install python3-osrf-pycommon

して対応。また、チュートリアルはwstoolsを使う説明になっているので、それもインストール。

wstoolsやvcstoolsとかいろいろあってなんやねん!という疑問については以下のサイトが参考に。ちょっと古めの記事だが、現状も変わってないでしょう。

memoteki.net

次に、wstoolでのソース取得。チュートリアルサンプルソースはあとから取ってくるということで、

$ wstool remove  moveit_tutorials 

とあるが、panda_moveit_configもあとから取得しているので、この後のチュートリアルに従うなら

$ wstool remove  panda_moveit_config

も必要。このpanda_moveit_configだが、チュートリアルの内容では、

$ git clone https://github.com/ros-planning/panda_moveit_config.git -b melodic-devel

と、melodic-develを取得している。あれ?と思ってGitを見に行くも、noetic-develとかはなかったのでそのまま進める。

ビルドは問題なく完了し、以下で起動してみて動作確認。

$ roslaunch panda_moveit_config demo.launch rviz_tutorial:=true

インストール編はここまで

マジョカアイリス ハック その3

作業再開

4月の異動で引っ越し等いろいろバタバタして手をつけられてなかったマジョカアイリス ハックを再開。

ここまで、Raspberry Pi Zero(32bit版 Rasbperry Pi OS Lite)にマジョカアイリスLCD の ラズパイ用 mod ドライバ(fbtft)を導入、ROS2もインストールしてベースは整ったので、アプリ側の方をいろいろ調べてみる。

前回は動作確認はfbtestを使ったが、fbtftのサンプルプログラムをまだ動かしてなかったので、今回はそれを試す。

fbtftのサンプルプログラム

fbtftのサンプルプログラムとしてPythonで書かれたものが2つが提供されていた。

  • test_sushi.py : PIL(Python Imaging Library)を使ったスシの画像の表示
  • test_opencv.py : OpenCVを使ってカメラでキャプチャーした画像表示

これらを動かすためのPython環境を構築する。

Python環境構築

ここまででPython3は既に導入されているが、pip3が未導入だったのでインストール。

$ sudo apt install python3-pip

まずは、test_sushi.pyを動かすために、PILをpip3で導入。

$ sudo pip install pillow

それ以外にも、画像フォーマット関連で以下の2つのライブラリを導入

$ sudo apt install libopenjp2-7 libtiff5

これでまずはスシが表示された。

f:id:azuzuzu:20210523140929p:plain
スシ

OpenCV環境の構築

OpenCVをインストールした後にPythonに紐づけるのは手間がかかるとのことで、pipで導入。

$ pip3 install opencv-python

その後、test_opencv.pyを起動すると依存ライブラリのエラーが多数でるので、調べながら一個一個導入。

調査の中で以下の記事を見つけたのでいくつか参考にさせてもらった。

qiita.com

まとめるとこんな感じ

$ sudo apt install libilmbase23 libopenexr23 libavcodec-extra58 libavformat58 libswscale5 libgtk-3-0 libatlas-base-dev

test_opencv.pyの起動

起動の前にカメラを接続し、raspi-configでカメラを有効化。

その後、test_opencv.pyを起動すると、画面にキャプチャー画像が表示される。

f:id:azuzuzu:20210523141027p:plain
キャプチャ画像

が、

Traceback (most recent call last):
  File "test_opencv.py", line 61, in <module>
    cv2.imshow('frame',frame)
cv2.error: OpenCV(4.5.1) /tmp/pip-wheel-qd18ncao/opencv-python/opencv/modules/highgui/src/window_gtk.cpp:624: error: (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'

となって、プログラムが終了する。

Rasbperry Pi OS LiteはGUIのないHeadless環境なので、そりゃエラーになるね。ので、ソースコードの以下の3行をコメントアウト

#    cv2.imshow('frame',frame)
#    if cv2.waitKey(1) & 0xFF == ord('q'):
#        break

さて、次はいよいよROS2のコードを書くとしよう。

マジョカアイリス ハック その2.5

LCDの電源

ここまで、6VのLCD電源は安定化電源からとってたのですが、Raspberry Pi Zeroの電源も必要なこともあり、5VのACアダプターかモバイルバッテリーが使えるよう、5Vから6V(もしくは12V)を取れるようにする。

秋月でうってるDC/DCキットの中から以下のものを選択。

akizukidenshi.com

f:id:azuzuzu:20210228153643p:plain
モバイルバッテリーから電源をとる

こちらのルネサス(旧Intersil)のと少し悩んだのですが、スイッチが邪魔な気がしてやめました。

akizukidenshi.com

ソフトウェア側は…

Qtを使って出力したいと思い、Qtのクロスコンパイルをちまちま試しているところ。できればPythonから使えるようにして、アプリはいちいちクロスコンパイルしないでいいようにしたいなぁ。

Raspberry Pi ZeroでROS2をうごかす

次のステップに

マジョカアイリスのLCDRaspberry Pi Zeroから使うことができたので、次のステップはRaspberry Pi ZeroでROS2を動かすことにチャレンジ。

Raspberry Pi 3や4は、64bitのCPUを積んでいるので、aptでバイナリインストールができるのだけど、Raspberry Pi Zeroは旧式の32bit CPUのためその手が使えない。 普通は面倒なのとCPUのパフォーマンスの関係で、Raspberry Pi 4を使うのだけど、今回はなるべく手ごろな大きさ、お値段で実現したいこともあり、Raspberry Pi Zero上にROS2をソースからコンパイルして導入しようと思う。

ROS2からはMacWindowsマイコンとそのターゲットを広げていることもあり、Raspberry Pi Zeroでもいけるんじゃないかという期待もあり。

Raspberry Pi ZeroでのROS2構築

とはいえ、1から環境を構築するのは大変だと思って少し検索してみたところ、既にRaspberry Pi Zero向けのクロスコンパイル環境をdockerで構築してる人を発見。

github.com

これは、GCtronicというアメリカのメカトロ系の会社が開発してる、e-puck/e-puck2というローバーロボットの拡張キットでROS2対応する際の副産物の模様。

今回はこれを使わせてもらうことにした。

ロスコンパイルの大まかな手順

ロスコンパイルの大まかな手順は以下。

  1. Raspberry Pi Zeroに必要なパッケージを導入

  2. docker環境の構築  gitにdockerを構築するためのDockerfileとスクリプトがあるので、cloneして実行する。Macにインストール済のDockerがあったのでそれを使って構築。

  3. コンパイルに必要なRaspberry Pi ZeroのファイルをDocker上にもってくる  rsycとsshfsの2つの方法が書いてあるが、最初sshfsを試したところpermissionエラーでうまくいかなかったので、rsycを使用。

  4. ロスコンパイルの実行  cycloneDDSのコンパイル(というかリンク)でエラーになったので、いったんcycloneDDSを除外。fastddsは問題なくコンパイルできたので、まあいいか。  あと、Foxy向けにコンパイルすると実行時にエラーになったので、Dashingにすることで無事動作。Rasbperry Pi OS Liteはubuntuでいえば18.04なのでその関係か???

  5. コンパイルしたものをscpでRaspberry Pi Zeroにコピー

ちなみに、コンパイル時間は2013MIDのMacbook Airで2時間くらい。

この後、Jetson Nano上にインストールしているDashing環境でdemo_node_cppのtalkerを動作させて、Raspberry Pi Zero上でros2 topic listros2 topic echoで動作を確認。

いろいろはまることもあったので、詳細は後日Qiitaでまとめよう。

qiita.com

マジョカアイリス ハック その2

それからそれから

FFCケーブルアダプタが届いたので、ラズパイにつなぐべくQIコネクタのケーブルを22本接続。

f:id:azuzuzu:20210219203839p:plain
ケーブル接続

この時点で、FFCケーブルから各ピンの疎通をテスタで確認。

テスタは 熊五郎お兄さんのDIY - YouTube でおなじみの、熊五郎お兄さんご推薦のAstroAIのもの使ってます。

事故発生

ここで事故が発生。ケーブルを接続している時にあやまって、FFCケーブルの先端部分にハンダを落としてしましました。。。あわててハンダを吸い取ったのですが、、、

f:id:azuzuzu:20210219205412p:plain
剝がれてしまった・・・

端子部分がはがれてしまいました(ガックリ)。

ここであわててFFCケーブルを注文することに。aitendoでピッタリのものを注文できるのですが、結構お高い(500円くらい)です。

www.aitendo.com

ので、Amazonで探してみたところ、ちょっと長いですが150mmのものが20本で1000円であったのでそれを注文することに。

f:id:azuzuzu:20210219210952p:plain
サイズ比較

ラズパイ接続、その前に

さて、ラズパイに繋ごうとなると思いますが、もう1作業が必要でした。

まずは、どう接続するかを確認。

qiita.com

ここの接続をみたところ、

  • pin1, 3, 12, 21, 22をまとめてGNDに接続

  • pin13, 18, 19をまとめて3.3Vに接続

  • pin20(LEDの電源)に6V(緑基板は12v)で電流制限抵抗いれて20mAを供給

が必要だったので、ちょこっと基板を作成。

f:id:azuzuzu:20210219212444p:plain
電源用基板

抵抗は、50Ωの可変抵抗を入れておきました。

f:id:azuzuzu:20210219213342p:plain
配線完了

ドライバの設定と動作確認

Raspberry Pi Zero側のドライバは以下を使用させてもらいました。ありがたや。

github.com

Raspberry Pi Zeroで使ったイメージは、Raspberry Pi ImagerからRasbperry Pi OS Lite(32bit)を使いました。

f:id:azuzuzu:20210219215758p:plain
Raspberry Piのイメージ

使用したイメージのカーネルバージョン情報は以下。

$ uname -rv
5.4.83+ #1379 Mon Dec 14 13:06:05 GMT 2020

動作確認はfbtest使いました。

youtu.be

電源は安定化電源から6Vを入れてます。その時の安定化電源の表示は以下。

f:id:azuzuzu:20210219215118p:plain
安定化電源の表示

最後に

LEDに表示ができるところまでできたので、次はROSから使ってみようと思います。