Difference between revisions of "HowToInstallRoombaPackage"

From robotica.unileon.es
Jump to: navigation, search
(Created page with "== Mode 1 == === Get packages=== Create a rosinstall file: (e.g turtlebot_roomba.install) - hg: uri: http://code.google.com/p/parsec/ local-name: RoCKIn/parsec...")
 
m
 
(26 intermediate revisions by one other user not shown)
Line 1: Line 1:
== Mode 1 ==
+
=Get packages=
  
=== Get packages===
+
==Mode 1==
  
Create a rosinstall file: (e.g turtlebot_roomba.install)
+
Step 1: Create a rosinstall file: (e.g turtlebot_roomba.install)
  
 
  - hg:
 
  - hg:
Line 11: Line 11:
 
       uri: http://code.in.tum.de/svn/turtlebot-roomba
 
       uri: http://code.in.tum.de/svn/turtlebot-roomba
 
       local-name: RoCKIn/turtlebot_roomba
 
       local-name: RoCKIn/turtlebot_roomba
 +
- svn:
 +
      uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/lse_communication/trunk
 +
      local-name: RoCKIn/lse_communication
 +
- svn:
 +
      uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/serial_communication/trunk/cereal_port/
 +
      local-name: RoCKIn/cereal_port
 +
 +
Step 2: In your ROS workspace you can launch
 +
 +
rosinstall . turtlebot_roomba.install
 +
 +
 +
Step 3: Some packages have deprecated methods (they are from ROS electric), so we can remove them in the compilation. The turtlebot_roomba package doesn't need all of them.
 +
 +
ToDo: We should fix them but I haven't got time. Also the dependencies of turtlebot_roomba should be checked
 +
 +
; Parsec
 +
 +
We can move outside folder parsec:
 +
cmd_vel_safety_filter  gmapping_offline  parsec_arduino  parsec_arduino_tests  tf_odometry_relay
 +
 +
We need to fix the dependencies in  some stacks:
 +
 +
<syntaxhighlight lang=CMake>
 +
diff -r f47a20bb44a5 parsec_bringup/manifest.xml
 +
--- a/parsec_bringup/manifest.xml Fri Mar 30 09:32:23 2012 -0700
 +
+++ b/parsec_bringup/manifest.xml Fri Oct 18 14:04:22 2013 +0200
 +
@@ -15,7 +15,7 @@
 +
  <depend package="rospy" />
 +
  <depend package="geometry_msgs" />
 +
  <depend package="priority_mux" />
 +
-  <depend package="cmd_vel_safety_filter" />
 +
+  <!-- <depend package="cmd_vel_safety_filter" /> -->
 +
  <depend package="compressed_visualization_transport" />
 +
 +
</package>
 +
diff -r f47a20bb44a5 parsec_navigation/manifest.xml
 +
--- a/parsec_navigation/manifest.xml Fri Mar 30 09:32:23 2012 -0700
 +
+++ b/parsec_navigation/manifest.xml Fri Oct 18 14:04:22 2013 +0200
 +
@@ -16,6 +16,8 @@
 +
  <depend package="move_base" />
 +
  <depend package="navfn" />
 +
  <depend package="parsec_perception" />
 +
-  <depend package="point_cloud_converter" />
 +
+  <!-- <depend package="point_cloud_converter" /> -->
 +
+  <depend package="pointcloud_to_laserscan" />
 +
+<depend package="sensor_msgs"/><!-- for point cloud should be removed-->
 +
  <depend package="rcconsole" />
 +
</package>
 +
diff -r f47a20bb44a5 parsec_odometry/manifest.xml
 +
--- a/parsec_odometry/manifest.xml Fri Mar 30 09:32:23 2012 -0700
 +
+++ b/parsec_odometry/manifest.xml Fri Oct 18 14:04:22 2013 +0200
 +
@@ -16,6 +16,6 @@
 +
  <depend package="parsec_msgs" />
 +
  <depend package="nav_msgs" />
 +
  <depend package="sensor_msgs" />
 +
-  <depend package="eigen" />
 +
+ <!--  <depend package="eigen" /> -->
 +
 +
</package>
 +
diff -r f47a20bb44a5 rcconsole/include/rcconsole/log_filter.h
 +
--- a/rcconsole/include/rcconsole/log_filter.h Fri Mar 30 09:32:23 2012 -0700
 +
