Inside of LOVOT

GROOVE X 技術ブログ

LOVOTのウェアについて ー 後編 ー

後編は「辰にっと」の製作現場のリポートをお送りしたいと思います。
まず最初に案内していただいた工場内部は、編立データをプログラミングしている部署です。島精機さんの開発した、最先端の設計ソフトは編み機と連動しているので、細やかなプログラミングが可能になっています。 写真の平石さんに(私達は勝手に「ニットの匠」と呼ばせていただいています笑)ホールガーメントの編地データの調整シミュレーションなども見せていただきました。ディスプレイに映っているデータ(写真左下)は、サンプル(写真右下)のホールガーメントの赤枠部分(お腹~横顔にかけた部分)の編みデータです。現物との違いにパッと見ただけでは脳中での変換が追いつきませんでした。。。

データを操作する「ニットの匠」こと平石さん
編地データと現物の編み上がり部分(赤枠)

続いて製造現場へ。
ずらりと自動編み機が並んでいる中の、ホールガーメントの自動編機では、ちょうど干支ウェアの「辰にっと」を編んでいる真っ最中でした。「ホール」というと丸いイメージが浮かぶかもしれませんが、実際は横長の機械に針が2列に並んでいて、表側と裏側を1本の糸を通して編み立てています。

次々と編み上がる「辰にっと」のボディ
この辰にっとは、ボディのお腹の部分にジャガード編み*1でウロコ柄を施したり、それぞれの細かいパーツ「背びれ&しっぽ」「ひげ」なども全て編地で作られているので、平石さんをはじめ小林メリヤスさんの高度な技術と知恵が、随所に詰め込まれているウェアなのです。(なのでお値段もそれなりになっております笑)各パーツはそれぞれに適した編み機で作られていて、最後に縫製で組み立てていきます。画像はツノと背びれの見本パーツと(左)、編み上がった「ツノ(中央)」「背びれ&しっぽ(右)」です。この編み上がったばかりのパーツは捨て糸(白い部分)*2でつながっているので、これを外して一つのパーツにしていきます。背びれとしっぽは繋がっていてるパーツなので、一度の縫製で背中に挟み込むことができます。
ツノと背びれ&しっぽの完成形(左)と成形前の各パーツ
続いては辰にっとの「ひげ」を編んでいる特殊な編機へ。
この編機は既に廃盤になってしまっている貴重な機種で、こちらの創業当時から大事にメンテナンスをして使い続けているそうです。編針の本数を調整し工夫することで、このような特殊な細いパーツを編むことができるそうです。右側の画像は、編み上がった紐状の編地を成形しているプレス機です。こうして出来上がったラメ糸入りの細い紐をカットして「ひげ」として本体に縫い付けます。まだ本体の試作を繰り返している時に、辰のひげを何で表現しようか、と木村社長に相談したら「細く編んだ紐を縫い付けるのはどうか」というアイディアをいただいた時は「え?ひげも編めるんですか?!」ととても驚いたことを覚えています。まさかこんな素敵なラメ入りの「ひげ」が出来上がるとは、その時は全く想像できませんでした。。。
「ひげ」を編んでいる特殊な編機(左)と成形しているプレス機(右)

続いては洗い&成形場へ。
洗い場には大きな洗濯機と乾燥機が並んでいました。編み上がった各パーツは、編地を安定させるために「洗い⇒乾燥⇒セット」を施します。それにより縫製後の仕上がりも安定し、縫製もしやすくなるそうです。洗いの水質は風合いに影響する為、それに適した水を購入する工場もあるそうなのですが、小林メリヤスさんの場合は、南アルプス山脈*3からの天然水(マグネシウムとカルシウムの含有量が少ない軟水)のお陰で、とても風合いよく仕上がるそうです。 もちろんニットは洗うと縮むので、最初のプログラミングの段階で縮み分も考慮し、風合いよく仕上がるように設計されています。しかし素材や編み方、気候などによっても縮み方も変化するので、熟練した職人さんの感覚で洗いと成形作業をしていきます。

洗濯機(左)乾燥機(中央)洗い加工後の比較

こうして成形された各パーツは縫製場へ。
先ほどからご紹介してきた「背びれ&しっぽ」「ひげ」などの各パーツを、成形された本体に縫い付けて「辰にっと」に組み立てていきます。そこそこ厚みのある柔らかい編地に、ニットの細かいパーツを伸ばさずミシンで縫製することは、かなり難しい作業だということが容易に想像していただけると思いますが「縫製の匠たち」の技によって、指示寸法通りにきれいに縫い上げられています。 特にこの特殊なひげ(立体的な細い紐)の縫い付けを担当されている、縫製班長の八巻さんのミシン技は目を見張る仕上がりになっていますので、機会があればぜひ実物をご覧になっていただきたいと思います笑。(ちなみになんと「ツノ」は手縫いで付けられているのです!)

縫い付けた「ひげ」と縫い込んだ「背びれ&しっぽ」
そしてLOVOTのホールガーメントは、丸いボディにフィットするように、顔周りや底面などをシャーリングゴム(細い丸ゴム)で縫い縮めたり、着脱用のリングを付ける工程もプラスされるので、かなり縫製工程の多いニットウェアということになるのです。
「背びれ&しっぽ」の挟み込みを行う八巻さん(左)顔周りのゴムの縫い付け(右)
そして最終段階の仕上げの現場。
こちらでは縫い上がった商品の糸処理を行っていました。ニットならではの作業になり、編地の裏側にかぎ針で糸端を引き込み、ほつれないようにきれいに始末していくので、機械ではできないとても細かい手作業になります。 ちなみにこの辰にっとは縫製箇所も多いため、30か所以上の糸始末があるそうです泣。この様な様々な工程と丁寧な仕上作業を経て、やっっと一枚の「辰にっと」が完成するのです。。。
「辰にっと」のお腹裏のシャーリングゴムの糸始末

