11 from geometry_msgs.msg
import Twist, TwistStamped
12 from std_msgs.msg
import Bool, Float32
13 from ds4_driver.msg
import Status, Feedback
18 self.
_stamped = rospy.get_param(
'~stamped',
False)
21 self.
_frame_id = rospy.get_param(
'~frame_id',
'base_link')
29 for attr
in Status.__slots__:
30 if attr.startswith(
'axis_')
or attr.startswith(
'button_'):
33 self.
_pub = rospy.Publisher(
'cmd_vel/joystick', self.
_cls, queue_size=1)
34 self.
_pub_squ = rospy.Publisher(
'/joystick/square', Bool, queue_size=1, latch=
True)
35 self.
_pub_triangle = rospy.Publisher(
'/joystick/triangle', Bool, queue_size=1, latch=
True)
36 self.
_pub_circle = rospy.Publisher(
'/soft_estop/reset', Bool, queue_size=1)
37 self.
_pub_cross = rospy.Publisher(
'/soft_estop/enable', Bool, queue_size=1)
38 self.
_pub_trim = rospy.Publisher(
'/trim_increment', Float32, queue_size=1)
40 self.
_pub_feedback = rospy.Publisher(
"set_feedback", Feedback, queue_size=1)
41 rospy.Subscriber(
'status', Status, self.
cb_status, queue_size=1)
42 rospy.loginfo(
"Linear Scale is at %f" , self.
_scales[
"linear"][
"x"])
54 input_vals[attr] = getattr(msg, attr)
58 to_pub.header.stamp = rospy.Time.now()
65 vel_vec = getattr(twist, vel_type)
66 for k, expr
in self.
_inputs[vel_type].items():
67 scale = self.
_scales[vel_type].get(k, 1.0)
68 val = eval(expr, {}, input_vals)
69 setattr(vel_vec, k, scale * val)
70 if (msg.button_l1
or msg.button_r1)
and self.
buttonpressed is False:
85 if (msg.button_dpad_up
or msg.button_dpad_down)
and self.
buttonpressed is False:
86 if msg.button_dpad_up
and self.
_scales[
"linear"].get(
"x") < 3:
87 self.
_scales[
"linear"][
"x"] += 0.05
88 elif msg.button_dpad_down
and self.
_scales[
"linear"].get(
"x") > 0.05:
89 self.
_scales[
"linear"][
"x"] -= 0.05
90 elif self.
_scales[
"linear"].get(
"x") <= 0.06
or self.
_scales[
"linear"].get(
"x") >= 3:
92 rospy.loginfo(
"Limit Reach %f", self.
_scales[
"linear"].get(
"x"))
95 rospy.loginfo(
'Linear Scale is at %f' ,self.
_scales[
"linear"][
"x"])
98 button_msg.data =
False 100 button2_msg.data =
False 103 button_msg.data =
True 105 if msg.button_circle:
107 button2_msg.data =
True 111 self.
_pub.publish(to_pub)
116 rospy.init_node(
'ps4_mapper')
120 if __name__ ==
'__main__':