WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

TeamSOBITS/sobit_edu

Repository files navigation

JA | EN

Contributors Forks Stargazers Issues License

SOBIT EDU

目次
  1. 概要
  2. セットアップ
  3.  実行・操作方法
  4.  ソフトウェア
  5.  ハードウェア
  6. マイルストーン
  7. 参考文献

概要

SOBIT EDU

TurtleBot2をベースとしてSOBITSが開発したモバイルマニピュレータ(SOBIT EDU)を動かすためのライブラリである.

Warning

初心者の場合,実機のロボットを扱う際に,先輩方に付き添ってもらいながらロボットを動かしょう.

(上に戻る)

セットアップ

ここで,本レポジトリのセットアップ方法について説明する.

(上に戻る)

環境条件

まず,以下の環境を整えてから,次のインストール段階に進んでください.

System Version
Ubuntu 22.04 (Jammy Jellyfish)
ROS Humble Hawksbill
Python 3.10

Note

UbuntuROSのインストール方法に関しては,SOBIT Manualに参照してください.

(上に戻る)

インストール方法

  1. ROSのsrcフォルダに移動する.
    $ cd ~/colcon_ws/src/
  2. 本レポジトリをcloneする.
     $ git clone https://github.com/TeamSOBITS/sobit_edu
  3. レポジトリの中へ移動する.
    $ cd sobit_edu/
  4. 依存パッケージをインストールする.
    $ bash install.sh
  5. パッケージをコンパイルする.
     $ cd ~/colcon_ws/
     $ colcon build --symlink-install
     $ source ~/colcon_ws/install/setup.sh

(上に戻る)

実行・操作方法

実機のロボットを起動する場合はminimal.launch.pyを実行する.

$ ros2 launch sobit_edu_bringup minimal.launch.py

(上に戻る)

Rviz上の可視化

実機を動かす前段階として,Rviz2上でSOBIT EDUを可視化し,ロボットの構成を表示することができます.

$ ros2 launch sobit_edu_description display.launch.py

正常に動作した場合は,次のようにRvizが表示される. SOBIT EDU Display with Rviz

(上に戻る)

シミュレータの実行方法

SOBIT EDUにはGazebo Fortressのシミュレーション環境が用意されておりますので,実機がなくても,動作確認が可能です.

$ ros2 launch sobit_edu_bringup gz_minimal.launch.py

現時点では,これらの仮想環境が用意されています.

World Name 説明
empty 家具などのない環境を出現.
wrs WRS2020に実施されたTidy Up環境を出現.
small_room AWSが開発された小型部屋のレイアウトを出現.

環境を変更するために,world_modelをgz_minimal.launch.pyで変更してください.

正常に動作した場合は,次のようなGazeboの画面が表示されます.

Tip

実機と同じようなセンサも搭載されていますので,パソコンによって処理が重くなる可能性がありますので,必要なセンサだけをgz_minimal.launch.pyで選択してください.

'enable_gz_lidar'           : 'True',
'enable_gz_imu'             : 'True',

また,複数のSOBIT EDUを同じシミュレーション環境でも出現できます. そのために,gz_minimal.launch.pyでロボットの数に合わせてgz_robot.launch.pyが実行されるようにその設定を加えてください.

robot_nameはロボット間で異なる値を持つ必要があります. さらに,robot_coords_xrobot_coords_y,およびrobot_coords_zでロボットの出現座標を変更できます.

一例はこちらとなります.

# Launch Robot No. 1
IncludeLaunchDescription(
    PythonLaunchDescriptionSource([
        PathJoinSubstitution([
            FindPackageShare('sobit_edu_bringup'),
            'launch',
            'robot.launch.py'
        ])
    ]),
    launch_arguments={
        'robot_name': 'sobit_edu_1',
        'robot_coords_x': '0', # x 
        'robot_coords_y': '0', # y
        'robot_coords_Y': '0', # yaw
        ...
    }.items()
),
# Launch Robot No. 2
IncludeLaunchDescription(
    PythonLaunchDescriptionSource([
        PathJoinSubstitution([
            FindPackageShare('sobit_edu_bringup'),
            'launch',
            'gz_robot.launch.py'
        ])
    ]),
    launch_arguments={
        'robot_name': 'sobit_edu_2',
        'robot_coords_x': '0', # x 
        'robot_coords_y': '2', # y
        'robot_coords_Y': '0', # yaw
        ...
    }.items()
),

