rosaria/Legacy/Aria/Changes.txt
2021-12-16 14:07:59 +00:00

1451 lines
66 KiB
Plaintext

Aria 2.8.0
August 22, 2013
---------------------------
This release adds support for the Pioneer LX. The Pioneer LX is the first
of a new type of robots referred to as the MTX generation or type. MTX is
largely compatible with previous Pioneer type robots, with the exception of
connections to sonar, battery, LCD, IO and some other components. The
ARIA API is largely the same, remaining transparently compatible, but you may
need to use some MTX-specific classes for certain MTX-specific fetaures, in
particular general purpose IO via the ArMTXIO class. See the MTX-specific
example programs in the examples/ directory for examples of use of these
features. A more detailed summary of classes added or changes made for MTX is
below.
2.8.0 has been released for Linux only. A release with Windows support is
forthcoming.
MTX LCD display implementation is incomplete in 2.8.0. An update will be
released in the future with complete LCD support (with robot firmware upgrade
if needed.)
Analog IO support is incomplete, this will also be added in the next update.
Additional changes made in this release of ARIA include:
* Support for the SICK TiM300 laser rangefinder. Use the tim3xx laser type
identifier in robot configuration or command-line parameters. (Implemented
internally as a variant in ArLMS1xx class)
* ArRobot disables the robot motors explicitly before disconnecting on exit
* ArActionDeceleratingLimiter now has option to limit rotation as well as
translation
* ArActionLimiterRot added, which can be used to limit rotation separately
from other actions.
* ArActionTriangleDriveTo improved
* List parameter type added (and other API changes) to ArConfig, though not
generally used in ARIA or ARNL yet.
* ArRobotJoyHandler can now be connected to ArConfig for user control of
some parameters.
* SICK S300 support has been improved
* RS-422 support in ArSerialConnection now available in Windows as well as
Linux
* ArSonarAutoDisabler can now be temporarily supressed with a method or
functor call.
* ArSoundsQueue can call callbacks before and after each item is played.
* Signed and unsigned long int values can now be added to ArStringInfoGroup
* strSuffixCmp(), strSuffixCaseCmp(), stripQuotes() methods added to ArUtil
* Equal and not equal (== and !=) operators added to ArLine
* Negative and positive rotational velocity limits separated in
ArActionDesired
* ArArgumentBuilder handling of spaces and quotes can be customized a bit
* State of charge, lateral velocity, and battery data added to ArDataLogger.
* ArLog::logBacktrace() added for Linux, which calls Linux backtrace() system
call.
* Diagnostic ArMutex lock timing can be used on Windows now.
* ArFunctor classes added which can pass five arguments
ArNetworking changes include:
* Number of connected clients can be limited in ArServerBase
* ArServerHandlerMapping can call callbacks before and after mapping is done,
and can also be given additional ArLaser interfaces to include in the scan
log.
* ArServerMode objects have a new "extended status" field which can hold
details in addition to mode name and status field. This is also provided
to clients for the active server mode by ArServerInfoRobot in addition to
existing mode name and status. Extended status may contain multiple lines
(normal status is expected to not contain any newlines)
Details of MTX (Pioneer LX) additions:
* ArMTXIO class added. Communicates with "mtx" operating system driver to
interface with MTX digital general purpose IO and power control.
* ArSonarConnector and ArSonarMTX classes. By default the connection to MTX sonar
is handled automatically by ArRobotConnector, no changes to existing
software need to be made. The existing ArSonarDevice and ArRobot API can be
used with MTX sonar.
* ArBatteryConnector and ArBatteryMTX classes. By default, the connection to MTX
battery is handled automatically by ArRobotConnector, no changes to existing
software needs to be made. The state of charge and other information is
available in the existing ArRobot API. Extra diagnostic information about
the batter(ies) is provided in ArBatteryMTX objects which can be obtained
from ArRobot.
* Default Pioneer LX parameters have been built in to ARIA for "pioneer-lx"
type robots and a pioneer-lx.p
parameter file is included in the params directory. Early revisions of
the MTX core report a robot subtype of "marc_devel" which is assumed to be
an LX.
* A Pioneer LX model has been added to MobileSim 0.7.3
* mtxIO, mtxPowerControl and mtxWheelLights examples added. Other examples
including demo have been updated to use ArRobotConnector and other current
classes for MTX/LX compatability.
* New command identifiers added to ArCommands
Aria 2.7.6
March 29, 2013
---------------------------
* Added ArPTZConnector, which can automatically create ArPTZ subclass instances
based on configuration information read from robot parameer files (params/<type>.p,
params/<name>.p) and program command line arguments. (See also the new ArVideo library
now available with this ARIA release.) Some common functionality (inverted, limits) has
also been moved from individual ArPTZ subclasses into the ArPTZ class.
* Robot parameters (ArRobotParams, defaults, and .p files) now contain parameters for PTZ and video devices
(used by new ArPTZConnector and ArVideo library)
* The way subclasses of ArPTZ implement methods has changed. Inverting the axes
and other common functionality is now done in ArPTZ, subclasses implement _i
internal methods instead. This is transparent to most users, but if you have
created a new subclass of ArPTZ you may need to update your class.
* Increased GPS connection timeout to 20sec.
* Added support for simulated or dummy GPS
* Added new NMEA messages: GPHDG, GPHDM, GPHDT (for receivers with integrated compass)
* Misc. documentation fixes and improvements, including class categories (e.g. essential,
optional, device interfaces, actions, etc.)
* Desired sound playback volume can be set in ArSoundPlayer (implemented for Linux with
sox tool).
* Some SWIG and Windows DLL export fixes.
* ArUtil::isOnlyNumeric() and ArUtil::isOnlyAlphaNumeric() now accept '+' and
'-' characters as valid parts of numeric and alphanumeric strings.
Aria 2.7.5.2
August 2, 2012
---------------------------
* Fixed regression in which start and end FOV angles couldn't be set in
robot parameter files for LMS1xx laser rangefinders.
Aria 2.7.5.1
July 9, 2012
---------------------------
* ArRVisionPTZ now defaults to automatically connecting through serial port
COM3, rather than requring you to manually set it up with an
ArDeviceConnection object (though this is still possible.)
* Fixed system installation of Python pacakges on Debian --
now installs in correct Python version directory
/usr/lib/python2.5/site-pacakges instead of old 2.4 directory.
Aria 2.7.5
June 12, 2012
---------------------------
* Fixed bug in ArLMS1xx class that prevented connecting to LMS-100 or LMS-111.
It now has correct default resolution option, and allow selecting both half or
quarter degree resolution.
* You can now select one, half or quarter degree resolution if connecting to an
LMS-500, rather than just one as in 2.7.4.
* Made some minor updates to examples. Added new example lasers.cpp showing
how to connect to one or more lasers (from parameters) and obtain data from
them. Added rvisionCameraExample.cpp (conect to RVision camera). Added seekurPower.cpp
utility (control seekur power ports).
* Default position for a second laser on a Seekur Jr. corrected (reverse-mounted on the
back of the robot. this can be changed in parameters.)
* Default/builtin laser parameter type for Seekur changed to lms1xx
* ArDPPTU now reads the PTU's position back from the device. This position is returned for
getPan() and getTilt() and canGetRealPanTilt() now returns true if this data has been
received from the device.
* ArDPPTU now queries the position resolution (conversion factor) from the device itself
rather than requiring specifying D46 or D47 in the constructor. (But you can still specify
these to force hardcoded conversion factors for those specific models.)
Aria 2.7.4
March 13, 2012
---------------------------
* Added SICK LMS-500 support.
* Added SICK S-300 and S-3000 support
* Added Keyence SZ series laser support
* Added lms1xx robot types to automatic parameter generation (generated by
utils/makeParams)
* Added RS-422 support (for Linux) to ArSerialConnection
* Added more Visual Studio 2010 projects (for most libraries and examples)
* Fixed bug in ArTime::mSecSince(ArTime since) in which very large value would be
truncated in internal arithmetic resulting in incorrect output. Now valid within range of a long. (Note ArTime also has
methods that return "long long" values, which should be used in situations
when very long time differences are possible.)
* Change to ArPTZ to allow Pan/tilt/zoom cameras to now be connected to the
third auxilliary robot serial port (AUX3), which is available in newer SH
Pioneers. (Previously only AUX1 and AUX2 were possible.)
* Minor fix to NMEA parser
* Better error reporting in ArSocket
* Minor fix to baud selection in ArSerialConnection on Windows
This version of Aria is compatible with other Aria 2.7 releases and will work
with any software built with Aria 2.7.
Aria 2.7.3
September 8, 2011
---------------------------
* Fixed minor bug in ArLMS1XX (was not ignoring some invalid readings, if the
LMS100 was returning a nonzero but impossibly small range)
* Fixed minor bug in demo's laser mode (would show incorrect values initially)
* Fixed minor bug in examples/sickLogger.cpp, which would prevent the laser
log from being processed by Mapper3. Also updated sickLogger.cpp to change
use of deprecated classes to their replacements.
* Includes support for URG SCIP 2.0 via ArUrg_2.0 class and "urg2.0" laser
type.
* Fixed bug in ArActionLimiterBackwards
* Added parameter files p3dx-sh-lms1xx.p, p3at-sh-lms1xx.p,
peoplebot-sh-lms1xx.p with standard mounting locations of SICK LMS-100/111
laser, and lms1xx laser type selected for primary laser.
* Added project files for Visual Studio 2010
Aria 2.7.2
January 7, 2010
---------------------------
* Added Seekur Jr. support
* Added support for distinct "research patrolbot" robot type
* Added SICK LMS 100 support
* Added experimental Novatel SPAN GPS support
* Fixed a bug in ArLaser (not enough space in buffer for all laser readings if
more than 180)
* Added parameter files researchPB.p, mt400.p, seekurjr.p.
This version of libAria should be compatible with libAria 2.7.0 and dependent
libraries built with 2.7.0 should work with this version.
Aria 2.7.1
September 9, 2009
---------------------------
Bugs fixed:
* Fixed problems connecting to laser, mainly in demo: Serial port
is now opened when entering laser mode (when laser is really connected
to) rather than on startup, and fixed an uninitialized variable in ArLM2xx.
* Fixed possible incorrect error return when connecting to an URG laser
with ArUrg::blockingConnect().
This version of libAria is compatible with libAria 2.7.0 and dependent
libraries built with 2.7.0 will work with this version.
Aria 2.7.0
April 30, 2009
---------------------------
Summary:
Among many other changes and improvements, Aria 2.7.0 includes:
* New ArRobotConnector and ArLaserConnector classes replace the old
ArSimpleConnector. ArSimpleConnector is still available however.
* New improved support for multiple heterogenous laser rangefinding
devices in ArLaserConnector, ArRobot, and generally in ARIA. Configure
what devices are available on an individual robot, and device options,
in the robot parameter file, Aria.args file, or program command line options.
* Visual Studio 2008 project files are included; VC2003 project files
have been renamed.
* Java 1.6 is now used to build Java libraries rather than 1.4; you must
either upgrade to 1.6 (J2SE JDK release 6), or rebuild the Java
wrapper libraries with 1.4 if you must continue using 1.4.
* Java wrapper libraries are now contained in Java packages:
com.mobilerobots.Aria for ARIA, and com.mobilerobots.ArNetworking for
ArNetworking.
* On Windows, the ws2_32 sockets library is now used instead of the
older wsock32 library.
* On Linux, a better monotonic clock is used if the OS supports it.
This requires that all programs now link with librt (-lrt) on Linux.
* Aria now includes classes to support the RVision PTZ camera, Hokuyo URG
laser, some additional GPS data (if receiver provides it), lateral motion
on a Seekur robot, and various other miscellaneous improvements and features.
Read below for a complete list and more information. Upgrading MobileEyes
to 2.2.4 or later is also recommended for teleoperation to work right.
Important Linux compilation change:
* ARIA now uses the monotonic system clock if available, via the librt
system library. Therefore all programs using ARIA must now link to
librt using the -lrt link flag, in addition to libAria, libpthread
and libdl as before. The ARIA examples and tests Makefiles have
been updated, but you must update your own Makefiles or other
build systems. This change only applies to building on Linux.
Important laser range device class changes:
* Made support for lasers much more generic, this involves the rest
of the changes in this section. There's compatibility classes for
all of the old code, so existing code should still compile. The
one exception to this is the 'second laser' parameters in the .p
file will no longer be read so you'll need to change them to 'Laser
2 settings'.
* There is now an ArLaser class that does most everything that ArSick
used to do in terms of filtering and callbacks and such, the names
and arguments are sometimes slightly different. ArLaser is a
superset of everything that can be set on any of the lasers, so
that it can be generically configured.
* Made a new ArLMS2xx class to replace ArSick. ArSick is now a
legacy class with all of the old functions on it that old code
should still work.
* Added ArUrg class to support for Hokuyo URG URG-04LX if using the
SCIP 1.1 protocol).
* Made ArRobotConnector and ArLaserConnector to replace
ArSimpleConnector (which is now a legacy class that uses the new
classes). ArRobotConnector has the same functionality as before,
but can autoParse the args when blockingConnect is called.
ArLaserConnector will create lasers and add them to the robot and
configure them with the arguments from the command line (though it
does pull the device connection information from the .p file).
Lasers wind up named <laserType>_<laserNumber> (except the legacy
sick of course). Lasers themselves will configure themselves with
the information in the .p file (as long as that parameter wasn't
already set by the command line).
* Made the laser type and parameter information so that it is stored
in the .p and can be passed into the command line.
* Made it so that the robot should be connected (with
ArRobotConnector) before the Aria::parseArgs call, so that the
types in the .p files and what not can be used. The legacy code
works without this (because it only works with one type of laser).
* ArUtil now has a createLaser call that will create a laser of a
given type, and a getCreateLaserTypes that will list the types that
can be created. This is mostly for use by the new ArLaserConnector.
* ArUtil now has a createDeviceConnection call that will create a
device connection of a given type and try to connect it to a given
port, and a getCreateDeviceConnectionTypes that will list the
device connection types that can be created. This is mostly for
use by the new ArLaserConnector, but could be used by other things
too.
* Made ArRobot so that it has a mapping of laser numbers to lasers,
so that classes can pull out lasers without as much work. It
doesn't do anything with these at all. Lasers are automatically
added to the robot by ArLaserConnector now... They still have to be
added as range devices to do anything, which automatically happens
in the ArLaserConnector now. The calls for this are
ArRobot::addlaser, ArRobot::remLaser, ArRobot::findLaser, and
ArRobot::getLaserMap
* The LaserIgnore parameter in the .p file and the corresponding
command line arguments (-laserAdditionalIgnoreReadings) can now
take ranges (begin-end), the multiple arguments can be separated by
commas (with or without extra spaces), or it can be separated
simply by spaces as the old ones were (though that won't work from
the command line).
* Simulated lasers are now done totally differently than before
(unless you are using the ArSick legacy class where the behavior is
unchanged). There is new class called ArSimulatedLaser that
basically takes over for the normal laser class of that type and
can be configured the exact same way, but gets its readings from
the simulator. This is all handled transparently by
ArLaserConnector. Right now this will only deal with 1 laser, but
later there will be modifications to MobileSim and Aria to allow it
to work with multiple lasers. These wind up with the name
sim_<laserType>_<laserNumber>.
* Made ArModeLaser (the laser mode in demo) so that it would work
with multiple lasers
* Lasers maximum range can now be set in the .p file. This is mostly
for if you want to shorten it from the default.
* Lasers now don't have a current buffer size passed in, it is now
set to whatever the maximum number of readings will be when the
laser connects (based on degrees and increment). ArSick remains
the same as it was.
* Lasers cumulative buffer size can now be set in the .p file, the
default is now 200. ArSick remains the same as it was.
See also changes in ARIA 2.6.0, below.
Changes:
* Project files for Visual Studio 2008 (Version 9) are now
included. These are named with a "-vc2008" at the end, and
libraries built using these projects are named with a "VC9" suffix
before the .lib or .dll extension. Project files for Visual Studio
2003 (Version 7) have been (mostly) renamed to end with "-vc2003",
though libraries built using these projects have the same names as
before.
* Java 1.6 is now used to build the Java wrapper library on Windows
and Debian Linux. You should upgrade to Java 1.6 if you are still
using 1.4. If you get an error message referring to a "bad class
file" in Aria.jar, that the "wrong version 50.0, should be 48.0", then
it's due to using 1.4 with the Aria classes built using Java 1.6.
* Java wrapper libraries are now contained in packages: com.mobilerobots.Aria
for Aria, and com.mobilerobots.ArNetworking for ArNetworking. You must change
Java programs to import the Aria and ArNetworking packages by adding these
lines (near the top of the program file):
import com.mobilerobots.Aria.*;
import com.mobilerobots.ArNetworking.*;
* On Windows, ArSocket now uses the better ws2_32 sockets library, rather
than the old wsock32 library. Aria and ArNetworking project files (for
libraries and example programs) have been changed to link to this
library, but you should also remove the wsock32 "additional library
dependency" from the Linker settings of any project files
for programs that might still have it. Linux ArSocket is unchanged.
* For non-windows platforms ArTime will use a monotonic clock
(clock_gettime) if it is supported by the OS (it looks like linux
kernel 2.6 and up support this). If it isn't available it'll
continue to use the non-monotonic clock (gettimeofday) that has
issues if the time on the platform is changed. In Windows the
clock was always monotonic (timeGetTime).
ArTime::usingMonotonicClock is available to see if the clock is
monotonic (make sure you've done an Aria::init before you use it
though).
* ArArgumentParser now takes const char* arguments instead of char*
* Made ArSocket (and therefore ArTcpConnection) so that if you give
the hostname as hostname:port that it will override the passed in
port number. This is mostly for default ports on the laser, but
could be useful for other device connections (so there don't need
to be multiple arguments to each thing).
* Some changes to ArArgumentParser with how it deals with the
wasReallySet parameters, described more in the documentation for
the class.
* ArServerModeRatioDrive now expects to receive commands every 2
seconds (or faster) from a client; if it doesn't receive a new
command after 2 seconds, it stops the robot. This stops the robot
if there is a loss or degradation of network connectivity while
driving. You must upgrade to MobileEyes 2.2.4 or later for teleoperation
to work correctly with this version of Aria.
See also the changes in ARIA 2.6.0 below.
Additions:
* In ArNetworking, there are now server simple commands for
microcontrollerCommand and microcontrollerMotionCommand,
microcontrollerMotionCommand will susped the normal state
reflection so that you can just send motion commands down (like 'd'
mode in demo).
* Added ArUrg (laser) class.
* Added support for the newer DP PTU-D47 to the ArDPPTU class. Select
the D47 by passing PANTILT_PTUD47 as second argument to the ArDPPTU
constructor.
* Added support for the RVision PTZ camera
* ArUtil now has a setFileCloseOnExec() function call. This function
makes a call to fork() or exec() close a file or socket.
* ArUtil now has fopen, open, open, creat, and popen functions that
will call the new setFileCloseOnExec() function for the new
file or socket. It is recommended that these functions always
be used to avoid resource leaks if a program uses exec() or fork().
* Made ArKeyHandler so that it could take a FILE * pointer instead of
always using stdin, and has the option to not take the keys in the
constructor... these will only do anything in non Windows platforms
* ArGPS reads and provides some additional GPS info (if the receiver
provides it)
* ArFunctor and ArCallbackList now have setNameVar, and ArMutex now
has setLogNameVar. These functions take printf style arguments to
make it easier to set the names for more complicated uses
* There is now an Aria::remExitCallback which will make sure that it
isn't exiting before removing a callback, since that would break
the looping. Aria::addExitCallback will now make sure it isn't
exiting before adding a callback (which shouldn't be needed,
but...)
Bug fixes:
* In Windows the ArThread::self and ArThread::osSelf previously did
not work at all since it was returning a constant that meant the
current thread (it used GetCurrentThread instead of
GetCurrentThreadId)... they do now work, but the
ArThread::ThreadType has been redefined to be a DWORD instead of a
HANDLE... all existing code should work after a recompile as long
as it was using the ThreadType define. ArThread in windows now
keeps track of the thread handle separately so uses it where it
used to. This bug also means that some of the thread
infrastructure wasn't entirely working in Windows (like shutting
the threads all down on a shutdown).
* Modified ArSocket::open() (and therefore ArNetServer and ArServerBase)
so that it calls setLinger(0), setReuseAddress(), setNonBlock()
between creating the socket and binding the port, since apparently
SO_REUSEADDR does not work unless you use it this way. This should
prevent the times when programs couldn't start because they were
waiting for a port that was just closed.
* The Linux part of ArMutex was checking all of the return values
wrong... so would never return an actual error happened... that's
been fixed. This probably didn't matter except with tryLock() which
would return that it had the lock when it really didn't (tryLock()
is never used by ARIA itself or any example programs, and is rarely
needed in most programs).
* ArNetServer and ArServerBase now have a member socket they use to
accept new client connections instead of creating a new socket
(and all the resources that go along with that) every single time
they were called.
* Modified the ArPose constructor so that it normalizes the given theta
to be in the range -180 to 180. This is consistent with the
behavior of the setPose() and setTh() methods.
* ArSocket will now set its socket file descriptors so that they will be closed
if an exec() system call is used.
* Fixed bug in ArDPPTU that crashed given pan values < -51 when in PTUD47 mode.
(or possibly effectively ignored the pan value on some computers.)
* In ArMap (and ArMapInterface-related classes), if built on Windows, when loading
or saving a file, a filename starting with a possible Windows drive letter is
recognized as an absolute path rather than a relative path within ArMap's baseDirectory
path. (The file name must start with "x:\" where x is any one upper- or lowercase
alphabetic character, i.e. a-z or A-Z.)
* Fixed various errors reported by GCC versions 4+.
See also the changes in ARIA 2.6.0 below.
Aria 2.6.0
August 3, 2007
---------------------------
(Limited release)
Important changes and bug fixes:
* Support for Seekur's lateral velocity (sideways motion) in ArRobot, Actions,
and ArNetworking teleoperation servers.
* Java wrapper libraries are now contained in packages: com.mobilerobots.Aria
for Aria, and com.mobilerobots.ArNetworking for ArNetworking. You must change
Java programs to import the Aria and ArNetworking packages by adding these
lines (near the top of the program file):
import com.mobilerobots.Aria.*;
import com.mobilerobots.ArNetworking.*;
* ArActionDeceleratingLimiter change to contructor so it can work
with the lateral motion, it takes an enum now instead of a bool,
old true would be ArActionDeceleratingLimiter::FORWARDS, and old
false would be ::BACKWARDS
* New firmware has a kinematics delay value it sends us (because
using the gyro can cause the microcontroller to send us older but
more correct odometry). ArRobot now takes this delay into account
when putting information in for the pose interpolation.
This change should be transparent to everyone... but there
might be more forward projection in data returned from
ArRobot::getPoseInterpPosition() and
ArRobot::getEncoderPoseInterpPosition(). ArSick already takes this
into account. The forward projection on ArInterpolation is more
forgiving of future projections too (allows 50% projection instead
of 3%)
* Made it so an Aria.args file that was empty no longer resulted in
an uninitialized string (change was to ArUtil::getStringFromFile)
* ArSoundsQueue::speak() has been renamed to speakf(), and replaced
by a new speak() method which does not take printf-style varargs.
* Added support for a TCM2 compass connected directly to the
computer. The ArTCM2 class is now an interface to both kinds of
compass. Use an ArCompassConnector to create a compass object based
on command-line arguments (default is ArTCM2Robot), and call
blockingConnect()to connect to the compass (see demo.cpp for
example). Almost everyone should use ArTCM2Robot ("robot" type).
* Fixed various errors reported by GCC 4+.
Enhancements:
* ArSimpleConnector now has arguments to log packets received and
sent, movement received and sent, velocity received, and actions.
* Moved timeout configuration into a section called 'Connection timeouts' and
renamed them to be clearer
* Made ArNetworking timeouts for To as well as From, these relate to if the data
is backing up and is to prevent extreme memory usage that could
kill the program, and would happen if a connection from a
client/robot/centralServer wouldn't take more data but didn't get
closed (which is really a networking problem)
* Added support for Trimble AgGPS, improved ArGPS class interface.
* NMEA parser (used for GPS and compass data) is now available seperately
for use with other NMEA devices as needed.
* Information about laser height and a possible second laser may be given
in robot params (won't generally be used for most robots).
* More optional diagnostic logging, especially in ArMutex objects
* Added "odometer" and "trip odometer" to ArRobot. These keep track of total
distance travelled and turned over the course of the program run.
"Trip" odometer may be reset at different events.
Aria 2.5.1
February 22, 2007
---------------------------
* Adds support for gyro-corrected heading automatically calculated by
the microcontroller firmware (requires updated firmware), and for
obtaining the odometry calculation delay (firmware's delay between
reading odometers and reporting heading and pose to to the
client). If the firmware supports it, ARIA now normally uses the
firmware's integrated gyro heading rather than calculating it on
the client side.
* Fixes memory leak in ArNetworking (some stored packets were not
deleted if ArNetPacketSenderTcp was destroyed)
* Fixed method declarations in ArSystemStatus to be legal C++ and
work with GCC 4
Aria 2.5.0
December 1, 2006
---------------------------
Important Changes and Bug Fixes:
* The ArServerHandlerMapping start and end mapping callbacks now have
the robot locked (they didn't used to)
* Modified ArPTZ so that the functions for pan and tilt take doubles
instead of integers so we can get finer grained movement, updated
ArVCC4, ArSonyPTZ, ArAMPTU, and ArDPPTU for this. Tested ArVCC4
and ArSonyPTZ and they worked fine, if there are problems with this
or with the AMPTU or ArDPPTU send email to aria-users. Modified
ArServerHandlerCamera to fix for the change too.
* ArNetworking: Removed some functions from ArServerInfoStrings to manually
add items. Instead, ArServerInfoStrings receives data from Aria's new
ArStringInfoGroup global data store.
* ArActionDesired behavior changed slightly in that now for the
transMaxVel, transNegMaxVel, transAccel, transDecel, rotMaxVel,
rotAccel, and rotDecel can now just use the slowest value (so that
if you have multiple things trying to set a maximum speed they
don't have to coordinate each can just set the slowest and the
slowest is what is used) (note of course that decel uses the
fastest decel instead). You can specify the old behavior when you
do the sets on these if you want to (its not recommended and won't
work with the built in actions).
* All libraries are built with -fPIC for greater binary compatability when
linking at runtime.
* Added Aria::parseArgs() and Aria::logOptions(), and the functions
Aria::addParseArgsCB() and Aria::addLogOptionsCB() for classes/modules
to add functors that parseArgs() and logOptions() call; modified all
the things that parse arguments and log options to use these new functions
(old code will still work since the functions still work when called directly,
but this usage is deprecated)
* ArNetworking: ArServerBase and ArClientBase should be threadsafe,
you shouldn't need to worry about locking and unlocking them when doing
things and may cause problems if you do
* ArServerBase::broadcastPacketTcp and
ArServerBase::broadcastPacketUdp will no longer take clients to not
send the data too, this is because that behavior does not work with
the central server... there's now a WithExclusion command for each
of these if you need that behavior (its not recommended)
* Python wrapper now requires Python 2.4, except on RedHat 7.3 where it
still uses Python 2.2 (which is the last Python released for RHL).
You can install python2.4 if on Debian, or download for Windows or other
systems at <http://www.python.org/download/releases/2.4.4>.
Enhancements:
* Added new ArSonarAutoDisabler that turns off the sonar if the
robot is stopped for a period of time and re-enables them when the robot
moves; ArNetworking's ArServerModeStop no longer turns off the sonar.
* Made ArArgumentParser::loadDefaultArguments so it can put them in
something other than the first position
* Modified ArConfig so that it can save unknown sections and
parameters, so that information isn't lost if nothing knows about it
this run
* Added ArActionDriveDistance, an action which will just take a
distance and drive forward that distance
* ArNetworking: Added ArServerMode::setWillUnlockIfRequested and
getWillUnlockIfRequested to get the info about whether we'll unlock
if requested or not (so other things can tell if docking is forced
or not)
* ArNetworking: Added code so that ArServerMode can keep track of
which data (commands) belong to which mode and a test program for
that (ArNetworking/tests/modeInfoClient.cpp) and added the new call
to ArServerMode::addData to all existing ArServerModes.
ArNetworking clients can get this information
* Added new simulator commands to ArCommands enum
* Added support for SICK reflectance (for reflector markers); also
added support for retrieving extended-info laser packets from the
simulator (which contain reflectance information)
* ArNetworking: Added boolean to ArServerMode::lockMode (defaults to
old behavior) which indicates if the mode will unlock if requested
or not and added ArServerMode::willUnlockIfRequested to get the
info about whether we'll unlock if requested or not
* ArNetworking: Added code to ArServerBase so that clients can get
which mode is active and if its locked or not, and if it'll unlock
if requested or not
* New class ArSystemStatus (for Linux only).
* Modifed some code in ArKeyHandler and ArNetworking/ArNetpacketReceiverTcp
so that they'd work better on Mac OS X
* There's now network usage tracking in ArNetworking (by packet type)
see logTracking and resetTracking in ArServerBase, there's also an
ArServerSimpleServerCommands that'll let you do these things over
the network
* Fixed a crash bug on shutdown with adding actions to ArActionGroups
then deleting them
* Fixed the Aria::signalHandlerCB and Aria::exit so that it
couldn't loop anymore (previously it would loop if you did an
Aria::shutdown and that caused a segfault)
* Added ArServerClient::hasGroupAccess so that an ArNetworking call
can check to see if a client has access to some group, note that
this is generally not needed since the command won't be called if
the user doesn't have access to that group (its for the next enhancement)
* Made ArServerModeRatioDrive so that if a user didn't have access to
unsafe drive mode and tried to drive the robot while it was in
unsafe mode the mode would kick back over into safe driving mode
* Made ArSickLogger so that it takes in a robot joy handler too and
changed the way it takes goals a little, now if you press a button
for a goal you have to let it go before another goal is taken (this
is instead of a time/distance/turn based check) Also changed it so
that if you were adding goals it'd only check if you had a
keyhandler, it wouldn't add a keyhandler
* Made ArServerModeMapping so that when it makes a new ArSickLogger
it passes in Aria::getJoyHandler and Aria::getRobotJoyHandler as
well as now telling it to add goals
* ArServerHandlerCamera now has different modes and can look at goals
as it is driving to them, look at points, and can adjust its
position relative to the image, and some commands to set the
position on the camera but play well with the modes while doing
it...
* Added ArNetServer calls to send to a specific client, this is so
that one doesn't have to worry about if the socket was closed or
not... this may have a better method later
* Added some calls to the ArServerHandlerConfig to make it a little
more generically usable
* Added requestOnceUdp and findCommandByName to ArClientBase
* Added examples/gotoActionExample.cpp
* Added ArRobot::getRobotLengthFront and ArRobot::getRobotLengthRear
with associated entries in the parameters file, if either value is
zero then it will be set to half of the robot length
* Added ArRobot::getAbsoluteMaxTransAccel,
ArRobot::getAbsoluteMaxTransDecel, ArRobot::getAbsoluteMaxRotAccel,
and ArRobot::getAbsoluteMaxRotDecel which will report the top
values (accel and decel are the same on the pioneers now but
someday may not be)... these (like the versions for the max vels)
are set from the config packet if its there, otherwise they are set
to an arbitrary value (unlike the max vel ones which come from a
param file).... made ArActionMovementParams use this value
* ArMapObject now has getFromToSegments which can get the rotated
line segments so that everyone doesn't have to calculate the
rotated rectangles on their own
* New ArGPS, ArGPSConnector and ArNovatelGPS classes to receive data
from Global Positioning System devices, and the Novatel ProPak G2
in particular.
* Made ArRobot so that it has a new method isTryingToMove that is set
to true if the robot is trying to move even if it isn't moving
(this is mainly for where the robot isn't moving because an action
is stopping it from hitting something), there's a forceTryingToMove
to go with this for things that want the robot always look like its
trying to move
* Made ArSonarAutoDisabler so that it'd use the new isTryingToMove
flag and so that it would assume its the only thing changing the
sonar, since the ArRobot::areSonarEnabled will return false if the
robot has no sonar, or if they are disabled
* Added a flag to range devices so they can say if they're location
dependent or not (for use with the next enhancement)
* Added a flag to the ArRobot functions that check all the range
devices to say whether to ignore range devices that are location
dependent (so that its easy to say ignore forbidden lines from the
robot joystick)
Aria 2.4.3
December 7, 2005
---------------------------
Uses -fPIC flag when building Linux shared libraries for greater compatability.
Aria 2.4.1
October 14, 2005
---------------------------
Fixes:
* Moved accessors for protected static members in ArSoundPlayer out of header file
(MSVC tried to inline them, and failed to link because the members were not
exported from the DLL)
Aria 2.4.0
September 15, 2005
---------------------------
Fixes:
* Made ArActionDeceleratingLimiter honor the UseEStop flag
* Changed ArSignalHandler_LIN to work with the newer
Linux kernels/libs (e.g. in Debian), changes are documented in runThread
for the curious (It seems that if you try and hit control c in near the
time of a system call sometimes it will break signal handling but that
looked like it happened before this revision too)
* Improvements to ArSocket so that it doesn't try and look up
localhost when it opens (since it uses INADDR_ANY anyways, and all
the look up would do is slow down things on some machines without
DNS setup), also in Linux a failed lookup on a host will no longer
then try localhost (it never should have)
* Changed ArAnalogGyro so that if it got no encoder readings from
the robot but did get readings from the gyro that it would just use the
gyro readings
* Revamped ArActionInput...
* removed deltaHeading and deltaVel function from ArActionInput
(since they weren't used and are broken), if you need them send
email to the aria-users list and we'll put it (or something that
takes care of that function) back in...
* added setHeading and made the stuff there simpler
* Made it so that sonar readings are set to be ignored until they have gotten
data
Important Changes:
* If ArRobot can't find a parameter file for a robot AND has no internal
parameters for the robot type, it will now fail the connection rather than
using (probably unsuitable) default values.
* The wrapper Java code is now distributed as Aria.jar and
ArNetworking.jar rather than separate .class files.
Enhancements:
* Added access to ArRobot for the interpolated encoder position, this is
now used for the encoder pose on the SICK raw readings
(ArRobot::getEncoderPoseInterpPosition)
* ArSick::processPacket: the name and meaning of the deinterlacePose
is now deinterlaceDelta, I don't imagine anyone uses it except for
some internal code or I'd make it more backwards compatible
* Added ArServerInfoStrings to the ArNetworking library, it can send
arbitrary strings from a server out to MobileEyes for MobileEyes to
display
* Added the ability to log abitrary strings (ie like above) to
ArDataLogger
* Added ArConstFunctors and ArConstRetFunctors so that you could use
the above string functions with the const functions in ArRobot.
* NOTE: In a future release some currently non-const methods will become
const.
* Generalized some ArSoundsQueue callbacks. Some public methods have been deprecated.
addItem(ItemType, const char*, int) has been replaced by addItem(Item), and
createDefaultSpeechItem() and createDefaultFileItem() were added.
* Added a setIgnoreThisReading on the ArSensorReading class
* ArNetworking library now has Python and Java wrappers! (Thanks to Swig)
* Changed things a little so that ArRangeBuffer now additionally has
getClosestPolarInList and getClosestBoxInList so that you can do
these operations on arbitrary lists of readings (for instance from
transformed readings) more easily (you can also just make your own buffer)
* Added a targetPose to ArRangeBuffer box checking so that you can
see if a point is closer to someplace other than the robot
* ArArgumentParser functions now generally have arguments so you
avoid just get one argument (previously it'd always recurse and
find you the last argument)
Aria 2.3.3
May 31, 2005
---------------------------
Fixes:
* Position mode can display some new flags
* Initialize a variable in position mode
Aria 2.3.2
May 24, 2005
---------------------------
Fixes:
* Cleans up some warning messages seen in Windows
* Companion to ARNL 1.3-2 with important fixes.
* Fixes uninitialized variable in ArModePosition.
Aria 2.3.1
May 23, 2005
---------------------------
Fixes:
* Fixed a bug in the filtering of ArRangeDevice readings that caused odd
behavior in Windows
* Put a log message into the default signal handling if exit was occuring
Enhancements:
* Modified ArServerModeStop so it doesn't always turn off sonar when stopped
(depends on an argument in the constructor), SONARNL uses the new behavior
so that you don't need to move before you can localize
Aria 2.3.0
May 16, 2005
----------------------------
Critical Changes:
* Aria::exit has been enhanced with callbacks (see Aria::addExitCallback)
and will now just exit the program instead of trying to get threads to cooperate.
* This has been made the default way to exit on signals (segfaults
and control C for instance).
* Exit has also been made the default way that ArRobot will call if escape is
pressed to shut things down (see ArRobot::setKeyHandler for the
way to use the old behavior).
* Aria::init and ArRobot::ArRobot now have new parameters to control
this behavior. Java code will require updating for this new parameter.
This is so that things can be more consistent between programs and exit
conditions with less code required in the programs, generally it just works
better.
* SRIsim binary has been removed. Use MobileSim instead.
* MS Visual C++ 6 project files have been moved into the vc++6 subdirectory,
and are no longer maintained. Use Visual C++ 7.1 (.NET) instead.
Fixes:
* Bug fix in ArSoundsQueue::resume().
* ArFileParser can now remove its remainder handlers in remHandler
Enhancements:
* ArMap now deals with lines (for SONARNL, MobileSim, etc.)
* ArMap now deals with RouteInfo (for ARAM, just ignore for Aria and Arnl)
* Added ability to track velocities coming back from the robot, see
ArRobot::setLogVelocitiedReceived, also added it to
ArServerSimpleComMovementLogging
* Added ability to track packets received and sent more easily, see
ArRobot::setPacketsReceivedTracking and
ArRobot::setPacketsSentTracking. Also added these to the
ArServerSimpleComMovementLogging.
* polySegments shape added to ArDrawingData
Aria 2.2-0
March 29, 2005
----------------------------
Critical Changes:
* Sonar position parameters are now given from center of rotation
* Replaced old ArSpeech library with three new rewritten libraries.
Fixes:
* Bug fix in ArNetworking TCP packet sender which might have caused some
data to be lost
* Removed problematic methods ArPTZ::getReal{Pan,Tilt,Zoom}
* Removed all the references to using a std::string in ariaUtil's ArUtil
that would allocate or modify memory since if used in windows dll's
these'll cause major problems, made them take char *,
ArUtil::splitString is removed (use ArArgumentBuilder), commented out
stripDir and stripFile since they have problems and it doesn't seem
worth fixing
Enhancements:
* ArRobot returns the actual battery voltage from the robot (Rather than
scaling to 13v) if you call ArRobot::getRealBatteryVoltage and have a
recent OS on the microcontroller (otherwise gives the scaled value)
* New robot parameter files for SH-based robots (p3dx-sh, p3at-sh,
patrolbot-sh, peoplebot-sh, powerbot-sh). Fixed P3AT's laser Y position
to 0.
* ArConfig: improved error handling, sections now operate fully and permit
the same parameter in multiple sections to be handled properly.
* New ArUtil and ArMath functions: findMax, findMin, log2, isOnlyAlphaNumeric
* ArActionTriangleDriveTo improved for greater accuracy
* ArRobot::getRobotLength() and ArRobot::getRobotWidth() added
* ArActionMovementParameters added, it can set all the vels and accels/decels
in the action so that you can have different action groups drive more
differently easier
* New Joydrive and Input classes (ArActionRatioInput and ArRatioInput*),
and server mode and handlers in ArNetworking for "Ratio drive",
to which you give front/back/left/right percentages of a maximum velocity.
Server can also enable/disable safe drive mode.
* New ArRobotJoyHandler class for getting joystick information from recent
OS on the microcontroller
* New ArNetworing classes: ArServerSimpleOpener, ArClientSimpleConnector.
* New class: ArActionGotoStraight
* New class: ArDataLogger
* Changed ArRobot::moveTo to keep range devices locked the whole time its
modifying things and now it doesn't use applyTransform (which probably
shouldn't be used)
* Added new action ArActionDeceleratingLimiter which will crank up the
deceleration to avoid a collision if it needs to (up to throwing an estop)
* New ArActionGroupNewInput using the new ArioInput
* New ArSoundsQueue and ArSoundPlayer classes
* New speech synthesis and recognition design, with implementations using
Festival and Cepstral (synthesis) and Sphinx (recognition) in separate
libraries. Aria now has a common base class for synthesis, ArSpeechSynth.
(Replace old ArSpeech library)
* ArKeyHandler supports more special function keys
* ArSimpleConnector may be used in Java and Python by passing in the
language's normal argv object (main() argument in Java, sys.argv in Python)
* New classes in ArNetworking in ArServerFileUtils and ArClientFileUtils for
transfering files over the ArNetworking connection, really only works in
Linux (and is mostly for the new feature in Mapper3)
* User and password information can now be required to connect with
ArNetworking, see the ArNetworking overview in the documentation for more
details (and ArNetworking/examples/serverDemo.userInfo);
Aria 2.1-3
October 12, 2004
----------------------------
* Special prerelease, with various Aria changes, and new ArSpeech_* setup [reed]
Aria 2.1-2
??
----------------------------
* Special prerelease?
Aria 2.1-1
23 August 2004
---------------------------
?
Aria 2.1
11 August 2004
----------------------------
ArRangeDevices now have some information about how they should be
drawn in programs like MobileEyes (see the ArNetworking notes on
ArServerInfoDrawings). See setCurrentDrawingData and
setCumulativeDrawingData.
ArTCM2 class added to handle the TCM2 compass.
ArRobot now has information about the IR on a robot (stored in the .p
files).
ArSick can now ignore readings at certain angles (stored in the .p
files).
demo now has a command mode which will send commands down to the robot
directly. This stops state reflection (with the new
ArRobot::stopStateReflection) so you can send motion commands to the
robot without problems.
demo's position mode can now activate and deactivate the gyro and now
has a mode where it can control just one of heading or velocity.
demo now has a mode for viewing the TCM2 compass data.
New range devices, ArForbiddenRangeDevice (makes forbidden lines in a
map into range device readings), ArBumpers (makes bumper triggers into
range device readings), and ArIRs (makes IRs into range device
readings).
You can now activate and deactivate the ArAnalogGyro.
ArActionBumpers now works dynamically with differing bumper numbers.
ArArgumentBuilder will now take a set of strings (addStrings) and will
allow you put put them a particular place in the list.
ArArgumentParser will now let you load default arguments that will
then be parsed as if passed in on the command line
(loadDefaultArguments loads these). This is for things like passing
in the robot port or laser port to all your programs. See the class
description for more details. Aria::init and Arnl::init add files to
the list, for Aria its the file /etc/Aria.args and environmental
variable $ARIAARGS and for Arnl it adds /etc/Arnl.args and
environmental variable $ARNLARGS. The parser therefor has a function
checkHelpAndWarnUnparsed to call instead of the old check against
argc. If you use this new feature you'll want to check against
parser.getArgc if you care about variable count since after
loadDefaultArguments is called the parser will no longer be using
the argc passed in (since it had to add).
ArSimpleConnector can now configure a sick to use the different number
of degrees and the different increments.
ArVCC4 can now handle some other Cannon camera types.
Changed things to check #ifndef WIN32 instead of #ifdef linux to make
things easier for people using Aria on non linux but still unix
platforms.
The priorities for ArConfig are now different (there are only 3).
ArNetworking Changes
--------------------
ArServerInfoDrawing takes range devices (or all the range devices on a
robot) and provides it through an ArNetworking server (to draw in MobileEyes).
They will then be drawing by MobileEyes. The supported types
right now are PolyDots (takes a list of points and draw dots of a
given size at those points), PolyPoints (takes a list of points and
draw small points at those points), PolyLine (takes a list of points
through which it draws a line), PolyArrow (takes a list of points
through which it draws arrows pointing at the robot).
ArServerInfoDrawing can also just take a functor which'll return a
packet to draw so that you can draw whatever arbitrary information you
like.
ArServerHandlerCommands provides a list of commands through the ArNetworking
server, and calls a functor or a functor with string argument when the command
is received (These are displayed as "Custom Commands" in MobileEyes).
ArServerSimpleCommandsUC is a class which will hook into
ArServerHandlerCommands and let you send commands to the
microcontroller (uC). Note that if you use motion commands with this
the ArRobot state reflection on the server is still going on so you'll
want to hold enter (for the tool) or control s (for the toolbar) in
MobileEyes.
New ArServerHandlerCamera class to control an ArPTZ through ArNetworking
ArHybridForwardVideo will connect to a running video server and
forward video from that server out through its server.
These video servers are either our color tracking
software (ACTS, purchased separately) or our SAV (software a/v)
transmission software (free to all our customers).
ArClientBase::logDataList will now log not only the name and
description of the data available but also the return description and
argument description.
ArNetPacket now has doubleToBuf and bufToDouble.
ArServerHandlerMap now optionally take a map instance in the
constructor in which case it won't worry about loading a map itself
and will instead use the given map (and hook into the its map
reloaded callback).
ArConfig information can be passed from the server to the client and
vice versa now. MobileEyes has a GUI editing tool for configuration
data (ARNL guiServer lets people edit arnl.p).
ArClientBase requestOnceWithString does a request once on the given
name using a packet with the string passed in put in the buffer.
Aria 2.0
11 February 2004
----------------------------
ArNetworking library added! ARNL and MobileEyes were also released.
ArConfig now a new class ArConfigArg instead of ArArg, ArConfigArg can
also makememory to hold things and is more set up for working with
ArNetworking (and hides some things from people just trying to use the
base ArArg stuff). ArConfig::writeFile now writes priorities of the
config out but has a parameter not to.
ArConfig now has sections to it and doesn't need to be subclassed
from, there is also an Aria::getConfig so that you can have one config
for all the options in a program without as much coordination
required.
The demo program and ArSimpleConnector now have shortcuts for arguments
along with a new flag -connectLaser which will have it connect the
laser (only in demo and ArNetworking example serverDemo right now).
You can also now just pass one hyphen (-) but two (--) will still work
fine.
The simulator will now use rotational and translational accelerations
and decelerations independently and respond appropriately to these.
Previously rotational acceleration was linked to translational
acceleration and there was no deceleration parameter as acceleration
parameter was used for deceleration too. If you set the accel/decel
params in your robot's parameter file these will be sent to the
simulator which will respond appropriately. Note that too large
values will cause the simulator to act erratically.
ArRangeDevice now has generic code to keep current and cumulative
readings.
Signal handling should work appropriately now.
New params in the parameter file. GyroScaler and LaserTh, RobotWidth
and RobotLength. GyroScaler is used with an ArAnalogGyro to calibrate
it (figure out the error and then adjust this scaler to compensate).
There is new code in that deinterlaces sick laser readings if you are
operating at 1/2 degree increments (the reading aren't interlaced with
any other mode). Mapping does not yet take advantage of this.
ArArgumentParser has some new functions to make life easier and now
tries parsin with a - extra)
ArUtil has a few new functions e.g. ArUtil::atof which deals with inf
and -inf correctly (to help Windows).
ArNetServer can log data sent and received.
ArRobot has some new functions (requestIOPackets, stopIOPackets,
requestEncoderPackets, stopEncoderPackets, getIOAnalogVoltage (which
like all the getIO calls you need to call requestIOPackets to use),
getLeftEncoder and getRightEncoder (which you have to call
requestEncoderPackets to use))
There's a new class ArLineFinder which finds lines from a range device
that puts in rawReadings which at this point is really only the ArSick
class. It will find the lines in a reading which can be used to do
different things. ArActionTriangleDriveTo now exists which uses this
class, these are used with the docking stations that we have.
Other miscellaneous small fixes.
Aria 1.3-2
8 September 2003
----------------------------
RequestIOPackets was on for all robots instead of just the newer
PeopleBots which wound up sending too much data and broke a few
things. Its off now except for the PeopleBots that need it, but the
following fixes are in place so that things will still work well with
that amount of data.
Before if you had a lot of data (a gyro, lots of sonar data, and were
requesting IO) you could wind up where Aria would spend all of its
time receiving data and none doing anything with it, this was only at
9600 baud and more data than most people ever send back and forth. It
did this because it tried to process all incoming data before running
its loop, now it'll only try to do this for a half a cycle's worth of
time.
The warning messages for when things take too long now clearly
indicate that they are in fact merely warnings.
A new release of AROS should be out this week, if you are using this
version (1.9) or newer and are connecting over a serial port the
connection will be automatically shifted up to 38.4 baud after the
connection is made. Aria sends a command to the robot to tell it to
change baud rates, then changes its own baud rate in reflection. If
either side doesn't hear from the other for a half second it fails
back over to the previous baud rate. You can disable this behavior by
changing SwitchToBaudRate to 0 in your parameter files. You can also
set it higher (up to 115200) if you wish, you must use the normal baud
rates of 9600 19200 38400 56800 or 115200.
Aria 1.3 ?
11 August 2003
----------------------------
(BasicSuite Mapper and LaserMapper (ScanStudio) were both also released)
Code for the new gyroscopic correction system is integrated in with
the base level Aria code. The class is ArAnalogGyro. If your robot
has a gyro mode then in the Aria demo in position mode the raw gyro
and raw robot headings will show up.
ArRobot now requests a configPacket from the robot after it connects
and waits for that before saying it is connected (it times out within
a few seconds so it will work okay with pioneer 1s and other old
robots, but everyone with anything but a pioneer 1 should get the new
AROS or P2OS version since it has one critical bug fix).
ArActions have gotten a major upgrade as they can now set the
accelerations and decelerations the robot uses. The values an action
sets will be used as long as an action sets an accel, decel, or rot
vel max when an action isn't setting them anymore these values all
reset to the values the robot had at connection (the reason the
configPacket reader was implemented). trans vel max is still taken
care of in software. You can also set these values on the robot so
that ArRobot will ignore the ones from the configPacket, look at
setRotVelMax, setRotAccel, setRotDecel, setTransVelMax, setTransAccel
and setTransDecel. You can now also use rot vel with the actions,
note that this does not mix at all with the heading modes and that
whichever mode is used first is what will be used the other will be
ignored.
ArRobot has a stabilizing time that can be set with
ArRobot::setStabilizingTime so that it will wait a set amount of time
after the initial connection is made before saying it is connected and
calling the connect callbacks. This stabilizing time right now is
only used for the gyro (since needs to find the center while the
robots not moving before it can be used).
There is now a warning time for the robot cycle time
(ArRobot::setWarningTime). If the robot sync tasks take longer than
this time a warning is issued. If any individual task takes longer
then that task is also warned over. Default is 200 ms, 0 disables it.
The sick filtering code has been changed. Look at that class for
specifics but one main thing is that readings will now be filtered and
thrown away if they are too old, but this like all filtering is
configurable. There was code that ignored some readings on the sides
of the robot but this was gotten rid of since it sometimes caused
trouble because it would sometimes hold readings that should have been
discarded.
New class called ArConfig for having configuration
files of different sorts, the mechanism that reads/writes .p files was
overhauled to use this instead of the old ArPref* system that has been
removed. The new system is much more robust and usable than the old
system.
The wrapper.i file needed for rebuilding the Java and Python wrappers
is now included. If you have any trouble with the wrappers in the
stock Aria please send me an email.
The demo and anything using the ArSimpleConnector can now change the
baud by using the switch --robotBaud in the command line.
The code for ArVCC4 has been upgraded a little bit and now has the
ability to enable or disable the getting of the position from the
camera.
The option not to do state reflecting has been removed from the
constructor since no one I'd heard of used it and it was making things
too complicated for little benefit.
The general Aria static class now has functions for setting and
getting ArJoyHandlers like it has for key handlers.
ArUtil had strcasecmp functions added for comparing the cases of
strings and char *s without paying attention to case. Also has a
function call to convert a value to true or false for easier
logging/understanding. There's also a function to lower an entire
string.
A few other minor bug fixes and additions.
Aria 1.2
4 March 2003
----------------------------
Aria now supports Java and Python (Wrappers generated by Swig).
A number of names of member functions have changed to accomodate this
(since they were keywords in one of these languages). The most important
one is that the different print members are now called log (since thats
what they do).
There are a couple of more complicated features that don't work yet in
these languages. The only unimplemented feature of SWIG is virtual
function overloading which means that you will not be able to make
your own ArActions in Java or Python, but you can always add them to
the C++ library and use them in Java or Python.
You also will not be able to make your own ArFunctors
for callbacks, but again where thats needed you can make objects in
the C++ library and use them in Java or Python. For this deficiency
language specific workarounds could likely be written by users, which
I could incorporate or if there are large numbers of people using
these wrappers we may develop these on our own.
Also note with python, if you use non-interactive mode the program
will crash on exit. In interactive mode you should do
robot.disconnect(); Aria.shutdown() before you exit to avoid a crash,
or you can add these to the simple.py for non-interactive mode.
Note that there are no Java or Python wrappers for anything but Aria.
If people use this wrapper and want wrappers for the other packages I
will probably make them. If you use either of the wrappers and have
feedback about it, feel free to send it to me.
ArSick now has a cumulative buffer (it had none before) which
is filtered for readings that the laser doesn't see anymore (ie
transient obstacles).
ArRangeDevice now has a buffer that is ArPoseWithTime instead of
ArPose, people may need to change their iterators. Cumulative
readings older than a certian time can now be flushed.
Accessors in Aria are now const. Some functions have both a const and
non const function. No one should really even notice this except for
the people who want to use it.
The Cannon VCC4 camera got an improvement in that it now uses
bidirectioncal communication.
New ArSimpleConnector class that should make it easier to connect to
the simulator or real robot with an ArRobot or ArSick. Also supports
the command line options the demo uses. It is used in
examples/demo.cpp examples/wander.cpp examples/teleop.cpp
examples/sickWander.cpp examples/sickTeleop.cpp.
As always there were more bug fixes and improvements.
Aria 1.1-11b
29 Jan 2003
---------------------------
* Fixes errors in windows packages
Aria 1.1-11
23 Jan 2003
----------------------------
?
Aria 1.1-10
13 November 2002
----------------------------
?
Aria 1.1-8
10 October 2002
----------------------------
?
Aria 1.1-7 ?
5 September 2002
----------------------------
* The addition of new robot types for use with the new H8 controller
* Preventing the robot from jumping to the origin on connect
* Fixed a memory leak in ArBasePacket
* Fixed a corrupted file in the Windows distribution of ArSpeech.
Aria 1.1-5 ?
12 July 2002
----------------------------
This mostly fixes some problems with sonars from an over-agressive other
bug fix I did. It didn't process the last parameter of the sonar and
wound up thinking it was pointing forward (0, 0, 0). It has a few
other small fixes but nothing major (some previous parsing errors used
to crash Saphira but Kurt fixed it so it didn't).
This may fix the sonar localization issue reported today, I'm not
sure. If not you can try doing an mcSetGauss after moving a robot
back to locate the samples there. If that works and it isn't an issue
let me know.
Aria 1.1-2
10 May 2002
----------------------------
* rewritten ipthru program (examples/ipthru.cpp)
* Fixes and minor additions
Aria 1.1
11 March 2002
----------------------------
* ArSick class added to support the Sick laser rangefinder.
* New unified demo program that'll control basically everything on the
robot, gripper, camera, all that.
* New examples sickWander.cpp and sickTeleop.cpp which
demonstrate how to configure the laser.
Aria 1.0-3
26 February 2002
----------------------------
* ArActionGroup added.
* Minor bug fixes.
Aria 1.0-2
??
----------------------------
?
Aria 1.0-1
??
----------------------------
?
Aria 1.0
21 December 2001
----------------------------
* First full, official ARIA release!
* ArAction::run renamed to ArAction::fire
* Better documentation
* ArKeyHandler added
Aria 0.71
8 November 2001
----------------------------
Fix to the simulator in Windows
Aria 0.7
6 November 2001
----------------------------
First public beta
You can now do a setPort on an ArSerialConnection or ArTcpConnection
instead of having to open it... the robot connect will then open it
(and fail if it can't open it). The only time you really need to open
it yourself is if you want to do error checking and do different
things if the open fails.
The sync loop now just waits in the packet handler all the time, and
the packet handler finally returns (which runs the main sync loop) as
soon as it gets a SIP from the packet. There is a flag to the ArRobot
contructor if you don't want to use this new behavior.
Aria 0.6
13 September 2001
----------------------------
* Internal beta