コラム
ロボティクス関連で、感じたこと等を載せています。
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 との違いである。
ご清聴ありがとうございました。
2024/9/26
背景としては、PC を全くの更地?(ユーザーファイル等 含む)にする際に、
いっその事、Linux とのデュアルブート化を施して、Linux + ROS2 + Autoware 環境を実現しよう、とか思いました。
(HW 的な性能は足りていると「現在」思っています)
以前は、Autoware がHW 的にGUI起動はしませんでしたが。 (VirtualBox上ではNVIDIAのCUDA直起動ができないからと思っています)
ちなみに、Autoware は「趣味」であって、今のところ業務では、ないです。
外部SSD でUbuntu Linuxが起動するように、ガチャガチャやっていました。
まず、パーティションで、マウントポイントを指定するところに”/”を入れ忘れているという事に気が付くのに、時間を消費しました。
更に、/cdrom がアンマウントされないといった事が表示されていたので、UEFI設定で、SATAをAHCIからRAIDに変更しましたが、変わりませんでした。
滅茶苦茶、困った訳ですが、インストールを途中で中断すると、更地のUbuntuが使えるので、そこで「端末」を開いて、”umount /cdrom”と入れました。
しかし、まだアンマウントされないと出ていたので、確か”umount -a -t /cdrom”と入れたところ、ビジー状態でアンマウントできないと出ました。
よって、”umount -l /cdrom”とコマンドを叩いたところ、アンマウント「は」できました。
しかし、それまでの設定上、バグったのかどうか知らないですが、エラー画面が出て、先に進めないという状況です。
よって、AHCIに戻して、DVD/CD-ROMをDisabledに変更して実施すると、どうなるのか、試そうとしましたが、それが原因では、ありませんでした。
SATA → RAID → “umount -l /cdrom” or “umount -a -t /cdrom”が正解なのかとか、
SATA → AHCI → DVD → Disabled → “umount -l /cdrom” or “umount -a -t /cdrom”で上手く行くとも思っていましたが…
(実際にアンマウントできたモノの、やはり、先に進めなかったです)
今更、Linuxのインストール時でも”Ctrl + Alt + T”を押すことで「端末(ターミナル)」が開くという事が分かりました。
ここには、インストールには、SSD「と」USBメモリーが必要とあります。
参考にしたのは、次のサイトです。
https://zenn.dev/karaage0703/articles/0ca67e19aa772e
https://zenn.dev/karaage0703/articles/d38e17bd6efbaa
https://magidropack.hatenablog.com/entry/2018/11/04/011715#chapter01
https://atmarkit.itmedia.co.jp/ait/articles/1802/16/news025.html
https://forums.ubuntulinux.jp/viewtopic.php?id=5876
https://www.itechguides.com/no-root-file-system-is-defined/
https://forums.ubuntulinux.jp/viewtopic.php?id=5876
https://qiita.com/karaage0703/items/e79a8ad2f57abc6872aa
私は、SSDのみで実施したので、それで失敗しているのかもしれないと思いました。
ただ、色々と設定しても、できないことが分かったので、ブートローダーを消す事にしました。参考にしたのは次です。
【Ubuntu】【上級者向け】Grubブートローダを削除する
https://qiita.com/arkoudha/items/98136ddf1432e904d215
【Ubuntu】【上級者向け】Grubブートローダをインストールする
Ubuntuが起動しないエラーが起きたので、次を参考に直しました。
・ Ubuntuインストール時にエラーが出た
https://askubuntu.com/questions/1425691/ubuntu-freezes-on-first-start-after-installation
・ 最初の起動でUbuntuがフリーズした
https://askubuntu.com/questions/858082/i-o-error-during-ubuntu-installation
・ 次を入れたら直った
https://docs.nvidia.com/datacenter/tesla/tesla-release-notes-515-65-07/index.html
次をやろうと思いました。
https://bbs.archlinux.org/viewtopic.php?id=279602
結局は、”/dev/sda1″が”/mnt/boot/efi”にマウントされていたので、
単純な”/boot/efi”「か」”./”にマウントしました。 (詳しくは覚えていないです)
本当は、SSD内にブートローダーを入れて、SSDを繋いだ場合にWinやLinuxが選べるようにしたかったですが、それは、諦めました。
(起動時に、起動デバイスをUEFIで指定したら、よいからです)
上図のようにクローニングしました。
ソースとターゲットを間違えると、悲惨ですが。
2024/11/4
「個人環境としては」かなり久しぶりにVSCodeでの、CとPython環境を構築しました。PCを一からキッティングしたためです。
ここで”MinGW”を使ったコンパイルでなく”Code Runner”みたいなモノを使う方が、構築が楽で、
エラーみたいなモノも出ないで、
コンパイル実行できるみたいな事を思い出しました。
それだと不味いのかどうかは、不明です。
参照:
WindowsへのC言語・C++用コンパイラ導入方法【MinGW】
2024/11/4
#include <Arduino.h> が、できない問題が発生していましたが、
WorkSpaceフォルダーを新しくしてから、また、同じ内容をコピペしたら直りました。 (.vscodeフォルダーを消すだけだと、ダメでした)
参照: https://community.platformio.org/t/cannot-open-source-file-arduino-h/8044/21?page=2
2024/11/9
「Docker使用で」ROS 2環境を整備しました。
(更地から、Docker等 不使用で、直でデバイスにインストールしたとしたら、ずっと時間がかかると思います)
docker desktopをインストールして、次のようにするとよいです。
インストール中に、メアドを入れる事を促されますが、別にSkipしても、よいと現在思っています。
(機能が削られる位らしいです。何の機能かは、知らないですが)
参照: https://github.com/Tiryoh/docker-ros2-desktop-vnc
turtlesim を動かしました。
2024/11/15
ROS 2とかで一定の試行をしています。
上図は、turtlesimとVSCode連携を試したものです。
@tiktok_tokyo_jp Realized ROS 2 Publisher & Subscriber Communication. ROS2でPublisherとSubscriberの通信を実現しました。 #ROS2
♬ オリジナル楽曲 - tiktok_tokyo_jp
上記動画は、実際にROS 2でturtlesimを動かしたモノです。
2024/11/15
ROS 2とUnityを連携させるために、図のように、Unityをダウンロードして、インストールし、起動しました。
(メールアドレスを登録する必要があると思います)
ハッキリ言って、それらが、Ryzen 9でRAM 128 GBのPCでさえも、処理時間がかかりました。
2024/11/15
自作PCが起動していなかったので、これを試したら直りました。嘘みたいだと思ったら、本当でした。
『Q-LED(ブートランプ)が「DRAM」点灯時の原因追及』
『電源ケーブル半刺さり』
https://note.com/satoshi_oda/n/n79f993457b31#d7bebf8b-273a-47da-a358-e0be320ef39a
ついでに、UEFI起動前?に「キーボードが見つかりません」的な画面が表示される問題が発生していました。
それは何が原因なのかと思ったら、
「KVMスイッチ」
でした。
最初は、マザーボードの故障や、ケーブル不調を疑いましたが、
PCのUSBに、キーボードを直刺ししたところ、その画面表示は出ませんでしたから。
上が新しいKVMスイッチです。
下が古いKVMスイッチです。
なお、古いKVMスイッチは、どれ位かは分かりませんけど、
かなり使った感があります。