ぜんのうテクログ

ロボット好き学生が書く様々なこと

【Mac】C++の環境をAtomで(linter-gccで詰まる)

f:id:zennou:20200529110242p:plain

最近はVScodeに押されている感もあるが、個人的に名前がすごく良いので(本質的でない理由で恐縮だが)まだまだお気に入りのエディタであるAtomくん。

院試も無事に終え、卒業研究に向け自分のノートパソコンでコードを見たり書いたりすることも増えてきた。そこで、興味の赴くままにゴチャゴチャさせてきた開発環境を目的に沿った管理しやすいものにするため再構築した。

詰まったところもあったので、今後の参考用に執筆。

準備するもの

  • Mac
  • Homebrew(インストール、使用法はこちら)
  • 電波
  • 時間(上手くいけば30分、最悪2~3時間程度)
  • command line developer toolsはインストール済み前提

あとは、最後の方だけ多少の気力が要るかも

GCCの導入

Macではcommand line developer toolsをインストールすればgccが一見して使えるように見えるが、実はgccの皮を被ったclangだということらしいので、gccで快適にプログラミングするには別途入手する必要があるらしい。

ターミナルで

$brew install gcc

/usr/local/bin/に必要なコンパイラg++-9(最後の数字はバージョン)がインストールされるが、これだけでは元からあるg++が邪魔をするので、シンボリックリンクを貼る。

$ln -s /usr/local/bin/g++-9 /usr/local/bin/g++
$which g++

で場所を確認すれば確かに/usr/local/bin/g++ と出るはず。

Atomのインストール、設定

公式サイトからダウンロードするかhomebrewを用いて

$brew cask install atom

インストールができたら、早速必要なパッケージなどの設定を
まずは⌘+,で設定に飛び、install からjapanese-menuをインストール(検索して出てくるはず)してメニューを日本語化する。

ここからC++に必要なパッケージのインストールに入る。
インストールするパッケージは以下

  • linter
  • linter-gcc
  • linter-ui-default
  • intentions(任意)
  • busy-signal(任意)
  • gpp-compiler

linterはコードを静的解析してエラーや警告を示してくれる。CやC++でlintしてもらうにはベースのlinterに加えてlinter-gccが必要となる。

また、エラーや警告を示すためのUIをlinter-ui-defaultが提供している。linter-ui-defaultをインストールするとintentionsやbusy-signalのインストールもAtomから求められるが、特に無くてもあまり困らないと思う。

gpp-compilerはC/C++のコードをコンパイル、実行してくれる。実行結果はターミナルで示される。

ここからが詰まる。。

実はlinter-gccはインストールしただけでは動作しない。
まずはlinter-gccの設定を開いて、Executable pathを設定する必要がある。具体的には、先ほど貼ったシンボリックリンクより

/usr/local/bin/g++

C++のExecutable pathに入力しておく。gpp-compilerの設定でのcompilerの指定も同様。

さらにMacユーザなら不要なエラー表示を排除するため、linter-gccの設定>C++ flagsに-fsyntax-onlyを追記。

これでも動作しない(ことが多い)。実はコンパイルに関する設定ファイルをCmakeを使って導入しなければならないらしい。

$brew install cmake
$git clone https://github.com/hebaishi/gtf2tab
$cd gtf2tab
$mkdir build
$cd build
$cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ..

Cmakeが既にインストールされていれば一行目は必要ない。
これでやっと使えるようになる。適当にcppファイルを作成し、わざとエラーを残した状態で保存すれば動作することが確認できる。

未解決問題

以上で一応の開発環境はできたが、未解決(というか不満が残る)問題がいくつかある。

  • ファイルをいちいち保存しないとlinterが動かない(以前はこんなことなかったのに・・)

リアルタイムで動いてこそなので、今は困らなくてもそのうち困る。

  • gpp-compilerはターミナルで実行されるが、できればAtom内で実行したい

有名なパッケージ"script"を使うと元からMacに入ってる方のg++で実行されてしまうので、それが解決できればいいのだが・・

