|
From: <jl...@us...> - 2008-04-12 03:17:10
|
Revision: 101
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=101&view=rev
Author: jleibs
Date: 2008-04-11 20:17:15 -0700 (Fri, 11 Apr 2008)
Log Message:
-----------
Added axis_ptz node to axis_cam. Flows for this are in unstable_flows until we decide a good representation. Camera_calibration now uses axis_cam.
Modified Paths:
--------------
pkg/trunk/axis_cam/build.yaml
pkg/trunk/axis_cam/include/axis_cam/axis_cam.h
pkg/trunk/axis_cam/manifest.xml
pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp
pkg/trunk/camera_calibration/manifest.xml
pkg/trunk/camera_calibration/nodes/run_cal
pkg/trunk/camera_calibration/src/calibrator/calibrator.cpp
Added Paths:
-----------
pkg/trunk/axis_cam/src/axis_ptz/
pkg/trunk/axis_cam/src/axis_ptz/Makefile
pkg/trunk/axis_cam/src/axis_ptz/axis_ptz.cpp
pkg/trunk/unstable_flows/
pkg/trunk/unstable_flows/build.yaml
pkg/trunk/unstable_flows/flows/
pkg/trunk/unstable_flows/flows/Actuator.flow
pkg/trunk/unstable_flows/flows/LensActuator.flow
pkg/trunk/unstable_flows/flows/LensActuatorNoSub.flow
pkg/trunk/unstable_flows/flows/PTZActuator.flow
pkg/trunk/unstable_flows/flows/PTZActuatorNoSub.flow
pkg/trunk/unstable_flows/manifest.xml
pkg/trunk/unstable_flows/rosbuild
Modified: pkg/trunk/axis_cam/build.yaml
===================================================================
--- pkg/trunk/axis_cam/build.yaml 2008-04-11 18:29:37 UTC (rev 100)
+++ pkg/trunk/axis_cam/build.yaml 2008-04-12 03:17:15 UTC (rev 101)
@@ -2,6 +2,7 @@
make:
- src/libaxis_cam
- src/axis_cam
+ - src/axis_ptz
- src/axis_cam_polled
- test/test_get
- test/test_ptz
Modified: pkg/trunk/axis_cam/include/axis_cam/axis_cam.h
===================================================================
--- pkg/trunk/axis_cam/include/axis_cam/axis_cam.h 2008-04-11 18:29:37 UTC (rev 100)
+++ pkg/trunk/axis_cam/include/axis_cam/axis_cam.h 2008-04-12 03:17:15 UTC (rev 101)
@@ -48,8 +48,16 @@
int get_focus();
bool set_iris(int iris = 0, bool relative = false, bool blocking = true);
int get_iris();
+
+ bool send_params(string params);
+ bool query_params();
+
void print_params();
+ int last_iris, last_focus;
+ double last_pan, last_tilt, last_zoom;
+ bool last_autofocus_enabled, last_autoiris_enabled;
+
private:
string ip;
uint8_t *jpeg_buf;
@@ -64,11 +72,7 @@
}
static size_t jpeg_write(void *buf, size_t size, size_t nmemb, void *userp);
static size_t ptz_write(void *buf, size_t size, size_t nmemb, void *userp);
- bool send_params(string params);
- bool query_params();
- int last_iris, last_focus;
- double last_pan, last_tilt, last_zoom;
- bool last_autofocus_enabled, last_autoiris_enabled;
+
};
#endif
Modified: pkg/trunk/axis_cam/manifest.xml
===================================================================
--- pkg/trunk/axis_cam/manifest.xml 2008-04-11 18:29:37 UTC (rev 100)
+++ pkg/trunk/axis_cam/manifest.xml 2008-04-12 03:17:15 UTC (rev 101)
@@ -15,5 +15,6 @@
<depend package="image_viewer"/>
<depend package="thread_utils"/>
<depend package="string_utils"/>
+<depend package="unstable_flows"/>
</package>
Added: pkg/trunk/axis_cam/src/axis_ptz/Makefile
===================================================================
--- pkg/trunk/axis_cam/src/axis_ptz/Makefile (rev 0)
+++ pkg/trunk/axis_cam/src/axis_ptz/Makefile 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,4 @@
+SRC = axis_ptz.cpp
+OUT = ../../nodes/axis_ptz
+PKG = axis_cam
+include $(shell $(ROS_ROOT)/rospack find roscpp)/make_include/node.mk
Added: pkg/trunk/axis_cam/src/axis_ptz/axis_ptz.cpp
===================================================================
--- pkg/trunk/axis_cam/src/axis_ptz/axis_ptz.cpp (rev 0)
+++ pkg/trunk/axis_cam/src/axis_ptz/axis_ptz.cpp 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,223 @@
+///////////////////////////////////////////////////////////////////////////////
+// The axis_cam package provides a library that talks to Axis IP-based cameras
+// as well as ROS nodes which use these libraries
+//
+// Copyright (C) 2008, Morgan Quigley
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// * Neither the name of Stanford University nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+#include "ros/ros_slave.h"
+#include "unstable_flows/FlowPTZActuatorNoSub.h"
+#include "axis_cam/axis_cam.h"
+
+class Axis_PTZ : public ROS_Slave
+{
+public:
+ FlowPTZActuatorNoSub *ptz;
+ FlowPTZActuatorNoSub *ptz_control;
+
+ string axis_host;
+ AxisCam *cam;
+ int frame_id;
+
+ float pan;
+ bool pan_rel;
+ bool pan_valid;
+
+ float tilt;
+ bool tilt_rel;
+ bool tilt_valid;
+
+ float zoom;
+ bool zoom_rel;
+ bool zoom_valid;
+
+ float focus;
+ bool focus_rel;
+ bool focus_valid;
+
+ float iris;
+ bool iris_rel;
+ bool iris_valid;
+
+ ROS_Mutex control_mutex;
+
+ Axis_PTZ() : ROS_Slave(), cam(NULL), frame_id(0)
+ {
+ register_source(ptz = new FlowPTZActuatorNoSub("ptz"));
+ register_sink(ptz_control = new FlowPTZActuatorNoSub("ptz_control"), ROS_CALLBACK(Axis_PTZ, ptz_callback));
+ register_with_master();
+ if (!get_string_param(".host", axis_host))
+ {
+ printf("host parameter not specified; defaulting to 192.168.0.90\n");
+ axis_host = "192.168.0.90";
+ }
+ printf("axis_cam host set to [%s]\n", axis_host.c_str());
+ get_int_param(".frame_id", &frame_id);
+ cam = new AxisCam(axis_host);
+ printf("package path is [%s]\n", get_my_package_path().c_str());
+ }
+
+ virtual ~Axis_PTZ()
+ {
+ if (cam)
+ delete cam;
+ }
+
+ bool get_and_send_ptz()
+ {
+ if (!cam->query_params()) {
+ return false;
+ }
+
+ ptz->frame_id = frame_id;
+
+ ptz->pan_val = cam->last_pan;
+ ptz->pan_rel = false;
+ ptz->pan_valid = true;
+
+ ptz->tilt_val = cam->last_tilt;
+ ptz->tilt_rel = false;
+ ptz->tilt_valid = true;
+
+ ptz->lens_zoom_val = cam->last_zoom;
+ ptz->lens_zoom_rel = false;
+ ptz->lens_zoom_valid = true;
+
+ ptz->lens_focus_val = cam->last_focus;
+ if (cam->last_autofocus_enabled)
+ ptz->lens_focus_val = -1;
+ ptz->lens_focus_rel = false;
+ ptz->lens_focus_valid = true;
+
+ ptz->lens_iris_val = cam->last_iris;
+ if (cam->last_autoiris_enabled == true)
+ ptz->lens_iris_val = -1;
+ ptz->lens_iris_rel = false;
+ ptz->lens_iris_valid = true;
+
+ ptz->publish();
+ return true;
+ }
+
+ void ptz_callback()
+ {
+ control_mutex.lock();
+
+ if (ptz_control->pan_valid) {
+ pan = ptz_control->pan_val;
+ pan_rel = ptz_control->pan_rel;
+ pan_valid = true;
+ }
+
+ if (ptz_control->tilt_valid) {
+ tilt = ptz_control->tilt_val;
+ tilt_rel = ptz_control->tilt_rel;
+ tilt_valid = true;
+ }
+
+ if (ptz_control->lens_zoom_valid) {
+ zoom = ptz_control->lens_zoom_val;
+ zoom_rel = ptz_control->lens_zoom_rel;
+ zoom_valid = true;
+ }
+
+ if (ptz_control->lens_focus_valid) {
+ focus = ptz_control->lens_focus_val;
+ focus_rel = ptz_control->lens_focus_rel;
+ focus_valid = true;
+ }
+
+ if (ptz_control->lens_focus_valid) {
+ focus = ptz_control->lens_focus_val;
+ focus_rel = ptz_control->lens_focus_rel;
+ focus_valid = true;
+ }
+
+ if (ptz_control->lens_iris_valid) {
+ iris = ptz_control->lens_iris_val;
+ iris_rel = ptz_control->lens_iris_rel;
+ iris_valid = true;
+ }
+
+ control_mutex.unlock();
+ }
+
+ bool do_ptz_control() {
+
+ control_mutex.lock();
+
+ ostringstream oss;
+
+ if (pan_valid)
+ oss << (pan_rel ? "r" : "") << string("pan=") << pan << string("&");
+ if (tilt_valid)
+ oss << (tilt_rel ? "r" : "") << string("tilt=") << tilt << string("&");
+ if (zoom_valid)
+ oss << (zoom_rel ? "r" : "") << string("zoom=") << zoom << string("&");
+ if (focus_valid) {
+ if (!focus_rel && focus <= 0)
+ oss << string("autofocus=on&");
+ else
+ oss << string("autofocus=off&") << (focus_rel ? "r" : "") << string("focus=") << focus << string("&");
+ }
+ if (iris_valid) {
+ if (!iris_rel && iris <= 0)
+ oss << string("autoiris=on&");
+ else
+ oss << string("autoiris=off&") << (iris_rel ? "r" : "") << string("iris=") << iris << string("&");
+ }
+
+ if (oss.str().size() > 0) {
+ if (!cam->send_params(oss.str()))
+ return false;
+ pan_valid = tilt_valid = zoom_valid = focus_valid = iris_valid = false;
+ }
+
+ control_mutex.unlock();
+
+ return true;
+ }
+
+
+};
+
+int main(int argc, char **argv)
+{
+ Axis_PTZ a;
+ while (a.happy()) {
+ if (!a.get_and_send_ptz())
+ {
+ a.log(ROS::ERROR,"Couldn't acquire ptz info.");
+ break;
+ }
+ if (!a.do_ptz_control())
+ {
+ a.log(ROS::ERROR,"Couldn't command ptz.");
+ break;
+ }
+ }
+ return 0;
+}
+
Modified: pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp
===================================================================
--- pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp 2008-04-11 18:29:37 UTC (rev 100)
+++ pkg/trunk/axis_cam/src/libaxis_cam/axis_cam.cpp 2008-04-12 03:17:15 UTC (rev 101)
@@ -266,16 +266,18 @@
else if (tokens[0] == string("iris"))
last_iris = atoi(tokens[1].c_str());
else if (tokens[0] == string("autofocus"))
- last_autofocus_enabled = (tokens[1] == string("on") ? true : false);
+ last_autofocus_enabled = (tokens[1].substr(0,2) == string("on") ? true : false);
else if (tokens[0] == string("autoiris"))
- last_autoiris_enabled = (tokens[1] == string("on") ? true : false);
-/*
+ last_autoiris_enabled = (tokens[1].substr(0,2) == string("on") ? true : false);
+
+ /*
printf("line has %d tokens:\n", tokens.size());
for (int i = 0; i < tokens.size(); i++)
- printf(" [%s] ", tokens[i].c_str());
+ printf(" '%s' ", tokens[i].substr(0,2).c_str());
printf("\n");
-*/
+ */
}
+
ptz_ss_mutex.unlock();
return true;
}
Modified: pkg/trunk/camera_calibration/manifest.xml
===================================================================
--- pkg/trunk/camera_calibration/manifest.xml 2008-04-11 18:29:37 UTC (rev 100)
+++ pkg/trunk/camera_calibration/manifest.xml 2008-04-12 03:17:15 UTC (rev 101)
@@ -5,8 +5,9 @@
<author>Jeremy Leibs (email: le...@wi...)</author>
<license>BSD</license>
<depend package='roscpp'/>
-<depend package='driver_axis213'/>
+<depend package='axis_cam'/>
<depend package='common_flows'/>
+<depend package='unstable_flows'/>
<depend package='yamlgraph'/>
<depend package='sdl'/>
<depend package='simple_sdl_gui'/>
Modified: pkg/trunk/camera_calibration/nodes/run_cal
===================================================================
--- pkg/trunk/camera_calibration/nodes/run_cal 2008-04-11 18:29:37 UTC (rev 100)
+++ pkg/trunk/camera_calibration/nodes/run_cal 2008-04-12 03:17:15 UTC (rev 101)
@@ -2,15 +2,15 @@
(puts "aaaaaaaa no ROS_ROOT"; exit) if !ENV['ROS_ROOT']
require "#{`#{ENV['ROS_ROOT']}/rospack latest yamlgraph`}/lib/yamlgraph/ygl.rb"
g = YAMLGraph.new
-g.node 'driver_axis213/axis213_cam', {'launch'=>'xterm', }
-g.node 'driver_axis213/axis213_ptz', {'launch'=>'xterm'}
-g.param 'axis213_cam.host', '10.0.0.150'
-g.param 'axis213_ptz.host', '10.0.0.150'
+g.node 'axis_cam/axis_cam', {'launch'=>'xterm', }
+g.node 'axis_cam/axis_ptz', {'launch'=>'xterm'}
+g.param 'axis_cam.host', '10.0.0.150'
+g.param 'axis_ptz.host', '10.0.0.150'
g.node 'camera_calibration/calibrator', {'launch'=>'xterm'}
g.node 'simple_sdl_gui/gui', {'launch'=>'xterm'}
-g.flow 'axis213_cam:image_all', 'calibrator:image_in'
-g.flow 'axis213_ptz:ptz_observe_all', 'calibrator:observe'
-g.flow 'calibrator:control', 'axis213_ptz:ptz_control'
+g.flow 'axis_cam:image', 'calibrator:image_in'
+g.flow 'axis_ptz:ptz', 'calibrator:observe'
+g.flow 'calibrator:control', 'axis_ptz:ptz_control'
g.flow 'calibrator:image_out', 'gui:image'
g.flow 'gui:key', 'calibrator:key'
YAMLGraphLauncher.new.launch g
Modified: pkg/trunk/camera_calibration/src/calibrator/calibrator.cpp
===================================================================
--- pkg/trunk/camera_calibration/src/calibrator/calibrator.cpp 2008-04-11 18:29:37 UTC (rev 100)
+++ pkg/trunk/camera_calibration/src/calibrator/calibrator.cpp 2008-04-12 03:17:15 UTC (rev 101)
@@ -47,7 +47,7 @@
#include "ros/ros_slave.h"
#include "common_flows/FlowImage.h"
#include "common_flows/ImageCodec.h"
-#include "driver_axis213/FlowPTZPosition.h"
+#include "unstable_flows/FlowPTZActuatorNoSub.h"
#include "simple_sdl_gui/FlowSDLKeyEvent.h"
void matToScreen(CvMat *mat, const char* matname) {
@@ -70,8 +70,8 @@
FlowImage *image_out;
ImageCodec<FlowImage> *codec_out;
- FlowPTZPosition *control;
- FlowPTZPosition *observe;
+ FlowPTZActuatorNoSub *control;
+ FlowPTZActuatorNoSub *observe;
FlowSDLKeyEvent *key;
CvMat *cvimage_in;
@@ -99,8 +99,8 @@
register_source(image_out = new FlowImage("image_out"));
codec_out = new ImageCodec<FlowImage>(image_out);
- register_sink(observe = new FlowPTZPosition("observe"), ROS_CALLBACK(Calibrator, ptz_received));
- register_source(control = new FlowPTZPosition("control"));
+ register_sink(observe = new FlowPTZActuatorNoSub("observe"), ROS_CALLBACK(Calibrator, ptz_received));
+ register_source(control = new FlowPTZActuatorNoSub("control"));
register_sink(key = new FlowSDLKeyEvent("key"), ROS_CALLBACK(Calibrator, key_received));
register_with_master();
@@ -143,11 +143,11 @@
virtual ~Calibrator() { }
void key_received() {
- control->pan = 0;
- control->tilt = 0;
- control->zoom = 0;
- control->focus = 0;
- control->relative = true;
+ control->pan_valid = false;
+ control->tilt_valid = false;
+ control->lens_zoom_valid = false;
+ control->lens_focus_valid = false;
+ control->lens_iris_valid = false;
// std::cout << "Got keypress: " << key->data << std::endl;
@@ -155,35 +155,57 @@
if (key->state == SDL_PRESSED) {
switch (key->sym) {
case SDLK_UP:
- control->tilt += 1;
+ control->tilt_val = 1;
+ control->tilt_rel = true;
+ control->tilt_valid = true;
break;
case SDLK_DOWN:
- control->tilt -= 1;
+ control->tilt_val = -1;
+ control->tilt_rel = true;
+ control->tilt_valid = true;
break;
case SDLK_LEFT:
- control->pan -= 1;
+ control->pan_val = -1;
+ control->pan_rel = true;
+ control->pan_valid = true;
break;
case SDLK_RIGHT:
- control->pan += 1;
+ control->pan_val = 1;
+ control->pan_rel = true;
+ control->pan_valid = true;
break;
case 61:
- control->zoom += 100;
+ control->lens_zoom_val = 100;
+ control->lens_zoom_rel = true;
+ control->lens_zoom_valid = true;
break;
case 45:
- control->zoom -= 100;
+ control->lens_zoom_val = -100;
+ control->lens_zoom_rel = true;
+ control->lens_zoom_valid = true;
break;
case SDLK_RIGHTBRACKET:
- control->focus += 100;
+ control->lens_focus_val = 100;
+ control->lens_focus_rel = true;
+ control->lens_focus_valid = true;
break;
case SDLK_LEFTBRACKET:
- control->focus -= 100;
+ control->lens_focus_val = -100;
+ control->lens_focus_rel = true;
+ control->lens_focus_valid = true;
break;
case SDLK_SPACE:
- control->pan = 0;
- control->tilt = 0;
- control->zoom = 5000;
- control->focus = -1;
- control->relative = false;
+ control->pan_val = 0;
+ control->pan_rel = false;
+ control->pan_valid = true;
+
+ control->tilt_val = 0;
+ control->tilt_rel = false;
+ control->tilt_valid = true;
+
+ control->lens_zoom_val = 5000;
+ control->lens_zoom_rel = false;
+ control->lens_zoom_valid = true;
break;
case SDLK_c:
centering = !centering;
@@ -193,17 +215,17 @@
break;
case SDLK_f:
observe->lock_atom();
- control->pan = observe->pan;
- control->tilt = observe->tilt;
- control->zoom = observe->zoom;
- tmp_focus = observe->focus;
+ tmp_focus = observe->lens_focus_val;
observe->unlock_atom();
- control->relative = false;
- if (tmp_focus > 1) {
- control->focus = -1;
+ if (tmp_focus > 0) {
+ control->lens_focus_val = -1;
+ control->lens_focus_rel = false;
+ control->lens_focus_valid = true;
} else {
- control->focus = 0;
+ control->lens_focus_val = 0;
+ control->lens_focus_rel = true;
+ control->lens_focus_valid = true;
}
break;
case SDLK_RETURN:
@@ -279,10 +301,10 @@
std::ofstream posfile(ss.str().c_str());
observe->lock_atom();
- posfile << "P: " << observe->pan << std::endl
- << "T: " << observe->tilt << std::endl
- << "Z: " << observe->zoom << std::endl
- << "F: " << observe->focus;
+ posfile << "P: " << observe->pan_val << std::endl
+ << "T: " << observe->tilt_val << std::endl
+ << "Z: " << observe->lens_zoom_val << std::endl
+ << "F: " << observe->lens_focus_val;
observe->unlock_atom();
posfile.close();
@@ -303,10 +325,10 @@
std::stringstream ss;
observe->lock_atom();
- ss << "P: " << observe->pan;
- ss << " T: " << observe->tilt;
- ss << " Z: " << observe->zoom;
- ss << " F: " << observe->focus;
+ ss << "P: " << observe->pan_val;
+ ss << " T: " << observe->tilt_val;
+ ss << " Z: " << observe->lens_zoom_val;
+ ss << " F: " << observe->lens_focus_val;
observe->unlock_atom();
cvPutText(cvimage_undistort, ss.str().c_str(), cvPoint(15,30), &font, CV_RGB(255,0,0));
@@ -347,11 +369,14 @@
rel_pan = (COM.x - 354.0) * .001;
rel_tilt = -(COM.y - 240.0) * .001;
- control->pan = rel_pan;
- control->tilt = rel_tilt;
- control->zoom = 0;
- control->focus = 0;
- control->relative = true;
+ control->pan_val = rel_pan;
+ control->pan_rel = true;
+ control->pan_valid = true;
+
+ control->tilt_val = rel_tilt;
+ control->tilt_rel = true;
+ control->tilt_valid = true;
+
control->publish();
}
Added: pkg/trunk/unstable_flows/build.yaml
===================================================================
Added: pkg/trunk/unstable_flows/flows/Actuator.flow
===================================================================
--- pkg/trunk/unstable_flows/flows/Actuator.flow (rev 0)
+++ pkg/trunk/unstable_flows/flows/Actuator.flow 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,3 @@
+float32 val
+byte rel
+byte valid
Added: pkg/trunk/unstable_flows/flows/LensActuator.flow
===================================================================
--- pkg/trunk/unstable_flows/flows/LensActuator.flow (rev 0)
+++ pkg/trunk/unstable_flows/flows/LensActuator.flow 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,3 @@
+Actuator zoom
+Actuator focus
+Actuator iris
\ No newline at end of file
Added: pkg/trunk/unstable_flows/flows/LensActuatorNoSub.flow
===================================================================
--- pkg/trunk/unstable_flows/flows/LensActuatorNoSub.flow (rev 0)
+++ pkg/trunk/unstable_flows/flows/LensActuatorNoSub.flow 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,9 @@
+float32 zoom_val
+byte zoom_rel
+byte zoom_valid
+float32 focus_val
+byte focus_rel
+byte focus_valid
+float32 iris_val
+byte iris_rel
+byte iris_valid
Added: pkg/trunk/unstable_flows/flows/PTZActuator.flow
===================================================================
--- pkg/trunk/unstable_flows/flows/PTZActuator.flow (rev 0)
+++ pkg/trunk/unstable_flows/flows/PTZActuator.flow 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,4 @@
+Actuator pan
+Actuator tilt
+LensActuator lens
+
Added: pkg/trunk/unstable_flows/flows/PTZActuatorNoSub.flow
===================================================================
--- pkg/trunk/unstable_flows/flows/PTZActuatorNoSub.flow (rev 0)
+++ pkg/trunk/unstable_flows/flows/PTZActuatorNoSub.flow 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,17 @@
+float32 pan_val
+byte pan_rel
+byte pan_valid
+float32 tilt_val
+byte tilt_rel
+byte tilt_valid
+float32 lens_zoom_val
+byte lens_zoom_rel
+byte lens_zoom_valid
+float32 lens_focus_val
+byte lens_focus_rel
+byte lens_focus_valid
+float32 lens_iris_val
+byte lens_iris_rel
+byte lens_iris_valid
+
+
Added: pkg/trunk/unstable_flows/manifest.xml
===================================================================
--- pkg/trunk/unstable_flows/manifest.xml (rev 0)
+++ pkg/trunk/unstable_flows/manifest.xml 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,12 @@
+<package>
+ <description brief="Flows that have not yet been elevated to the status common_flows">
+This is a place to put flows that are more general than the module that needs to use them, but
+havn't been tested thoroughly enough to put in common_flows. Depending on these flows is
+likely to break things since they are subject to refactoring and/or moving at any time.
+ </description>
+ <author>Jeremy Leibs (email: le...@wi...)</author>
+ <license>BSD</license>
+ <url>http://pr.willowgarage.com</url>
+ <depend package="common_flows"/>
+</package>
+
Added: pkg/trunk/unstable_flows/rosbuild
===================================================================
--- pkg/trunk/unstable_flows/rosbuild (rev 0)
+++ pkg/trunk/unstable_flows/rosbuild 2008-04-12 03:17:15 UTC (rev 101)
@@ -0,0 +1,2 @@
+#!/usr/bin/env ruby
+exec("#{`#{ENV['ROS_ROOT']}/rospack find rostools`}/scripts/yamlbuild", 'build.yaml', *ARGV)
Property changes on: pkg/trunk/unstable_flows/rosbuild
___________________________________________________________________
Name: svn:executable
+ *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|