|
sciurus17_examples package from sciurus17 reposciurus17 sciurus17_bringup sciurus17_control sciurus17_description sciurus17_examples sciurus17_gazebo sciurus17_moveit_config sciurus17_msgs sciurus17_tools sciurus17_vision |
Package Summary
| Tags | No category tags. |
| Version | 0.0.0 |
| License | NON-COMMERCIAL LICENSE AGREEMENT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/rt-net/sciurus17_ros.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2019-04-09 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
Package Description
Additional Links
Maintainers
- RT Corporation
Authors
- Daisuke Sato
- Hiroyuki Nomura
sciurus17_examples
Sciurus17のためのパッケージ、 sciurus17 で用いるサンプルをまとめたパッケージです。
システムの起動方法
Sciurus17の頭部カメラ、胸部カメラ、制御信号の各ケーブルを制御用パソコンへ接続します。
本体の電源をONにしカメラが接続されていることを確認します。
Terminalを開き、 sciurus17_bringup の sciurus17_bringup.launch を起動します。このlaunchファイルには次のオプションが用意されています。
- use_rviz (default: true)
Rvizを使用する/使用しない - use_head_camera (default: true)
頭部カメラを使用する/使用しない - use_chest_camera (default: true)
胸部カメラを使用する/使用しない
シミュレータを使う場合
実機無しで動作を確認する場合、制御信号のケーブルを接続しない状態で次のコマンドを実行します。
roslaunch sciurus17_bringup sciurus17_bringup.launch
実機を使う場合
実機で動作を確認する場合、制御信号のケーブルを接続し取り扱い説明書に従いモータパワーをONにした状態で次のコマンドを実行します。
roslaunch sciurus17_bringup sciurus17_bringup.launch
カメラを使用しない場合
次のようにオプションを指定するとカメラを使用しない状態で起動します。
roslaunch sciurus17_bringup sciurus17_bringup.launch use_head_camera:=false use_chest_camera:=false
rvizを使用しない場合
次のようにオプションを指定するとrvizによる画面表示を使用しない状態で起動します。画面表示を省略することで制御用パソコンの負荷を下げることができます。
roslaunch sciurus17_bringup sciurus17_bringup.launch use_rviz:=false
サンプルの実行方法
sciurus17_bringup.launchを実行している状態で各サンプルを実行することができます。
gripper_action_example.pyの実行
両腕のハンドを開閉させるコード例です。
次のコマンドで26度まで開いて閉じる動作を実行します。
rosrun sciurus17_examples gripper_action_example.py
neck_joint_trajectory_example.pyの実行
首の角度を変更するコード例です。 次のコマンドで頭を上下左右へ向ける動作を実行します。
rosrun sciurus17_examples neck_joint_trajectory_example.py
waist_joint_trajectory_example.pyの実行
腰の角度を変更するコード例です。 次のコマンドで腰を左右へひねる動作を実行します。
rosrun sciurus17_examples waist_joint_trajectory_example.py
動作させるとこちらのような動きになります。
Pick & Place デモの実行
右手でターゲットを掴んで動かすデモ動作を次のコマンドで実行します。腰の回転も使用します。
rosrun sciurus17_examples pick_and_place_right_arm_demo.py
動作させるとこちらのような動きになります。
左手でターゲットを掴んで動かすデモ動作を次のコマンドで実行します。
rosrun sciurus17_examples pick_and_place_left_arm_demo.py
動作させるとこちらのような動きになります。
両手でターゲットを掴んで動かすデモ動作を次のコマンドで実行します。
rosrun sciurus17_examples pick_and_place_two_arm_demo.py
hand_position_publisherの実行
tfの機能でリンク位置を求めるノード例です。
l_link7とr_link7について、base_linkを基準とした座標をそれぞれ/sciurus17/hand_pos/leftトピックと
/sciurus17/hand_pos/rightトピックへ配信します。
次のコマンドでノードを起動します。
rosrun sciurus17_examples hand_position_publisher_example.py
head_camera_tracking.pyの実行
頭のカメラを使うコード例です。 OpenCVを使ってボール追跡と顔追跡をします。
次のコマンドでOpenCVのPythonライブラリをインストールしてください。
pip2 install opencv-python
次のコマンドでノードを起動します。
rosrun sciurus17_examples head_camera_tracking.py
ボール追跡をする場合
./scripts/head_camera_tracking.pyを編集します。
def _image_callback(self, ros_image):
# ~~~ 省略 ~~~
# オブジェクト(特定色 or 顔) の検出
output_image = self._detect_orange_object(input_image)
# output_image = self._detect_blue_object(input_image)
# output_image = self._detect_face(input_image)
動作させるとこちらのような動きになります。
- 動画で使用しているボールは、アールティショップの こちらのページ で購入できます。
顔追跡をする場合
./scripts/head_camera_tracking.pyを編集します。
顔追跡にはカスケード型分類器を使用します。
カスケードファイルのディレクトリを設定してください。 USER_NAME は環境に合わせて書き換えてください。
class ObjectTracker:
def __init__(self):
# ~~~ 省略 ~~~
# カスケードファイルの読み込み
# 例
# self._face_cascade = cv2.CascadeClassifier("/home/USER_NAME/.local/lib/python2.7/site-packages/cv2/data/haarcascade_frontalface_alt2.xml")
# self._eyes_cascade = cv2.CascadeClassifier("/home/USER_NAME/.local/lib/python2.7/site-packages/cv2/data/haarcascade_eye.xml")
self._face_cascade = cv2.CascadeClassifier("/home/USER_NAME/.local/lib/python2.7/site-packages/cv2/data/haarcascade_frontalface_alt2.xml")
self._eyes_cascade = cv2.CascadeClassifier("/home/USER_NAME/.local/lib/python2.7/site-packages/cv2/data/haarcascade_eye.xml")
def _image_callback(self, ros_image):
# ~~~ 省略 ~~~
# オブジェクト(特定色 or 顔) の検出
# output_image = self._detect_orange_object(input_image)
# output_image = self._detect_blue_object(input_image)
output_image = self._detect_face(input_image)
動作させるとこちらのような動きになります。
chest_camera_tracking.pyの実行
胸のカメラを使うコード例です。 OpenCVを使ってボール追跡をします。
次のコマンドでOpenCVのPythonライブラリをインストールしてください。
pip2 install opencv-python
次のコマンドでノードを起動します。
rosrun sciurus17_examples chest_camera_tracking.py
動作させるとこちらのような動きになります。
顔追跡とボール追跡の同時実行
頭カメラと胸のカメラの両方を使って、顔追跡とボール追跡をします。
rosrun sciurus17_examples head_camera_tracking.py
# 別のターミナルで実行
rosrun sciurus17_examples chest_camera_tracking.py
動作させるとこちらのような動きになります。
depth_camera_tracking.pyの実行
頭の深度カメラを使うコード例です。 指定深度内の物体を追跡します。
次のコマンドでOpenCVのPythonライブラリをインストールしてください。
pip2 install opencv-python
次のコマンドでノードを起動します。
rosrun sciurus17_examples depth_camera_tracking.py
デフォルトでは検出範囲を4段階に分けています。
検出範囲を変更する場合は./scripts/depth_camera_tracking.pyを編集します。
def _detect_object(self, input_depth_image):
# 検出するオブジェクトの大きさを制限する
MIN_OBJECT_SIZE = 10000 # px * px
MAX_OBJECT_SIZE = 80000 # px * px
# 検出範囲を4段階設ける
# 単位はmm
DETECTION_DEPTH = [
(500, 700),
(600, 800),
(700, 900),
(800, 1000)]
preset_pid_gain_example.pyの実行
sciurus17_controlのpreset_reconfigureを使うコード例です。
サーボモータのPIDゲインを一斉に変更できます。
プリセットはsciurus17_control/scripts/preset_reconfigure.py にて編集できます。
次のコマンドを実行すると、preset_reconfigure.pyとpreset_pid_gain_example.pyのノードを起動します。
roslaunch sciurus17_examples preset_pid_gain_example.launch
Wiki Tutorials
Source Tutorials
Package Dependencies
| Deps | Name | |
|---|---|---|
| 1 | sciurus17_moveit_config | |
| 1 | catkin | |
| 2 | moveit_commander | |
| 2 | cv_bridge |
System Dependencies
Dependant Packages
| Name | Repo | Deps |
|---|---|---|
| sciurus17 | github-rt-net-sciurus17_ros |