解決できたら適宜加筆、修正したい。

AI政治の時代は来るだろうか

f:id:zennou:20200612142749j:plain


船頭多くして船山に登る、というが、現代日本の政治にはまさにこのことわざのような状況が構造的に設けられている印象を受ける。

 

それは、本来独裁者の誕生を防ぐための構造であり、政治家の暴走を防ぐためには必須の構造であるが、一方で政治決定に時間がかかる原因の一つともなり、緊急事態が起きた時などには国民から対応が遅いという批判を受けることになる。

 

近い将来、独裁を防ぎつつ政治的決定を迅速に行う助けとしてAIの導入が検討されることもあるかもしれない。本記事では政策立案のサポートをするAI、具体的には、与えられた政治的課題と、望ましい政策の効果を入力すれば適切な政策の候補を自動的に示すAIを想定し、その導入可能性について検討する。

 

あらかじめ断っておくが、筆者は政治の専門家ではない。したがって、どちらかといえば技術的な視点からの意見を述べる。政治倫理的な考察には根本的な不備もあるかもしれない。

 

学習をめぐる課題

巷で言われるAIとは、簡単に言ってしまえば、機械学習を施されたプログラムということができる。


学習というからには、学習の題材が存在する。

 

政策立案を助けるAIなら、今までに世界各国で提案されてきた政策を学習の題材とするのが自然だろう。

 

ところが、機械は融通が効かないので、学習するデータの形は決まっていなければならない。

 

データの形状を整えることをデータの整形と言い、例えば、画像を学習するなら縦横のピクセル数を全て揃えるのが整形の作業の一つとなる。

 

このデータの整形の方法によってもAIの性能は変わってくるが、過去の政策をどのような形で学習させるのが良いだろうか。特に過去の政策がどのような効果をもたらしたかをわかりやすい指標にすることは困難を極めそうだ。

 

また、データの整形は人が多くを行い、膨大な労力を必要とする。これを誰が担うべきか。政策の内容によっては一般には非公開の内容も学習データとして使う必要があるかもしれないが、この扱いをめぐって問題が起きる可能性がある。

セキュリティの課題

開発にあたって非常に多くの政策情報を扱い、ときには機密情報も含まれるかもしれないが、万が一にもデータの流出事件が起きてしまったら膨大な損害を受けるかもしれない。政治的な絡みがあるので、悪意を持った開発者が内部に潜む可能性だって十分にあり得る。

 

悪意ある開発者やハッカーによって極端な政策ばかり提案してしまうようになる危険性もある。本来AIに右寄りも左寄りもないはずだが、学習データやアルゴリズムによっては極端なことが起きうる。

 

AIに思想はなくても、思想的に傾いた判断を下すことは十分ありえる。

 

実際、Microsoftが開発したチャットボットが差別的な発言を多く学習したせいで黒人差別的な発言を繰り返すようになったことが過去にある。

まとめ

新しい技術には抵抗を感じる人が多くいる。政治へのこうした技術の導入でも、根強い反対論があるかもしれない。政治の広範囲にわたってAIが関与するようになったら、責任は誰がとるのかなど、技術に直結しないが重要な問題も残っている。

 

ただ、個人的には利点も多く、大いに検討されて然るべきだと思う。ヨーロッパでは政策案の評価をするAIが開発されるなど、導入に向けた動きが始まっているところもある。

 

従来とは全く異なる政治システムに結実しうるので、慎重であるべきだが、同時に前向きに検討するべきだと考える。

ターミナルで下らないコマンドを叩いて遊ぶ

f:id:zennou:20200606120024p:plain
こんにちは!

ターミナルで色んなコマンドを日々使うと思いますが、たまには遊びたくなりますよね。

ということで下らないコマンドを集めました。意外と面白いと思います。暇なときにぜひお試しあれ。

デフォルトのコマンド編

ここではデフォルトのUNIXコマンドから紹介します。コマンドを実行するためになんら準備を必要としないはずなので気軽に(?)楽しめますね。

カレンダー

cal

