HowToInstallRoombaPackage

From robotica.unileon.es
Jump to navigation Jump to search

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:

<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="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="pointcloud_to_laserscan" /> +<depend package="sensor_msgs"/>

  <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" /> +

</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 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:
     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