Difference between revisions of "ROS"

From RobotinoWiki
(Installation)
 
(10 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
|[[Image:Robotino_ros_icon_64.png]]
 
|[[Image:Robotino_ros_icon_64.png]]
|The [http://www.ros.org/wiki/ Robot Operating System ROS] hosted and maintained by [http://www.willowgarage.com/ Willow Garage] is a free meta operating system for mobile robots. This page describes the adaption of Robotino C++ API2 to ROS.
+
|The [http://www.ros.org/wiki/ Robot Operating System ROS] hosted and maintained by [http://www.willowgarage.com/ Willow Garage] is a free meta operating system for mobile robots. This page describes the adaption of Robotino's REST-API to ROS.
 
! style="text-align:left; width:20em; background-color:#dddddd"|
 
! style="text-align:left; width:20em; background-color:#dddddd"|
 
=== Package links ===
 
=== Package links ===
[http://www.ros.org/wiki/robotino robotino] - Contains the essential packages for communicating with Robotino.
+
[https://doc.openrobotino.org/ROS robotino_rest_node] - Contains the robotino_rest_node.
 
 
[http://www.ros.org/wiki/robotino_grappler robotino_grappler] - If you own a [[Grappler]] then this stack provides packages to manipulate it with ROS.
 
 
 
[http://www.ros.org/wiki/robotino_kinect robotino_kinect] - If you own a [[Kinect]] sensor then this stack provides packages to explore the possibilities of Robotino and Kinect in ROS.
 
 
|}
 
|}
  
{{#ev:youtube|N7Gbe7vnufM}}
+
==Overview==
 +
There are two nodes available for Robotino.
 +
* robotino_node
 +
* robotino_rest_node
 +
robotino_node depends on the [[API2]] package. robotino_node is a C++ node and needs to be compiled. robotino_rest_node is connecting to Robotino's [[Rest_api|restapid]], which provides a [https://de.wikipedia.org/wiki/Representational_State_Transfer RESTful API]. robotino_rest_node is pure [https://www.python.org/ Python].
  
 
==Installation==
 
==Installation==
You will need a Linux (preferable Ubuntu) PC in order to run ROS. As we need much computational power for SLAM and especially path planning Robotinos PC104 is overstrained. So we use a laptop or desktop PC communicating to Robotino via wireless.
+
Your Robotino needs to be updated to at least image >= 4.0.0 from [https://doc.openrobotino.org/download/tinycore/robotino4image/ here]. Make sure you updated to the latest [https://doc.openrobotino.org/ChangeLog/daemons.txt robotino-daemons] package. You need to install python-requests package.
 
 
Install ROS. How to do this read [http://www.ros.org/wiki/ROS/Installation the ROS installation instructions].
 
 
 
Install [[API2]] packages on Robotino.
 
  
Get the Robotino ROS drivers:
+
Download the latest [https://doc.openrobotino.org/ROS source] and integrate it into your catkin workspace.
  
<code>svn co http://svn.openrobotino.org/robotino-ros-pkg/trunk/ robotino-ros-pkg</code>
+
==Test==
 
+
===Drive Robotino===
'''Hydro (Catkin)'''
+
Start the omnidrive script
 
+
<pre>
<code>svn co http://svn.openrobotino.org/robotino-ros-pkg/trunk/catkin-pkg/ robotino-ros-pkg</code>
+
rosrun robotino_rest_node omnidrive.py
NOTE: In the hydro version Kinect support from within robotino_node has be removed. For Kinect usage please use openni packages externally.
+
</pre>
 
+
The omnidrive script listens to the /cmd_vel topic. If no parameter is given the script sends received cmd_vel data to 127.0.0.1. If your ROS runs on a different machine than Robotino you need to specify Robotino's IP address.
Put the robotino-ros-pkg into the ROS_PACKAGE_PATH. If everything is setup correctly you can run
+
<pre>
 
+
rosrun robotino_rest_node omnidrive.py ROBOTINO_IP_ADDRESS
<code>For Fuerte: rosmake robotino</code>
+
</pre>
 
+
Publish to /cmd_vel to move Robotino forward with 0.1m/s. linear x,y is foward,sideward velocity and angular.z is rotational verlocity.
<code>For Hydro and later (after creating the appropriate workspace and checking out the code): catkin_make</code>
+
<pre>
 
+
rostopic pub -r 10 /cmd_vel geometry_msgs/Twist  '{linear:  {x: 0.1, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
NOTE: You will need the ROS "navigation" stack in order to build and run the Robotino nodes.
+
</pre>
  
 
==Hardware==
 
==Hardware==
 
What you really need to use ROS in a meaningful way is a [http://www.roboparts.de/robotino/scanner/en laser rangefinder for Robotino].
 
What you really need to use ROS in a meaningful way is a [http://www.roboparts.de/robotino/scanner/en laser rangefinder for Robotino].
 +
 +
==Documents==
 +
[http://monticore.de/robotics/downloads/lab13.pdf RWTH Aachen: Lab Course Model-Based Robotics Software Development Implementation Notes]

Latest revision as of 16:01, 8 March 2019

Introduction

Robotino ros icon 64.png The Robot Operating System ROS hosted and maintained by Willow Garage is a free meta operating system for mobile robots. This page describes the adaption of Robotino's REST-API to ROS.

Package links

robotino_rest_node - Contains the robotino_rest_node.

Overview

There are two nodes available for Robotino.

  • robotino_node
  • robotino_rest_node

robotino_node depends on the API2 package. robotino_node is a C++ node and needs to be compiled. robotino_rest_node is connecting to Robotino's restapid, which provides a RESTful API. robotino_rest_node is pure Python.

Installation

Your Robotino needs to be updated to at least image >= 4.0.0 from here. Make sure you updated to the latest robotino-daemons package. You need to install python-requests package.

Download the latest source and integrate it into your catkin workspace.

Test

Drive Robotino

Start the omnidrive script

rosrun robotino_rest_node omnidrive.py

The omnidrive script listens to the /cmd_vel topic. If no parameter is given the script sends received cmd_vel data to 127.0.0.1. If your ROS runs on a different machine than Robotino you need to specify Robotino's IP address.

rosrun robotino_rest_node omnidrive.py ROBOTINO_IP_ADDRESS

Publish to /cmd_vel to move Robotino forward with 0.1m/s. linear x,y is foward,sideward velocity and angular.z is rotational verlocity.

rostopic pub -r 10 /cmd_vel geometry_msgs/Twist  '{linear:  {x: 0.1, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'

Hardware

What you really need to use ROS in a meaningful way is a laser rangefinder for Robotino.

Documents

RWTH Aachen: Lab Course Model-Based Robotics Software Development Implementation Notes