単純にカレンダーが出てきます。ターミナル上のカレンダーはやや味気ないですが、実用性0とまでは言えませんね。

喋らせる

say hello

これでハローって言ってくれます。日本語環境ならKyokoさんが喋ってくれるらしいです。日本語っぽいハローです。

say -v ?

で声の一覧が出るので試したい声があったら、例えばAlexに話して欲しい時は

say hello -v Alex 'hello'

で試せます。

文字の巨大化

banner 文字列

で巨大化した文字列が出力されます。巨大すぎて全画面表示にしないとわからないです。存在意義がよくわからないです。きっと本人も自分の存在意義に悩んでいることでしょう。多分。

テトリス

bashではなくzshのコマンドです。MacOSはCatalinaからデフォルトのターミナルがzshになったらしいですね。Catalinaじゃなくてもzshは使えます。

zsh
autoload -U tetris
zle -N tetris
bindkey '^T' tetris

以上を一行ずつ打ち込むことでテトリスをする準備ができました。
後はbindkeyとして設定したcontrol+Tを打ち込めばターミナル上にテトリスが出現します。暇つぶしには最高ですが、意外と時間を食ってしまうのでやりすぎにはご注意。

デフォルトではないコマンド編

ここではターミナルのデフォルトではないコマンドを紹介します。インストールが必要なものはhomebrewでインストールします。homebrewの使い方やインストール方法についてはこちらの記事をご覧ください。

SLが走ってくる

brew install sl

で導入できます。後はslと入力すれば立派なSLが走ってきます。lsと打とうとしてミスタイプしてしまうと出てきてイライラさせることで、ミスタイプの癖を治すという目的だとマニュアルには書かれていましたが、個人的にはめっちゃ好きなので意図的に呼び出して鑑賞しています笑。

絵文字を降らせる

特に準備が要る訳ではありませんが、rubyで書かれているのでこちらに分類しました。

ruby -e 'C=`stty size`.scan(/\d+/)[1].to_i;S=[*0x1F600..0x1F640];a={};puts "\033[2J";loop{a[rand(C)]=0;a.each{|x,o|;a[x]+=1;print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S.sample.chr("utf-8")} \033[0;0H"};$stdout.flush;sleep 0.2}'

をコピペして実行すると、ターミナルの画面に絵文字が降ってきます。まあ楽しいです。

マトリックスごっこ

これもhomebrewで導入します。

brew install cmatrix

後は暇なときにでも

cmatrix

と打てばマトリックスのアレっぽいのがターミナル に出現します。

まとめ

以上、下らないコマンド達を集合させてみました。実用性はありませんが、たまにはこうやって遊ぶのも良いですよね。

ではでは、また他の記事で会いましょう!

HomebrewというMac向けパッケージ管理ソフトがとっても便利

f:id:zennou:20200529162543p:plain
Homebrewのbrewは(ビールなどを)醸造するという意味

こんにちは!

突然ですが、Homebrewってご存知ですか?

 

Mac及びLinuxで利用可能なソフトで、ターミナル(例の黒い画面)で操作するソフトです。

 

ターミナルを使うということで、PC初心者には取っ付きにくそうなイメージがありますが、至って簡単なので非技術者でもバンバン使える便利な代物だと思います。

 

ソフトウェアをダウンロードするのにわざわざホームページを探すのが面倒、といった声に確実にお応えできるのがHomebrewです。

 

今回はHomebrewのインストール方法や基本的な使い方について紹介したいと思います。

 

概要

Homebrewはパッケージ管理ツールというものです。これを利用してインストールしたパッケージ(≒ソフト)の管理を便利にするものと思っておけばいいでしょう。英語で自家醸造というような意味になります。

 

何が便利なのかというと…

 

・パッケージの依存関係を管理できる
・コマンド一行で欲しいものがインストールできる
・アンインストールも簡単

 

などなど、いいことづくめですね。

 

パッケージの依存関係を管理できる、というのは、あるソフトウェアが依存する他のソフトウェアの有無を確認し、必要に応じてそれも同時にインストールしてくれるということです。

 