+++ b/rcconsole/include/rcconsole/log_filter.h Fri Oct 18 14:04:22 2013 +0200
 +
@@ -21,6 +21,9 @@
 +
 +
#include <rosgraph_msgs/Log.h>
 +
 +
+#include "ros/ros.h"
 +
+#include "std_msgs/String.h"
 +
+
 +
namespace rcconsole {
 +
 +
class LogFilter : public nodelet::Nodelet {
 +
</syntaxhighlight>
 +
 +
; rurtlebot_roomba
 +
 +
When the node is launched we could see problems with python deprecated methods.  We solved them with the [https://kforge.ros.org/turtlebot/trac/attachment/ticket/139/Turtlebot_node%20patches.diff.txt patch]. You should make the changes in your turtlebot_roomba package.
 +
 +
<syntaxhighlight lang=python>
 +
Index: turtlebot_node/src/turtlebot_node/create_sensor_handler.py
 +
===================================================================
 +
--- turtlebot_node/src/turtlebot_node/create_sensor_handler.py (revisión: 29)
 +
+++ turtlebot_node/src/turtlebot_node/create_sensor_handler.py (copia de trabajo)
 +
@@ -35,12 +35,14 @@
 +
import logging
 +
import time
 +
import rospy
 +
+import genpy
 +
 +
from math import radians
 +
from turtlebot_driver import SENSOR_GROUP_PACKET_LENGTHS
 +
 +
 +
-_struct_I = roslib.message.struct_I
 +
+_struct_I = genpy.message.struct_I
 +
_struct_BI = struct.Struct(">BI")
 +
_struct_12B2hBHhb7HBH5B4h = struct.Struct(">12B2hBHhb7HBH5B4h")
 +
 +
@@ -75,7 +77,7 @@
 +
 +
        return msg
 +
    except struct.error, e:
 +
-      raise roslib.message.DeserializationError(e)
 +
+ raise genpy.message.DeserializationError(e)
 +
 +
class CreateSensorHandler(object):
 +
</syntaxhighlight>
 +
 +
You shouldn't have more problems, but just in case:
 +
 +
<syntaxhighlight lang=python>
 +
diff -r 7700ddd338db turtlebot_node/nodes/turtlebot_node.py
 +
--- a/turtlebot_node/nodes/turtlebot_node.py    Fri Mar 30 12:06:48 2012 -0700
 +
+++ b/turtlebot_node/nodes/turtlebot_node.py    Thu Apr 26 20:02:45 2012 -0500
 +
@@ -51,7 +51,7 @@
 +
 +
from math import sin, cos
 +
 +
-import roslib.rosenv
 +
+import rospkg
 +
import rospy
 +
import tf
 +
 +
@@ -498,7 +498,7 @@
 +
              odometry.header.stamp, odometry.child_frame_id, odometry.header.frame_id)
 +
 +
def connected_file():
 +
-    return os.path.join(roslib.rosenv.get_ros_home(), 'turtlebot-connected')
 +
+    return os.path.join(rospkg.get_ros_home(), 'turtlebot-connected')
 +
 +
def turtlebot_main(argv):
 +
    c = TurtlebotNode()
 +
</syntaxhighlight>
 +
 +
==Mode 2==
 +
 +
Step 1: Create a rosinstall file: (e.g turtlebot_roomba.install)
  
 
  - svn:
 
  - svn:
 
       uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/lse_communication/trunk
 
       uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/lse_communication/trunk
 
       local-name: RoCKIn/lse_communication
 
       local-name: RoCKIn/lse_communication
 
 
  - svn:
 
  - svn:
 
       uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/serial_communication/trunk/cereal_port/
 
       uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/serial_communication/trunk/cereal_port/
 
       local-name: RoCKIn/cereal_port
 
