|
@@ -39,13 +39,14 @@ anything else : stop
|
|
|
q/z : increase/decrease max speeds by 10%
|
|
|
w/x : increase/decrease only linear speed by 10%
|
|
|
e/c : increase/decrease only angular speed by 10%
|
|
|
-4/5 : increase/decrease gripper angle by 5°
|
|
|
|
|
|
1 : 钻头下降(同时钻头正转打孔)
|
|
|
2 : 钻头上移(同时钻头反转退出)
|
|
|
-3 : 运送树苗链条转动
|
|
|
-4 : 放下树苗
|
|
|
-5 : 返回原位
|
|
|
+3 : 运送树苗链条往外转动
|
|
|
+4 : 运送树苗链条往里转动
|
|
|
+5 : 移动一颗树苗下来
|
|
|
+6 : 摇臂放下树苗
|
|
|
+7 : 摇臂返回原位
|
|
|
|
|
|
CTRL-C to quit
|
|
|
"""
|
|
@@ -87,11 +88,17 @@ bitDownBindings={
|
|
|
chainRotateBindings={
|
|
|
'3':(),
|
|
|
}
|
|
|
+chainRotateBackBindings={
|
|
|
+ '4':(),
|
|
|
+ }
|
|
|
+PutOneTreeBindings={
|
|
|
+ '5':(),
|
|
|
+ }
|
|
|
putDownBindings={
|
|
|
- '4':(5),
|
|
|
+ '6':(5),
|
|
|
}
|
|
|
returnBindings={
|
|
|
- '5':(-5),
|
|
|
+ '7':(-5),
|
|
|
}
|
|
|
|
|
|
def getKey():
|
|
@@ -104,12 +111,12 @@ def getKey():
|
|
|
def vels(speed, turn):
|
|
|
return "currently:\tspeed %s\tturn %s " % (speed,turn)
|
|
|
|
|
|
-#调用service: mobilebase_arduino/gripper_angle控制夹爪开闭
|
|
|
-def control_180Servo(servoID, angle):
|
|
|
+#调用service: mobilebase_arduino/gripper_angle控制摇臂舵机
|
|
|
+def control_180Servo(servoID, angle, delay):
|
|
|
rospy.wait_for_service("mobilebase_arduino/gripper_angle")
|
|
|
try:
|
|
|
gripper2_client = rospy.ServiceProxy("mobilebase_arduino/gripper_angle", GripperAngle)
|
|
|
- resp = gripper2_client.call(servoID, angle)
|
|
|
+ resp = gripper2_client.call(servoID, angle, delay)
|
|
|
except rospy.ServiceException, e:
|
|
|
rospy.logwarn("Service call failed: %s"%e)
|
|
|
|
|
@@ -180,7 +187,7 @@ if __name__=="__main__":
|
|
|
#停止舵机转动
|
|
|
control_360Servo(0, 2)
|
|
|
control_360Servo(1, 2)
|
|
|
- elif key in chainRotateBindings.keys():
|
|
|
+ elif key in chainRotateBindings.keys():#树苗仓往外移动
|
|
|
x = 0
|
|
|
y = 0
|
|
|
z = 0
|
|
@@ -189,18 +196,36 @@ if __name__=="__main__":
|
|
|
time.sleep(0.05)
|
|
|
#停止舵机转动
|
|
|
control_360Servo(2, 2)
|
|
|
+ elif key in chainRotateBackBindings.keys():#树苗仓往里移动
|
|
|
+ x = 0
|
|
|
+ y = 0
|
|
|
+ z = 0
|
|
|
+ th = 0
|
|
|
+ control_360Servo(2, 1)
|
|
|
+ time.sleep(0.05)
|
|
|
+ #停止舵机转动
|
|
|
+ control_360Servo(2, 2)
|
|
|
+ elif key in PutOneTreeBindings.keys(): #运送一颗树苗掉落
|
|
|
+ x = 0
|
|
|
+ y = 0
|
|
|
+ z = 0
|
|
|
+ th = 0
|
|
|
+ control_360Servo(2, 3)
|
|
|
+ time.sleep(0.65)
|
|
|
+ #停止舵机转动
|
|
|
+ control_360Servo(2, 2)
|
|
|
elif key in putDownBindings.keys():
|
|
|
x = 0
|
|
|
y = 0
|
|
|
z = 0
|
|
|
th = 0
|
|
|
- control_180Servo(3, 0)
|
|
|
+ control_180Servo(3, 0, 10)
|
|
|
elif key in returnBindings.keys():
|
|
|
x = 0
|
|
|
y = 0
|
|
|
z = 0
|
|
|
th = 0
|
|
|
- control_180Servo(3, 160)
|
|
|
+ control_180Servo(3, 165, 10)
|
|
|
else:
|
|
|
x = 0
|
|
|
y = 0
|