travis_test_motors.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 #encoding: utf8
3 import unittest, rostest
4 import rosnode, rospy
5 import time
6 from raspicat.msg import MotorFreqs
7 from geometry_msgs.msg import Twist
8 from std_srvs.srv import Trigger, TriggerResponse
9 from raspicat.srv import TimedMotion # 追加
10 
11 class MotorTest(unittest.TestCase):
12  def setUp(self):
13  rospy.wait_for_service('/motor_on')
14  rospy.wait_for_service('/motor_off')
15  rospy.wait_for_service('/timed_motion') # 追加
16  on = rospy.ServiceProxy('/motor_on', Trigger)
17  ret = on()
18 
19  def file_check(self,dev,value,message):
20  with open("/dev/" + dev,"r") as f:
21  s = f.readline()
22  self.assertEqual(s,str(value)+"\n",message)
23 
24  def test_node_exist(self):
25  nodes = rosnode.get_node_names()
26  self.assertIn('/motors', nodes, "node does not exist")
27 
28  def test_put_freq(self):
29  pub = rospy.Publisher('/motor_raw', MotorFreqs)
30  m = MotorFreqs()
31  m.left_hz = 123
32  m.right_hz = 456
33  for i in range(10):
34  pub.publish(m)
35  time.sleep(0.1)
36 
37  self.file_check("rtmotor_raw_l0",m.left_hz,"wrong left value from motor_raw")
38  self.file_check("rtmotor_raw_r0",m.right_hz,"wrong right value from motor_raw")
39 
40  def test_put_cmd_vel(self):
41  pub = rospy.Publisher('/cmd_vel', Twist)
42  m = Twist()
43  m.linear.x = 0.4775
44  m.angular.z = 1.7115
45  for i in range(10):
46  pub.publish(m)
47  time.sleep(0.1)
48 
49  self.file_check("rtmotor_raw_l0",200,"wrong left value from cmd_vel")
50  self.file_check("rtmotor_raw_r0",600,"wrong right value from cmd_vel")
51 
52  time.sleep(1.1)
53  self.file_check("rtmotor_raw_r0",0,"don't stop after 1[s]")
54  self.file_check("rtmotor_raw_l0",0,"don't stop after 1[s]")
55 
56  def test_on_off(self):
57  off = rospy.ServiceProxy('/motor_off', Trigger)
58  ret = off()
59  self.assertEqual(ret.success, True, "motor off does not succeeded")
60  self.assertEqual(ret.message, "OFF", "motor off wrong message")
61  with open("/dev/rtmotoren0","r") as f:
62  data = f.readline()
63  self.assertEqual(data,"0\n","wrong value in rtmotor0 at motor off")
64 
65  on = rospy.ServiceProxy('/motor_on', Trigger)
66  ret = on()
67  self.assertEqual(ret.success, True, "motor on does not succeeded")
68  self.assertEqual(ret.message, "ON", "motor on wrong message")
69  with open("/dev/rtmotoren0","r") as f:
70  data = f.readline()
71  self.assertEqual(data,"1\n","wrong value in rtmotor0 at motor on")
72 
73  def test_put_value_timed(self): #このメソッドを追加
74  tm = rospy.ServiceProxy('/timed_motion', TimedMotion)
75  tm(-321,654,1500)
76  with open("/dev/rtmotor0","r") as f:
77  data = f.readline()
78  self.assertEqual(data,"-321 654 1500\n","value does not written to rtmotor0")
79 
80 if __name__ == '__main__':
81  rospy.init_node('travis_test_motors')
82  rostest.rosrun('raspicat','travis_test_motors', MotorTest)
def file_check(self, dev, value, message)


raspicat
Author(s): Ryuichi Ueda , Daisuke Sato
autogenerated on Mon Jun 10 2019 14:27:50