ザ・便利オブ便利。

インストール

ターミナル を開き、以下のコマンドをコピペしてEnter押すだけです。

 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

めっちゃ簡単!
(Command line tools for Xcodeのインストールを求められた場合はその指示に従って下さい)

 

途中でパスワードが求められたら入力してまたEnterです。

※パスワードを打ち込んでもターミナル の画面は反応しませんが、それが正常です。

使い方

では早速使ってみましょう。基本的にターミナルにコマンドを打ち込むことで操作します。

パッケージをインストールしたいとき

brew install パッケージ名

例えばグラフ作成ツールのgnuplotを入れたい時はパッケージ名にgnuplotと入れてEnterするだけで、指定された物を探してきてインストール作業を完了してくれます。さらにgnuplotの利用に必要な他のパッケージも探してきてインストールしてくれます。

GUIアプリケーションをインストールしたいとき

brew cask install アプリケーション名

caskを使うことでchromefirefoxのようなブラウザやAtomのようなエディタなどのGUIアプリケーションもHomebrewで管理できます。

パッケージ/アプリケーションを探したいとき

brew search キーワード

さっきcaskの説明でchromeを例に挙げましたが、chromeが正式名称かよくわかりません。そんなときにこのコマンドで正式名称を探します。chromeの正式名称はgoogle-chromeでした。

パッケージ/アプリケーションをアンインストールしたいとき

brew uninstall パッケージ名

便利ですね。はい。brew caskでインストールしたものを削除するときにはcaskをつけてコマンドを実行しないとエラーになるので注意してください。

Homebrewで何を入れていたか忘れたときには

brew list

でインストール済みのパッケージを一覧できます。例によってcaskをつければGUIアプリケーションの一覧ができます。

最後に

Homebrewの基本的な使い方だけを説明しました。これだけ知っていればとりあえずは十分だと思う内容です。

ただ、Homebrewの仕組みをもっと細かく知る必要があるときにはこれだけでは不十分なので、公式サイトを確認しましょう。

ではでは、また別の記事で会いましょう!

【Mac】プログラミング用エディタの個人的おすすめ3選

f:id:zennou:20200530180750j:plain





こんにちは!

 

プログラミングをしたいけど、何を使って書いたらいいかわからない・・・

なんていうMacユーザ向けに、僕が使ったことあるエディタから3つを紹介します。

 

エディタによって機能に違いがあり、プログラムの書きやすさも変わってきます。好みの問題もあるので最終的には自分で試して一番好きな物を選ぶのが理想だと思いますが、初めてエディタを使う人にとってこの記事が参考になればと思います。 

 

 

Atom

f:id:zennou:20200529110242p:plain

Atomのアプリアイコン

Github社が公開している無料エディタで、MacWindowsLinux、いずれにも対応しています。

 

Github社製なので、Githubをよく利用する方にとっては連携がしやすく使い勝手がかなりいいと思います。

 

拡張機能が豊富で、言語に対応しています。
デザインも拡張をインストールすることで自分好みにすることが可能です。僕が現在デフォルトで使っているのもAtomです。

 

Teletypeという機能があり、複数人が同時進行でコードを編集することができます。昨今の自粛生活にもってこいですね。

 

拡張機能の組み合わせ次第でIDEのようにも使えますが、入れすぎると動作がややもっさりしてしまいます。

 

ほぼどんな言語でも使えますが、言語によってはSublime Textを使う人の方が多いかもしれません。

 

公式サイトからAtomのダウンロードができます。日本語化するためにはインストール後にsettings > installからpackage検索にjapanese-menuと打ち込み、出てきたものをインストールすれば完了です。

Sublime Text

f:id:zennou:20200529110508p:plain

Sublime Textのアプリアイコン

Sublime Textもかなり人気のあるクロスプラットフォームのエディタで、キャッチフレーズは「恋に落ちるエディタ」です。素敵ですね〜。


Sublime TextもAtomと同様に拡張機能が豊富ですが、拡張機能をインストールするための拡張機能(?)を最初にインストールする必要があります。

 