(上に戻る)

ソフトウェア

SOBIT EDUと関わるソフトの情報まとめ

ジョイントコントローラ

SOBIT EDUのパンチルト機構とマニピュレータを動かすための情報まとめです.

(上に戻る)

動作方法

  1. move_to_pose : 決められたポーズに動かします.
    # MoveToPose.action
    # Goal
    string pose_name                                # Target pose name
    builtin_interfaces/Duration time_allowance      # Target time length
    ---
    # Result
    bool success                                    # Success / Failure
    string message                                  # Result message
    builtin_interfaces/Duration total_elapsed_time  # Finished time length
    ---
    # Feedback
    string[] current_joint_names                    # Currently moving joint name(s)
    float32[] current_joint_rad                     # Currently moving joint position(s)
    # float32[] current_joint_vel                   # Currently moving joint velocity(s)
    builtin_interfaces/Duration move_time           # Elapsed time length

[!NOTE] 既存のポーズはpose_list.yamlに確認できます.ポーズの作成方法についてはポーズの設定方法をご参照ください.

  1. move_joint : 指定されたジョイント(複数でも可)を任意の角度に動かします.
    # MoveJoint.action
    # Goal
    string[] target_joint_names                     # Target joint name(s)
    float64[] target_joint_rad                      # Target joint position(s)
    builtin_interfaces/Duration time_allowance      # Target time length
    ---
    # Result
    bool success                                    # Success / Failure
    string message                                  # Result message
    builtin_interfaces/Duration total_elapsed_time  # Finished time length
    ---
    # Feedback
    string[] current_joint_names                    # Currently moving joint name(s)
    float64[] current_joint_rad                     # Currently moving joint position(s)
    # float32[] current_joint_vel                   # Currently moving joint velocity(s)
    builtin_interfaces/Duration move_time           # Elapsed time length

[!NOTE] ジョイント名についてはジョイント名をご確認ください.

  1. move_hand_to_target_coord : ハンドをxyz座標に届くように各関節の角度を確認します.

    # MoveHandToTargetCoord.srv
    # Request
    geometry_msgs/TransformStamped target_coord     # Target coordinates
    
    ---
    # Result
    geometry_msgs/Pose move_pose                    # Moving pose for grasping
    string[] target_joint_names                     # List of joint names to move
    float64[] target_joint_rad                      # List of joint angles to move
    bool success                                    # Enable grasp
    string message                                  # Result message
  2. move_hand_to_target_tf : ハンドをtf名に届くように各関節の角度を確認します.

    # MoveHandToTargetTF.srv
    # Request
    string target_frame                             # Frame name to be grasped
    geometry_msgs/TransformStamped tf_differential  # Differential coordinates of Target frame
    ---
    # Result
    geometry_msgs/Pose move_pose                    # Moving pose for grasping
    string[] target_joint_names                     # List of joint names to move
    float64[] target_joint_rad                      # List of joint angles to move
    bool success                                    # Enable grasp
    string message                                  # Result message

(上に戻る)

ジョイント名

SOBIT EDUのジョイント名とその定数名を以下の通りです.

今後追記予定です.

ポーズの設定方法

pose_list.yamlというファイルでポーズの追加・編集ができます.以下のようなフォーマットになります.

poses:
- initial_pose
- detecting_pose

