rosruby 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|