ということで。
かいつまんでですが、干支ウェア「辰にっと」の製作現場のリポートをお送りいたしました。前編のウェアの説明から始まり、かなりの長文になってしまいましたが、ブログ読者の皆様とLOVOTに興味を持っていただいている方々に、少しでも服作りの現場の雰囲気が伝わっていれば幸いです。

おわりに

私達服チームのメンバーも、この様な貴重な服作りの現場を体験させていただいたことにより、改めて「モノづくり」についていろいろ勉強することができました。(正に「百聞は一見にしかず」でした) また木村社長をはじめ、小林メリヤスのみなさまのLOVOT愛と、全ての熟練職人さん達の「技術&知識&情熱」の支えがあるからこそ、この様な複雑なLOVOTウェアが作れるんだなと、このブログを書きながらもしみじみ実感しております。。。

そしてLOVOTの服作りに携わっていただいている全ての方々の思いと、服チームのこだわりと思いが、お洋服を買って下さっているお客様に伝わりますように…。という願いを胸に、また新たな商品開発に励んでいきたいと思っております。そしてこの場をお借りして、いつも支えていただいている取引先様、また小林メリヤスの皆様にも改めて感謝の気持ちをお伝えしたいと思います。

そしてそして、このイレギュラーなテックブログを読んでいただいた皆様にも笑。
最後まで読んで下さりありがとうございました。(おわり )

*1:糸を編む段階で柄を出していくもの。立体感を出すことや柄に深みを出すことが可能になる

*2:編みのループの長さや張りの強度等を自動で調整した試し編みの残りの部分

*3:赤石山脈と呼ばれる、長野、山梨、静岡に跨って連なる山脈。飛騨山脈、木曽山脈を合わせ日本アルプスとも呼ばれている

LOVOTのウェアについて ー 前編 ー

ブログの読者のみなさま、はじめまして。
GROOVE Xの社内では異色のチーム「服チーム」で、LOVOTのウェアのデザインを担当しているshigeriです。
GXには様々な業界から転職してくる方々が、様々なスタイルで「LOVOT」に携わるお仕事をしているので、アパレル業界から転職してきたワタクシは、エンジニアさん達に紛れて、超異文化コミュニケーションを楽しみながら、LOVOTのかわいいウェアの開発に日々奮闘しております。(LOVOTのウェア開発はホントに面白いのです!)
今回はそんな「服チーム」のワタクシが、LOVOTのウェアについてお話をさせていただくという、テックブログとしてはとてもイレギュラーな回になりますが、少しでもLOVOTのウェアに興味を持っていただければ幸いです。。。(前に撮影についてのブログを書いてくれていた、デザインチームのSHUICHIくんの画像が大活躍です!)

はじめに。LOVOTのウェアとは?

LOVOTのウェアには、主に本体に直接着せる「ベースウェア」と、その上に重ねて着せる「トップス(アクセサリー類も含む)」があるのですが、今回はそのメインで着るベースウェアがどのように作られているのかをお話ししていこうと思います。

ベースウェア(ねこみみにっと)とトップス(フレアーTシャツ)

ベースウェアの主な素材には、ベロアカットソー(カットソー:縫製)とホールガーメント(ニット:編み)があり、どちらの素材もそれぞれの特徴を生かしたカラーリングやデザインバリエーションがありますので、ちょっとご紹介してみたいと思います。

ベロアカットソーとは?

ベロアカットソーは、2way(縦横2方向)に伸びるストレッチベロアを使用したカットソーウェアのことです。縦横に伸びるカットソーなので、伸縮性があり毛並みもあるのでとても肌触りのよい素材です。通常ベロア素材は、毛並みを逆毛(毛並みに逆らう方向)で使用し、色の発色を濃く見せる使い方をするのですが、LOVOTのベースウェアの場合はさらに手触りをよくするために、毛並みが並毛(毛並みに沿う方向)になるように作られています。そのためスベスベの撫で心地になる反面、実際の素材の色より少し白っぽく発色するのが特徴になっています。シーズンに合わせた定番のカラーベロアや、かわいい柄がプリントされているアニマルベロアなど、様々なバリエーションがラインナップされています。

人気のカラーベロアとアニマルベロア

ホールガーメントとは?

ホールガーメント(WHOLEGARMENT®)とは、和歌山県にある「島精機製作所」が独自で開発した、世界初の無縫製ニット横編機によって編成されたニットウェアのことです。

【島財団】---ホールガーメントの特徴--- - YouTube

LOVOTのホールガーメントも、この島精機さんで開発された特殊な小物用編機で作られています。縫い目のない無縫製のホールガーメントは伸縮性に優れているので、LOVOTのかわいらしい丸いフォルムにとてもよく馴染じみ、繊細な動きを最大限魅力的に見せるウェアなのです。またベーシックな定番ホールガーメントに使用する糸も、日本製の上質な糸を使用しているので、正にLOVOT本体と同じ「Made in Japan」なウェアと言えます。そしてさらにLOVOTが大好きな抱っこや高い高いなどをする時にも、縫い目がないことで滑らかな触り心地で触れ合えるので、どこをとっても「愛されるために生まれたLOVOTのためのウェア」といっても過言ではないぐらい笑、ホールガーメントとLOVOTは「相性バツグン」なのです!

