目次
SOBITSが開発した4輪独立ステアリング駆動式のモバイルマニピュレータ(SOBIT PRO)を動かすためのライブラリです.
Warning
初心者の場合,実機のロボットを扱う際に,先輩方に付き添ってもらいながらロボットを動かしましょう.
(上に戻る)
ここで,本レポジトリのセットアップ方法について説明します.
(上に戻る)
まず,以下の環境を整えてから,次のインストール段階に進んでください.
System | Version |
---|---|
Ubuntu | 20.04 (Focal Fossa) |
ROS | Noetic Ninjemys |
Python | 3.8 |
Note
Ubuntu
やROS
のインストール方法に関しては,SOBITS Manualに参照してください.
(上に戻る)
- ROSの
src
フォルダに移動します.$ roscd # もしくは,"cd ~/catkin_ws/"へ移動. $ cd src/
- 本レポジトリをcloneします.
$ git clone https://github.com/TeamSOBITS/sobit_pro_sim
- レポジトリの中へ移動します.
$ cd sobit_pro_sim/
- 依存パッケージをインストールします.
$ bash install.sh
- パッケージをコンパイルします.
$ roscd # もしくは,"cd ~/catkin_ws/"へ移動. $ catkin_make
(上に戻る)
- SOBIT PROの起動する機能をパラメタとしてminimal.launchに設定します.
<!-- Activate Mobile-Base (True), Arm (True), Head (True) --> <arg name="enable_mb" default="True"/> <arg name="enable_arm" default="True"/> <arg name="enable_head" default="True"/> ... <arg name="enable_rviz" default="True"/> ...
Note
使用したい機能に応じて,True
かFalse
かに書き換えてください.
- minimal.launchというlaunchファイルを実行します.
$ roslaunch sobit_pro_sim_bringup minimal.launch
- [任意] デモプログラムを実行してみましょう.
$ roslaunch sobit_pro_sim_library test_control_wheel.launch
Note
SOBIT PROの動作方法に慣れるため,exampleフォルダを確認し,それぞれのサンプルファイルから動作関数を学びましょう.
(上に戻る)
SOBIT PROの移動機構単体で動かすことができます.
- minimal.launchの設定を次にように書き換えます.
<!-- Activate Mobile-Base (True), Arm (True), Head (True) --> <arg name="enable_mb" default="True"/> <arg name="enable_arm" default="False"/> <arg name="enable_head" default="False"/> <!-- URG: lan-cable (True), usb-cable (False) --> <arg name="urg_lan" default="False"/> ...
- minimal.launchというlaunchファイルを実行します.
$ roslaunch sobit_pro_sim_bringup minimal.launch
- [任意] デモプログラムを実行してみましょう.
$ roslaunch sobit_pro_sim_library test_control_wheel.launch
Note
URG(LiDAR)はLAN式通信の場合はTrue
に,USB式通信の場合はFalse
に設定してください.
(上に戻る)
実機を動かす前段階として,Rviz上でSOBIT PROを可視化し,ロボットの構成を表示することができます.
$ roslaunch sobit_pro_description display.launch
(上に戻る)
SOBIT PROと関わるソフトの情報まとめ
SOBIT PROのパンチルト機構とマニピュレータを動かすための情報まとめです.
(上に戻る)
moveToPose()
: 決められたポーズに動かします.bool moveToPose( const std::string& pose_name, // ポーズ名 const double sec = 5.0 // 動作時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
[!NOTE] 既存のポーズはsobit_pro_pose.yamlに確認できます.ポーズの作成方法についてはポーズの設定方法をご参照ください.
-
moveAllJoint()
: すべてのジョイントを任意の角度に動かします.bool sobit::SobitProSimJointController::moveAllJoint ( const double arm_shoulder_tilt_joint, // 回転角度 [rad] const double arm_elbow_upper_tilt_joint, // 回転角度 [rad] const double arm_elbow_lower_tilt_joint, // 回転角度 [rad] const double arm_elbow_lower_pan_joint, // 回転角度 [rad] const double arm_wrist_tilt_joint, // 回転角度 [rad] const double hand_joint, // 回転角度 [rad] const double head_pan_joint, // 回転角度 [rad] const double head_tilt_joint, // 回転角度 [rad] const double sec = 5.0, // 回転時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
-
moveJoint()
: 指定されたジョイントを任意の角度に動かします.bool sobit::SobitProSimJointController::moveJoint ( const Joint joint_num, // ジョイント名 (定数名) const double rad, // 回転角度 [rad] const double sec = 5.0, // 回転時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
[!NOTE]
ジョイント名
はジョイント名をご確認ください.
-
moveArm()
: アームの関節を任意の角度に動かします.bool sobit::SobitProSimJointController::moveArm( const double arm_shoulder_tilt_joint, // 回転角度 [rad] const double arm_elbow_upper_tilt_joint, // 回転角度 [rad] const double arm_elbow_lower_tilt_joint, // 回転角度 [rad] const double arm_elbow_lower_pan_joint, // 回転角度 [rad] const double arm_wrist_tilt_joint, // 回転角度 [rad] const double sec = 5.0, // 回転時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
-
moveHeadPanTilt()
: パンチルト機構を任意の角度に動かす.bool sobit::SobitProSimJointController::moveHeadPanTilt( const double head_camera_pan, // 回転角度 [rad] const double head_camera_tilt, // 回転角度 [rad] const double sec = 5.0, // 移動時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
-
moveHandToTargetCoord()
: ハンドをxyz座標に動かします(把持モード).bool sobit::SobitProSimJointController::moveHandToTargetCoord( const double target_pos_x, // 把持目的地のx [m] const double target_pos_y, // 把持目的地のy [m] const double target_pos_z, // 把持目的地のz [m] const double shift_x, // xyz座標のx軸をシフトする [m] const double shift_y, // xyz座標のy軸をシフトする [m] const double shift_z // xyz座標のz軸をシフトする [m] const double sec = 5.0, // 移動時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
-
moveHandToTargetTF()
: ハンドをtf名に動かします(把持モード).bool sobit::SobitProSimJointController::moveHandToTargetTF( const std::string& target_name, // 把持目的tf名 const double shift_x, // xyz座標のx軸をシフトする [m] const double shift_y, // xyz座標のy軸をシフトする [m] const double shift_z // xyz座標のz軸をシフトする [m] const double sec = 5.0, // 移動時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
-
moveHandToPlaceCoord()
: ハンドをxyz座標に動かします(配置モード).bool sobit::SobitProSimJointController::moveHandToPlaceCoord( const double target_pos_x, // 配置目的地のx [m] const double target_pos_y, // 配置目的地のy [m] const double target_pos_z, // 配置目的地のz [m] const double shift_x, // xyz座標のx軸をシフトする [m] const double shift_y, // xyz座標のy軸をシフトする [m] const double shift_z // xyz座標のz軸をシフトする [m] const double sec = 5.0, // 移動時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
-
moveHandToPlaceTF()
: ハンドをtf名に動かします(配置モード).bool sobit::SobitProSimJointController::moveHandToPlaceTF( const std::string& target_name, // 配置目的tf名 const double shift_x, // xyz座標のx軸をシフトする [m] const double shift_y, // xyz座標のy軸をシフトする [m] const double shift_z // xyz座標のz軸をシフトする [m] const double sec = 5.0, // 移動時間 [s] bool is_sleep = true // 回転後に待機するかどうか );
-
graspDecision()
: ハンドに流れる電流値に応じて,把持判定が決まります.cpp bool sobit::SobitProSimJointController::graspDecision( const int min_curr = 300, // 最小電流値 const int max_curr = 1000 // 最大電流値 );
-
placeDecision()
: ハンドに流れる電流値に応じて,配置判定が決まります.cpp bool sobit::SobitProSimJointController::placeDecision( const int min_curr = 500, // 最小電流値 const int max_curr = 1000 // 最大電流値 );
(上に戻る)
SOBIT PROのジョイント名とその定数名を以下の通りです.
ジョイント番号 | ジョイント名 | ジョイント定数名 |
---|---|---|
0 | arm_shoulder_1_tilt_joint | ARM_SHOULDER_1_TILT_JOINT |
1 | arm_shoulder_2_tilt_joint | ARM_SHOULDER_2_TILT_JOINT |
2 | arm_elbow_upper_1_tilt_joint | ARM_ELBOW_UPPER_1_TILT_JOINT |
3 | arm_elbow_upper_2_tilt_joint | ARM_ELBOW_UPPER_2_TILT_JOINT |
4 | arm_elbow_lower_tilt_joint | ARM_ELBOW_LOWER_TILT_JOINT |
5 | arm_elbow_lower_pan_joint | ARM_ELBOW_LOWER_PAN_JOINT |
6 | arm_wrist_tilt_joint | ARM_WRIST_TILT_JOINT |
7 | hand_joint | HAND_JOINT |
8 | head_pan_joint | HEAD_PAN_JOINT |
9 | head_tilt_joint | HEAD_TILT_JOINT |
(上に戻る)
sobit_pro_pose.yamlというファイルでポーズの追加・編集ができます.以下のようなフォーマットになります.
sobit_pro_pose:
- {
pose_name: "pose_name",
arm_shoulder_1_tilt_joint: 1.57,
arm_elbow_upper_1_tilt_joint: 1.57,
arm_elbow_lower_tilt_joint: 0.0,
arm_elbow_lower_pan_joint: -1.57,
arm_wrist_tilt_joint: -1.57,
hand_joint: 0.0,
head_pan_joint: 0.0,
head_tilt_joint: 0.0
}
...
SOBIT PROの移動機構を動かすための情報まとめです.
(上に戻る)
controlWheelLinear()
: 並進(直進移動・斜め移動・横移動)に移動させます.bool sobit::SobitProSimWheelController::controlWheelLinear ( const double distance_x, // x方向への直進移動距離 [m] const double distance_y, // y方向への直進移動距離 [m] )
controlWheelRotateRad()
: 回転運動を行う(弧度法:Radian)bool sobit::SobitProSimWheelController::controlWheelRotateRad ( const double angle_rad, // 中心回転角度 [rad] )
controlWheelRotateDeg()
: 回転運動を行う(度数法:Degree)bool sobit::SobitProSimWheelController::controlWheelRotateDeg ( const double angle_deg, // 中心回転角度 (deg) )
(上に戻る)
SOBIT PROはオープンソースハードウェアとしてOnShapeにて公開しております.
(上に戻る)
ハードウェアの詳細についてはこちらを確認してください.
- Onshapeにアクセスしましょう.
[!NOTE] ファイルをダウンロードするために,
OnShape
のアカウントを作成する必要はありません.ただし,本ドキュメント全体をコピーする場合,アカウントの作成を推薦します.
Instances
の中にパーツを右クリックで選択します.- 一覧が表示され,
Export
ボタンを押してください. - 表示されたウィンドウの中に,
Format
という項目があります.STEP
を選択してください. - 最後に,青色の
Export
ボタンを押してダウンロードが開始されます.
(上に戻る)
TBD
(上に戻る)
TBD
(上に戻る)
項目 | 詳細 |
---|---|
最大直進速度 | 0.7[m/s] |
最大回転速度 | 0.229[rad/s] |
最大ペイロード | 0.35[kg] |
サイズ (長さx幅x高さ) | 450x450x1250[mm] |
重量 | 16[kg] |
リモートコントローラ | PS3/PS4 |
LiDAR | UST-20LX |
RGB-D | Azure Kinect DK (頭部),RealSense D405 (アーム) |
IMU | LSM6DSMUS |
スピーカー | モノラルスピーカー |
マイク | コンデンサーマイク |
アクチュエータ (アーム) | 2 x XM540-W150, 6 x XM430-W320 |
アクチュエータ (移動機構) | 4 x XM430-W320, 4 x XM430-W210 |
電源 | 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 |
(上に戻る)
- パラメタによるSOBIT PROと移動機構のみの切り替え
- exampleファイルの修正
- OSS
- ドキュメンテーションの充実
- コーディングスタイルの統一
現時点のバッグや新規機能の依頼を確認するためにIssueページ をご覧ください.
(上に戻る)
(上に戻る)