crane_x7_examples package from crane_x7 repocrane_x7 crane_x7_bringup crane_x7_control crane_x7_examples crane_x7_gazebo crane_x7_moveit_config crane_x7_msgs |
|
Package Summary
Tags | No category tags. |
Version | 2.0.0 |
License | Apache License 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/rt-net/crane_x7_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2023-09-29 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- RT Corporation
Authors
- Daisuke Sato
- Hiroyuki Nomura
English | 日本語 |
crane_x7_examples
CRANE-X7のためのパッケージ、 crane_x7
で用いるサンプルをまとめたパッケージです。
システムの起動方法
CRANE-X7の制御信号ケーブルを制御用パソコンへ接続します。
Terminalを開き、crane_x7_bringup
のdemo.launch
を起動します。
このlaunchファイルには次のオプションが用意されています。
- fake_execution (default: true)
実機を使用する/使用しない
簡易シミュレータを使う場合
実機無しで動作を確認する場合、 制御信号ケーブルを接続しない状態で次のコマンドを実行します。
roslaunch crane_x7_bringup demo.launch fake_execution:=true
物理演算やセンサを含めたシミュレーションは、 後述の「Gazeboを使う場合」の手順に従ってください。
実機を使う場合
実機で動作を確認する場合、 制御信号ケーブルを接続した状態で次のコマンドを実行します。
roslaunch crane_x7_bringup demo.launch fake_execution:=false
ケーブルの接続ポート名はデフォルトで/dev/ttyUSB0
です。
別のポート名(例: /dev/ttyUSB1)を使う場合は次のコマンドを実行します。
roslaunch crane_x7_bringup demo.launch fake_execution:=false port:=/dev/ttyUSB1
Gazeboを使う場合
次のコマンドで起動します。実機との接続やcrane_x7_bringupの実行は必要ありません。
roslaunch crane_x7_gazebo crane_x7_with_table.launch
Run Examples
demo.launch
を実行している状態で各サンプルを実行できます。
- gripper_action_example
- pose_groupstate_example
- joint_values_example
- cartesian_path_example
- crane_x7_pick_and_place_demo
- preset_pid_gain_example
- teaching_example
- joystick_example
- obstacle_avoidance_example
- servo_info_example
- pick_and_place_in_gazebo_example
gripper_action_example
ハンドを開閉させるコード例です。 このサンプルは実機動作のみに対応しています。
次のコマンドで45度まで開いて閉じる動作を実行します。
rosrun crane_x7_examples gripper_action_example.py
<img src=https://rt-net.github.io/images/crane-x7/gazebo_gripper_example.gif width=500px />
pose_groupstate_example
group_stateを使うコード例です。
SRDFファイルcrane_x7_moveit_config/config/crane_x7.srdf
に記載されているhome
とvertical
の姿勢に移行します。
次のコマンドを実行します。
rosrun crane_x7_examples pose_groupstate_example.py
<img src=https://rt-net.github.io/images/crane-x7/gazebo_pose_groupstate.gif width=500px />
joint_values_example
moveit_commanderを使用して、アームのジョイント角度を1つずつ変更させるコード例です。
次のコマンドを実行します。
rosrun crane_x7_examples joint_values_example.py
<img src= https://rt-net.github.io/images/crane-x7/gazebo_joint_values_example.gif width = 500px />
cartesian_path_example
moveit_commanderでCartesian Path を生成し、手先で円を描くコード例です。
次のコマンドを実行します。
rosrun crane_x7_examples cartesian_path_example.py
Videos
crane_x7_pick_and_place_demo
モノを掴む・持ち上げる・運ぶ・置くコード例です。
次のコマンドを実行します。
rosrun crane_x7_examples crane_x7_pick_and_place_demo.py
<img src = https://rt-net.github.io/images/crane-x7/bringup_rviz.gif width = 500px />
実機を使う場合
CRANE-X7から20cm離れた位置にピッキング対象を設置します。
<img src = https://rt-net.github.io/images/crane-x7/bringup.jpg width = 500px />
サンプルで使用しているこのオレンジ色のソフトボールはRT ROBOT SHOPのこちらのページから入手することができます。
Videos
preset_pid_gain_example
crane_x7_control
のpreset_reconfigure
を使うコード例です。
サーボモータのPIDゲインを一斉に変更できます。
プリセットはcrane_x7_control/scripts/preset_reconfigure.py にて編集できます。
次のコマンドを実行すると、preset_reconfigure.py
とpreset_pid_gain_example.py
のノードを起動します。
roslaunch crane_x7_examples preset_pid_gain_example.launch
Videos
teaching_example
ティーチングのコード例です。X7のPIDゲインを小さくすることでダイレクトティーチングができます。
次のコマンドでノードを起動します。
roslaunch crane_x7_examples teaching_example.launch
以下のキー割当を参考に、キーボードから操作してください。
Teaching Mode
起動時のモードです。トルクOFF*状態です。
キー | 機能 |
---|---|
s / S | 現在の姿勢を保存 |
d / D | これまでに保存した姿勢を削除 |
m / M | Action Modeへ遷移 |
q / Q | シャットダウン |
Action Mode
Teaching Modeから遷移します。トルクON*状態です。
キー | 機能 |
---|---|
p / P | 保存した姿勢を1つずつ再生 |
a / A | 保存した姿勢のすべてを連続再生 |
l / L | ループ再生 ON / OFF |
m / M | Teaching Modeへ遷移 |
q / Q | シャットダウン |
- トルクのON / OFFはサーボモータのPIDゲインに小さい値をプリセットすることで実現しています。
Videos
joystick_example
ジョイスティックでX7を動かすコード例です。 手先の位置・姿勢の変更、グリッパーの開閉、PIDゲインのプリセット、ティーチングができます。
ジョイスティックをPCに接続し、/dev/input/js0
が存在することを確認してください。
次のコマンドでノードを起動します。
実機を使う場合
roslaunch crane_x7_examples joystick_example.launch
シミュレータを使う場合
シミュレータを使う場合は、エラーを防ぐためsim
オプションを追加してください。
roslaunch crane_x7_examples joystick_example.launch sim:=true
キー割り当ての変更
デフォルトのキー割り当てはこちらです。ジョイスティックは Logicool Wireless Gamepad F710 を使っています。
<img src= https://rt-net.github.io/images/crane-x7/joystick_example_key_config.png width = 900px />
crane_x7_example/launch/joystick_example.launch のキー番号を編集することで、キー割り当てを変更できます。
<node name="joystick_example" pkg="crane_x7_examples" type="joystick_example.py" required="true" output="screen">
<!-- 使用するジョイスティックコントローラに合わせてvalueを変更してください -->
<!-- ひとつのボタンに複数の機能を割り当てています -->
<param name="button_shutdown_1" value="8" type="int" />
<param name="button_shutdown_2" value="9" type="int" />
<param name="button_name_enable" value="7" type="int" />
<param name="button_name_home" value="8" type="int" />
<param name="button_preset_enable" value="7" type="int" />
<param name="button_preset_no1" value="9" type="int" />
デフォルトのキー番号はこちらです。
<img src = https://rt-net.github.io/images/crane-x7/joystick_example_key_numbers.png width = 900px />
ジョイスティックのキー番号はトピック/joy
で確認できます。
# ノードを起動する
roslaunch crane_x7_examples joystick_example.launch sim:=true
# 別のターミナルでコマンドを入力
rostopic echo /joy
# ジョイスティックのボタンを押す
header:
seq: 1
stamp:
secs: 1549359364
nsecs: 214800952
frame_id: ''
axes: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
buttons: [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
---
Videos
obstacle_avoidance_example
ROSのServiceを使って、障害物の追加と障害物回避をするコード例です。
次のコマンドでノードを起動します。
roslaunch crane_x7_examples obstacle_avoidance_example.launch
このサンプルでは目標姿勢と障害物の大きさ・姿勢を定義したサービスファイルを使用します。
目標姿勢と障害物の大きさ・姿勢は
crane_x7_examples/scripts/obstacle_client.py
を編集することで変更できます。
デフォルトでは、直方体の箱を障害物として設定しています。
# 障害物を設定
obstacle_name = "box"
obstacle_size = Vector3(0.28, 0.16, 0.14)
obstacle_pose_stamped = PoseStamped()
obstacle_pose_stamped.header.frame_id = "/base_link"
obstacle_pose_stamped.pose.position.x = 0.35
obstacle_pose_stamped.pose.position.z = obstacle_size.z/2.0
安全のため障害物として床を設置しています。
不要であればcrane_x7_examples/scripts/obstacle_avoidance_example.py
を編集してください。
# 安全のため床を障害物として生成する
floor_name = "floor"
floor_size = (2.0, 2.0, 0.01)
floor_pose = PoseStamped()
floor_pose.header.frame_id = "/base_link"
floor_pose.pose.position.z = -floor_size[2]/2.0
scene.add_box(floor_name, floor_pose, floor_size)
rospy.sleep(SLEEP_TIME)
moveitが障害物回避のパスを生成できない場合、X7は動作せず、次の目標位置に対するパスを計算します。
この場合、サーバからの返答はresult=False
となります。
<img src = https://rt-net.github.io/images/crane-x7/gazebo_obstacle_avoidance.gif width = 500px />
servo_info_example
サーボモータ(joint)の情報を取得するコード例です。
次のコマンドでノードを起動します。
rosrun crane_x7_examples servo_info_example.py
このサンプルではグリッパーのモータcrane_x7_gripper_finger_a_joint
のトピックを取得しています。
実行するとターミナル画面にモータの電流・位置・温度が表示されます。
# 表示例
current [mA]: 0.0 dxl_position: 2634 temp [deg C]: 42.0
current [mA]: 2.69 dxl_position: 2634 temp [deg C]: 42.0
current [mA]: 0.0 dxl_position: 2634 temp [deg C]: 42.0
current [mA]: 0.0 dxl_position: 2634 temp [deg C]: 42.0
current [mA]: 2.69 dxl_position: 2634 temp [deg C]: 42.0
...
また、電流が一定値を超えるとグリッパーを開く(閉じる)処理を入れてます。 これにより、手でグリッパーを開く(閉じる)ことができます。
トピックの詳細については、crane_x7_control/README.md
を確認してください。
pick_and_place_in_gazebo_example
Gazebo上のモノを掴む・持ち上げる・運ぶ・置くコード例です。
gripperをEffortControllerで制御するため、オプションを追加してGazeboを起動します。
roslaunch crane_x7_gazebo crane_x7_with_table.launch use_effort_gripper:=true
Gazebo起動後、次のコマンドでサンプルを実行します。
rosrun crane_x7_examples pick_and_place_in_gazebo_example.py
<img src = https://rt-net.github.io/images/crane-x7/gazebo_pick_and_place.gif width = 500px />
Videos
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
crane_x7_moveit_config | |
std_msgs | |
geometry_msgs | |
message_generation | |
catkin | |
moveit_commander | |
message_runtime | |
joy |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
crane_x7 |
Launch files
- launch/obstacle_avoidance_example.launch
- launch/teaching_example.launch
- launch/preset_pid_gain_example.launch
- launch/joystick_example.launch
-
- joydev [default: /dev/input/js0]
- sim [default: false]
Messages
Services
Plugins
Recent questions tagged crane_x7_examples at Robotics Stack Exchange
crane_x7_examples package from crane_x7 repocrane_x7 crane_x7_bringup crane_x7_control crane_x7_examples crane_x7_gazebo crane_x7_moveit_config crane_x7_msgs |
|
Package Summary
Tags | No category tags. |
Version | 2.0.0 |
License | Apache License 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/rt-net/crane_x7_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2023-09-29 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- RT Corporation
Authors
- Daisuke Sato
- Hiroyuki Nomura
English | 日本語 |
crane_x7_examples
CRANE-X7のためのパッケージ、 crane_x7
で用いるサンプルをまとめたパッケージです。
システムの起動方法
CRANE-X7の制御信号ケーブルを制御用パソコンへ接続します。
Terminalを開き、crane_x7_bringup
のdemo.launch
を起動します。
このlaunchファイルには次のオプションが用意されています。
- fake_execution (default: true)
実機を使用する/使用しない
簡易シミュレータを使う場合
実機無しで動作を確認する場合、 制御信号ケーブルを接続しない状態で次のコマンドを実行します。
roslaunch crane_x7_bringup demo.launch fake_execution:=true
物理演算やセンサを含めたシミュレーションは、 後述の「Gazeboを使う場合」の手順に従ってください。
実機を使う場合
実機で動作を確認する場合、 制御信号ケーブルを接続した状態で次のコマンドを実行します。
roslaunch crane_x7_bringup demo.launch fake_execution:=false
ケーブルの接続ポート名はデフォルトで/dev/ttyUSB0
です。
別のポート名(例: /dev/ttyUSB1)を使う場合は次のコマンドを実行します。
roslaunch crane_x7_bringup demo.launch fake_execution:=false port:=/dev/ttyUSB1
Gazeboを使う場合
次のコマンドで起動します。実機との接続やcrane_x7_bringupの実行は必要ありません。
roslaunch crane_x7_gazebo crane_x7_with_table.launch
Run Examples
demo.launch
を実行している状態で各サンプルを実行できます。
- gripper_action_example
- pose_groupstate_example
- joint_values_example
- cartesian_path_example
- crane_x7_pick_and_place_demo
- preset_pid_gain_example
- teaching_example
- joystick_example
- obstacle_avoidance_example
- servo_info_example
- pick_and_place_in_gazebo_example
gripper_action_example
ハンドを開閉させるコード例です。 このサンプルは実機動作のみに対応しています。
次のコマンドで45度まで開いて閉じる動作を実行します。
rosrun crane_x7_examples gripper_action_example.py
<img src=https://rt-net.github.io/images/crane-x7/gazebo_gripper_example.gif width=500px />
pose_groupstate_example
group_stateを使うコード例です。
SRDFファイルcrane_x7_moveit_config/config/crane_x7.srdf
に記載されているhome
とvertical
の姿勢に移行します。
次のコマンドを実行します。
rosrun crane_x7_examples pose_groupstate_example.py
<img src=https://rt-net.github.io/images/crane-x7/gazebo_pose_groupstate.gif width=500px />
joint_values_example
moveit_commanderを使用して、アームのジョイント角度を1つずつ変更させるコード例です。
次のコマンドを実行します。
rosrun crane_x7_examples joint_values_example.py
<img src= https://rt-net.github.io/images/crane-x7/gazebo_joint_values_example.gif width = 500px />
cartesian_path_example
moveit_commanderでCartesian Path を生成し、手先で円を描くコード例です。
次のコマンドを実行します。
rosrun crane_x7_examples cartesian_path_example.py
Videos
crane_x7_pick_and_place_demo
モノを掴む・持ち上げる・運ぶ・置くコード例です。
次のコマンドを実行します。
rosrun crane_x7_examples crane_x7_pick_and_place_demo.py
<img src = https://rt-net.github.io/images/crane-x7/bringup_rviz.gif width = 500px />
実機を使う場合
CRANE-X7から20cm離れた位置にピッキング対象を設置します。
<img src = https://rt-net.github.io/images/crane-x7/bringup.jpg width = 500px />
サンプルで使用しているこのオレンジ色のソフトボールはRT ROBOT SHOPのこちらのページから入手することができます。
Videos
preset_pid_gain_example
crane_x7_control
のpreset_reconfigure
を使うコード例です。
サーボモータのPIDゲインを一斉に変更できます。
プリセットはcrane_x7_control/scripts/preset_reconfigure.py にて編集できます。
次のコマンドを実行すると、preset_reconfigure.py
とpreset_pid_gain_example.py
のノードを起動します。
roslaunch crane_x7_examples preset_pid_gain_example.launch
Videos
teaching_example
ティーチングのコード例です。X7のPIDゲインを小さくすることでダイレクトティーチングができます。
次のコマンドでノードを起動します。
roslaunch crane_x7_examples teaching_example.launch
以下のキー割当を参考に、キーボードから操作してください。
Teaching Mode
起動時のモードです。トルクOFF*状態です。
キー | 機能 |
---|---|
s / S | 現在の姿勢を保存 |
d / D | これまでに保存した姿勢を削除 |
m / M | Action Modeへ遷移 |
q / Q | シャットダウン |
Action Mode
Teaching Modeから遷移します。トルクON*状態です。
キー | 機能 |
---|---|
p / P | 保存した姿勢を1つずつ再生 |
a / A | 保存した姿勢のすべてを連続再生 |
l / L | ループ再生 ON / OFF |
m / M | Teaching Modeへ遷移 |
q / Q | シャットダウン |
- トルクのON / OFFはサーボモータのPIDゲインに小さい値をプリセットすることで実現しています。
Videos
joystick_example
ジョイスティックでX7を動かすコード例です。 手先の位置・姿勢の変更、グリッパーの開閉、PIDゲインのプリセット、ティーチングができます。
ジョイスティックをPCに接続し、/dev/input/js0
が存在することを確認してください。
次のコマンドでノードを起動します。
実機を使う場合
roslaunch crane_x7_examples joystick_example.launch
シミュレータを使う場合
シミュレータを使う場合は、エラーを防ぐためsim
オプションを追加してください。
roslaunch crane_x7_examples joystick_example.launch sim:=true
キー割り当ての変更
デフォルトのキー割り当てはこちらです。ジョイスティックは Logicool Wireless Gamepad F710 を使っています。
<img src= https://rt-net.github.io/images/crane-x7/joystick_example_key_config.png width = 900px />
crane_x7_example/launch/joystick_example.launch のキー番号を編集することで、キー割り当てを変更できます。
<node name="joystick_example" pkg="crane_x7_examples" type="joystick_example.py" required="true" output="screen">
<!-- 使用するジョイスティックコントローラに合わせてvalueを変更してください -->
<!-- ひとつのボタンに複数の機能を割り当てています -->
<param name="button_shutdown_1" value="8" type="int" />
<param name="button_shutdown_2" value="9" type="int" />
<param name="button_name_enable" value="7" type="int" />
<param name="button_name_home" value="8" type="int" />
<param name="button_preset_enable" value="7" type="int" />
<param name="button_preset_no1" value="9" type="int" />
デフォルトのキー番号はこちらです。
<img src = https://rt-net.github.io/images/crane-x7/joystick_example_key_numbers.png width = 900px />
ジョイスティックのキー番号はトピック/joy
で確認できます。
# ノードを起動する
roslaunch crane_x7_examples joystick_example.launch sim:=true
# 別のターミナルでコマンドを入力
rostopic echo /joy
# ジョイスティックのボタンを押す
header:
seq: 1
stamp:
secs: 1549359364
nsecs: 214800952
frame_id: ''
axes: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
buttons: [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
---
Videos
obstacle_avoidance_example
ROSのServiceを使って、障害物の追加と障害物回避をするコード例です。
次のコマンドでノードを起動します。
roslaunch crane_x7_examples obstacle_avoidance_example.launch
このサンプルでは目標姿勢と障害物の大きさ・姿勢を定義したサービスファイルを使用します。
目標姿勢と障害物の大きさ・姿勢は
crane_x7_examples/scripts/obstacle_client.py
を編集することで変更できます。
デフォルトでは、直方体の箱を障害物として設定しています。
# 障害物を設定
obstacle_name = "box"
obstacle_size = Vector3(0.28, 0.16, 0.14)
obstacle_pose_stamped = PoseStamped()
obstacle_pose_stamped.header.frame_id = "/base_link"
obstacle_pose_stamped.pose.position.x = 0.35
obstacle_pose_stamped.pose.position.z = obstacle_size.z/2.0
安全のため障害物として床を設置しています。
不要であればcrane_x7_examples/scripts/obstacle_avoidance_example.py
を編集してください。
# 安全のため床を障害物として生成する
floor_name = "floor"
floor_size = (2.0, 2.0, 0.01)
floor_pose = PoseStamped()
floor_pose.header.frame_id = "/base_link"
floor_pose.pose.position.z = -floor_size[2]/2.0
scene.add_box(floor_name, floor_pose, floor_size)
rospy.sleep(SLEEP_TIME)
moveitが障害物回避のパスを生成できない場合、X7は動作せず、次の目標位置に対するパスを計算します。
この場合、サーバからの返答はresult=False
となります。
<img src = https://rt-net.github.io/images/crane-x7/gazebo_obstacle_avoidance.gif width = 500px />
servo_info_example
サーボモータ(joint)の情報を取得するコード例です。
次のコマンドでノードを起動します。
rosrun crane_x7_examples servo_info_example.py
このサンプルではグリッパーのモータcrane_x7_gripper_finger_a_joint
のトピックを取得しています。
実行するとターミナル画面にモータの電流・位置・温度が表示されます。
# 表示例
current [mA]: 0.0 dxl_position: 2634 temp [deg C]: 42.0
current [mA]: 2.69 dxl_position: 2634 temp [deg C]: 42.0
current [mA]: 0.0 dxl_position: 2634 temp [deg C]: 42.0
current [mA]: 0.0 dxl_position: 2634 temp [deg C]: 42.0
current [mA]: 2.69 dxl_position: 2634 temp [deg C]: 42.0
...
また、電流が一定値を超えるとグリッパーを開く(閉じる)処理を入れてます。 これにより、手でグリッパーを開く(閉じる)ことができます。
トピックの詳細については、crane_x7_control/README.md
を確認してください。
pick_and_place_in_gazebo_example
Gazebo上のモノを掴む・持ち上げる・運ぶ・置くコード例です。
gripperをEffortControllerで制御するため、オプションを追加してGazeboを起動します。
roslaunch crane_x7_gazebo crane_x7_with_table.launch use_effort_gripper:=true
Gazebo起動後、次のコマンドでサンプルを実行します。
rosrun crane_x7_examples pick_and_place_in_gazebo_example.py
<img src = https://rt-net.github.io/images/crane-x7/gazebo_pick_and_place.gif width = 500px />
Videos
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
crane_x7_moveit_config | |
std_msgs | |
geometry_msgs | |
message_generation | |
catkin | |
moveit_commander | |
message_runtime | |
joy |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
crane_x7 |
Launch files
- launch/obstacle_avoidance_example.launch
- launch/teaching_example.launch
- launch/preset_pid_gain_example.launch
- launch/joystick_example.launch
-
- joydev [default: /dev/input/js0]
- sim [default: false]