コラム
ロボティクス関連で、感じたこと等を載せています。
2024/6/21
ロボット開発についての資料を作ったので、載せます。
私が作りましたし、別に、ここまでならば、内容はネット公開情報でも分かると思いますから載せます。
デザインは、主にマイクロソフト365?に標準搭載のモノを使っています。
マイクロソフトの自称で、Web上のものでない・引用であるならば(米国法では)使ってもよいみたいに、
マイクロソフト365のPPTで、画像を挿入する時の説明で、あると思います。
そして、マイクロソフトは米国の会社ですから、そのままにします。
ロボット開発についてです。
目次は次の通りです。
- ロボット開発の基礎
- 要素技術
- 大分類
- HWの概要
- SWの概要
- 開発手順
- ROSを用いた方法
- HW開発
- SW開発
- OpenRTM-aistを用いた方法
- HW開発
- SW開発
- ROSを用いた方法
1. ロボット開発の基礎
要素技術、大分類、HWの概要、SWの概要
要素技術
ロボットは次のような要素技術で動く
- IT (システムやプログラム)
- 電気電子 (WiFiや配線)
- 機械 (モーターやギア)
大分類
ロボットは次に分類できる
- HW (ハードウェア)
- 機械、電気電子的な要素
- SW (ソフトウェア)
- IT的な要素
一般的な開発方法
- 汎用制御PCや汎用マイコンを選定する
- Jetson、Raspberry Pi、M5 Stack、ESP 32、Spresense…
- モーターやギアを選定する
- アクチュエーター、サーボモーター、ギア(変速機・減速機)
- アクチュエーター: 電気等を機械的な動きに変換し、機器を正確に動かす駆動装置
- サーボモーター: 位置や速度、回転力(トルク)を正確に実現するモーター
- 変速機: ギヤの組み合わせで変速を行う装置 (速度は可変)
- 減速機: 上記のうち、速度が一定速のもの
- アクチュエーター、サーボモーター、ギア(変速機・減速機)
- WiFiや配線を考える
- 電力線: ケーブルを使用する (アースを付ける場合もある)
- 信号線: ケーブルやWiFi、Bluetoothを使用する (ケーブル長や応答速度を考慮する)
- 接続: コネクターや、圧着、半田付けを使用する
SWの概要
- ROS: 実質ミドルウェア
- 基本Linux系のOS上で動く
- オープンソースで、世界中の人が開発に使用している
- 開発言語: C++、Python、Java
- RT-middleware: OMG(The Object Management Group)の標準仕様
- Windows、Linux/Unix、Mac OS上で動く
- オープンソースで、国内団体が開発したものが多い
- 開発言語: C++、Python、Java
2. 開発手順
ROSを用いた方法
(対応機器導入、HW開発、SW開発)
OpenRTM-aistを用いた方法
(対応機器導入、HW開発、SW開発)
ROSを用いた方法
- 対応機器を導入する
- 購入する (かなり手っ取り早いが高価格になる)
- 自分で機器を作り対応させる (一気に高難易度化する)
- Linuxをインストールする
- Linux上にROSをインストールする
- ROSにパッケージを入れる
- プログラムを作る等し、コマンドで動かす
- HW開発 (対応機器導入)
- かなり手軽な方法
- 巷で売られているカスタマイズ可能なロボットを購入する
- (PG改造のみの場合)
- 高難易度な方法 ← 多くは営利のため、これをやりたい
- 全部、または一部を設計して作る
- 全部:
- 運動学や逆運動学に基づいて設計し、機械を作る (モーターやギア等も選定する)
- カメラやセンサー等を選定する
- 筐体加工: CADデータを作りファブレスで作る、3Dプリンターで造形する
- 配線: ノイズ等も考慮して設計する、回路設計・半導体設計等を必要に応じてする
- 制御: 上記を汎用ロボットOS等で動かせるようにする ← これも、かなり難しい
- 一部:
- 上記のウチの一部を作る
- HWとSWの融合が、いずれにしても難しい
SW開発 (準備)
1. 汎用PCにLinuxをインストールする
- ROSに合わせたバージョンを選定する
2. Linux上にROS 1/2をインストールする
- バージョンを選定する (Linux と対応する)
3. ROSにパッケージを入れる
- コマンドを打てば、自動的に入る
4. PGを作る
- package.xmlを編集する
- CMakeLists.txtを編集する
- catkin_makeする
OpenRTM-aistを用いた方法
- 対応機器を導入する
- 購入する (かなり手っ取り早いが高価格になる)
- 自分で機器を作り対応させる (一気に高難易度化する)
- Win、Linux等で動作する
- Python等をインストールする
- GUIインストーラーでインストールする
- GUIでノードを繋いで実行する (パラメーター変更やPG動作も可能)
ROSと特に変わらない
- HW開発 (対応機器導入)
- かなり手軽な方法
- 巷で売られているカスタマイズ可能なロボットを購入する
- (PG改造のみの場合)
- 高難易度な方法 ← 多くは営利のため、これをやりたい
- 全部、または一部を設計して作る
- 全部:
- 運動学や逆運動学に基づいて設計し、機械を作る (モーターやギア等も選定する)
- カメラやセンサー等を選定する
- 筐体加工: CADデータを作りファブレスで作る、3Dプリンターで造形する
- 配線: ノイズ等も考慮して設計する、回路設計・半導体設計等を必要に応じてする
- 制御: 上記を汎用ロボットOS等で動かせるようにする ← これも、かなり難しい
- 一部:
- 上記のウチの一部を作る
- HWとSWの融合が、いずれにしても難しい
SW開発 (準備)
1. Pythonをインストールする
- バージョンを合わせる
2. OpenRTM-aistを導入する
- ダウンロードし、インストールする
3. VCVerChangerを実行する
- レジストリーを整えるためである
4. RTSystemEditorを使用する
- ノードとノードを接続し、適宜パラメーターを入力する
2024/6/24
現在、ロボット技術開発により、別に、技術士でなくても、それより、多くの収入が得られる時代になっていると思います。
それ以上の技術士が、いたとしても、多くは、資格によって講演会とか、技術指導とか、出版で、お金を得たりしている位でしょう。
結局、実空間系の技術指導以外の、多くがAIに代替可能な気がしています。
机上の試験が無意味化するかもしれませんから、今後、専門職集団とか、どうなるのでしょうか??
それより、人類とか、どうなるのでしょうか???
更に、ロボットやAIが、自身を作成生成するようになったとしたら、どうなるのでしょうか?
私の予想ですと、人類に残された仕事は、多くが、ロボットやAIに置き換わる中で、
人類という種(しゅ)を絶滅しないようにするとか、人類をサイボーグ化するとかしか無くなる気がしています。
ロボットやAIが、悪用されなければ、よいです。
よい方向にも、そうでない方向にも、絶対値が人間に考えられない位に、大きすぎになるでしょうから。
創薬とかに適切に使われた場合、驚異的なスピードで、もしかすると、不老長寿の薬ができるかもしれません。
ゲノム解読とか、かもしれません。
宇宙の謎が解けるかは、分からないですが。
ただ、結局、高度な倫理観が必要になってくる気がしていて、仮に(大規模な)事故等が起きた場合は、
開発に関連した、法整備がされたり許認可制となっていくような気もしています。
その策定 等は、困難でしょうし、そういったモノを作るのにも、ロボットやAIが使われるのかもしれません。
後、世の中的に、よいロボットやAIと、よくないロボットやAIが、混在していくような気もしています。
もしかすると、よくない学習をしたり、バグ等で壊れて異常な行動を取るモノも出てくるかもしれません。
これからの世の中、技術革新が加速化して不確実性 等があると考えますし、
許認可制であっても、そうでなくても、法整備がどうであろうと、
できるたけ、よいモノを、割合としても、できるだけ沢山作る位しか、社会にとって、よい手は無いといったような気がしています。
2024/7/2
ロボット開発において、作るための情報が、割合として圧倒的に多い訳です。
しかし、セキュリティーや安全な運用 等、それ以外の情報が、ほとんど公開ネット上に無いと思います。
その話から、原発とかと同じで、作るだけ作っておいて、後で、どうなる/どうする のか、分からない、みたいな状況になるのではないか?と思ってしまいました…
今後、そういったことも含めて、世界中で議論が活発化することを期待します。
次の動画は、ROS上で、次を実施したものです。
“roscore” を起動
“rosrun beginner_tutorials talker”を実行
“rosrun beginner_tutorials listener”を実行
これにより、Pub-Sub 通信をしています。
ROS を使う人には、かなり基本的なモノだと思いますが。
@tiktok_tokyo_jp Motion of ROS Basic Program, Publisher (Talker) and Subscriber (Listener). 1. "roscore" 2. "rosrun begineer_tutorials talker" 3. "rosrun begineer_tutorials listener" ROS の基本的なプログラムである、Pusbisher (Talker)とSubscriber (Listener)の動作結果です。
♬ オリジナル楽曲 - tiktok_tokyo_jp
2024/7/4
ROS でturtlesim を動かす様子を動画にしました。
“roscore” を起動
“rosrun turtlesim turtlesim_node”を実行
“rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=/turtle1/cmd_vel _speed:=2.0 _turn:=2.0″を実行
teleoo_twist_keyboard がインストールされていない場合は、次を実行するとよいです。
@tiktok_tokyo_jp Movie of moving turtlesim on ROS. ROS でturtlesim を動かす様子です。
♬ うさぎとかめ - ひばり児童合唱団/藤家虹二クインテット+α
2024/7/22
2024/6/21 の資料の続きです。
3 の実例からです。
- ROSを用いた方法
- OpenRTM-aist を用いた方法
- ROSを用いた方法
- 1. Ubuntu Linux等をインストールする (Ver. を合わせる)
- 2. 適切なVer. のROSをインストールする
- 3. ROS環境を構築する
1.catkinワークスペースを作る
2.catkin_makeする (自動的にファイルが生成される)
3.catkin_create_pkg パッケージ(任意) 属性 (std_msgs,rospy,roscpp等)
4.source devel/setup.bashを実行する
5.package.xml とCMakeLists.txtを適切に編集する (公式HP等 参照)
6.catkin_makeする (コンパイルのようなモノ)
- 4. 動作させたいPGをパッケージ配下に入れる (後述)
Pub・Sub 通信の様子は、上図の通りである。
プログラムは、上図の通りである。 (ROS 公式ホームページを参照)
動作結果は、上図の通りである。 (動画参照<2024/7/2の投稿にもある>)
Pub・Sub通信でできること (ROS)
- 値をデバイス間で転送することができる
- カメラやセンサーの値を転送することができる
- PGやCUIで、ロボットを制御できる
2. OpenRTM-aist を用いた方法
OpenRTM-aist 2.0 インストール
- 1. Winをインストールする (Linux等でもよいはず)
- 2. OpenRTM-aist環境を構築する
1.Python インストール
2.CMake インストール
3.Doxygen インストール
4.Graphviz インストール
- 3. 適切なVer. のOpenRTM-aist をインストールする (この場合、2.0.x)
- 4. VCVerChanger を実行する
Python とCMake、doxygen、Graphviz を、ダウンロードしてインストールする。
OpenRTM-aist-2.0.2 のインストール
OpenRTM-aistをダウンロードし、インストーラーの指示に従いインストールする
※ WinがPCを保護する画面が出た場合でも実行する
VCVerChanger を実行する。
適切なバージョンに合わせる。 (この場合、Visual Studio 16 2019, 2022)
Start Naming Service を実行し、 ConsoleIn.bat と ConsoleOut.bat を起動する
全体起動の様子は、上図の通りである。
RTSystemEditor を開き、
System Diagram を編集する。
ConsoleInとConsoleOut をドラッグ・アンド・ドロップし、矢印を繋ぎ、
Activate Systems を実行する。
OpenRTM-aist 2.0.2 のノード通信の様子は次である。
(YouTube 、TikTok、画像)
@tiktok_tokyo_jp OpenRTM-aist 2.0 Node Communication result. OpenRTM-aist 2.0 ノード通信の結果です。
♬ オリジナル楽曲 - tiktok_tokyo_jp
ノード間通信でできること (RTM)
- 値をデバイス間で転送することができる
- カメラやセンサーの値を転送することができる
- PGやGUI、CUIで、ロボットを制御できる
GUI で制御できるのが、ROS との違いである。
ご清聴ありがとうございました。