Time for another post. This one shows the Selective Bathymetric SLAM approach, detailed in this recent paper, Navigational Error Reduction of Autonomous Underwater Vehicles with Selective Bathymetric SLAM. Click on the image to see the simulations:
SLAM (HTML5/Processing)
I thought I should post something on an area I’ve been working in more recently, so here is my simulation of the Simultaneous Localisation and Mapping (SLAM) technique, as applied to an autonomous vehicle navigating through waypoints across a feature-rich terrain.
Click through to see the simulation in action!
CH47B + MMS X3D (HTML5) Simulation
Managed to export my VRML simulation to X3D, and embed it here with the HTML5 X3DOM Framework. Note that you will need to use a supported browser in order to view the model. Click on the image below to view the model in action:
More HSL Simulations
I dug up some more old VRML simulation replays created some time ago. These ones demonstrate the dynamic response of CH-47B Chinook and UH-1H helicopters with externally slung loads undergoing a either simple disturbance or manoeuvre. The coupled-body dynamic simulation was performed in Matlab and then exported to VRML for visualisation.
Note the browser/plugin requirements in my previous post.
wxPython & Pyro
Building on my simple wxPython multiprocessing example, I’ve extended the design to implement a distributed computing architecture, using Pyro.
The client, dispatcher and worker scripts are all listed here.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
wxPython & Multiprocessing
Now that the multiprocessing library comes standard in Python 2.6, I thought I’d migrate some of my apps to take full advantage. However, there aren’t many examples out there showing how to write a basic multiprocessing program with a graphical front-end.
in order to prototype the program design, I wrote a simple wxPython script, listed in full here.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | |
SimData - VRML
Just tidied up my VRMLtrace python program. This script converts any simulation/pose data (position+orientation) into a VRML model for visualisation. It uses a template file, a VRML model of the vehicle and a data file to generate the VRML. More details are on the page.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
CH47B + MMS VRML Simulation
This is an old VRML simulation replay I created back when I worked in the Helicopter Flight Dynamics group at DSTO, Melbourne. It demonstrates the dynamic response of a CH-47B Chinook helicopter with an externally slung Medium Maintenance Shelter (MMS) load undergoing a simple manoeuvre. The coupled-body dynamic simulation was performed in Matlab and then exported to VRML for visualisation. More details are available in my report.
You will need a VRML Plugin to view the model. On Windows, ParallelGraphics Cortona 3D Viewer works very well.
If you are using OS X Safari with the FreeWRL plugin, be warned that clicking the following link, which contains the embedded VRML, may hang your system! I have not had any such problems under Windows :/ On a Mac, I suggest using instantplayer and loading the direct link instead.
Alternatively, you can see a video animation of model here.
PyODE Example 4
This example, PyODE Example 4 demonstrates trimesh-trimesh collisions. Originally derived from the PyODE Tutorial 3. This example uses PyODE, and cgkit and was rendered with Pixie.
The code is listed here.
Convert_frames
This small perl script is really just an example of using Image::Magick to crop and convert a sequence of images to prepare them for insertion into a video file. I used it for my PyODE Example. You could easily write this as a one-line command if desired.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
![[Selective Bathymetric SLAM]](/images/sbs_predefnavcells.png)
![[SLAM Simulation]](/images/slam2_html5.png)
![[CH47B + MMS]](/images/ch47bmmssim.png)
![[CH47B + Multiple loads]](/images/ch47bsim0701.png)
![[UH1H + Single load]](/images/uh1hsim601.png)
![[CH47B + RHIB]](/images/ch47bsim23R01.png)
![[CH47B + MMS]](/images/ch47bsim402.png)
![[PyODE Example 4]](/images/pyode_ex4.png)