예제 #1
0
 def test_subscriber_wait_for_message(self):
     """Ensures that `WaitForMessage` threading works in a Python workflow
     that is not threaded."""
     # N.B. This will fail with `threading`. See below for using
     # `multithreading`.
     lcm = DrakeLcm("memq://")
     lcm.StartReceiveThread()
     sub = mut.LcmSubscriberSystem.Make("TEST_LOOP", header_t, lcm)
     value = AbstractValue.Make(header_t())
     for i in range(3):
         message = header_t()
         message.utime = i
         lcm.Publish("TEST_LOOP", message.encode())
         sub.WaitForMessage(i, value)
         self.assertEqual(value.get_value().utime, i)
예제 #2
0
파일: lcm_test.py 프로젝트: weiqiao/drake
 def test_subscriber_wait_for_message(self):
     """Ensures that `WaitForMessage` threading works in a Python workflow
     that is not threaded."""
     # N.B. This will fail with `threading`. See below for using
     # `multithreading`.
     lcm = DrakeLcm("memq://")
     lcm.StartReceiveThread()
     sub = mut.LcmSubscriberSystem.Make("TEST_LOOP", header_t, lcm)
     value = AbstractValue.Make(header_t())
     for i in range(3):
         message = header_t()
         message.utime = i
         lcm.Publish("TEST_LOOP", message.encode())
         sub.WaitForMessage(i, value)
         self.assertEqual(value.get_value().utime, i)
예제 #3
0
 def test_subscriber_wait_for_message(self):
     """Checks how `WaitForMessage` works without Python threads."""
     lcm = DrakeLcm()
     sub = mut.LcmSubscriberSystem.Make("TEST_LOOP", header_t, lcm)
     value = AbstractValue.Make(header_t())
     for old_message_count in range(3):
         message = header_t()
         message.utime = old_message_count + 1
         lcm.Publish("TEST_LOOP", message.encode())
         for attempt in range(10):
             new_count = sub.WaitForMessage(
                 old_message_count, value, timeout=0.02)
             if new_count > old_message_count:
                 break
             lcm.HandleSubscriptions(0)
         self.assertEqual(value.get_value().utime, old_message_count + 1)
예제 #4
0
 def test_utime_to_seconds(self):
     msg = header_t()
     msg.utime = int(1e6)
     with catch_drake_warnings(expected_count=1):
         dut = mut.PyUtimeMessageToSeconds(header_t)
     t_sec = dut.GetTimeInSeconds(AbstractValue.Make(msg))
     self.assertEqual(t_sec, 1)
예제 #5
0
 def publish_loop():
     # Publishes a set of messages for the driven loop. This should be
     # run from a separate process.
     # N.B. Because of this, care should be taken not to share C++
     # objects between process boundaries.
     t = t_start
     while t <= t_end:
         message = header_t()
         message.utime = int(1e6 * t)
         lcm.Publish("TEST_LOOP", message.encode())
         time.sleep(0.1)
         t += 1
예제 #6
0
파일: lcm_test.py 프로젝트: weiqiao/drake
 def publish_loop():
     # Publishes a set of messages for the driven loop. This should be
     # run from a separate process.
     # N.B. Because of this, care should be taken not to share C++
     # objects between process boundaries.
     t = t_start
     while t <= t_end:
         message = header_t()
         message.utime = int(1e6 * t)
         lcm.Publish("TEST_LOOP", message.encode())
         time.sleep(0.1)
         t += 1
예제 #7
0
 def test_utime_to_seconds(self):
     msg = header_t()
     msg.utime = int(1e6)
     dut = mut.PyUtimeMessageToSeconds(header_t)
     t_sec = dut.GetTimeInSeconds(AbstractValue.Make(msg))
     self.assertEqual(t_sec, 1)
예제 #8
0
파일: lcm_test.py 프로젝트: weiqiao/drake
 def test_utime_to_seconds(self):
     msg = header_t()
     msg.utime = int(1e6)
     dut = mut.PyUtimeMessageToSeconds(header_t)
     t_sec = dut.GetTimeInSeconds(AbstractValue.Make(msg))
     self.assertEqual(t_sec, 1)