1. 24 May, 2005 5 commits
    • Russ Fish's avatar
    • Leigh B. Stoller's avatar
      Have the locpiper save dynamic obstacles (internally) so that when a · 30b6f8f9
      Leigh B. Stoller authored
      new client connects, we can dump the current set to the applet. I'm
      still holding off on putting them into the DB (really do not think
      this is the right thing to do, but I can be convinced otherwise).
      
      Change battery code in the locpiper so that if the data for a robot is
      more then 10 minutes old, stop sending updates for that robot.
      
      For the applet, add a little daemon thread that checks to see if
      battery updates have stopped, and if so, change the color of the robot
      to blue (cold and stale). This makes it more clear which robots are
      working and which are turned off.
      
      Fix collision detection code so that we test for the center of a robot
      overlapping with an obstacle, rather then radius of the area it sweeps
      (Tim said this was the correct thing to do).
      30b6f8f9
    • Timothy Stack's avatar
      · cf9ae072
      Timothy Stack authored
      Add topography as an event object type, we use this to notify applets
      about dynamic obstacles.  Some event-sched fixes are also included.
      
      	* lib/libtb/tbdefs.h, lib/libtb/tbdefs.c: Add TOPOGRAPHY object
      	and CREATE event.
      
      	* robots/emc/emcd.c: Some cleanup for the events that get sent for
      	dynamic obstacles.
      
      	* tbsetup/ns2ir/node.tcl, tbsetup/ns2ir/sim.tcl.in,
      	tbsetup/ns2ir/topography.tcl: Add Topography's to the virt_agents
      	table.
      
      	* event/sched/error-record.c: Fix the format for the filenames
      	generated by the program-agent.
      
      	* event/sched/event-sched.c: Mark the start of TIME, change how
      	rmcd/vmcd get restarted, and fix the ordering of some events on
      	startup.
      
      	* event/sched/simulator-agent.h, event/sched/simulator-agent.cc:
      	Record when TIME starts, change how the report is generated, and
      	the current time to log messages.
      
      	* event/sched/rpc.h, event/sched/rpc.cc: Add the "virtual"
      	topography name to the emcd.config, it's used when sending events
      	concerning dynamic obstacles.
      cf9ae072
    • Leigh B. Stoller's avatar
      Oops, turn of debugging mode. · eaecd483
      Leigh B. Stoller authored
      eaecd483
    • Leigh B. Stoller's avatar
      Checkpoint new dynamic obstacle stuff that Tim requested. This is not · 959742d6
      Leigh B. Stoller authored
      well tested, but will get tested now!
      
      The gist is that Tim now generates TOPOGRAPHY events that define an
      dynamic obstacle that is drawn in the applet and added to the list of
      obstacles to be checked for collisons (when submitting moves).
      959742d6
  2. 23 May, 2005 4 commits
    • Russ Fish's avatar
      Run-scripts for /etc/init.d · e84b8467
      Russ Fish authored
      e84b8467
    • Russ Fish's avatar
    • Timothy Stack's avatar
    • Timothy Stack's avatar
      · a1000b60
      Timothy Stack authored
      Some RMCD debugging and improvements.
      
      	* robots/emc/GNUmakefile.in, robots/rmcd/GNUmakefile.in: Fix some
      	of the dependencies.
      
      	* robots/emc/emcd.c: Bump default speed for events to 0.2 m/s.
      	Send an event when a dynamic obstacle is updated.
      
      	* robots/emc/emcd.h: Send position updates three times a second.
      
      	* robots/mtp/listNode.h, robots/mtp/listNode.c: Add a function to
      	prepend a list onto another.
      
      	* robots/mtp/mtp.x, robots/mtp/mtp.h, robots/mtp/mtp.c: Add
      	support for sending updates concerning dynamically detected
      	obstacles.
      
      	* robots/rmcd/masterController.h, robots/rmcd/masterController.c:
      	When a robot is stationary, add it as an obstacle.  Play with the
      	pause time a bit.
      
      	* robots/rmcd/obstacles.h, robots/rmcd/obstacles.c: Add robots as
      	a third type of obstacle.  Do not expand static obstacles when the
      	robot detects something with its sensors.  Add some more checks to
      	make sure the obstacle list is sane.  When
      	creating/growing/removing dynamic obstacles, send a notification
      	to emcd so it can be passed on to the applet.  More comments.
      
      	* robots/rmcd/pathPlanning.h, robots/rmcd/pathPlanning.c: When
      	monkeying with the obstacle list, we need to make sure the
      	obstacles are put back in the right order (dynamic before static).
      	More comments.
      
      	* robots/rmcd/pilotConnection.c: Add some more stuff to the
      	SIGINFO print out.
      
      	* robots/rmcd/rmcd.c: Initialize the emcd mtp handle for sending
      	updates for obstacles.
      
      	* robots/mtp/mtp_dump.c, robots/vmcd/visionTrack.c: Remove macros
      	that are now defined elsewhere.
      a1000b60
  3. 20 May, 2005 4 commits
    • Russ Fish's avatar
      Add camera checker daemon. · 392a65b2
      Russ Fish authored
      392a65b2
    • Leigh B. Stoller's avatar
      Oops, flip back to user after the fork. · 57501b7d
      Leigh B. Stoller authored
      In case I didn't mention it; this script is setuid so it can kill
      itself later on the swapout path. It drops privs right away.
      57501b7d
    • Leigh B. Stoller's avatar
      Checkpoint some robot changes. · 5f67fe09
      Leigh B. Stoller authored
      * New robot event listener:
      
          * It is intended to be started and stopped from the experiment
            swapin path instead of as a global daemon. It takes the pid/eid
            of the experiment, and will deal with events only for those
            nodes that are allocated to the experiment. We have some long
            range plans of time sharing the robot lab, so I figured we might
            as get a little bit of a start on that.
      
          * Once it fires up, it subscribes to the usual assortment of
            events, just like the loclistener does.
      
          * It then binds a socket on which to listen for connections from
            the web server.
      
          * Then it loops, looking for events and for connections from the
            web server. Connections from the web server are for forwarding
            the event stream in real time to whatever applets are currently
            viewing the robot lab.
      
          * As each event comes in, it is parsed, entered into the DB (nodes
            and location_info table), and fired out (in a textual form) to
            all the applet listeners. The web interface just acts as pipe in
            this case for the data.
      
          * The event stream is also duplicated to a file in the experiment
            directory (the same stuff that is piped to the applet), named by
            the current resource record ID. I hope to use this stream to
            playback the motion in the applet (coupled with webcam images
            once I figure out how to sync them).
      
      * tbswap: Start and stop the new listener.
      
      * Robotrack: I changed the interface for how we actually communicate
        the event data. Much more reasonable then it was (a comma separated
        string of numbers!).
      
      * new database fields in the experiments table to hold the process ID
        of the listener and the port it is listening on. The port is not
        used yet, as the robot lab is still not shared. Will need to revist
        this later. Currently uses a fixed port number.
      
      * www/robotrack/robopipe.php3: Killed most of the old code and replace
        with simple socket connect to the listener.
      5f67fe09
    • Timothy Stack's avatar
  4. 18 May, 2005 1 commit
  5. 17 May, 2005 1 commit
    • Leigh B. Stoller's avatar
      A couple of changes: · f5e06601
      Leigh B. Stoller authored
      * Allow nodes that currently moving to be dragged to an alternate
        location (thereby interrupting current motion, and giving it a new one).
      
      * Fix some check collision problems.
      f5e06601
  6. 16 May, 2005 1 commit
    • Timothy Stack's avatar
      · d4549631
      Timothy Stack authored
      Checkpoint some robot code, mostly related to reliability.
      
      	* robots/emc/emcd.c: Fail if there is no config file given.  Send
      	an error back to vmcd if there is no rmcd available to satisfy a
      	wiggle-request.
      
      	* robots/mtp/mtp.h, robots/mtp/mtp.c: Added some comments.  Add
      	some more helper functions.
      
      	* robots/primotion/GNUmakefile.in, robots/primotion/dashboard.hh,
      	robots/primotion/dashboard.cc, robots/primotion/faultDetection.hh,
      	robots/primotion/faultDetection.cc: Fault detection code for the
      	garcia.  Tries to check for and recover from some commonly seen
      	failures.
      
      	* robots/primotion/garcia-pilot.hh,
      	robots/primotion/garcia-pilot.cc:  Set the fault detection
      	callback, add version info, and fix some whitespace.
      
      	* robots/primotion/pilotClient.cc: Set the wheel speed when
      	pivoting.
      
      	* robots/primotion/wheelManager.hh,
      	robots/primotion/wheelManager.cc: Use the fault detection stuff,
      	tweak some constants, and some other cleanup.
      
      	* robots/tracker/GNUmakefile.in: Add some missing targets.
      
      	* robots/vmcd/robotObject.h, robots/vmcd/robotObject.c: Move some
      	robot list management code into here.
      
      	* robots/vmcd/visionTrack.h, robots/vmcd/visionTrack.c: Comments
      	and some cleanup.
      
      	* robots/vmcd/vmcd.c: Refactor some of the wiggle code and deal
      	with errors a little better.
      d4549631
  7. 13 May, 2005 1 commit
  8. 12 May, 2005 1 commit
  9. 11 May, 2005 1 commit
    • Leigh B. Stoller's avatar
      Add a "withwebcams" option to the tracker applet. When turned on, the · 179cf519
      Leigh B. Stoller authored
      mini images from the webcams (240x180) are displayed in the mechanical
      area in the lower right of the floormap. The frame rate is 2fps to
      avoid pummeling the node, as its all done with Java, including the
      jpeg conversion and display (I grabbed most of this code from my
      tools/webcamapplet that I wrote a while back).
      
      My first attempt at this performed really bad cause I was redrawing
      the entire display whenever a new frame came into any camera. Ack,
      this was chewing 98% of the CPU.
      
      So, I restructured things so that each camera is in its own JPanel and
      has its own paint callback. However, in order to have overlapped
      JPanels (since the base image is also a JPanel) I needed to shift to
      using the LayeredPane instead of the ContentPane of the applet. This
      meant creating a wrapper JPanel to hold the base image, and then
      combining everything together on the layered pane. The result is that
      the repainting system paints only what needs to be painted, and
      everything runs much much faster (about 15% CPU on my desktop).
      
      Also got rid of my inline double buffering; JPanels do that by default
      for you. I did not realize that at the time I wrote the applet cause I
      missed the tiny footnote in the Graphics2D tutorial that says Swing
      components do that for you!
      179cf519
  10. 10 May, 2005 6 commits
  11. 09 May, 2005 2 commits
  12. 28 Apr, 2005 1 commit
  13. 22 Apr, 2005 2 commits
  14. 08 Apr, 2005 1 commit
  15. 07 Apr, 2005 1 commit
  16. 06 Apr, 2005 4 commits
  17. 01 Apr, 2005 1 commit
  18. 31 Mar, 2005 2 commits
    • Timothy Stack's avatar
      Tweaks for garcia-pilot: · bcfa8a85
      Timothy Stack authored
      	* robots/primotion/garcia-pilot.cc: Turn off the fall sensors,
      	since they have a tendency to go off for no good reason.
      
      	* robots/primotion/pilotButtonCallback.cc: A short-click on the
      	user-button now shuts the garcia down.
      
      	* robots/primotion/pilotClient.cc,
      	robots/primotion/wheelManager.hh,
      	robots/primotion/wheelManager.cc: Set the wheel speed.
      bcfa8a85
    • Timothy Stack's avatar
      · 6cce1762
      Timothy Stack authored
      Pass camera local to world offsets through vmcd.
      
      	* event/sched/rpc.cc: Add the camera fixed_x,fixed_y values to the
      	emcd.config file.
      
      	* robots/emc/emcd.c: Pickup the cameras fixed_x,fixed_y values
      	from the config file.  Add supports for setting the speed of the
      	robot.
      
      	* robots/mtp/mtp.h, robots/mtp/mtp.c: Add support for setting
      	speed in GOTO packets and constructing vmc-client config packets.
      
      	* robots/mtp/mtp.x: Add a vmc-client config packet that contains
      	the cameras origin in world coordinates.
      
      	* robots/mtp/mtp_dump.c: Dump the min/max values for x and y,
      	handy for figuring out the bounds of the camera.
      
      	* robots/vmcd/visionTrack.c, robots/vmcd/visionTrack.h: Handle
      	cameras that are overlapping on two axes.
      
      	* robots/vmcd/vmc-client.c: Accept a vmc-client config packet that
      	tells us where the camera is in world coordinates.  Add an
      	orientation flag that specifies how the camera is oriented wrt to
      	the world coordinate system.
      
      	* robots/vmcd/vmcd.c: Send vmc-client config packets out.  Fix a
      	bug that left unknown tracks in the previous frame, which could
      	confuse the matching algorithm causing it to match unknown tracks
      	instead of valid known tracks.
      6cce1762
  19. 18 Mar, 2005 1 commit