ROS is Robot Operating System developed by OSRF and open source communities.
This project supports ruby ROS client. You can program intelligent robots by ruby, very easily.
Homepage: http://otl.github.com/rosruby Git: http://github.com/OTL/rosruby Author: Takashi Ogura Copyright: 2012 License: new BSD License Latest Version: 0.4.3
If you are using electric or fuerte, please use v0.2.1.
sudo apt-get install ros-hydro-rosruby
then you have to source /opt/ros/hydro/setup.bash for ruby library path.
Install ROS and ruby first. ROS document is http://ros.org/wiki/ROS/Installation . rosruby uses genrb for message generation. After install genrb, .rb message files are automatically compiled if there are message source package exists in your catkin_ws/src directory.
rosruby uses catkin. If you have not catkin_ws yet, please read this wiki.
$ cd ~/catkin_ws/src
$ git clone https://github.com/OTL/genrb.git
$ git clone https://github.com/OTL/rosruby.git
$ cd ~/catkin_ws
$ catkin_make
Try indigo-devel branch.
$ cd ~/catkin_ws/src/rosruby
$ git checkout indigo-devel
$ cd ~/catkin_ws
$ catkin_make
You must generate ROS msg/srv files for rosruby if the msg/srv packages are not compiled from source. If you are using catkin package, it is easy. Please add below to your package CMakeLists.txt.
find_package(rosruby)
rosruby_generate_messages(message_pkg1 message_pkg2 ...)
Or, you can generate it manually. Please use the msg/srv generation script (rosruby_genmsg.py) in order to generage rosruby messages.
For example, (please replace catkin_ws
to your catkin workspace)
$ rosrun rosruby rosruby_genmsg.py geometry_msgs nav_msgs -d ~/catkin_ws/devel/lib/ruby/vendor_ruby/
If you want to generate msg/srv files from source (for example your project), it is automatically generated by genrb.
You can get rosruby sample programs from rosruby_tutorials package.
#!/usr/bin/env ruby
require 'ros'
require 'std_msgs/String'
node = ROS::Node.new('/rosruby_sample_subscriber')
node.subscribe('/chatter', Std_msgs::String) do |msg|
puts "message come! = \'#{msg.data}\'"
end
while node.ok?
node.spin_once
sleep(1)
end
#!/usr/bin/env ruby
require 'ros'
require 'std_msgs/String'
node = ROS::Node.new('/rosruby_sample_publisher')
publisher = node.advertise('/chatter', Std_msgs::String)
msg = Std_msgs::String.new
i = 0
while node.ok?
msg.data = "Hello, rosruby!: #{i}"
publisher.publish(msg)
sleep(1.0)
i += 1
end
Ruby requires 'Start with Capital letter' for class or module names. So please use Std_msgs::String class instead of std_msgs::String. rosruby message compiler automatically generates messages by the rule.
There are rosruby_common that contains actionlib and tutorials.
Install some packages for tests.
$ sudo apt-get install rake gem
$ sudo gem install yard redcarpet simplecov
run tests.
$ rake test
you can generate API documents using yard. Document generation needs yard and redcarpet. You can install these by gem command like this.
$ gem install yard redcarpet
Then try to generate documentds.
$ rake yard
You can access to the generated documents from here.
rosruby's CMakeLists.txt defines some macros for your package that uses rosruby.
you can use these if you add find_package(rosruby)
to CMakeLists.txt.