Difference between revisions of "ROS"

From RobotinoWiki
(Introduction)
 
(19 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''Attention: We are currently working on a set of new ROS stacks for Robotino's new API2 but we are not ready to release them yet. However, you may check them out and experiment with them but please bear in mind that the stacks undergo changes everyday and may break your code. The new ROS stacks are:'''
+
==Introduction==
# [http://www.ros.org/wiki/robotino robotino]
 
# [http://www.ros.org/wiki/robotino_grappler robotino_grappler]
 
# [http://www.ros.org/wiki/robotino_kinect robotino_kinect]
 
==Introduction [Old API no longer supported]==
 
 
{|cellspacing="20" cellpadding="10"
 
{|cellspacing="20" cellpadding="10"
 
|- 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++ API 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 ===
 +
[https://doc.openrobotino.org/ROS robotino_rest_node] - Contains the robotino_rest_node.
 
|}
 
|}
  
{{#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].
+
Download the latest [https://doc.openrobotino.org/ROS source] and integrate it into your catkin workspace.
  
Install the latest [http://doc.openrobotino.org/download/packages/ openrobotino1] package and install it (you do not need to set symlinks nor do you need to install the examples).
+
==Test==
 +
===Drive Robotino===
 +
Start the omnidrive script
 +
<pre>
 +
rosrun robotino_rest_node omnidrive.py
 +
</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.
 +
<pre>
 +
rosrun robotino_rest_node omnidrive.py ROBOTINO_IP_ADDRESS
 +
</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.
 +
<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}}'
 +
</pre>
  
Get the Robotino ROS drivers:
+
==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].
  
<code>svn co http://svn.openrobotino.org/trunk/ros robotino-ros</code>
+
==Documents==
 
+
[http://monticore.de/robotics/downloads/lab13.pdf RWTH Aachen: Lab Course Model-Based Robotics Software Development Implementation Notes]
Put the robotino-ros into the ROS_PACKAGE_PATH. If everything is setup correctly you can run
 
 
 
<code>rosmake robotino_drivers</code>
 
 
 
==Hardware==
 
What you really need to use ROS in a meaningful way is a [http://servicerobotics.eu/en/robotinor/accessories/laser-rangefinder-for-robotinor/ laser rangefinder for Robotino].
 

Latest revision as of 15: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