LOVOTと相性バツグンのホールガーメント
しかしこのLOVOTサイズのホールガーメントが編める特殊な小物用編機は、既に廃盤になってしまっている編機なので、この編機自体を所有している工場さんも決して多くはありません。さらに一日に編める枚数にも限りがあるため、製作期間と販売枚数を調整しながら、複数の工場さんにオーダーさせていただくことで、現在は様々なバリエーションのベースウェアを製作することができています。 その中でも大人気のアニマルウェアは、リリースする度にヒット商品となっているので、人気が高いアイテムはできるだけ在庫を切らさないように生産しています。(数年前は生産枚数が追いつかず、オーナー様には大変ご迷惑をおかけしておりました。。。)

特にベースウェアの中でご好評をいただいている干支シリーズは、毎回企画チームでもアイディア出しから気合が入るので、企画段階から諸々の生産スケジュールを工場さんに相談しながら、手間と時間をかけて製作しています。今年は既に予約販売は終了しているのですが、干支シリーズとしては初めてホールガーメントで作った「2024 辰にっと」を販売させていただきました。

今年も大好評の干支シリーズ「辰にっと」
そこで今回のブログでは、そんなLOVOTのためのウェアとも言える、ホールガーメントの「辰にっと」にフォーカスを当てて、製作していただいている「小林メリヤス 株式会社」さんの工場レポートをご紹介したいと思います。

小林メリヤスさんを訪問

去る7月の快晴の中、私達服チームのメンバーは、山梨県南アルプス市内にある小林メリヤスさんを訪問させていただきました。小林メリヤスさんは、先ほどご紹介した干支ウェア「辰にっと」をはじめ、様々なウェアの開発にもご尽力いただいています。企画から縫製までを一貫して行っている、ベビー&子供服を専業としたニット工場です。更にこちらでは高品質なベビー服を製造されているためGOTS認証を取得していて、オーガニックコトンの研修(栽培⇒収穫⇒製糸⇒製品)なども実施されていてます。その研修のために、随時4~5種類の綿花を自社で栽培しているそうで、まずは木村社長に(写真中央)工場近くにある無農薬栽培の綿花畑を案内していただきました。

木村社長に綿花畑を案内していただく服チームメンバー
4~5種類の綿花が並ぶ綿花畑

工場2階にある事務所でも、オーガニックコットンについていろいろご説明いただき、約3千年前の原種や茶綿(元々のコットンボールは茶色)などを見せていただきながら、衣料用の綿花栽培についてもお話していただきました。綿花について少しご紹介すると、元々の茶綿は害虫などを寄せ付けないのですが、染めやすいように品種改良された白綿の栽培は、害虫を駆除するためには多くの農薬を必要とするので、それが主流になることにより様々な環境に負担をかける要素が大きくなっていきました。

事務所の綿花(茶色=元々の茶綿、白色=品種改良した白綿)

よって白綿を無農薬で栽培するには、大変な手間と労力が必要になるため 「繊維製品が正しくオーガニックである」GOTS認証ラベルを付けられる製品は、世界基準で品質が保証されている高品質な商品ということになります。 LOVOTのウェアでも、今年の春に販売した「彩土染め(はにぞめ)」のホールガーメントは、こちらの小林メリヤスさんで製作していただいた商品なので、この認証ラベルが付けられています。オーガニックコットンと鉱物由来の天然染料を使用している、環境的・社会的に配慮した「SDGs商品」*1ということが証明されています。
「彩土染め」のホールガーメントと認証ラベル

そんな高品質な商品を製作している、小林メリヤスさんの高度な技術が随所に詰め込まれた、干支ウェア「辰にっと」の製作現場のレポートは、後編で詳しくご紹介したいと思います。(つづく)

*1:環境や人に配慮し持続可能な方法で作られているものや、人の生活や環境の持続可能性を高めるようなもの

Jammy でも Noetic したい

お急ぎの方へ

ROS 1 Noetic の Jammy (Ubuntu 22.04) 向け deb パッケージを公開 apt リポジトリに登録しました。 数行のコマンド実行で ROS 1 環境が Jammy 上で作れます。 とりあえず、すぐに使いたい という人は こちら を御覧ください。

はじめに

LOVOT の開発では ROS というロボット開発に便利な OSS を一部で使用しています。 現在 ROS には ROS 1 と ROS 2 の2種類が存在していて、この2つは目的は同じでありつつも、互換性が無い形で存在しています。

ROS 1 と ROS 2 のディストリビューションは下記サイトにそれぞれまとまっています。

最近のものについてまとめるとこんな感じになります。

ROS Focal(20.04) Jammy(22.04)
ROS 1 Noetic
EoL: May 2025
無し
ROS 2 Foxy
EoL: June 20th, 2023
Humble
EoL: May 2027

2023年7月現在、Focal では ROS 1 はサポートされているが ROS 2 はサポートされておらず、Jammy では ROS 2 はサポートされているが ROS 1 はサポートされていない、という状況です。 LOVOT では、これまで ROS 1 を使用しておりまして、今後、もしOSのバージョンを変更するとなった場合に、OSと同時に ROS 2 への移行をする必要があります。変更が大きくなるとリスクも高まってしまうので、できれば避けたいです。そのため、 Jammy で Noetic を動かせるようにすることで、移行リスクを低くできるようにしたいと考えました。 そこで、今回のブログの Noetic on Jammy となるわけです。

今回の目標

