ラベルライターが欲しい
そうだ、ラベルライター買おう
年末の大掃除で、電子部品とか趣味のグッズとかを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に対応している模様。
カシオ
名称 | お値段 | 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 オートメーションサーバーということでExcelのVBAからも使える模様。
以下に対応機種一覧があるが、お安いP300BTについての記載はなし。
b-PAC 動作環境 | アプリケーション開発ツールb-PAC | 開発者向け情報 | ブラザー
ということで
SDKがそもそもないカシオは除外して、キングジムかブラザーのどれかかなぁ。
ここからは本来の機能や使えるテープの種類とかかみてみて決めよう。
GR-ROSEの同人誌をつくってみたお話し
はじめに
この記事は がじぇるねGR Advent Calendar 2021 の19日目です。
「GR-ROSEの同人誌を作りましょう!」、そいって仲間をあつめたのは2019年冬、まだコロナの第一感染者が発見される前だったと思います。
2018年9月のプロデューサーミーティング、
ロボットOS(ROS2)が動く小型ボード誕生!GR-ROSE プロデューサーミーティング(説明会) 9/1(東京)、9/2(大阪) #がじぇるね #ROShttps://t.co/EAtc4fZBAK pic.twitter.com/edpTfMDXzz
— Renesas_FUN (@Renesas_FUN) 2018年7月26日
11月の発表会が終わって、手に入れたGR-ROSEでいろいろやりたい。でも、情報が圧倒的に少ない。
そのころ、既にM5Stackの同人誌を技術書典で出していた私は、ここぞとばかりに「GR-ROSEの同人誌を作りましょう」ととある人に声をかけ、川崎で一緒にビールを飲みながらその可能性について話をしました。
そして、2020年2月の技術書典8にて、技術サークル 薔薇の騎士団から同人誌「GR-ROSEで行こう!」がリリースされることとなりました。
今回は、前回の技術書典11までに4冊の同人誌を出してきたことを振り返り、どうやって同人誌を作ったかとか、その中であったあれこれをまとめていこうと思います。
なぜ同人誌?
一般的な同人誌については、Wikipedia等をみてもらうとして、
技術系の同人誌とした場合、「個人もしくは有志が、とある技術の普及や自らの成果のアピール等を目的に、自費でつくる書籍(もしくは電子書籍)」という感じでしょうか。
昨今、同人誌印刷専門業者があり、同人誌を作成する敷居は非常に低くなっていると思います。
そして、技術系同人誌の広まりを後押ししたのは技術書典の開催かと思います。
私も、技術書典3を初めて見に行ってその魅力に惹かれ、技術書典5にて初めて出展する側に参加した経緯があります。
昨今、特にIT系やデバイス系において、技術進歩の速さや多様化は凄まじいものがあります。
一般書籍は、どうしてもビジネス的な成功が必須となるため、なかなかニッチなものや賞味期限の短い(例えばバージョンアップが頻繁にあるとか、β版だとか)ものは取り上げにくい面があります。
同人誌はそのそういった内容のものでも、書き手の思いがあれば作ることができます。作成する側のエンジニアにとっては、自分の活動をアピールする手段として、成果のまとめとして形にできるという魅力があります。
また、文章という形に技術をまとめ説明するというスキルは、エンジニアにとっても必要となる技術の1つかと思います。この点に着目してか、技術同人誌の執筆に補助金を出して支援している企業さんもあります。無料で技術同人誌を作成して技術書典で配布している有名企業さんもあります。
GR-ROSEについては、現状はまさにニッチな分野であり(汗)、同人誌を作って世の中にアピールしたいという思いで、同人誌を出すことにしたのでした。
1冊目が出るまで
同人誌ができるまでにやったこととしては、
仲間集め
- 一人で書くなら不要ですが、私は基本みんなでワイワイやるのが好きなことと、一人の作業負担を軽減できる(執筆以外もいろいろやることがあるので)という面もあって、共同執筆者を探しました。
書籍作成ツール等の決定
同人誌の内容についての、方向性決めとスケジュール認識あわせ
- メンバーが集まったら、それぞれどういうことを書きたいか・書けるかを共有して、本の方向性を決めました。あとざっくりしたスケジュールを共有。印刷のための入稿締め切り日から、校正や入稿用のデータ作成に必要な日数を考慮して、原稿の締め切り目途を算出して共有します。
タイトル決め
表紙作成
執筆
校正・チェック
入稿(印刷申し込み)
技術書典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ではちょっとした壁があることに注意やね。
インストール編
基本、チュートリアルに従って進めていく。
左上のVersionでNoeticが選択されていることを確認。
チュートリアルでは、ソースから最新版をビルドする内容となっている。なので、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とかいろいろあってなんやねん!という疑問については以下のサイトが参考に。ちょっと古めの記事だが、現状も変わってないでしょう。
次に、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つが提供されていた。
これらを動かすための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
これでまずはスシが表示された。
OpenCV環境の構築
OpenCVをインストールした後にPythonに紐づけるのは手間がかかるとのことで、pipで導入。
$ pip3 install opencv-python
その後、test_opencv.pyを起動すると依存ライブラリのエラーが多数でるので、調べながら一個一個導入。
調査の中で以下の記事を見つけたのでいくつか参考にさせてもらった。
まとめるとこんな感じ
$ sudo apt install libilmbase23 libopenexr23 libavcodec-extra58 libavformat58 libswscale5 libgtk-3-0 libatlas-base-dev
test_opencv.pyの起動
起動の前にカメラを接続し、raspi-configでカメラを有効化。
その後、test_opencv.pyを起動すると、画面にキャプチャー画像が表示される。
が、
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キットの中から以下のものを選択。
こちらのルネサス(旧Intersil)のと少し悩んだのですが、スイッチが邪魔な気がしてやめました。
ソフトウェア側は…
Qtを使って出力したいと思い、Qtのクロスコンパイルをちまちま試しているところ。できればPythonから使えるようにして、アプリはいちいちクロスコンパイルしないでいいようにしたいなぁ。
Raspberry Pi ZeroでROS2をうごかす
次のステップに
マジョカアイリスのLCDをRaspberry 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からはMacやWindows、マイコンとそのターゲットを広げていることもあり、Raspberry Pi Zeroでもいけるんじゃないかという期待もあり。
Raspberry Pi ZeroでのROS2構築
とはいえ、1から環境を構築するのは大変だと思って少し検索してみたところ、既にRaspberry Pi Zero向けのクロスコンパイル環境をdockerで構築してる人を発見。
これは、GCtronicというアメリカのメカトロ系の会社が開発してる、e-puck/e-puck2というローバーロボットの拡張キットでROS2対応する際の副産物の模様。
今回はこれを使わせてもらうことにした。
クロスコンパイルの大まかな手順
クロスコンパイルの大まかな手順は以下。
Raspberry Pi Zeroに必要なパッケージを導入
docker環境の構築 gitにdockerを構築するためのDockerfileとスクリプトがあるので、cloneして実行する。Macにインストール済のDockerがあったのでそれを使って構築。
コンパイルに必要なRaspberry Pi ZeroのファイルをDocker上にもってくる rsycとsshfsの2つの方法が書いてあるが、最初sshfsを試したところpermissionエラーでうまくいかなかったので、rsycを使用。
クロスコンパイルの実行 cycloneDDSのコンパイル(というかリンク)でエラーになったので、いったんcycloneDDSを除外。fastddsは問題なくコンパイルできたので、まあいいか。 あと、Foxy向けにコンパイルすると実行時にエラーになったので、Dashingにすることで無事動作。Rasbperry Pi OS Liteはubuntuでいえば18.04なのでその関係か???
コンパイルしたものをscpでRaspberry Pi Zeroにコピー
ちなみに、コンパイル時間は2013MIDのMacbook Airで2時間くらい。
この後、Jetson Nano上にインストールしているDashing環境でdemo_node_cppのtalkerを動作させて、Raspberry Pi Zero上でros2 topic list
とros2 topic echo
で動作を確認。
いろいろはまることもあったので、詳細は後日Qiitaでまとめよう。
マジョカアイリス ハック その2
それからそれから
FFCケーブルアダプタが届いたので、ラズパイにつなぐべくQIコネクタのケーブルを22本接続。
この時点で、FFCケーブルから各ピンの疎通をテスタで確認。
テスタは 熊五郎お兄さんのDIY - YouTube でおなじみの、熊五郎お兄さんご推薦のAstroAIのもの使ってます。
事故発生
ここで事故が発生。ケーブルを接続している時にあやまって、FFCケーブルの先端部分にハンダを落としてしましました。。。あわててハンダを吸い取ったのですが、、、
端子部分がはがれてしまいました(ガックリ)。
ここであわててFFCケーブルを注文することに。aitendoでピッタリのものを注文できるのですが、結構お高い(500円くらい)です。
ので、Amazonで探してみたところ、ちょっと長いですが150mmのものが20本で1000円であったのでそれを注文することに。
ラズパイ接続、その前に
さて、ラズパイに繋ごうとなると思いますが、もう1作業が必要でした。
まずは、どう接続するかを確認。
ここの接続をみたところ、
pin1, 3, 12, 21, 22をまとめてGNDに接続
pin13, 18, 19をまとめて3.3Vに接続
pin20(LEDの電源)に6V(緑基板は12v)で電流制限抵抗いれて20mAを供給
が必要だったので、ちょこっと基板を作成。
抵抗は、50Ωの可変抵抗を入れておきました。
ドライバの設定と動作確認
Raspberry Pi Zero側のドライバは以下を使用させてもらいました。ありがたや。
Raspberry Pi Zeroで使ったイメージは、Raspberry Pi ImagerからRasbperry Pi OS Lite(32bit)を使いました。
使用したイメージのカーネルバージョン情報は以下。
$ uname -rv 5.4.83+ #1379 Mon Dec 14 13:06:05 GMT 2020
動作確認はfbtest使いました。
電源は安定化電源から6Vを入れてます。その時の安定化電源の表示は以下。
最後に
LEDに表示ができるところまでできたので、次はROSから使ってみようと思います。