動作はAtomより少し軽快な印象があります。

 

個人的な意見ですが、ぱっと見のデザインがシンプルでMacに馴染んでいるので、デザインのカスタマイズにあまり興味がなければSublimetextでいいでしょう。

 

Atomと機能的にはほぼ同等なので、好みの問題だと思います。実際、僕の周りのMacユーザーの間ではSublimetextとAtomで人気が二分している印象です。ちなみにWindowsAtomVisual studio codeが多い気がします。

 

とはいえ、Atomよりは玄人向け感があるので(設定が面倒)、あまりIT慣れしていなければAtomの方がいいかもしれません。

 

Sublime Textはこちらの公式サイトからダウンロードできます。日本語化するためにはインストール後にTools > Install package control を選択してpackagecontrolをインストールしてから、Preferences > Package Controlを選択すると検索窓が出るので、そこにjapanizeと打ち込み、インストールします。少し煩雑でわかりにくいので、こちらも参考にしてください。

 

Coteditor

f:id:zennou:20200531121639p:plain

Coteditorのアプリアイコン



僕がプログラミングを始めた頃に使っていました。容量が軽く、動作の軽快さはピカイチです。また、国産なので、上記2エディタとは異なり最初から日本語化されています。

 

シンプルな機能なので、本格的に書く用、というよりはお試し的にコードを書いてみたい人におすすめな感じです。プログラミング専用というより普通のテキストエディタとして優秀なので、テキストエディットの代替として位置付けるのもいいでしょう。

 

Mac専用なので、デザインがMacにすごく馴染んでおります。アプリアイコンからしMacデフォルトアプリと見紛うほどの雰囲気です。

 

シンタックスハイライトは50言語に対応しており、プラグインは有志が作ってくれたものをインストールする感じになります。

 

小さなプログラムを書いて練習するうちは便利ですが、物足りなくなってきたら他のエディタやIDEに移行することになると思います。

 

CoteditorはMac Appstoreからインストールができます。公式サイトで概要を確認できます。

まとめ

 以上、3つの主要なプログラミング用エディタを紹介しました。他にもたくさんのエディタがあって迷うと思います。どれも機能が豊富で目移りしちゃいますよね。

 

個人的には迷ったらAtomを選べばいいと思います。自分がプログラミングでしたいことがなんであれ、Atomでそれをする方法がネット上にはほぼ必ず転がっているので、困ることはないはずです。

 

ではでは、また他の記事で会いましょう!

ロボット工学三原則をめぐる考察

f:id:zennou:20200530181104j:plain

 

ロボット工学三原則、という言葉を聞いたことがあるだろうか。

 

アメリカの科学者でSF作家でもあったアイザック・アシモフ氏がその作品中で提示した原則である。

 

半世紀以上前のSF作品から始まったものだが、現代でも非常に考えさせられる内容で実際の工学倫理にも影響を与えたとされている。

 

 

概要

アシモフ氏は自身の小説中に以下のような原則を示した。

 

第一条
ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない。

 

第二条
ロボットは人間にあたえられた命令に服従しなければならない。ただし、あたえられた命令が、第一条に反する場合は、この限りでない。

 

第三条
ロボットは、前掲第一条および第二条に反するおそれのないかぎり、自己をまもらなければならない。

 

 

この原則は自律ロボットに適用される原則であり、人が操作するロボットのことを考えているわけではない。

 

この原則はフィクションとして作られたものであり、実際のロボットにこの原則をプログラムすることは後で説明するように不可能であるが、のちに実際の工学にも影響を与えたとされている。

 

また、他のSF作品などでもよく使われている原則である。

 

条文から優先度が第一条>第二条>第三条になっていることがわかる。


また、ロボットをモノとして捉えるなら、この原則は第一条から順に「安全、便利、耐久性」という読み替えが可能だ。

 

だが、自律型ロボットに適用されると、様々な問題が発生する。

問題

各条の優先度の矛盾

