目次
TurtleBot2をベースとしてSOBITSが開発したモバイルマニピュレータ(SOBIT EDU)を動かすためのライブラリである.
Warning
初心者の場合,実機のロボットを扱う際に,先輩方に付き添ってもらいながらロボットを動かしょう.
(上に戻る)
ここで,本レポジトリのセットアップ方法について説明する.
(上に戻る)
まず,以下の環境を整えてから,次のインストール段階に進んでください.
| System | Version |
|---|---|
| Ubuntu | 22.04 (Jammy Jellyfish) |
| ROS | Humble Hawksbill |
| Python | 3.10 |
Note
UbuntuやROSのインストール方法に関しては,SOBIT Manualに参照してください.
(上に戻る)
- ROSの
srcフォルダに移動する.$ cd ~/colcon_ws/src/
- 本レポジトリをcloneする.
$ git clone https://github.com/TeamSOBITS/sobit_edu
- レポジトリの中へ移動する.
$ cd sobit_edu/ - 依存パッケージをインストールする.
$ bash install.sh
- パッケージをコンパイルする.
$ cd ~/colcon_ws/ $ colcon build --symlink-install $ source ~/colcon_ws/install/setup.sh
(上に戻る)
実機のロボットを起動する場合はminimal.launch.pyを実行する.
$ ros2 launch sobit_edu_bringup minimal.launch.py(上に戻る)
実機を動かす前段階として,Rviz2上でSOBIT EDUを可視化し,ロボットの構成を表示することができます.
$ ros2 launch sobit_edu_description display.launch.py(上に戻る)
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_x,robot_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のパンチルト機構とマニピュレータを動かすための情報まとめです.
(上に戻る)
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に確認できます.ポーズの作成方法についてはポーズの設定方法をご参照ください.
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] ジョイント名についてはジョイント名をご確認ください.
-
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
-
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)を動かすための情報まとめです.
(上に戻る)
-
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
-
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にて公開しております.
(上に戻る)
ハードウェアの詳細についてはこちらを確認してください.
- Onshapeにアクセスしてみよう.
[!NOTE] ファイルをダウンロードするために,
OnShapeのアカウントを作成する必要はありません.ただし,本ドキュメント全体をコピーする場合,アカウントの作成を推薦します.
Instancesの中にパーツを右クリックで選択します.- 一覧が表示され,
Exportボタンを押してください. - 表示されたウィンドウの中に,
Formatという項目があります.STEPを選択してください. - 最後に,青色の
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 |
(上に戻る)
| 部品 | 型番 | 個数 | 購入先 |
|---|---|---|---|
| --- | --- | 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ページ をご覧ください.
(上に戻る)
(上に戻る)