       local-name: RoCKIn/cereal_port
 +
- svn:
 +
      uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/roomba_robot/trunk/roomba_500_series/
 +
      local-name: RoCKIn/roomba_500_series/
 +
 +
 +
Step 2: In your ROS workspace you can launch
 +
 +
rosinstall . turtlebot_roomba.install
 +
 +
=Compilation=
 +
 +
The standard ROS compilation
 +
 +
$rosmake
 +
 +
If you want to mark it as INSTALLED add -i to rosmake but remember remove ROS_NOBUILD if you want to make changes and re-compile.
 +
 +
Content of ROS_NOBUILD
 +
 +
ROS_NOBUILD : created by rosmake to mark as installed
 +
 +
=Running=
 +
 +
==Mode 1==
 +
 +
We use roslaunch
 +
 +
$ roslaunch turtlebot_roomba_bringup ias-turtlebot
 +
 +
Other posibilities
 +
driver.launch                ias-turtlebot.launch        laser.launch               
 +
ias-turtlebot-kinect.launch  kinect.launch                minimal.launch
 +
 +
 +
==Mode 2==
 +
 +
We use rosrun and roomba500 for our model 520
 +
 +
$ rosrun roomba_500_series roomba500_light_node
 +
 +
Other possibilities
 +
 +
godock_client        godock_server    roomba500_light_node  roomba560_node
 +
 +
 +
=ROS references=
 +
 +
Main Contributor: [http://lse.isr.uc.pt/people/goncalo-cabrita Gonçalo Cabrita]
 +
 +
University:
 +
 +
[http://www.isr.uc.pt/ Institute for Systems and Robotics at the University of Coimbra]
 +
 +
[http://lse.isr.uc.pt/ ISR Embedded Systems Lab]
 +
 +
ROS
  
 +
[http://wiki.ros.org/Robots/Roomba Roomba in ROS]
  
 +
[http://wiki.ros.org/roomba_500_series iRobot Roomba 500 package based on the iRobot Open Interface Specification]
  
== Mode 2 ==
+
[http://wiki.ros.org/lse_roomba_toolbox lse_roomba_toolbox]

Latest revision as of 08:26, 25 June 2014

Get packages

Mode 1

Step 1: Create a rosinstall file: (e.g turtlebot_roomba.install)

- hg:
     uri: http://code.google.com/p/parsec/
     local-name: RoCKIn/parsec
- svn:
     uri: http://code.in.tum.de/svn/turtlebot-roomba
     local-name: RoCKIn/turtlebot_roomba
- svn:
     uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/lse_communication/trunk
     local-name: RoCKIn/lse_communication
- svn:
     uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/serial_communication/trunk/cereal_port/
     local-name: RoCKIn/cereal_port

Step 2: In your ROS workspace you can launch

rosinstall . turtlebot_roomba.install

Step 3: Some packages have deprecated methods (they are from ROS electric), so we can remove them in the compilation. The turtlebot_roomba package doesn't need all of them.

ToDo: We should fix them but I haven't got time. Also the dependencies of turtlebot_roomba should be checked
Parsec

We can move outside folder parsec:

cmd_vel_safety_filter  gmapping_offline  parsec_arduino  parsec_arduino_tests  tf_odometry_relay

We need to fix the dependencies in some stacks:

 
diff -r f47a20bb44a5 parsec_bringup/manifest.xml
--- a/parsec_bringup/manifest.xml	Fri Mar 30 09:32:23 2012 -0700
+++ b/parsec_bringup/manifest.xml	Fri Oct 18 14:04:22 2013 +0200
@@ -15,7 +15,7 @@
   <depend package="rospy" />
   <depend package="geometry_msgs" />
   <depend package="priority_mux" />
-  <depend package="cmd_vel_safety_filter" />
+  <!-- <depend package="cmd_vel_safety_filter" /> -->
   <depend package="compressed_visualization_transport" />
 
 </package>
diff -r f47a20bb44a5 parsec_navigation/manifest.xml
--- a/parsec_navigation/manifest.xml	Fri Mar 30 09:32:23 2012 -0700
+++ b/parsec_navigation/manifest.xml	Fri Oct 18 14:04:22 2013 +0200
@@ -16,6 +16,8 @@
   <depend package="move_base" />
   <depend package="navfn" />
   <depend package="parsec_perception" />
-  <depend package="point_cloud_converter" />
+  <!-- <depend package="point_cloud_converter" /> -->
+  <depend package="pointcloud_to_laserscan" />
+<depend package="sensor_msgs"/><!-- for point cloud should be removed-->
   <depend package="rcconsole" />
 </package>
diff -r f47a20bb44a5 parsec_odometry/manifest.xml
--- a/parsec_odometry/manifest.xml	Fri Mar 30 09:32:23 2012 -0700
+++ b/parsec_odometry/manifest.xml	Fri Oct 18 14:04:22 2013 +0200
@@ -16,6 +16,6 @@
   <depend package="parsec_msgs" />
   <depend package="nav_msgs" />
   <depend package="sensor_msgs" />
-  <depend package="eigen" />
+ <!--  <depend package="eigen" /> -->
 
 </package>
diff -r f47a20bb44a5 rcconsole/include/rcconsole/log_filter.h
--- a/rcconsole/include/rcconsole/log_filter.h	Fri Mar 30 09:32:23 2012 -0700
+++ b/rcconsole/include/rcconsole/log_filter.h	Fri Oct 18 14:04:22 2013 +0200
@@ -21,6 +21,9 @@
 
 #include <rosgraph_msgs/Log.h>
 
+#include "ros/ros.h"
+#include "std_msgs/String.h"
+
 namespace rcconsole {
 
 class LogFilter : public nodelet::Nodelet {
rurtlebot_roomba

When the node is launched we could see problems with python deprecated methods. We solved them with the patch. You should make the changes in your turtlebot_roomba package.

 
Index: turtlebot_node/src/turtlebot_node/create_sensor_handler.py
===================================================================
--- turtlebot_node/src/turtlebot_node/create_sensor_handler.py	(revisión: 29)
+++ turtlebot_node/src/turtlebot_node/create_sensor_handler.py	(copia de trabajo)
@@ -35,12 +35,14 @@
 import logging
 import time
 import rospy
+import genpy
 
 from math import radians
 from turtlebot_driver import SENSOR_GROUP_PACKET_LENGTHS
 
 
-_struct_I = roslib.message.struct_I
+_struct_I = genpy.message.struct_I
 _struct_BI = struct.Struct(">BI")
 _struct_12B2hBHhb7HBH5B4h = struct.Struct(">12B2hBHhb7HBH5B4h")
 
@@ -75,7 +77,7 @@
 
         return msg
     except struct.error, e:
-      raise roslib.message.DeserializationError(e)
+	raise genpy.message.DeserializationError(e)
 
 class CreateSensorHandler(object):

You shouldn't have more problems, but just in case:

 
diff -r 7700ddd338db turtlebot_node/nodes/turtlebot_node.py
--- a/turtlebot_node/nodes/turtlebot_node.py    Fri Mar 30 12:06:48 2012 -0700
+++ b/turtlebot_node/nodes/turtlebot_node.py    Thu Apr 26 20:02:45 2012 -0500
@@ -51,7 +51,7 @@

 from math import sin, cos

-import roslib.rosenv
+import rospkg
 import rospy
 import tf

@@ -498,7 +498,7 @@
              odometry.header.stamp, odometry.child_frame_id, odometry.header.frame_id)

 def connected_file():
-    return os.path.join(roslib.rosenv.get_ros_home(), 'turtlebot-connected')
+    return os.path.join(rospkg.get_ros_home(), 'turtlebot-connected')

 def turtlebot_main(argv):
     c = TurtlebotNode()

Mode 2

Step 1: Create a rosinstall file: (e.g turtlebot_roomba.install)

- svn:
     uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/lse_communication/trunk
     local-name: RoCKIn/lse_communication
- svn:
     uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/serial_communication/trunk/cereal_port/
     local-name: RoCKIn/cereal_port
- svn:
     uri: http://isr-uc-ros-pkg.googlecode.com/svn/stacks/roomba_robot/trunk/roomba_500_series/ 
     local-name: RoCKIn/roomba_500_series/


Step 2: In your ROS workspace you can launch

rosinstall . turtlebot_roomba.install

Compilation

The standard ROS compilation

$rosmake

If you want to mark it as INSTALLED add -i to rosmake but remember remove ROS_NOBUILD if you want to make changes and re-compile.

Content of ROS_NOBUILD

ROS_NOBUILD : created by rosmake to mark as installed

Running

Mode 1

We use roslaunch

$ roslaunch turtlebot_roomba_bringup ias-turtlebot

Other posibilities

driver.launch                ias-turtlebot.launch         laser.launch                 
ias-turtlebot-kinect.launch  kinect.launch                minimal.launch


Mode 2

We use rosrun and roomba500 for our model 520

$ rosrun roomba_500_series roomba500_light_node

Other possibilities

godock_client         godock_server     roomba500_light_node  roomba560_node


ROS references

Main Contributor: Gonçalo Cabrita

University:

Institute for Systems and Robotics at the University of Coimbra

ISR Embedded Systems Lab

ROS

Roomba in ROS

iRobot Roomba 500 package based on the iRobot Open Interface Specification

lse_roomba_toolbox