rosruby 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/rubyroscore +5 -0
- data/lib/ros.rb +25 -0
- data/lib/ros/duration.rb +63 -0
- data/lib/ros/graph_manager.rb +408 -0
- data/lib/ros/log.rb +72 -0
- data/lib/ros/master.rb +408 -0
- data/lib/ros/master_proxy.rb +256 -0
- data/lib/ros/message.rb +65 -0
- data/lib/ros/name.rb +88 -0
- data/lib/ros/node.rb +442 -0
- data/lib/ros/package.rb +144 -0
- data/lib/ros/parameter_manager.rb +127 -0
- data/lib/ros/parameter_subscriber.rb +47 -0
- data/lib/ros/publisher.rb +96 -0
- data/lib/ros/rate.rb +41 -0
- data/lib/ros/ros.rb +10 -0
- data/lib/ros/roscore.rb +29 -0
- data/lib/ros/service.rb +37 -0
- data/lib/ros/service_client.rb +83 -0
- data/lib/ros/service_server.rb +92 -0
- data/lib/ros/slave_proxy.rb +153 -0
- data/lib/ros/subscriber.rb +119 -0
- data/lib/ros/tcpros/client.rb +108 -0
- data/lib/ros/tcpros/header.rb +89 -0
- data/lib/ros/tcpros/message.rb +74 -0
- data/lib/ros/tcpros/server.rb +137 -0
- data/lib/ros/tcpros/service_client.rb +104 -0
- data/lib/ros/tcpros/service_server.rb +132 -0
- data/lib/ros/time.rb +109 -0
- data/lib/ros/topic.rb +47 -0
- data/lib/ros/xmlrpcserver.rb +40 -0
- data/samples/add_two_ints_client.rb +25 -0
- data/samples/add_two_ints_server.rb +20 -0
- data/samples/gui.rb +126 -0
- data/samples/sample_log.rb +16 -0
- data/samples/sample_param.rb +20 -0
- data/samples/sample_publisher.rb +20 -0
- data/samples/sample_subscriber.rb +19 -0
- data/scripts/genmsg_ruby.py +1135 -0
- data/scripts/genmsg_ruby.pyc +0 -0
- data/scripts/gensrv_ruby.py +105 -0
- data/scripts/gensrv_ruby.pyc +0 -0
- data/scripts/rosruby_genmsg.py +67 -0
- data/scripts/run-test.rb +21 -0
- data/test/test_header.rb +36 -0
- data/test/test_log.rb +45 -0
- data/test/test_master_proxy.rb +73 -0
- data/test/test_message.rb +13 -0
- data/test/test_node.rb +166 -0
- data/test/test_package.rb +10 -0
- data/test/test_param.rb +27 -0
- data/test/test_pubsub.rb +154 -0
- data/test/test_rate.rb +16 -0
- data/test/test_service.rb +34 -0
- data/test/test_slave_proxy.rb +49 -0
- data/test/test_time.rb +39 -0
- metadata +170 -0
data/test/test_param.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ros'
|
5
|
+
|
6
|
+
class TestParam_Normal < Test::Unit::TestCase
|
7
|
+
def test_param_manager
|
8
|
+
remap = {'aa'=>1, 'bb'=>'xx'}
|
9
|
+
param = ROS::ParameterManager.new(ENV['ROS_MASTER_URI'], '/test_param', remap)
|
10
|
+
assert_equal(1, param.get_param('aa'))
|
11
|
+
assert(!param.get_param('cc'))
|
12
|
+
|
13
|
+
assert(param.set_param('cc', [1,2]))
|
14
|
+
assert_equal([1,2], param.get_param('cc'))
|
15
|
+
assert(param.delete_param('cc'))
|
16
|
+
assert(!param.get_param('cc'))
|
17
|
+
|
18
|
+
assert(param.set_param('aa', -1))
|
19
|
+
assert_equal('/aa', param.search_param('aa'))
|
20
|
+
assert_raise(RuntimeError) {param.search_param('xx')}
|
21
|
+
assert(!param.has_param('a'))
|
22
|
+
assert(param.has_param('aa'))
|
23
|
+
assert(param.get_param_names)
|
24
|
+
|
25
|
+
assert(param.delete_param('aa'))
|
26
|
+
end
|
27
|
+
end
|
data/test/test_pubsub.rb
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'ros'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'std_msgs/String'
|
6
|
+
|
7
|
+
class TestPubSubNormal < Test::Unit::TestCase
|
8
|
+
TEST_STRING1 = 'TEST1'
|
9
|
+
TEST_STRING2 = 'TEST2'
|
10
|
+
|
11
|
+
def test_double_pubsub
|
12
|
+
node1 = ROS::Node.new('/test_pubsub1')
|
13
|
+
node2 = ROS::Node.new('/test_pubsub2')
|
14
|
+
pub1 = node1.advertise('/chatter', Std_msgs::String)
|
15
|
+
|
16
|
+
pub2 = node2.advertise('/chatter', Std_msgs::String)
|
17
|
+
|
18
|
+
pub_msg1 = Std_msgs::String.new
|
19
|
+
pub_msg1.data = TEST_STRING1
|
20
|
+
|
21
|
+
pub_msg2 = Std_msgs::String.new
|
22
|
+
pub_msg2.data = TEST_STRING2
|
23
|
+
|
24
|
+
message_has_come1 = [nil, nil]
|
25
|
+
message_has_come2 = [nil, nil]
|
26
|
+
|
27
|
+
sub1 = node1.subscribe('/chatter', Std_msgs::String) do |msg|
|
28
|
+
if msg.data == TEST_STRING1
|
29
|
+
message_has_come1[0] = true
|
30
|
+
end
|
31
|
+
if msg.data == TEST_STRING2
|
32
|
+
message_has_come1[1] = true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
sub2 = node2.subscribe('/chatter', Std_msgs::String) do |msg|
|
37
|
+
if msg.data == TEST_STRING1
|
38
|
+
message_has_come2[0] = true
|
39
|
+
end
|
40
|
+
if msg.data == TEST_STRING2
|
41
|
+
message_has_come2[1] = true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
sleep(1) # wait for registration and update
|
45
|
+
|
46
|
+
pub1.publish(pub_msg1)
|
47
|
+
pub2.publish(pub_msg2)
|
48
|
+
|
49
|
+
sleep(1)
|
50
|
+
node1.spin_once
|
51
|
+
node2.spin_once
|
52
|
+
|
53
|
+
assert(message_has_come1[0])
|
54
|
+
assert(message_has_come1[1])
|
55
|
+
assert(message_has_come2[0])
|
56
|
+
assert(message_has_come2[1])
|
57
|
+
|
58
|
+
topics = node1.get_published_topics
|
59
|
+
assert_equal(2, topics.length)
|
60
|
+
assert(topics.include?('/chatter'))
|
61
|
+
assert(topics.include?('/rosout'))
|
62
|
+
|
63
|
+
node1.shutdown
|
64
|
+
node2.shutdown
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_single_pubsub
|
68
|
+
node = ROS::Node.new('/test3')
|
69
|
+
pub1 = node.advertise('/chatter', Std_msgs::String)
|
70
|
+
|
71
|
+
pub_msg1 = Std_msgs::String.new
|
72
|
+
pub_msg1.data = TEST_STRING1
|
73
|
+
|
74
|
+
message_has_come1 = nil
|
75
|
+
|
76
|
+
sub1 = node.subscribe('/chatter', Std_msgs::String) do |msg|
|
77
|
+
if msg.data == TEST_STRING1
|
78
|
+
message_has_come1 = true
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
sleep(1) # wait for registration and update
|
83
|
+
|
84
|
+
pub1.publish(pub_msg1)
|
85
|
+
sleep(1)
|
86
|
+
node.spin_once
|
87
|
+
assert(message_has_come1)
|
88
|
+
|
89
|
+
assert_equal([["/chatter_out_0", 13, 1, 1]], pub1.get_connection_data)
|
90
|
+
assert_equal([["/chatter_in_0", 9, 1]], sub1.get_connection_data)
|
91
|
+
|
92
|
+
pub_info = pub1.get_connection_info[0]
|
93
|
+
assert_equal("/chatter_out_0", pub_info[0])
|
94
|
+
# incomplete
|
95
|
+
# assert(/^http:.*:[0-9]+/=~, pub_info[1])
|
96
|
+
assert_equal("o", pub_info[2])
|
97
|
+
assert_equal("TCPROS", pub_info[3])
|
98
|
+
assert_equal("/chatter", pub_info[4])
|
99
|
+
|
100
|
+
sub_info = sub1.get_connection_info[0]
|
101
|
+
assert_equal("/chatter_in_0", sub_info[0])
|
102
|
+
assert(/^http:.*[0-9]+/=~ sub_info[1])
|
103
|
+
assert_equal("i", sub_info[2])
|
104
|
+
assert_equal("TCPROS", sub_info[3])
|
105
|
+
assert_equal("/chatter", sub_info[4])
|
106
|
+
|
107
|
+
node.shutdown
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_shutdown_by_publisher_or_subscriber_directly
|
111
|
+
node = ROS::Node.new('/test4')
|
112
|
+
pub = node.advertise('/hoge', Std_msgs::String)
|
113
|
+
proxy = ROS::MasterProxy.new('/test_node', ENV['ROS_MASTER_URI'], 'http://dummy:11111')
|
114
|
+
assert(proxy.get_published_topics.include?(["/hoge", "std_msgs/String"]))
|
115
|
+
pub.shutdown
|
116
|
+
assert(!proxy.get_published_topics.include?(["/hoge", "std_msgs/String"]))
|
117
|
+
|
118
|
+
sub1 = node.subscribe('/hoge', Std_msgs::String)
|
119
|
+
pub, sub, ser = proxy.get_system_state
|
120
|
+
assert(sub.include?(["/hoge", ["/test4"]]))
|
121
|
+
sub1.shutdown
|
122
|
+
pub, sub, ser = proxy.get_system_state
|
123
|
+
assert(!sub.include?(["/hoge", ["/test4"]]))
|
124
|
+
|
125
|
+
node.shutdown
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
def test_latched
|
130
|
+
node = ROS::Node.new('/test5')
|
131
|
+
pub1 = node.advertise('/chatter', Std_msgs::String, :latched=>true)
|
132
|
+
|
133
|
+
pub_msg1 = Std_msgs::String.new
|
134
|
+
pub_msg1.data = TEST_STRING1
|
135
|
+
|
136
|
+
sleep(1) # wait for registration and update
|
137
|
+
|
138
|
+
pub1.publish(pub_msg1)
|
139
|
+
|
140
|
+
sleep(1) # wait for registration and update
|
141
|
+
message_has_come1 = nil
|
142
|
+
|
143
|
+
sub1 = node.subscribe('/chatter', Std_msgs::String) do |msg|
|
144
|
+
if msg.data == TEST_STRING1
|
145
|
+
message_has_come1 = true
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
sleep(1)
|
150
|
+
node.spin_once
|
151
|
+
assert(message_has_come1)
|
152
|
+
node.shutdown
|
153
|
+
end
|
154
|
+
end
|
data/test/test_rate.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'ros/rate'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestRate_rate < Test::Unit::TestCase
|
7
|
+
def test_sleep
|
8
|
+
r = ROS::Rate.new(10)
|
9
|
+
(1..10).each do |i|
|
10
|
+
start = ::Time.now
|
11
|
+
r.sleep
|
12
|
+
stop = ::Time.now
|
13
|
+
assert_in_delta(0.1, (stop - start), 0.05, "rating #{i}")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'ros'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'roscpp_tutorials/TwoInts'
|
6
|
+
|
7
|
+
class TestService < Test::Unit::TestCase
|
8
|
+
def test_service
|
9
|
+
node = ROS::Node.new('/test_service1')
|
10
|
+
server = node.advertise_service('/add_two_ints', Roscpp_tutorials::TwoInts) do |req, res|
|
11
|
+
res.sum = req.a + req.b
|
12
|
+
node.loginfo("a=#{req.a}, b=#{req.b}")
|
13
|
+
node.loginfo(" sum = #{res.sum}")
|
14
|
+
if req.a == -1
|
15
|
+
false
|
16
|
+
else
|
17
|
+
true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
assert(node.wait_for_service('/add_two_ints', 1))
|
21
|
+
service = node.service('/add_two_ints', Roscpp_tutorials::TwoInts)
|
22
|
+
req = Roscpp_tutorials::TwoInts.request_class.new
|
23
|
+
res = Roscpp_tutorials::TwoInts.response_class.new
|
24
|
+
req.a = 15
|
25
|
+
req.b = -50
|
26
|
+
assert(service.call(req, res))
|
27
|
+
assert_equal(-35, res.sum)
|
28
|
+
# fails
|
29
|
+
req.a = -1
|
30
|
+
assert(!service.call(req, res))
|
31
|
+
assert(!node.wait_for_service('/xxxxxxx', 0.1))
|
32
|
+
node.shutdown
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'ros'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'std_msgs/String'
|
6
|
+
|
7
|
+
class TestSlaveProxy < Test::Unit::TestCase
|
8
|
+
TEST_STRING1 = 'TEST1'
|
9
|
+
TEST_STRING2 = 'TEST2'
|
10
|
+
|
11
|
+
def test_slave1
|
12
|
+
node = ROS::Node.new('/test_slave1')
|
13
|
+
pub1 = node.advertise('/chatter', Std_msgs::String)
|
14
|
+
|
15
|
+
pub_msg1 = Std_msgs::String.new
|
16
|
+
pub_msg1.data = TEST_STRING1
|
17
|
+
|
18
|
+
message_has_come1 = nil
|
19
|
+
|
20
|
+
sub1 = node.subscribe('/chatter', Std_msgs::String) do |msg|
|
21
|
+
if msg.data == TEST_STRING1
|
22
|
+
message_has_come1 = true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
sleep(1) # wait for registration and update
|
27
|
+
|
28
|
+
pub1.publish(pub_msg1)
|
29
|
+
sleep(1)
|
30
|
+
node.spin_once
|
31
|
+
sub1.get_connection_info
|
32
|
+
slave_uri = sub1.get_connection_info[0][1]
|
33
|
+
slave = ROS::SlaveProxy.new('/slave1', slave_uri)
|
34
|
+
|
35
|
+
assert(slave.get_bus_stats)
|
36
|
+
assert(slave.get_bus_info)
|
37
|
+
|
38
|
+
assert(/^http:.+:[0-9]+/ =~ slave.get_master_uri)
|
39
|
+
assert(/[0-9]+/ =~ slave.get_pid.to_s)
|
40
|
+
assert_equal([["/chatter", "std_msgs/String"]], slave.get_subscriptions)
|
41
|
+
assert_equal(2, slave.get_publications.size)
|
42
|
+
assert(slave.param_update('/hoge', 1))
|
43
|
+
assert(slave.publisher_update('/hoge', ['http://aaa:111']))
|
44
|
+
assert_equal(3, slave.request_topic('/chatter', [["TCPROS"]]).size)
|
45
|
+
|
46
|
+
assert(slave.shutdown('test kill'))
|
47
|
+
node.shutdown
|
48
|
+
end
|
49
|
+
end
|
data/test/test_time.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ros/time'
|
5
|
+
require 'ros/duration'
|
6
|
+
|
7
|
+
class TestTime < Test::Unit::TestCase
|
8
|
+
def test_time
|
9
|
+
t1 = ROS::Time.new
|
10
|
+
assert_equal(0, t1.secs)
|
11
|
+
assert_equal(0, t1.nsecs)
|
12
|
+
|
13
|
+
t2 = ROS::Time.now
|
14
|
+
d0 = ROS::Duration.new(1.0)
|
15
|
+
d0.sleep
|
16
|
+
t3 = ROS::Time.now
|
17
|
+
assert_in_delta(1.0, (t3 - t2).to_sec, 0.1)
|
18
|
+
assert(t3 > t2)
|
19
|
+
|
20
|
+
d1 = ROS::Duration.new(1.0)
|
21
|
+
assert_equal(1, d1.secs)
|
22
|
+
assert_equal(0, d1.nsecs)
|
23
|
+
|
24
|
+
d2 = ROS::Duration.new(1.1)
|
25
|
+
assert_equal(1, d2.secs)
|
26
|
+
assert_equal(100000000, d2.nsecs)
|
27
|
+
|
28
|
+
d3 = d1 + d2
|
29
|
+
assert_equal(2, d3.secs)
|
30
|
+
assert_equal(100000000, d3.nsecs)
|
31
|
+
|
32
|
+
d4 = d2 - d1
|
33
|
+
assert_equal(0, d4.secs)
|
34
|
+
assert_equal(100000000, d4.nsecs)
|
35
|
+
assert(d2 > d1)
|
36
|
+
assert(d1 < d2)
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,170 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rosruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Takashi Ogura
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &72472620 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *72472620
|
25
|
+
description: ! "ROS Ruby Client: rosruby\n=======\n[ROS](http://ros.org) is Robot
|
26
|
+
Operating System developed by [Willow Garage](http://www.willowgarage.com/) and
|
27
|
+
open source communities.\n\nThis project supports ruby ROS client. You can program
|
28
|
+
robots by ruby, very easily.\n\n**Homepage**: http://otl.github.com/rosruby\n**Git**:
|
29
|
+
\ http://github.com/OTL/rosruby\n**Author**: Takashi Ogura\n**Copyright**:
|
30
|
+
\ 2012\n**License**: new BSD License\n**Latest Version**: 0.2.0\n\nRequirements\n----------\n-
|
31
|
+
ruby (1.8.x/1.9.x)\n- ROS (electric/fuerte)\n - ROS requires python2.7 or more
|
32
|
+
libraries\n\n\nLet's start\n---------------\nInstall ROS and ruby first. ROS document
|
33
|
+
is [http://ros.org/wiki/ROS/Installation](http://ros.org/wiki/ROS/Installation)
|
34
|
+
.\n\nYou can install ruby by apt.\n\n```bash\n$ sudo apt-get install ruby\n```\n\nDownload
|
35
|
+
rosruby into your ROS_PACKAGE_PATH.\n\n````bash\n$ git clone git://github.com/OTL/rosruby.git\n```\n\nplease
|
36
|
+
add RUBYLIB environment variable, like below (if you are using bash).\n\n```bash\n$
|
37
|
+
echo \"export RUBYLIB=`rospack find rosruby`/lib\" >> ~/.bashrc\n$ source ~/.bashrc\n```\n\nTo
|
38
|
+
use with precompiled electric release\n-----------------------\nIf you are using
|
39
|
+
precompiled ROS distro, use the msg/srv generation script\n(rosruby_genmsg.py)\nIf
|
40
|
+
you are using ROS from source, it requires just recompile the msg/srv\npackages
|
41
|
+
by rosmake rosruby.\n\n```bash\n$ rosrun rosruby rosruby_genmsg.py\n```\n\nThis
|
42
|
+
converts msg/srv to .rb which is needed by sample programs.\nIf you want to make
|
43
|
+
other packages, add package names for args.\n\nFor example,\n\n```bash\n$ rosrun
|
44
|
+
rosruby rosruby_genmsg.py geometry_msgs nav_msgs\n```\n\n\nSample Source\n--------------\n##
|
45
|
+
Subscriber\n\n```ruby\n#!/usr/bin/env ruby\n\nrequire 'ros'\nrequire 'std_msgs/String'\n\nnode
|
46
|
+
= ROS::Node.new('/rosruby/sample_subscriber')\nnode.subscribe('/chatter', Std_msgs::String)
|
47
|
+
do |msg|\n puts \"message come! = \\'#{msg.data}\\'\"\nend\n\nwhile node.ok?\n
|
48
|
+
\ node.spin_once\n sleep(1)\nend\n\n```\n\n## Publisher\n\n```ruby\n#!/usr/bin/env
|
49
|
+
ruby\n\nrequire 'ros'\nrequire 'std_msgs/String'\n\nnode = ROS::Node.new('/rosruby/sample_publisher')\npublisher
|
50
|
+
= node.advertise('/chatter', Std_msgs::String)\n\nmsg = Std_msgs::String.new\n\ni
|
51
|
+
= 0\nwhile node.ok?\n msg.data = \"Hello, rosruby!: #{i}\"\n publisher.publish(msg)\n
|
52
|
+
\ sleep(1.0)\n i += 1\nend\n```\n\nNote\n----------------\nRuby requires 'Start
|
53
|
+
with Capital letter' for class or module names.\nSo please use **S**td_msgs::String
|
54
|
+
class instead of **s**td_msgs::String.\n\nTry Publish and Subscribe\n----------------------\nYou
|
55
|
+
needs three terminal as it is often for ROS users.\nThen you run roscore if is not
|
56
|
+
running.\n\n```bash\n$ roscore\n```\n\nrun publisher sample\n\n```bash\n$ rosrun
|
57
|
+
rosruby sample_publisher.rb\n```\n\nrun subscription sample\n\n```bash\n$ rosrun
|
58
|
+
rosruby sample_subscriber.rb\n```\n\nyou can check publication by using rostopic.\n\n```bash\n$
|
59
|
+
rostopic list\n$ rostopic echo /chatter\n```\n\n\nTry Service?\n----------------------\n\n```bash\n$
|
60
|
+
rosrun rosruby add_two_ints_server.rb\n```\n\nrun client with args ('a' and 'b'
|
61
|
+
for roscpp_tutorials/TwoInts)\n\n```bash\n$ rosrun rosruby add_two_ints_client.rb
|
62
|
+
10 20\n```\n\nand more...\n----------------------\nYou need more tools for testing,
|
63
|
+
generating documentations.\n\n```bash\n$ sudo apt-get install rake gem\n$ sudo gem
|
64
|
+
install yard redcarpet simplecov\n```\n\ndo all tests\n-------------------------\nrun
|
65
|
+
roscore if is not running.\n\n```bash\n$ roscore\n```\n\nand run the unit tests.\n\n```bash\n$
|
66
|
+
roscd rosruby\n$ rake test\n```\n\n\ndocuments\n--------------------------\nyou
|
67
|
+
can generate API documents using yard.\nDocument generation needs yard and redcarpet.\nYou
|
68
|
+
can install these by gem command like this.\n\n```bash\n$ gem install yard redcarpet\n```\n\nThen
|
69
|
+
try to generate documentds.\n\n```bash\n$ rake yard\n```\n\nYou can access to the
|
70
|
+
generated documents from [here](http://otl.github.com/rosruby/doc/).\n"
|
71
|
+
email: t.ogura@gmail.com
|
72
|
+
executables:
|
73
|
+
- rubyroscore
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- lib/ros.rb
|
78
|
+
- lib/ros/master.rb
|
79
|
+
- lib/ros/ros.rb
|
80
|
+
- lib/ros/duration.rb
|
81
|
+
- lib/ros/parameter_subscriber.rb
|
82
|
+
- lib/ros/subscriber.rb
|
83
|
+
- lib/ros/service.rb
|
84
|
+
- lib/ros/parameter_manager.rb
|
85
|
+
- lib/ros/rate.rb
|
86
|
+
- lib/ros/master_proxy.rb
|
87
|
+
- lib/ros/log.rb
|
88
|
+
- lib/ros/slave_proxy.rb
|
89
|
+
- lib/ros/publisher.rb
|
90
|
+
- lib/ros/graph_manager.rb
|
91
|
+
- lib/ros/topic.rb
|
92
|
+
- lib/ros/package.rb
|
93
|
+
- lib/ros/service_server.rb
|
94
|
+
- lib/ros/node.rb
|
95
|
+
- lib/ros/name.rb
|
96
|
+
- lib/ros/xmlrpcserver.rb
|
97
|
+
- lib/ros/message.rb
|
98
|
+
- lib/ros/time.rb
|
99
|
+
- lib/ros/roscore.rb
|
100
|
+
- lib/ros/service_client.rb
|
101
|
+
- lib/ros/tcpros/client.rb
|
102
|
+
- lib/ros/tcpros/header.rb
|
103
|
+
- lib/ros/tcpros/service_server.rb
|
104
|
+
- lib/ros/tcpros/server.rb
|
105
|
+
- lib/ros/tcpros/message.rb
|
106
|
+
- lib/ros/tcpros/service_client.rb
|
107
|
+
- samples/gui.rb
|
108
|
+
- samples/sample_publisher.rb
|
109
|
+
- samples/sample_log.rb
|
110
|
+
- samples/sample_subscriber.rb
|
111
|
+
- samples/add_two_ints_client.rb
|
112
|
+
- samples/sample_param.rb
|
113
|
+
- samples/add_two_ints_server.rb
|
114
|
+
- scripts/genmsg_ruby.pyc
|
115
|
+
- scripts/gensrv_ruby.pyc
|
116
|
+
- scripts/run-test.rb
|
117
|
+
- scripts/genmsg_ruby.py
|
118
|
+
- scripts/rosruby_genmsg.py
|
119
|
+
- scripts/gensrv_ruby.py
|
120
|
+
- test/test_message.rb
|
121
|
+
- test/test_pubsub.rb
|
122
|
+
- test/test_master_proxy.rb
|
123
|
+
- test/test_time.rb
|
124
|
+
- test/test_slave_proxy.rb
|
125
|
+
- test/test_log.rb
|
126
|
+
- test/test_package.rb
|
127
|
+
- test/test_rate.rb
|
128
|
+
- test/test_service.rb
|
129
|
+
- test/test_node.rb
|
130
|
+
- test/test_param.rb
|
131
|
+
- test/test_header.rb
|
132
|
+
- bin/rubyroscore
|
133
|
+
homepage: http://github.com/OTL/rosruby
|
134
|
+
licenses: []
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
require_paths:
|
138
|
+
- lib
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
none: false
|
141
|
+
requirements:
|
142
|
+
- - ! '>='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
requirements:
|
152
|
+
- none
|
153
|
+
rubyforge_project:
|
154
|
+
rubygems_version: 1.8.11
|
155
|
+
signing_key:
|
156
|
+
specification_version: 3
|
157
|
+
summary: ROS ruby client
|
158
|
+
test_files:
|
159
|
+
- test/test_message.rb
|
160
|
+
- test/test_pubsub.rb
|
161
|
+
- test/test_master_proxy.rb
|
162
|
+
- test/test_time.rb
|
163
|
+
- test/test_slave_proxy.rb
|
164
|
+
- test/test_log.rb
|
165
|
+
- test/test_package.rb
|
166
|
+
- test/test_rate.rb
|
167
|
+
- test/test_service.rb
|
168
|
+
- test/test_node.rb
|
169
|
+
- test/test_param.rb
|
170
|
+
- test/test_header.rb
|