preset_pid_gain_example.py
Go to the documentation of this file.
1 #! /usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 import rospy
5 import moveit_commander
6 import geometry_msgs.msg
7 import rosnode
8 from tf.transformations import quaternion_from_euler
9 
10 from std_msgs.msg import UInt8
11 
12 def preset_pid_gain(pid_gain_no):
13  # サーボモータのPIDゲインをプリセットする
14  # プリセットの内容はcrane_x7_control/scripts/preset_reconfigure.pyに書かれている
15  rospy.loginfo("PID Gain Preset. No." + str(pid_gain_no))
16  preset_no = UInt8()
17  preset_no.data = pid_gain_no
18  pub_preset.publish(preset_no)
19  rospy.sleep(1) # PIDゲインがセットされるまで待つ
20 
21 
22 def main():
23  rospy.init_node("preset_pid_gain_example")
24  arm = moveit_commander.MoveGroupCommander("arm")
25  arm.set_max_velocity_scaling_factor(0.3)
26  arm.set_max_acceleration_scaling_factor(1.0)
27 
28  while len([s for s in rosnode.get_node_names() if 'rviz' in s]) == 0:
29  rospy.sleep(1.0)
30  rospy.sleep(1.0)
31 
32  # サーボモータのPIDゲインをプリセット
34 
35  # SRDFに定義されている"vertical"の姿勢にする
36  arm.set_named_target("vertical")
37  arm.go()
38  arm.set_named_target("home")
39  arm.go()
40 
41  # サーボモータのPIDゲインをプリセット
42  # Pゲインが小さくなるので、X7を手で動かすことが可能
44 
45  # X7を手で動かせることを確認するため、数秒間待つ
46  sleep_seconds = 10
47  for i in range(sleep_seconds):
48  rospy.loginfo(str(sleep_seconds-i) + " counts left.")
49  rospy.sleep(1)
50  # 安全のため、現在のアームの姿勢を目標姿勢に変更する
51  arm.set_pose_target(arm.get_current_pose())
52  arm.go()
53 
54  # サーボモータのPIDゲインをプリセット
56  arm.set_named_target("home")
57  arm.go()
58  arm.set_named_target("vertical")
59  arm.go()
60 
61  rospy.loginfo("done")
62 
63 
64 if __name__ == '__main__':
65  # PIDゲインプリセット用のPublisher
66  pub_preset = rospy.Publisher("preset_gain_no", UInt8, queue_size=1)
67 
68  try:
69  if not rospy.is_shutdown():
70  main()
71  except rospy.ROSInterruptException:
72  pass


crane_x7_examples
Author(s): Daisuke Sato , Hiroyuki Nomura
autogenerated on Mon Mar 1 2021 03:18:34