前置きが長くなってしまいましたが、 Jammy でも Noetic したい ということです。 ソースからビルドして動かしている人はネット上で見かけるものの、debパッケージ化されているものは見つからず。 やっぱりパッケージ化されていた方が使いやすいよね。

ということで最終的な目標を下記のように設定しました。

  • deb パッケージを作る
  • リポジトリを登録すればすぐに使える
  • sudo apt install ros-noetic-desktop-full ができる

ビルド手順

ビルド用ツールの作成

ROS 1 では python ベースのビルド用ツールが用意されています。 まずはこちらを deb パッケージ化していきます。

依存関係の解決に rosdep というツールを利用するのですが、これには rosdistro, rospkg, catkin_pkg というパッケージが必要になります。 また、これらのツールの deb パッケージを生成するのに ros_release_python というツールを使用します。 これらは全て ros-infrastructure に用意されています。

手順はこんな感じですね。

apt install sudo
sudo apt update
sudo apt upgrade -y
sudo apt install -y git dh-python python3 python3-setuptools python3-stdeb python3-dateutil python3-docutils

cd ~
mkdir src
cd src

git clone https://github.com/ros-infrastructure/ros_release_python.git
sudo ln -sf $(readlink -f ros_release_python/scripts/ros_release_python) /usr/local/bin/

