|
From: <mor...@us...> - 2008-04-28 23:13:39
|
Revision: 216
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=216&view=rev
Author: morgan_quigley
Date: 2008-04-28 16:13:16 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
joyshark lets you push a button and start the loneshark scanner
Modified Paths:
--------------
pkg/branches/rosbus/nav/nav_view/nav_view.cpp
pkg/branches/rosbus/vision/sharks/manifest.xml
pkg/branches/rosbus/vision/sharks/src/libsharks/sharks.cpp
Added Paths:
-----------
pkg/branches/rosbus/vision/sharks/src/joyshark/
pkg/branches/rosbus/vision/sharks/src/joyshark/Makefile
pkg/branches/rosbus/vision/sharks/src/joyshark/config.txt
pkg/branches/rosbus/vision/sharks/src/joyshark/joyshark.cpp
Modified: pkg/branches/rosbus/nav/nav_view/nav_view.cpp
===================================================================
--- pkg/branches/rosbus/nav/nav_view/nav_view.cpp 2008-04-28 22:51:13 UTC (rev 215)
+++ pkg/branches/rosbus/nav/nav_view/nav_view.cpp 2008-04-28 23:13:16 UTC (rev 216)
@@ -2,13 +2,13 @@
#include <math.h>
#include <GL/gl.h>
#include "ros/node.h"
-#include "std_msgs/MsgPose2DFloat32.h"
+#include "std_msgs/MsgRobotBase2DOdom.h"
#include "sdlgl/sdlgl.h"
class NavView : public ros::node, public ros::SDLGL
{
public:
- MsgPose2DFloat32 odom;
+ MsgRobotBase2DOdom odom;
float view_scale, view_x, view_y;
NavView() : ros::node("nav_view"),
@@ -31,8 +31,8 @@
glPushMatrix();
odom.lock();
- glTranslatef(odom.x, odom.y, 0);
- glRotatef(odom.th * 180 / M_PI, 0, 0, 1);
+ glTranslatef(odom.px, odom.py, 0);
+ glRotatef(odom.pyaw * 180 / M_PI, 0, 0, 1);
odom.unlock();
glColor3f(0.2, 1.0, 0.4);
glBegin(GL_LINE_LOOP);
Modified: pkg/branches/rosbus/vision/sharks/manifest.xml
===================================================================
--- pkg/branches/rosbus/vision/sharks/manifest.xml 2008-04-28 22:51:13 UTC (rev 215)
+++ pkg/branches/rosbus/vision/sharks/manifest.xml 2008-04-28 23:13:16 UTC (rev 216)
@@ -20,6 +20,7 @@
<depend package="sdl"/>
<depend package="sdl_image"/>
<depend package="serial_port"/>
+<depend package="joy"/>
<sys_depend lib="ncurses"/>
<export>
<cpp cflags="-I${prefix}/include" lflags="-L${prefix}/lib -lsharks"/>
Added: pkg/branches/rosbus/vision/sharks/src/joyshark/Makefile
===================================================================
--- pkg/branches/rosbus/vision/sharks/src/joyshark/Makefile (rev 0)
+++ pkg/branches/rosbus/vision/sharks/src/joyshark/Makefile 2008-04-28 23:13:16 UTC (rev 216)
@@ -0,0 +1,5 @@
+SRC = joyshark.cpp
+OUT = joyshark
+LFLAGS = -lcurl
+PKG = sharks
+include $(shell rospack find mk)/node.mk
Added: pkg/branches/rosbus/vision/sharks/src/joyshark/config.txt
===================================================================
--- pkg/branches/rosbus/vision/sharks/src/joyshark/config.txt (rev 0)
+++ pkg/branches/rosbus/vision/sharks/src/joyshark/config.txt 2008-04-28 23:13:16 UTC (rev 216)
@@ -0,0 +1,3 @@
+left_scan_extent 30
+right_scan_extent 75
+iris 600
Added: pkg/branches/rosbus/vision/sharks/src/joyshark/joyshark.cpp
===================================================================
--- pkg/branches/rosbus/vision/sharks/src/joyshark/joyshark.cpp (rev 0)
+++ pkg/branches/rosbus/vision/sharks/src/joyshark/joyshark.cpp 2008-04-28 23:13:16 UTC (rev 216)
@@ -0,0 +1,93 @@
+///////////////////////////////////////////////////////////////////////////////
+// The sharks package provides a triangulation-based laser scanner.
+//
+// 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 <cstdio>
+#include "sharks/sharks.h"
+#include "joy/MsgJoy.h"
+#include "ros/node.h"
+
+using namespace ros;
+
+class JoyShark : public node
+{
+public:
+ MsgJoy joy;
+ int prev_buttons;
+ Sharks *sharks;
+
+ JoyShark() : node("joyshark"), prev_buttons(0)
+ {
+ sharks = new Sharks("192.168.1.90", "192.168.1.38", true);
+ subscribe("joy", joy, &JoyShark::joy_cb);
+ }
+ void joy_cb()
+ {
+ if ((joy.buttons & 0x1) && !(prev_buttons & 0x1))
+ {
+ sharks->load_config_file("config.txt");
+ sharks->loneshark();
+ }
+ prev_buttons = joy.buttons;
+ }
+};
+
+int main(int argc, char **argv)
+{
+ ros::init(argc, argv);
+ JoyShark shark;
+ shark.spin();
+ return 0;
+}
+/*
+ printf("construct Sharks object...\n");
+ Sharks *sharks = new Sharks("192.168.1.90", "192.168.1.38", true);
+
+ //printf("press enter to scan or type 'a' then enter to abort\n");
+ //char c = fgetc(stdin);
+
+ if (argc == 1)
+ sharks->load_config_file("config.txt");
+ else if (argc == 2 && argv[1] == string("--calibrate"))
+ {
+ sharks->manual_calibration();
+ delete sharks; return 0;
+ }
+
+// sharks->calibrate();
+// else if (argc == 2 && argv[1] == "--manual")
+ else
+ sharks->load_config_file(argv[1]);
+ sharks->loneshark();
+
+ //sharks->gui_spin();
+
+ delete sharks;
+ return 0;
+}
+*/
+
Modified: pkg/branches/rosbus/vision/sharks/src/libsharks/sharks.cpp
===================================================================
--- pkg/branches/rosbus/vision/sharks/src/libsharks/sharks.cpp 2008-04-28 22:51:13 UTC (rev 215)
+++ pkg/branches/rosbus/vision/sharks/src/libsharks/sharks.cpp 2008-04-28 23:13:16 UTC (rev 216)
@@ -28,6 +28,9 @@
#include <sstream>
#include <cstdio>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <ctime>
#include "sharks/sharks.h"
#include "axis_cam/axis_cam.h"
#include "ipdcmot/ipdcmot.h"
@@ -370,6 +373,14 @@
}
int image_count = 1;
init_keyboard();
+ char logdir[500];
+ time_t t = time(NULL);
+ struct tm *tms = localtime(&t);
+ snprintf(logdir, sizeof(logdir), "%d-%02d-%02d-%02d-%02d-%02d",
+ tms->tm_year+1900, tms->tm_mon+1, tms->tm_mday,
+ tms->tm_hour , tms->tm_min , tms->tm_sec);
+ printf("log directory: %s", logdir);
+ mkdir(logdir, 0755);
if (laser_control)
laser_control->write('1'); // turn laser on
mot->set_pos_deg_blocking(left_scan_extent);
@@ -390,8 +401,10 @@
}
printf(".");
fflush(stdout);
- char fnamebuf[500];
- sprintf(fnamebuf, "img_%06d_%012.6f.jpg", image_count, pos);
+
+ char fnamebuf[800];
+ snprintf(fnamebuf, sizeof(fnamebuf), "%s/img_%06d_%012.6f.jpg",
+ logdir, image_count, pos);
image_count++;
if (!get_and_save_image(fnamebuf))
{
@@ -400,7 +413,7 @@
}
}
if (laser_control)
- laser_control->write('Q'); // turn laser on
+ laser_control->write('Q'); // turn laser off
mot->set_pos_deg_blocking(left_laser_bound); // stop the patrol
char c = _getch();
printf("you pressed: [%c]\n", c);
@@ -444,6 +457,7 @@
printf("woah! couldn't open [%s]\n", filename.c_str());
return false;
}
+ cam->set_focus(0); // enable autofocus by default
while (!feof(f))
{
char buf[1000]; // OVERRUNS R FUN
@@ -463,6 +477,8 @@
fclose(f);
printf("letting camera settle to new iris/focus for 3 seconds...\n");
usleep(3000000);
+ cam->set_focus(0, true); // lock focus
+ usleep(200000);
printf("done. carry on.\n");
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|