- 1台のロボット(Niryo Ned)
- 1台の組立テーブル
- 複数の部品収納棚
ロボットセル生産システムの導入時に重要となる,構成要素 (ロボット・テーブル・部品収納棚) の配置を決定します.
評価関数は,
- ロボットの動作時間
- レイアウトの面積
の2つで多目的最適化計算を行います.
ロボットは,配置された部品収納棚から部品をテーブルに運びます.
ロボットの動作は,
テーブル → 部品収納棚1 → テーブル → 部品収納棚1 → テーブル → ... としています.
このとき,ロボットはすべての部品収納棚,テーブルに届くことが制約となります.
また,各構成要素は重ならないように配置する必要があります.
- シーケンスペアによってレイアウトを生成
- レイアウトの面積を計算
- レイアウトに従ってロボットによって動作計画を実施,
- 実行可能性,ロボットの動作時間を取得
- NSGA-IIで最適化 (1-4を繰り返す)
- レイアウトは,
rectangle_packing_solver
内のシーケンスペアアルゴリズムによって生成されます. - レイアウトの面積は,
layout_generation.py
内のLayout
クラスで計算します. - ロボットの動作時間と実行可能性は,
layout_generation.py
内のRobot
クラスで計算します. - これらは,ロボットの動作計画によって正確な値を取得するために,
layout_ned.py
とSocket通信を行います. layout_ned.py
では,MoveIt!によってロボットの動作計画をシミュレーションします.- NSGA-IIは,
layout_opt.py
で最適化計算を行います.
使用するロボットの都合で,
layout_ned.py
のみPython2系で実装しています.
Python3系,Python2系の両方が必要です.
- python 3.10.7
- python 2.7.17
で動作確認済みです.
Python3では下記バージョンのライブラリが必要です.
ライブラリ | バージョン |
---|---|
pymoo | 0.6.0 |
PyYaml | 6.0 |
Matplotlib | - |
ROS melodic での動作を確認済みです.
Ubuntu 18.04 でサポートされています.
Niryo Nedをシミュレーション環境で使用するために,下記サイトを参考にして環境構築してください.
https://docs.niryo.com/dev/ros/v4.1.1/en/source/installation/ubuntu_18.html
-
新しいターミナルで
$ roslaunch niryo_robot_bringup desktop_rviz_simulation.launch
-
新しいターミナルで
$ python3 layout_opt.py
-
新しいターミナルで
$ python2 layout_ned.py
一覧
layout_generation.py
l.14~
構成要素の数
layout_opt.py
l.16 self.n_rect = 12
コンピュータの性能によっては動作計画の最大時間を伸ばす必要があります.
layout_ned.py
l.55 self.move_group.set_planning_time(0.2)
個体数
layout_opt.py
l.161 pop_size=100
世代数
layout_opt.py
l.169 ('n_gen', 500)