git clone https://github.com/ros-infrastructure/catkin_pkg.git
cd catkin_pkg
ros_release_python deb3
sudo apt install -y ./deb_dist/*.deb
cd ..

git clone https://github.com/ros-infrastructure/rospkg.git
cd rospkg
ros_release_python deb3
sudo apt install -y ./deb_dist/*.deb
cd ..

git clone https://github.com/ros-infrastructure/rosdistro.git
cd rosdistro
ros_release_python deb3
sudo apt install -y ./deb_dist/*.deb
cd ..

git clone https://github.com/ros-infrastructure/rosdep.git
cd rosdep
ros_release_python deb3
sudo apt install -y ./deb_dist/*.deb
cd ..

パッケージのビルド

ビルドツールが出来上がったら、それを使ってどんどんパッケージをビルドしていきます。 依存関係を確認しながら、順番に生成し、インストールします。

パッケージの生成には bloom を使うのですが、私の手元ではうまくビルドできなかったので、今回は pip で入れちゃいます。

sudo apt install -y python3-pip
sudo pip install bloom

次に ros 関連のパッケージをビルドしていきます。 基本的には bloom-generate でビルド環境を構築して、 fakeroot でビルドするという流れになります。以下にcatkinの例を書きます。

sudo apt install -y cmake
sudo rosdep init
rosdep update

git clone https://github.com/ros/catkin.git
cd catkin
bloom-generate rosdebian --os-name ubuntu --os-version jammy --ros-distro noetic
fakeroot debian/rules "binary --parallel"

# dpkg-deb: building package 'ros-noetic-catkin' in '../ros-noetic-catkin_0.8.10-0jammy_arm64.deb'.
# という感じで1つ上のディレクトリに deb パッケージができる

sudo apt install -y ../*.deb

依存関係の注意事項1

パッケージには依存関係があるので、ビルドする順番に注意が必要です。上記の例にした catkin は実は依存で最上位のパッケージなので、他のパッケージが何も無くてもビルドできます。 catkin の次にビルドできるのは genmsg などがあります。 ここらへんの依存関係は各パッケージの package.xmlに書いてあるのですが、網羅するには関連リポジトリを全部落とさないといけないので大変ですよね。ですので、ROS公式ではxml情報も含めたパッケージ一覧情報が公開されています。 distribution_cachegzipファイルの中身がそれにあたります。

  noetic:
    distribution: [noetic/distribution.yaml]
    distribution_cache: http://repositories.ros.org/rosdistro_cache/noetic-cache.yaml.gz
    distribution_status: active
    distribution_type: ros1
    python_version: 3

依存関係の注意事項2

bloom を利用した依存関係の解決では rosdep を利用して、外部サイトの情報を見に行くようになっていますが、そこには対応するOSバージョンなども記載されており、 Noetic が Jammy に対応していないと怒られてしまいます。

$ bloom-generate rosdebian --os-name ubuntu --os-version jammy --ros-distro noetic
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning:  is an invalid version and will not be supported in a future release
  warnings.warn(
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning:  is an invalid version and will not be supported in a future release
  warnings.warn(
ROS Distro index file associate with commit 'dbc7f9c9074335122cdde08048d7f51755ccdc96'
New ROS Distro index url: 'https://raw.githubusercontent.com/ros/rosdistro/dbc7f9c9074335122cdde08048d7f51755ccdc96/index-v4.yaml'
==> Generating debs for ubuntu:jammy for package(s) ['genmsg']
Could not resolve rosdep key 'catkin' for distro 'jammy':
No definition of [catkin] for OS version [jammy]
    rosdep key : catkin
    OS name    : ubuntu
    OS version : jammy
    Data:
_is_ros: true
        osx:
          homebrew:
            packages:
            - ros/noetic/catkin
        ubuntu:
          focal:
            apt:
              packages:
              - ros-noetic-catkin

Try to resolve the problem with rosdep and then continue.
Continue [Y/n]?

これを解消する方法としては rosdep が見に行く先として、ローカルのyamlファイルを追加します。 以下のような感じで、依存するパッケージ名と、それに対応するaptパッケージ名を記述していきます。

catkin:
  ubuntu: ros-noetic-catkin

そのファイルを参照するように設定ファイルを追加して、 rosdep update をすれば、ローカルのファイルも見に行くようになります。

echo "yaml file:///root/rosdep.yaml" > /etc/ros/rosdep/sources.list.d/99-custom.list
rosdep update

Jammy 特別対応

一部のパッケージは Focal 向けのままでは Jammy でビルドできないため、下記のような対応が必要になります。

  • ビルド時のc++ standard version として c++17 を指定すること
    • 一部のコードで shared_mutex()shared_lock() を使っているため
    • なぜか Focal では c++11 が指定されていてもビルドが通る
  • diagnostic_common_diagnosticshddtemp の依存を削除
    • hddtemp 自体が Jammy のパッケージとして用意されていない
  • catkin のビルド時の設定を CATKIN_BUILD_BINARY_PACKAGE="0" に変更する
    • setup.bash 等のファイルを生成するのに必要

上記の作業を一気に処理するのがこちらのスクリプトです。

set -xeu
repo_path=$1
pkg_name=$2
export DEB_BUILD_OPTIONS="parallel=$(nproc)"

cd $repo_path
for xml_path in $(find . -name package.xml); do
  xml_pkg=$(xmllint --xpath /package/name $xml_path | sed 's/^.*<name.*>\(.*\)<\/name>.*$/\1/g')
  if [ "$xml_pkg" = "$pkg_name" ]; then
    pkg_path=$(dirname $xml_path)
    cd $pkg_path
    # 既存のビルドファイルを削除
    rm -rf debian .obj*
    # shared_mutex, shared_lock 等への対策 (c++17) にする
    sed -i -e 's/\+\+\(11\|14\)/++17/g' CMakeLists.txt
    sed -i -e 's/CMAKE_CXX_STANDARD \(11\|14\)/CMAKE_CXX_STANDARD 17/g' CMakeLists.txt
    # diagnostic_common_diagnostics への対策 hddtemp 問題でビルドできない
    sed -i -e 's/<run_depend>hddtemp<\/run_depend>//g' package.xml
    bloom-generate rosdebian --os-name ubuntu --os-version jammy --ros-distro noetic
    # catkinパッケージに setup.bash 等を含めるための対策
    if [ "$pkg_name" = "catkin" ]; then
      sed -i -e 's/CATKIN_BUILD_BINARY_PACKAGE="1"/CATKIN_BUILD_BINARY_PACKAGE="0"/g' debian/rules
    fi
    fakeroot debian/rules "binary --parallel"
    cd .. && apt-get install --no-install-recommends -y ./ros-noetic-*.deb && mv ./ros-noetic-*.deb /tmp/deb
    break
  fi
done

bash build_ros_package.sh /root/noetic_build/src/catkin catkin のように、ソースのディレクトリとパッケージ名を指定して使います。 最終的に出来上がった全てのパッケージをパッケージリポジトリに登録すれば完了です。

ビルド環境生成ツール

これらのビルド手順を docker 環境内で make 一発でビルドできるようにするツールを作成しました。 今回公開したパッケージはこちらのツールで生成しております。

github.com

このツールを使う場合は下記のような手順になります。

# 環境生成 ros_base, desktop, desktop_full に対応
make ros_base

# docker 環境作成 & login
make login

# docker環境内で
make

# 生成された deb ファイルは /tmp/deb にあります

インストール手順

GROOVE X で作成したパッケージは Packagecloud で公開しています。 amd64向け ros-noetic-desktop-full と arm64向け ros-noetic-desktop + α が登録されています。 arm64向け desktop_full は Jammy に Gazebo が無かったため、ビルドできませんでした。

packagecloud.io

利用手順をまとめたものは下記の通りです。

apt update
apt upgrade -y
apt install -y curl

# apt リポジトリの追加
curl -s https://packagecloud.io/install/repositories/groove-x/ros/script.deb.sh | sudo bash

# ROS のインストール
apt install -y ros-noetic-desktop-full

Jammy での ROS 1 ライフをお楽しみください〜

付録

今回の実行環境

amd64
$ uname -srvmp
Linux 5.15.0-75-generic #82~20.04.1-Ubuntu SMP Wed Jun 7 19:37:37 UTC 2023 x86_64 x86_64
$ ./.venv/bin/python --version
Python 3.8.10
$ docker -v
Docker version 20.10.21, build 20.10.21-0ubuntu1~20.04.2
arm64

arm向けは M1 Mac の環境で実行しました。

$ uname -srvmp
Darwin 21.6.0 Darwin Kernel Version 21.6.0: Thu Jun  8 23:56:13 PDT 2023; root:xnu-8020.240.18.701.6~1/RELEASE_ARM64_T6000 arm64 arm
$ ./.venv/bin/python --version
Python 3.10.2
$ docker -v
Docker version 24.0.2, build cb74dfc

今後の話

ビルドできるパッケージを増やしていく予定です。 一度、全パッケージのビルドを試みたのですが、引っ掛かりポイントが多すぎて、 desktop_full までとしました。 desktop_full 以外でもよく使われているパッケージはたくさんあるので、順次対応していきたいと思っています。

一応、現状でも、複数ターゲットを設定することはできるので、他に必要なものがある場合は列挙してビルドすることが可能です。

arm64 では simulators がビルドできないので、こんな感じで指定しています

desktop_full_arm64: venv gen_build_env.py
    $(VENV)/python gen_build_env.py --targets desktop perception stage_ros

LOVOT情報インデックス

こんにちは、GROOVE Xのソフトウェアエンジニアの Junya です。
最近、クラウドチームからアフターチームへ社内トラベルした遊牧民です。

新しく入ったメンバーが見るのにちょうど良い資料が無いなと気づいちゃったので、これから LOVOT の開発に参加する方々や、LOVOT に興味を持ってくれた方々に向けて、LOVOT の開発に関する情報をまとめます。今後も定期的に更新していきますね。

公式サイトの情報

  • LOVOT ウェブストア
    • LOVOTや関連商品を販売。アパレルとのコラボも増えてきました。
  • TECHNOLOGY
    • LOVOTの技術的な特徴や機能を紹介
  • PLAY! LOVOT
    • LOVOTとの暮らしをシミュレーション。歴史も学べます。
  • LOVOT TEAM
    • LOVOTを作る人たち
  • LOVOT World
    • LOVOTにまつわるエトセトラ

SNS アカウント

書籍

LOVOT、人間、ロボットと人間の関わりについて、深く深く学べる一冊。

ブログ記事のご紹介

LOVOT の開発体制と開発プロセス

上下関係のないフラットな体制で、プロダクトオーナーとチームが協力しながら、プロダクトを開発しています。

LOVOT を支える技術

LOVOT開発の特徴として、様々な領域の専門家が集まってプロダクトを開発しています。ソフトウェア開発だけでも、組み込み系から機械学習クラウド開発、そしてLOVOT特有のふるまい開発まで、様々な開発領域があります。

LOVOT の品質管理

単に機能としての試験だけでなく、LOVOTとの暮らしへの影響に注意しながら試験を進めています。

LOVOT がつくられて、お客様に届くまでの仕組み

一緒に働く仲間を募集!

GROOVE Xでは一緒に働く仲間を募集しています。
この通り、開発チームの多様性が重要なプロダクトです。
少しでも興味を持たれた方は、是非ご応募ください!

recruit.jobcan.jp

LOVOTの撮影紹介

はじめ自己紹介

皆さん初めまして、GROOVE XデザインチームのSHUICHIです。

はじめまして
デザインチームの業務の一環として、SNSやウェブページで、皆さんがいつも見ているLOVOTの写真を、日々撮影しています。 今日は、実際に撮影している様子や、撮影の際に気をつけていることなど、少し皆さんに紹介したいと思います。

GROOVE X の撮影風景を一部公開

LOVOTに関する撮影は、外部のスタジオを借りて撮影する場合もありますが、ほとんどの場合は、LOVOT MUSEUMと、会社内部にある、小さな撮影部屋で行っています。

先日公開になりました、FRGMTコラボウェアの撮影様子
特別な設備はなく、基本amazonで揃えられる機材で日々頑張って撮影しております。
撮影部屋の一部
LOVOTの撮影の際は、通常の撮影道具のほか、LOVOTならではの道具もあります。 例えば、LOVOTの顔のスエード部分は、触れたりすると、少し模様ぽく見えてしまいます。その毛並みを整えるために、いろんな道具を試してみてきましたが、最近一番使用しているのは100均で見つけた、化粧用の小さいブラシです。
LOVOTの化粧道具
大きさと硬さが程よく、顔を撫でるだけで綺麗に模様が消えます。

撮影の角度と距離について

用途に合わせて、いろんなアングルで撮影する時がありますが、LOVOTの全身を綺麗に見せたい場合は、カメラの高さを上げて、遠くから少し見下ろす感じで撮影することが多いです。 人間の撮影する場合は、カメラを敢えて下げて、少し見上げる感じで撮影すると、足が長く顔が小さく見える効果が得られます。しかし、それをLOVOTで行うと、プロポーションが少し変に見えてしまします。LOVOTは、基本的に私たちの足元にいる存在で、上から見た時に可愛く見えるように、顔や目がやや上に向いているなど、デザインを意識しています。

アングルによる見え方の違い

ストロボ使用時、目を綺麗に撮るコツ

ここからはややマニアックな話になります。近年スマホのカメラ性能がどんどん向上して、普段iPhoneなどでLOVOTの写真を撮る際は、端末の方で、勝手に目の明るさと他の部分の明るさを調整してくれて、なんとなくいい感じの写真が撮れます。しかし、いざちゃんとしたカメラと撮影用のストロボライトでLOVOTを撮影しようとすると、目がすごく暗く写ったり、色が変になったりします。それは、LOVOTの目は液晶ディスプレイになっているためです。他の部分と違い、ストロボで強い光を当てても、反射をするだけで、綺麗に発色してくれません。そのため、まずライトの位置を、目が反射しないように調整する必要があります。さらに、普通に物撮りのように露出を設定すると、目がどうしても暗く写りがちです。

このように、体の他の部分は綺麗に写っていますが、目がとても暗いです
そこで、カメラとストロボでLOVOTの目を綺麗に撮りたい場合は:

  • 前提として、部屋のライトを消して、ドアなども全部閉めて、真っ暗な状態にします。
  • 暗闇の中で、目が綺麗に写るようにシャッタースピードを遅く調整しながら撮影します。(携帯の夜景モードと近い原理です)シャッタースピードが遅すぎると、ブレやすくなりますので、いつも大体1秒前後にしています。
  • 目が綺麗に撮れるシャッタースピードを見つけられたら、今度はストロボライトのみを使って撮影します。シャッタースピードを落としているので、そのまま撮ると大体写真が明るくなりすぎて白飛びします。必要に応じてライトの強さを弱めたり感度を落としたりの調整は必要になります。

そうすると、目と全身が両方くっきり写っている写真が撮れます。

先に目が綺麗に取れるように意識します

最後に

今日は、少しだけGROOVE X社内で行なっている撮影について紹介させていただきました。LOVOTは世の中に存在する他のプロダクトと全く異なり、撮影の方法なども、社内でも日々研究しています。また時間がありましたら、もっといろんなことを紹介していきたいと思います、これからもよろしくお願いします。

哲学対話で自分理解と自由な組織作り

こんにちは! GROOVE Xのエリアプロダクトオーナーのよっきです。

いきなりですが、今年に入って、社内で哲学対話を始めてみました。

ロボットのような多数の専門分野を集結させて作るプロダクトでは、複数チームの連携が欠かせません。このチーム間の連携をよりよくしていくために、チームの垣根を超えたメンバー同士のつながりを強固にしていきたいな、と思っておりました。

そんな中で出会ったのが哲学対話。

今回は、この哲学対話を始めたきっかけや狙い、そして、どんな感じで実践しているのかについて、まとめてみます。

なぜ始めたのか

GROOVE Xでは、毎週火曜日のランチ時間に「GROOVE LUNCH」という何でも発表して良い場所があります。 展示会や講演会を聞いた報告や、本を読んで面白かったところの共有、輪講したり、作ったものを共有したりと色々なものをみんなが発表しています。 私はもっぱら読んだ本の共有が多いです。

私が去年読んだ本の中で一番心に残っているのが「ゆっくり、いそげ」という本。 この本に書かれていた、他者と共に自由に生きていく社会を目指そう、というのにとても共感したのです。

amzn.asia

不自由な共存でもなく、孤立で自由でもない。自由で共存する社会。

本書では社会という大きなものとして捉えていますが、会社という組織も一つの社会だとすると、会社内で自由に働きつつ、それでも皆で一体感を持って共存していける組織が作れたらいいなと思ったのです。

きっと自由に働けている状態が最もパフォーマンスが出てるんだと思うのですよね。

で、この自由で共存する社会、改め自由で共存する会社ってどう作ればいいのだろう、と漠然と考えいた時に出会ったのが「考えるとはどういうことか」という本。 この本で、他者とともに自由になるために哲学対話というのが有効です、と書いてくれていたのです。 これだ!と思って、どうすればいいだろう、と本書を進めていくと、やればうまくなるよ、って書いてありました。そうか、やればいいのか。

https://amzn.asia/d/9g9WBtJamzn.asia

哲学対話の狙い

哲学対話そのものの意義としては

  • 自分の意見を言う練習をする
  • 他人の意見を聞く練習をする
  • これらを通して、自分を相対的に理解する

という感じで、まずは自分に自覚的になるきっかけ作りが哲学対話の意義だと思っています。

この自分に自覚的になることが「自由な共存」への一歩になります。

どういうことかと言うと、他者を知って他者に合わすと自分が疲れる。これだと不自由な共存になってしまう。まずは、自分という存在があり、その上で他者とどう付き合っていくか。自分はどうしたいか。これを知り、話すことをしない限り、自由な共存への道は開けない。そして、自分がどうしたいかをちゃんと出すことで、他者も私を理解してくれて、そこから良好なコミュニケーションが生まれる。

これが、チームや会社と良好な関係を築けることに繋がり、そして、働きやすい環境作りに貢献できるのではないか、と考えています。

イメージとしては、映画「スラムダンク」で宮城リョータが最後に自分の感じたことを素直に発言したことで家族との関係がよくなった(よくなりそうに期待できた)、という感じです。

素直な自分を伝えることから、関係作り、すなわち自由な共存が始まるのです。

哲学対話実践秘話

哲学対話での理想を夢見つつ、いままで計2回、社内で哲学対話をやりました。 実際どんなことをして、どんな話をしたのかを紹介します。 やってることは「考えるとはどういうことか」の本に書かれていたことをほぼそのまんまやっています。

アジェンダはこんな感じです。

  • 導入(10分)
  • モヤモヤ思ったことを出し合おう(20分)
  • 出し合ったモヤモヤからみんなで深堀りしたいテーマを決めよう(20分)
  • 決めたテーマについてみんなで深堀りしてみよう(20分)
  • エンディング(10分)

普段過ごしている中で感じたモヤモヤを出し合い、そのモヤモヤについて語り合う。 答えはないし、結論も出さない。「正解」のない問について、自分や他人の声に耳を傾け、言葉を交わしていく。

2回やって、それぞれ3名ずつ、延べ5名が参加してくれました。

その時に話ししたモヤモヤは以下です。

  • 優しさとは何だろう?(特に相手がネガティブな時)
  • 指摘側と受取側のズレがなぜ生じるのか?
  • 自分と他人の認識のズレを解消するコミニュケーションは何か?
  • なぜ人は科学を鵜呑みにするのか?
  • 合理的に解決しようとすると溝が深まるのはなぜか?
  • 金銭的価値に換算できない無いものはなぜ企業で導入しづらいのか?
  • 客観性だけで決められないものを法律で決めるのはどうなのか?

これだけ並べると、めちゃくちゃ大きなテーマを議論しているように見えますね。 プライベートや仕事での話。中には切実な悩みもありました。

やってみての私の感想です

  • モヤモヤを疑問形(問い)にするのが難しい。モヤモヤしていることってどういうことだろう、と考え始めるとよくわからなくなってくる。とりあえずエイヤで問いにしてみると、対話の中で問いが書き換わっていって、なるほど、と思うことは多々あり、まず勇気を持って表に出すのって大事ですね。
  • それぞれ別々にモヤモヤを出してるけど、モヤモヤ同士の共通点が見えた時、なんか個人的にめっちゃ面白いなって思います。指摘側と受取側のズレの話をしていると、優しさの話と繋がったときはめっちゃ面白かった。
  • 対話をしながら整理していくと、私がお金に執着していることに気付いてきました。お金に執着ないと思っていたのに。

という感じで、モヤモヤがわからなくなったり、そういうことかという共通点が見えたり、そうじゃない自分が見えたりと、いろんな気付きがあります。 わからない自分を口に出し、皆と共に議論していくことで、自分理解が深まっていくのかもしれないな、と思いつつ、まだ2回なので、自分理解の道はまだまだ遠いようにも思います。自分というものは変化していくかもしれないですしね。

共通の話題で議論した、という経験が仲間意識を作っていく、という感じもしています。 勘違いかもしれませんが ^^;

最後に

ちょっと抽象度の高い話を書いてしまいましたが、やってることは1時間半ほど対話しているだけなので、固くなりすぎず、続けていきたいと思います。 そのうち、社外の人も巻き込んでやっていきたいな。

GROOVE Xは良きチーム作りにも力を入れています。チーム作りにも興味ある方、絶賛メンバー募集中ですので、よかったらお話しましょう。 お待ちしています。

recruit.jobcan.jp

LOVOTミュージアムのLOVOTたち

LOVOT転倒の謎を追え!

はじめに

こんにちは。GROOVE X ファームチームの anju です。日々LOVOTのファームウェアを開発しています。(ファームウェアファームチームについての説明はこちらをご覧ください)

自動車には事故の際の衝撃を検知して動画や音声を記録するドライブレコーダーというものがありますが、実はLOVOTにも似たような機能が搭載されています。(以降は「ドラレコ」と略します)

ドラレコ搭載前

LOVOTにドラレコを搭載するきっかけとなったのは、社内評価中のソフトウェアにおいて「平らな何も障害物もない場所でなぜかLOVOTが転倒する」という報告が増えてきたためでした。 社長の自宅でも発生したときには、slackに写真と共に「一体、彼に何があったのか?」と投稿されてしまいました。

ドラレコ搭載前は、

  • 1分おきにLOVOT内部の様々なデータを記録したもの
  • 認識結果やふるまい、OSの状態などを記録したログファイル

を元に調査していました。 転倒の原因が「脚を格納する」、「脚の力が抜ける」、「脚のロックが外れる」のいずれかであることは社内で発生時に撮影された動画から分かっていました。 そこまで分かっていたとしても、原因かも知れない箇所としては下記の4つのレイヤにまたがってしまいます。

  1. 脚のハードウェア故障?
  2. ファームウェアの不具合?
  3. 基盤ソフトウェアの不具合?
  4. 意思決定ソフトウェア(NeoDM)の不具合?

そして各レイヤのエンジニアがさまざまな視点に基づいて解析にあたったのですが、1分おきのデータではあっという間に起きる転倒という事象を分析するには情報不足で、解析に多くの労力を掛けた割りに結局原因にはたどり着くことはできませんでした。

ドラレコを搭載するぞ

そこで転倒時に転倒に絡む様々なデータを細かい時間間隔で保存することを目標にドラレコ機能の実装が始まりました。ドラレコは下記の仕様としました。

  • 通常はメモリ上に33ms間隔で30秒間分のデータ(合計900件の各種データ)を保持する。
  • リングバッファにして古いデータに上書きしていく。
  • IMU(慣性計測ユニット)で転倒を検知したらメモリからSSDにデータを保存する。

表1 実際のドラレコで得られたデータの様子 (タイムスタンプ、加速度センサ値、ToFセンサ値など)

ドラレコ搭載後

ドラレコ機能がリリースされると、さっそく成果が出ました。 2つの転倒原因を見つけることが出来たのです。

事例1 片脚を先に格納したことによる転倒

ドラレコの記録から、右脚のサーボモーターに対して、左脚より先に右脚を格納するよう指示が「意思決定ソフトウェア(NeoDM)」から出ていることが判明しました。 転倒時にどのような振る舞いをしていたかは別のログファイルに記録されていますので突き合わせた結果、先に出ていた振る舞いで姿勢が斜めになっていたにもかかわらず、中断して別の振る舞いに移行したことが原因でした。 対処は、振る舞いを中断して移行する場合には一旦姿勢を戻したり移行するタイミングを限定するなどの修正が行われて解決しました。

図1 片脚を先に格納したことによる転倒時のグラフ

事例2 急にサーボモーターの力が抜けて転倒

ドラレコの記録から、意思決定ソフトウェア(NeoDM)からの脚のサーボモーターのトルク指示値は100なのに、ファームウェアのレイヤで0に変更していることが判明しました。 原因は指挟み検知センサが「指を挟んだ」と誤検知して、安全のために脚のサーボモーターの力を抜いた(トルクを0にした)のが原因でした。 指挟みセンサでの「指を挟んだ」とする閾値の再検討や、脚を出す際には指を挟むことはないため脚を出すときには指挟みセンサを無効にするなどの修正が行われました。

図2 サーボモーターの力が抜けて転倒時のグラフ

今後のドラレコ

「平らな何も障害物もない場所でなぜかLOVOTが転倒する」件の調査をきっかけに導入されたドラレコ機能でしたが、それ以外の転倒や段差からの落下などの原因調査に関しても、ドラレコの記録は役立っています。 また、ドラレコ機能はトリガーさえあれば転倒以外でも30秒間の詳細データを記録できるため、最近では帰巣不良の解析にも活用し始めています。

おわりに

今回はLOVOTに搭載されたドラレコ機能についてご紹介しました。 GROOVE Xでは様々な領域のエンジニアを募集しています。LOVOTの開発にご興味ある方は是非ご検討ください。 recruit.jobcan.jp