From 0a8ccdf5bf6eb5886add25140228e819a0133389 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sergi=20Hern=C3=A0ndez=20Juan?= <shernand@iri.upc.edu>
Date: Wed, 11 Feb 2015 11:09:01 +0000
Subject: [PATCH] Changes to enable the use of nodelets. Added a new launch
 file with the same node configuration of the firewire_nodelet.launch file but
 without nodelets.

---
 firewire_nodelet_plugin.xml            |  4 +-
 include/camera_common.h                |  8 ++++
 launch/firewire.launch                 | 65 ++++++++++++++++++++++++++
 launch/firewire_nodelet.launch         |  4 +-
 package.xml                            |  1 +
 src/firewire_camera_driver_nodelet.cpp |  2 +-
 6 files changed, 79 insertions(+), 5 deletions(-)
 create mode 100755 launch/firewire.launch

diff --git a/firewire_nodelet_plugin.xml b/firewire_nodelet_plugin.xml
index 78eb24b..90cb46e 100755
--- a/firewire_nodelet_plugin.xml
+++ b/firewire_nodelet_plugin.xml
@@ -1,5 +1,5 @@
-<library path="lib/libfirewire_camera_driver_nodelet">
-  <class name="iri_firewire_camera/iri_firewire_nodelet" type="FirewireCameraNodelet" base_class_type="nodelet::Nodelet">
+<library path="lib/libiri_firewire_camera_nodelet">
+  <class name="iri_firewire_camera/FirewireCameraNodelet" type="FirewireCameraNodelet" base_class_type="nodelet::Nodelet">
     <description>
       Nodelete for the iri firewire camera module
     </description>
diff --git a/include/camera_common.h b/include/camera_common.h
index aa0e6c1..39264b0 100755
--- a/include/camera_common.h
+++ b/include/camera_common.h
@@ -27,4 +27,12 @@ typedef struct
   sensor_msgs::CameraInfo CameraInfo_msg_;
 }TROSCamera;
 
+typedef struct
+{
+  image_transport::ImageTransport *it;
+  image_transport::CameraPublisher camera_image_publisher_;
+  sensor_msgs::ImagePtr Image_msg_;
+  sensor_msgs::CameraInfoPtr CameraInfo_msg_;
+}TROSCameraPtr;
+
 #endif
diff --git a/launch/firewire.launch b/launch/firewire.launch
new file mode 100755
index 0000000..9490be3
--- /dev/null
+++ b/launch/firewire.launch
@@ -0,0 +1,65 @@
+<launch>
+
+  <!-- bumblebee -->
+  <!-- published topics: /sensors/head_right/image_raw -->
+  <!-- subscribed topics: -->
+  <!-- service clients: -->
+  <!-- service servers: -->
+  <!-- action clients: -->
+  <!-- action servers: -->
+  <node pkg ="iri_firewire_camera"
+        type="iri_firewire_camera"
+        name="bumblebee">
+    <remap from="/bumblebee/camera_image"
+             to="/sensors/head_right/image_raw"/>
+    <param name="Camera_node"  value="0" />
+    <param name="frame_id"     value="bumblebee_right" type="string" />
+    <!-- set calibration file -->
+    <param name="cal_file"     value="file://$(find iri_firewire_camera)/calibration/$(env ROBOT)_right_camera.yaml" type="string" />
+    <param name="ISO_speed"    value="400" />
+    <param name="Framerate"    value="7.5" />
+    <param name="Color_coding" value="3" />
+    <param name="Image_width"  value="1024" />
+    <param name="Image_height" value="768" />
+    <param name="~tf_prefix"   value="/$(env ROBOT)" type="str"/>
+  </node>
+
+  <!-- published topics: /processed_image -->
+  <!-- subscribed topics: /sensors/head_right/image_raw -->
+  <!--                    /sensors/head_right/camera_info -->
+  <!-- service clients: -->
+  <!-- service servers: -->
+  <!-- action clients: -->
+  <!-- action servers: -->
+  <!-- image crop -->
+  <node pkg ="nodelet"
+        type="nodelet"
+        name="image_proc_dec"
+        args="standalone image_proc/crop_decimate">
+    <param name="decimation_x" value="2" />
+    <param name="decimation_y" value="2" />
+    <remap from="/camera/image_raw"
+             to="/sensors/head_right/image_raw"/>
+    <remap from="/camera/camera_info"
+             to="/sensors/head_right/camera_info"/>
+  </node>
+
+  <!-- image rectification -->
+  <node pkg ="image_proc"
+        type="image_proc"
+        name="image_proc_rect">
+    <remap from="/image_raw"
+             to="/camera_out/image_raw" />
+    <remap from="/camera_info"
+             to="/camera_out/camera_info" />
+    <remap from="/image_rect_color"
+             to="/processed_image" />
+  </node>
+
+  <node pkg="image_view"
+        type="image_view"
+        name="image_view" >
+    <remap from="/image" to="/processed_image"/>
+  </node>
+
+</launch>
diff --git a/launch/firewire_nodelet.launch b/launch/firewire_nodelet.launch
index 94dc81c..96d17b4 100755
--- a/launch/firewire_nodelet.launch
+++ b/launch/firewire_nodelet.launch
@@ -2,7 +2,7 @@
   <node pkg="nodelet" type="nodelet" name="standalone_nodelet"  args="manager" output="screen">
     <param name="Camera_node"  value="0" />
     <param name="frame_id"     value="bumblebee_frame" type="string" />
-    <param name="cal_file"     value="file://$(find iri_firewire_camera)/calibration/bumblebee_right.yml" type="string" />
+    <param name="cal_file"     value="file://$(find iri_firewire_camera)/calibration/$(env ROBOT)_right_camera.yaml" type="string" />
     <param name="ISO_speed"    value="400" />
     <param name="Framerate"    value="7.5" />
     <param name="Color_coding" value="3" />
@@ -22,7 +22,7 @@
   </node>
 
   <!-- firewire camera driver -->
-  <node pkg="nodelet" type="nodelet" name="iri_firewire_nodelet" args="load iri_firewire_camera/iri_firewire_nodelet standalone_nodelet" output="screen">
+  <node pkg="nodelet" type="nodelet" name="iri_firewire_nodelet" args="load iri_firewire_camera/FirewireCameraNodelet standalone_nodelet" output="screen">
   </node>
 
   <!-- image decimation -->
diff --git a/package.xml b/package.xml
index c82d03d..99c4384 100644
--- a/package.xml
+++ b/package.xml
@@ -61,5 +61,6 @@
   <!-- The export tag contains other, unspecified, tags -->
   <export>
     <!-- Other tools can request additional information be placed here -->
+    <nodelet plugin="${prefix}/firewire_nodelet_plugin.xml" />
   </export>
 </package>
diff --git a/src/firewire_camera_driver_nodelet.cpp b/src/firewire_camera_driver_nodelet.cpp
index f031363..1e0adac 100755
--- a/src/firewire_camera_driver_nodelet.cpp
+++ b/src/firewire_camera_driver_nodelet.cpp
@@ -237,5 +237,5 @@ FirewireCameraNodelet::~FirewireCameraNodelet()
 }
 
 // parameters are: package, class name, class type, base class type
-PLUGINLIB_DECLARE_CLASS(iri_firewire_camera, iri_firewire_nodelet, FirewireCameraNodelet, nodelet::Nodelet);
+PLUGINLIB_DECLARE_CLASS(iri_firewire_camera, FirewireCameraNodelet, FirewireCameraNodelet, nodelet::Nodelet);
 
-- 
GitLab