Labbook SI4MS
Wishlist
Images published over channel (done September 11).
Gracefull exit when USARSim not running (done September 12).
Specify type of robot and robot-location at commandline. (done September 14).
- Test raw-images and
legacy mode. Adjust size to lcm default. (done September 14).
Check multiview. (done September 14).
Check other types of robots and other locations. (done September 15)
Test Gamepad control. (done September 16).
Prepare package for publications. (done September 17).
Write documentation. (done September 18).
Clean up code. (done September 18).
Write TechReport with conclusions.
12 December
4 October
- Extended LcmProxy with Nao-model. The IMU only reports acceleration !? The left and right sonar report independently (both straight?). The Sonar is not shown in LcmSpy, because sonar is not in the LcmTypeDatabase. Should find out how to get this type into the database. Only the top-camera image is published, although the bottom camera is visible in the UDK window. Problem solved by giving the -w 2 commandline option.
Recompilation of LcmSpy doesn't solve the missing sonar_t. Looks that it is located in C:\git\april\java. Should first convert to java with lcm-gen -j.
- Created sonar_t.java with lcm-gen.exe. Build new april.jar with command ant build-jar. Still sonar_t unknown. Also ant build-java followed by ant build-jar didn't help (in both directories, and copying lcm.jar to the april directory (in classpath).
3 October
2 October
- Received a bugfix from Jan Hrbacek. Tested it with raw-images and JPG=High. No magic errors anymore, but the raw-images are very slowly broadcasted and incorrectly interpreted:
1 October
- Finished reading the article of the MIT Darpa team about their architecture.
- Read the Communication Architecture chapter of WP1.
- Read the sheets of Erlangen. WAVE is new DSRC term, RSU is a Wave Acces Point and OBU is a Wave Station. The LCM broadcast could at best be a Wave aware UDP application (with help of an ISO 21210 convergence layer).
- Found another QFree presentation, with FOAM as end2end framework above CALM, and POMALOR and COMO as two applications (map services and vehicle monitoring resp) on top of FOAM (as part of CVIS). FOAM seems to be implemented as Java based components exchanging data in fixed exchange formats).
- The Magic team used OM1P Mesh Routers for short-range communication, the predessor of the OM2P Mesh Routers.
26 September
19 September
- Checked the code out at pc-udk. Opened the solution with Visual Studio 11. Projects were converted without problems; program was build without any warnings.
- Code worked fine (didn't check with LcmSpy, but output seems OK). RoboCup2012-Tryout gave warnings about Envy. Copied the UDKGame files from Mexico. Problem solved. make_clean gave warning about radar. Didn't looked into that. Running keeps on complaining that the scripts are outdated (also after a make). Yet, no make screen pops up. Tried to change the command from 32bits to 64bits, but that didn't help.
18 September
- Made the documentation to be included with the LCM USARSim Proxy distribution.
- Cleaned up the code and published the code to sourceforge.
- Made a summary of the documentation available at the USARSim Manual.
17 September
- Read the Architectures chapter from the Robotics Handbook. JAUS is mentioned as architecture component (mixture of client-server and publish-subscribe), while RCS is mentioned as a multitiered architecture. No mentioning of LCM, URBI or ROS.
- Made package ready for publication. VS2005 cannot handle .Net Framework 4, so had to manually reduce the Tools reference to v3.5. Couldn't find any Framework64 Systems.dll, so switched back to Any PC configuration. Tested code, seems to work. Package is now ready for publication, only have to clean up code and add documentation.
16 September
- The gamepad code is still available. Tried java -ea -server april.util.KeyboardGamepad -l udpm://239.255.76.67:7667?ttl=1, but the KeyboardGamepad doesn't listen to arguments (and connects to singleton).
- Changed the code to publish and submit to the singleton. Spawned a P3AT, and this robot listens to the arrow keys when the small java keyboard window has focus:
- Gamepad works also when the channels are published to the local network (udpm://239.255.76.67:7667?ttl=1).
- Also tried to control AirRobot, but the AirRobot doesn't move (should first lift off). The spacebar is sets the button-value on to the 1. Could be connected to lift off / land. Otherwise going up/down should be connected to axis[6].
- The java -ea -server april.util.GamePadDriver reports no Gamepad Present, because it checks the driver paths "/dev/js0", "/dev/input/js0", so only works under Linux.
- Added code to listen to SHIFT (up) and CTRL (down) (and in addition to axes[3], which I couldn't test). Now the AirRobot flies:
15 September
- Tested Kenaf. Hokuyo has more beams, so corrected code to reflects this. The Kenaf has two cameras; only one is published. The Hokuyo has another MaxRange. Should check this:
- Analyzed laser_t.cs and april\lcm\LaserPlugin.java. MaxRange is not in the message, but fixed (on 75m) in the Plugin.
- Added code to publish second camera image. After some mistakes it worked. Tested if it also worked wit a single camera (AirRobot). It seemed to work, although the AirRobot didn't publish any pose messages.
- Suddenly, no robot is spawned anymore. I will try if it is solved by a restart. It is:
- The AirRobot has an IMU instead of a INS. The IMU has several measures include in pose_t, as for instance the acc and angular_vel. The IMU also has an estimate for the angular_acc, although this is not defined in the pose_t.
Strange enough the rotation is defined as quaternion, but the angular_vel and angular_acc are just vectors of length=3. Most of the time the IMU gives NANs for the acc and angular_vel.
14 September
- Created version which listens to command-line arguments.
- Made version which converts bytes to MemoryStream, MemoryStream to Image, Resizes Image, Convert Image back to bytes. Unfortuntelly, the resulting image is grey:
- Made a version which selects right subview. Should I rescale the 320x240 to 400x300 (factor 1.25)? Strange that it works, because I return a bitmap (while I should return an Image):
- Tested ImageType=0,1,2. Only ImageType=0 (raw) gives LittleEndian problems.
- Tested with legacyMode is false. Had to add extra acknowledgement.
- Tested with viewport=2 and viewport=3 (with tile 2). Seems to work:
- With ImageType=1, I receive images at a certain moment (after a few images) no images anymore. Added a acknowledgement after a certain timeout, but the problem seems to be in the buffer (TcpCameraConnection crashed on line 49 before I commented this line out).
- Code works fine with ImageType=2. Time to make it ready for publication.
12 September
- usarsim_transmit was tested yesterday with LegacyMode=True (and ImageType=1).
- Result was for every message a bad magic warning (3330434c) = "30LC".
- Removed the shorts: result is less bad magic warnings, which is called in UDPMultiCastProvider (seems that the ascii-code "LC03" (4c433033) is transmitted in little endian). Spy doesn't see the image messages (but also complains about the magic).
- Didn't find any information about the magic code in MultiCast messages. Tried a different pixelformat = 0x32776173 (my original choice from fourcc), but same magic warnings appeared.
- Added a breakpoint in PublishEx. The pose and laser are sent as MAGIC_SHORT messages. The data is sent as MAGIC_LONG. Already the first fragment leads to a bad magic warning.
- Also the jpeg version (ImageType=1) results in bad magic.
- The jpeg version (ImageType=5) goes well (but no fragments).
- The jpeg version (ImageType=3) goes well (but no fragments).
- The jpeg version (ImageType=2) goes well (but no fragments), for 640x480.
- Added || magic == IPAddress.NetworkToHostOrder(UDPMulticastProvider.MAGIC_LONG) to HandlePacket, but the result was that the HandleFragment had a lot of problems (ImageType=1 suddenly also didn't need fragments).
- Both types of magic create a different type of bitstream.
- Try to submit subview, maybe this fits in a MAGIC_SHORT message also for a raw image.
11 September
- Printed the bytes as read by p3at_transmit. First (JPG-image is 62911 bytes, heather is read as 894 bytes).
- Analyzed the VideoPlugin. On receiving data, it does image_t_util.decode(v);
- The file lcm\image_t_util.java knows several MPEG formats and two picture formats: FORMAT_JPEG = 1196444237;
FORMAT_RGB = 859981650;
- The heather is 0,0,244,158. 62627 should be 0,0,244,163, so something goes wrong in the calculation of bytes_length.
- Using Math.Pow instead of ^ helps: one image is published.
- After sending an acknowledgement, I get a view which is updated. The window is slightly too big (should be scaled up to 400x300, because the VideoPlugin has a fixed format of 400x300):
- Checked the memory usage. It increased clearly, but it doesn't seem to grow lineary:
- Positive news is that the width and height are not needed by the VideoPlugin. Should also test with Raw images.
3 September, 2012
- Looked into the Multicast UDP issue. According to twisted internet documentation, the multicast address is a group address (in their case "228.0.0.5").
- According to a multicast tutorial: 'This reserved range consists of addresses from 224.0.0.0 to 239.255.255.255. However, the multicast addresses from 224.0.0.0 to 224.0.0.255 are reserved for multicast routing information;'. Setting TTL to 128 means that the messages are broadcasted to whole continent! The turorial also contains a 'Hello world' example.
- Modified my C#-code so that it publishes on 'udpm://239.255.76.67:7667?ttl=1' instead of a singleton publishing on the localhost. Both nb-udk and abeel were in the same DNT subnet (192.168.1.82 and 83) and I could see the published data on the Linux-machine with command java -ea -server lcm.spy.Spy -l udpm://239.255.76.67:7667?ttl=1:
- Made some code to broadcast the image data. It is a bit difficult to get the length and width from a jpeg-stream (luckely they are fixed). Nothing visible when I call the spy (also no Laser of Pose data).
2 September, 2012
- Read the Tech Report about LCM. Lcm communication architecture is compared with JAUS, Player, Carmen and ROS.
- As described in Richard's Project Report, lcm can also easily coupled to USARSim.
6 March 2012
- Read the article 'Studying complex adaptive systems' by J.H. Holland. There are three open challenges:
- The prediction of lever points in complex adaptive systems.
- The hierarchical organizations of boundaries inside a system.
- Open-ended evolution of experience.
- Lets concentrate on the lever points. This fits into Bernard van Veelen's Emergence Control. The CAS-wiki relates them with Frozen accidents or Choke points, although those seemed to focus on events that influence the system in a negative way. Holland's definition is more neutral, more equivalent with a mutation in an evalutionary system. Anyway, the CAS-wiki directly relates frozen accidents with emergence.
- Read Donella Meadows' article about leverage points. This was not about events, but on places to intervene in a system. She made a list of those place:
- Constants, parameters
- buffer sizes
- connections between buffers
- delays in connections
- strength of corrective feedback loops (PI)
- gains of reenforcing feedback loops (PID)
- structure of information flows (creating non-physical shortcuts)
- rules of the system
- power to change, evolve, adapt
- goals of the system
- paradigms (fairness, culture)
- power to change culture
The list was experience and example based, no theory or evidence was given. The list was ordered in effectiveness, but as caveat she said that increased effectiveness also means that there are more strong conservative powers to resist change on those places.
- The wiki-page about Emergence quite elaborated. Nice idea is to connect the type of emergence through the lense of implementation (the levels of abstraction). Note that Holland suggested that 2 levels were already enough for intelligent behavior).
- A self-organization paper gives a good concise overview of the field. According to Francis Heylighen:
The concept of self-organization was first proposed by the cyberneticist W. Ross Ashby
(1) in the 1940s and developed among others by his colleague Heinz von Foerster (2). ...
During the 1960s and 1970s, the idea was picked up by physicists and chemists studying
phase transitions and other phenomena of spontaneous ordering of molecules and particles.
In the 1980s, this tradition cross-fertilized with the
emerging mathematics of non-linear dynamics and chaos, producing an investigation of
complex systems that is mostly quantitative, mathematical, and practiced by physicists.
However, the same period saw the appearance of a parallel tradition of 'complex adaptive systems' (5), associated with the newly founded Santa Fe Institute for the
sciences of complexity, that is closer in spirit to the cybernetic roots of the field. Building
on the work of John Holland, Stuart Kauffman, Robert Axelrod, Brian Arthur and other
SFI associates, this approach is more qualitative and rooted in computer simulation. It
took its inspiration more from biology and the social sciences than from physics and
chemistry, thus helping to create the new disciplines of artificial life and social
simulation.
It seems that this history is based on (5) Waldrop, M. M. Complexity: The Emerging Science at the Edge of Order and Chaos,
London: Viking, 1992.
Also note the list of further reading at the end of the article.
5 January 2012
Previous Labbook