Place Categorization and Semantic Mapping on a Mobile Robot

I am currently working on a project where I need to create a semantic map of the environment that my robot moves through. The robot has an RGB-D camera mounted on top of it. So, as it moves through the environment it can perceive a continuous stream of images, each of which is passed through a CNN trained to identify different places such as kitchen, elevator, corridor, door etc. and the result of the place classification is then passed through a Bayesian Filter to create an occupancy grid map of the environment labeled with various place categories (colors corresponding to different places) as described in this paper. An example is shown below:

enter image description here

Now, the issue here is that, if you look at point X marked in the above image, although the robot is standing in the corridor at this point, the camera already sees an office (orange) and therefore labels a part of the corridor as an office.

I am looking for some sort of a solution to bypass this thereby allowing me to, as accurately as possible, segment the map by places in real-time as the robot moves through the environment. It can also be done iteratively, for example, refine the result when the robot crosses point X again some time in the future.

P.S. The robot is also equipped with two laser range finders which are used to create the occupancy map. Maybe I can somehow combine the laser range point cloud with the depth point cloud from the RGB-D camera.

Mapping two apis together

I have two services which I can not modify, and I want to push data from service A to service B

Both have rest API, but are not using the same object models and JSon structure, so what I have done this far is writting a service that will call API A every X hours and Push datas to API B:

I designed the service C this way :

  • a wrapper class for querying API A
  • a wrapper class for querying API B
  • a Logger class

(I’m using python but I do not think this is revelant here)

Now I feel that what i’ve got to do is just create a “Mapping” class with methods calling API A, getting entity A.a, A.b, A.g of API A, generate my JSon to create object B.h of API B and Post it to API B, and repeating this until I’ve pushed all the different entities and datas I want to push to Service B.

It feels quite unefficient and rather boring to write, is there a pattern or a smart way to push data from one Endpoint to another ?

Thanks,

Matching of two weighted graphs allowing one-to-many mapping

I am looking for a heuristic for a graph matching problem as follows.

Given two graphs: $ A$ (consisting of nodes $ a_i$ ) and $ B$ (consisting of nodes $ b_i$ ). Typically the size of $ B$ is larger than that of $ A$ .

Each node and edge in two graphs has weight. The task is to match graph $ A$ to graph $ B$ , i.e., find a set of nodes and links in $ B$ to map each node and link of $ A$ , such as the host node/link in $ B$ has larger weight than the corresponding node/link of $ A$ .

The following figure illustrates two possible cases (or solution) of mapping (matching):

  • Case 1: One-to-one mapping: Each node or edge of $ A$ needs only one node or link of $ B$ to map. Here the nodes $ a_1, a_2, a_3$ are mapped on to $ b_1, b_2, b_3$ , and the edges $ a_1a_2, a_2a_3$ are mapped onto $ b_1b_2$ and $ b_2b_3$ respectively.

    • Constraints are satisfied: For nodes: $ b_1 > a_1$ , $ b_2 > a_2$ , $ b_3 > a_3$ . For edges: $ b_1b_2 > a_1a_2$ and $ b_2b_3 > a_2a_3$ .
  • Case 2: One-to-many mapping: One needs more than 1 node/edge of $ B$ to host a node/edge of $ A$ . In the example, $ a_1$ is mapped on to $ b_1$ and $ b_4$ , $ a_2, a_3$ are mapped onto $ b_2, b_3$ . For the edges: $ a_1a_2$ is mapped onto $ b_1b_2$ and $ b_4b_2$ , and $ a_2a_3$ is mapped onto $ b_2b_3$ .

    • Constraints are satisfied: For nodes: $ b_1 + b_4 = 11 > a_1$ , $ b_2 > a_2$ , $ b_3 > a_3$ . For edges: $ b_1b_2 + b_4b_2 = 8 > a_1a_2$ and $ b_2b_3 > a_2a_3$ .

Heuristics for Case 1 have been well studied, e.g., using eigendecomposition to solve the Weighted Graph Matching Problem (WGMP). Nevertheless, I could not find an appropriate algorithm to find a solution as in Case 2. Any suggestions?

Example figure

Mapping every character to its next occurrence based on the number of unique characters between the occurrences

To optimize my LF mapping, I was asked to do the following. Given a string, say $ abaxyxwxbx$ I need to encode it in a way where every index stores the value of the number of unique characters encountered since its last occurrence $ + 1$ and $ 0$ otherwise. Using the earlier string. The encoding would be:

$ abaxyxwxbx$
$ 2502020200$