現実的な話ではないが、第一条>第二条>第三条の優先度順位が守られることによって逆に矛盾が発生することがある。

 

例えば、ロボットがその所有者により自己破壊を命じられたとする。
第二条が第三条に優先するはずだから命令は遂行されるはずだが、破壊の結果長期的に見て所有者が損害を被ることがあり得る。これを考慮すると命令は遂行されるべきでなく、第三条が第二条に優先されるべき事態になる。

 

このように、時間軸をどこまで見るかなどの条件によっては優先順位が絶対とすることができず、結果的に曖昧な原則となる側面がある。

 

また、命令の遂行が特定の人間に危害を加えることはないが、やがて人類全体に大きな悪影響を及ぼす可能性があるときはどうするのかという問題が後のアシモフの小説では登場した。

 

このため、第零法則が後で追加された。

 

第零法則
ロボットは人類に危害を加えてはならない。また、その危険を看過することによって、人類に危害を及ぼしてはならない。

 

この法則を第一条に優先させることによって、例えば人類滅亡を企てる主人の命令を遂行しなくなるというわけである。

 

この問題は現代のロボット工学には影響を与えていないが、深めていけば哲学的に興味深い問題になることが想像できる。

フレーム問題

何をもって人間と定義するか、何をしたら人間に危害を加えることになるか、などなど、正確にプログラムしようとしたらあまりに膨大になり、プログラム不可能である。

 

例えば、火事が起こり、人が取り残されていることをあるロボットが察知した。第一条に従うと、危険を感化してはならないので、取り残された人を助けなければならない。

 

このロボットはガソリンで動くから、ロボットは自ら助けに行くのではなく、消防を呼ぶなり消火栓を探すなりする判断が必要だ。しかし、果たしてこのロボットは本当に正しい判断ができるのだろうか?

 

危険にも多くのパターンがあり、その対処にも多くのパターンがある。その全てに対処できるようにプログラムすることはできるのだろうか?

 

ロボットが定められた有限のフレーム(=プログラム)の中でしか動作できないことをフレーム問題(1969年に初めて哲学者によって言及された)と言い、これが存在するため、ロボット工学三原則は現実のロボットには実装できない。

 

今後ロボットが高度に自律化するにあたって、ある程度この原則に似た仕組みを作る必要が出てくる可能性はあると思う。例えば完全自動運転車や介護ロボットなどだ。しかし、現実世界をプログラムのフレームだけで捉えようとするのは非常に難しい。

 

実際に、すでに米軍の無人機(まだ遠隔操作型で自律しているわけではないようだが)が誤って民間人を攻撃したという事件が起きるなど、刻々と問題が現実のものになりつつあるように感じられる。

 

www.yomiuri.co.jp

 

現実世界ではこのような原則に則ったプログラムが悪意あるハッカーによって書き換えられてフレームが歪められないか、という問題も深刻になるだろう。自動運転車がハッキングの結果人を狙ってぶつかるようになったらひとたまりもない。

 

 

これからロボットが様々なところで使われ始めるにあたって、フレーム問題にどう対処するかはロボットではなく、それを作る人間の仕事だと思う。

まとめ

ロボット工学三原則は半世紀以上前のSF小説で登場した概念だが、現代において原則をめぐる考察を行う重要性は増してきている。

 

工学者は普通物を作るときに物に対する責任を負うが、自律ロボットが潜在的に持つ危険性を完全に防げるのか、自らの責任を明確に意識するためにもこうした考察をときに自ら行う必要があると思う。

Boston Dynamicsのロボットは何がスゴイのか

 

f:id:zennou:20200522103031j:plain

photo credit: jurvetson See Spot Run — Dog vs. Robot via photopin (license)

 

Boston Dynamicsという会社をご存知でしょうか。

 

アメリカのロボット開発会社で、現状では世界で最も実用的な四足歩行ロボットや二足歩行ロボットを製作していると言えると思います。

 

YouTubeで以下の動画を見たことがあるかもしれませんね。

youtu.be

 

youtu.be


