Difference between revisions of "HowToInstallRoombaPackage"
WikiSheriff (talk | contribs) (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: | ||
− | = | + | =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] | ||
− | + | [http://wiki.ros.org/lse_roomba_toolbox lse_roomba_toolbox] |
Latest revision as of 08:26, 25 June 2014
Contents
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
ROS
iRobot Roomba 500 package based on the iRobot Open Interface Specification