For the first $ ‘a’$ , we encounter a $ ‘b’$ and then an $ ‘a’$ . So we count the one unique character, $ ‘b’$ and add $ 1$ to it and store it as the encoding for the first $ ‘a’$ . For the first $ ‘b’$ , we encounter the next $ ‘b’$ on index $ 8$ . From the first $ ‘b’$ to the second $ ‘b’$ , we encounter 4 unique letters $ (a, x, y, w)$ and add $ 1$ to it, hence we store $ 5$ as the encoding for the first $ ‘b’$ . For the second $ ‘a’$ , there is no $ ‘a’$ that we can encounter hence its encoding will be $ 0$ .

My first approach was to create a $ \sigma$ x 3 sized array ($ \sigma$ is the size of the alphabet). The first column would store the character, the second column would store the number of characters encountered since the last occurrence, and the third column would store the index of the last occurrence.

The second method I tested was to maintain an AVL tree with order statistic such that at a given time only $ \sigma$ characters could exist inside the tree. This method is again $ O(n*\sigma)$ .

Is there a way to do this is $ O(n)$ time?

How to handle mapping of generated classes with identical fields?

We have a large number of classes that is generated by JAXB. There are a couple that have identical fields and I want to see if there is a clean way to map class A to class B.

Example:

public static class ParentA  implements ... {     public static class A implements ... {       protected String name;    } } 
public static class ParentB  implements ... {     public static class B implements ... {       protected String name;    } } 

I want to take an incoming A and map it to B but there are many other classes that I want to map A to. How can I handle this? I see that there is a copyTo method, but it only copies A to another A.

Keyboard mapping for HP Laptop’s Email Button

So my laptop is a HP Pavilion DV6 from 2011 or so. It has a row of “quick buttons” on the left, allowing users to quickly open Mail (mailto: in Windows), Browser, Print and even the Calculator.

Recently the Email button is randomly “pressed” on its own, opening whatever that is the default email app and disrupting my works. I know this is the problem because I just “de-associate” the button in Windows’ regedit, and it stopped happening there. In my Ubuntu installation, Thunderbird is opening on its own and I don’t know how to “de-associate” this button.

The version is 19.04. I look forward to your help.

GIS Mapping and Remote Sensing for $20

Hey, I am Uzban.I have 2+ years of experience as a GIS Analyst and Expert. I can provide following services Raster and Vector AnalysisImage ClassificationImage Data ExtractionGeorefferencingCoordinate systemProjection system I have professional experience in fields of Geographic Information System (GIS) & Remote Sensing (RS)Geodatabase Development and maintenanceSpatial AnalysisNetwork AnalysisDemographic AnalysisCustom Map Production and Web Map DevelopmentModel BuilderPhysical features DigitizingGIS for Urban planning, Environment and DevelopmentGeolocation and GeoreferencingStereo setup & Block File Creation of Photogrammetry.Satellite Image processingSupervised & Unsupervised Classification My softwares include ArcGIS QGIS ArcView ERDAS IMAGINE 8.4 and 9 Feel free to contact me.

by: Uzban99
Created: —
Category: Art & Design
Viewed: 53


Reset faulty key mapping

While remapping keys I accidentally did something to change the behavior of my alt keys. If I have a window open and I press alt the window is grabbed and stuck to the cursor/arrow keys. This makes my frequent use of alt-tab useless.

The major change I made was with xmodmap, although I don’t think this is the cause as they changes are reverted every time I reboot (I added a line to my .bashrc to set my new mappings but this does not take effect until I open a terminal). I also have a backup of my original mapping which I used to reset my changes but that did not fix the issue.

Another change I made in an attempt to persist my xmodmap changes was to add a file in /etc/X11/Xsession.d/ as explained here. However, this did not work so I removed the file. I also tried creating a .xinitrc as explained in the top answer on that post but also subsequently deleted that.

None of the above changes explain my problem so I suspect that I deleted or edited something along the way and forgot about it.

Extra Details: Running xmodmap -pke shows nothing funny for keycode 64 (left alt):

keycode  64 = Alt_L Meta_L Alt_L Meta_L Alt_L Meta_L 

The only shortcut mapped to either Alt key is Alt L to Key to show the HUD. Changing this to another key combo (temporarily to alt q) did not fix the issue.

Plugging in an external keyboard verifies that it is not a hardware issue (the behavior is the same with the external keyboard).

What I have tried:

  • Resetting my keyboard layout with setxkbmap -layout us -option
  • Resetting shortcuts with gsettings reset-recursively org.gnome.desktop.wm.keybindings

I apologize for my rather vague details; I’d be happy to provide any more detail if needed.

Changing keyboard mapping

I’m pretty new to the site. I want to change my keyboard key-mapping. I use Ubuntu 16.4. By keyboard key-mapping I mean that if I type key ‘a’ I want a different unicode character (or characters) to appear be typed. Is there any code which I can temporarily run to get the work done? Can somebody help me?