これらのロボットはCGではないんです。全て現実です!

 

ついでに言うなら二つ目の動画の黄色いロボットはspotという製品で、現在企業向けにリースされており、日本でも竹中工務店が実験的に一部の建設現場で実証実験をしたようです。

 

また、最近では鹿島建設が正式に導入したとの話もあります。

www.kajima.co.jp

 

この会社が開発するロボットは何が凄いのか、公開されている情報は少ないんですが、できる限りの解説を試みました。

 

どんな会社か

1992年にMITの教授が設立した企業で、ロボット技術でアメリカの国防産業にも関わったことがあります。2013年にはGoogleの傘下になりましたが、ロボット事業、特に二足歩行ロボットは短期的な利益が見込めないとして、2017年には日本のソフトバンクに売却されました。現在はソフトバンクが株式の100%を保有しているようです。

 

ロボットの他にソフトウェアの販売も行っているようです。

ソフトウェア編

姿勢制御

Boston Dynamicsのロボットはとにかく姿勢制御が優れています。人間に蹴られても凍った地面でも転けずに耐えてしまうのは本当にすごいです。

 

筆者も二足歩行ロボットの姿勢制御を研究していますが、普通のロボットは本当にちょっとした段差などですぐに転んでしまいます。制御の難しさは身をもって知っているつもりなので、尚更驚きの制御能力です。

 

詳しくは分かりませんが、生物をモデルにした制御則を使っていると言われています。機械学習もその一種として利用されているでしょう。

 

ただ、機械学習させたからと言ってここまで姿勢制御が上手くなるわけではありません。様々な工夫が施されているはずです。

 

段差などに咄嗟に反応するには計算速度も重要なのでよほど効率の良いプログラムか高性能のCPUを搭載していることも想像されますね。

マッピング

マッピングとは周囲の障害物を認識し、ロボットの頭の中で地図を作ることです。これが優れていなければロボットは障害物によくぶつかったり、迷子になったりします。

 

ロボットにとって距離感を測るのはとても難しいのですが、Boston Dynamicsのロボットたちはそれを簡単そうにやってのけてしまいます。建設現場で採用されるほどですから、かなり高いレベルでしょう。

ハードウェア編

サーボモータ

サーボモータとは簡単に言えばロボットの関節を動かすためのモータです。

 

普通のモータは回転角度を指定できませんが、サーボモータは角度を指定することでロボットの腕や足の動きを作ることができるという違いがあります。

 

Boston Dynamicsのロボットの文字通りダイナミックな動きは、強力なサーボモータなしではありえません。

 

普通のサーボモータではあの動きはできないです。例えできたとしても負荷が大きすぎてすぐにモータが焦げ付いてしまいます。

 

おそらく自主開発か特注しているのではないでしょうか。少なくとも日本のロボットであれほど動けるものは見たことがない。日本のロボットはハードウェアが優れていると思っていたので、少しショックでもあります。

部品設計

同社の二足歩行ロボットであるアトラスでは部品の製作に3Dプリンタを用いているらしいです。従来の方法では作れない形状を3Dプリンタを用いて実現することで、軽量化したといいます。

 

あくまで実験用なのでコストを度外視して3Dプリンタが使えるということもあるでしょうが、新技術を積極的に利用する点は見習いたいですね。

まとめ

以上、Boston Dynamicsのスゴいところをわかる範囲でまとめてみました。

 

日本はロボット大国なんて言われていましたが、それも昔のことになったみたいで、筆者としては少し悔しい思いもあります。

 

日本では新規事業への投資に対して非常に保守的で、ベンチャー企業が資金を得ることが難しいとよく言われますが、こういうところでも差が出ているのかもしれません。

 

アフターコロナの世界では急速に伸びる可能性がある業界だと思いますし、日本の企業もポテンシャルはあるはずなので、ぜひ積極的に資金を拠出して欲しいと思います。

 

筆者としても、精一杯研究を進めて商用利用できるほどの二足歩行ロボットを早く作りたいです。

 

ではでは、また他の記事でお会いしましょう!