initial_pose:
arm_shoulder_roll   :  0.0
arm_shoulder_pitch  : -1.57
arm_elbow_pitch     :  0.0
arm_forearm_roll    :  0.0
arm_wrist_pitch     :  1.57
arm_wrist_roll      :  0.0
hand                :  0.6
head_camera_pan     :  0.0
head_camera_tilt    :  0.0
...
poses:
- initial_pose
- detecting_pose

initial_pose:
arm_shoulder_roll   :  0.0
arm_shoulder_pitch  : -1.57
arm_elbow_pitch     :  0.0
arm_forearm_roll    :  0.0
arm_wrist_pitch     :  1.57
arm_wrist_roll      :  0.0
hand                :  0.6
head_camera_pan     :  0.0
head_camera_tilt    :  0.0
...

定義したいポース名をposesに追加し,その後ポース名の下に各ジョイントの角度を設定します.

(上に戻る)

ホイールコントローラ

SOBIT EDUの移動機構(Kachaka)を動かすための情報まとめです.

(上に戻る)

動作方法

  1. move_wheel_linear : 並進(前進・後退のみ)に移動させます.(弧度法:meters)

    # MoveWheelLinear.action
    # Goal
    geometry_msgs/Point target_point                # Target Translational Distance
    builtin_interfaces/Duration time_allowance      # Target time length
    ---
    # Result
    bool success                                    # Success / Failure
    string message                                  # Result message
    builtin_interfaces/Duration total_elapsed_time  # Finished time length
    ---
    # Feedback
    geometry_msgs/Point current_point               # Currently displaced distance
    builtin_interfaces/Duration move_time           # Currently elapsed time
  2. move_wheel_rotate : 回転運動を行う.(弧度法:Radian)

    # MoveWheelRotate.action
    # Goal
    float32 target_yaw                              # Target Rotational Distance
    builtin_interfaces/Duration time_allowance      # Target time length
    ---
    # Result
    bool success                                    # Success / Failure
    string message                                  # Result message
    builtin_interfaces/Duration total_elapsed_time  # Finished time length
    ---
    # Feedback
    geometry_msgs/Point current_point               # Currently displaced distance
    builtin_interfaces/Duration move_time           # Currently elapsed time

(上に戻る)

ハードウェア

SOBIT EDUはオープンソースハードウェアとしてOnShapeにて公開しております.

SOBIT EDU in OnShape

(上に戻る)

ハードウェアの詳細についてはこちらを確認してください.

パーツのダウンロード方法

  1. Onshapeにアクセスしてみよう.

[!NOTE] ファイルをダウンロードするために,OnShapeのアカウントを作成する必要はありません.ただし,本ドキュメント全体をコピーする場合,アカウントの作成を推薦します.

  1. Instancesの中にパーツを右クリックで選択します.
  2. 一覧が表示され,Exportボタンを押してください.
  3. 表示されたウィンドウの中に,Formatという項目があります.STEPを選択してください.
  4. 最後に,青色のExportボタンを押してダウンロードが開始されます.

(上に戻る)

電子回路

TBD

(上に戻る)

ロボットの特徴

項目 詳細
最大直進速度 0.65[m/s]
最大回転速度 3.1415[rad/s]
最大ペイロード 0.35[kg]
サイズ (長さx幅x高さ) 640x400x1150[mm]
重量 10.5[kg]
リモートコントローラ PS3/PS4
LiDAR UST-20LX
RGB-D Azure Kinect DK
IMU LSM6DSMUS
スピーカー モノラルスピーカー
マイク モノラルガンマイクロホン
アクチュエータ (アーム) 7 x XM430-W320
移動機構 TurtleBot2
電源 2 x Makita 6.0Ah 18V
PC接続 USB

(上に戻る)

部品リスト(BOM)

部品 型番 個数 購入先
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link
--- --- 1 link

(上に戻る)

マイルストーン

  • OSS
    • ドキュメンテーションの充実
    • コーディングスタイルの統一

現時点のバッグや新規機能の依頼を確認するためにIssueページ をご覧ください.

(上に戻る)

参考文献

(上に戻る)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 15