Sunday, September 3, 2017

This afternoon, I divided the things I'm working on into 2 categories:

1. I think the outputs the NN is trying to estimate (ie, the volume of error between AMCL and Gazebo poses) vary too much  - ie, my dataset has "error volumes" out to many decimal places and each timestep's number is a little different from the rest - and that's complicating the NN's task of finding a function that estimates the output assigned to each input.
(It could be that I'm underestimating the NN's abilities)

Q: Is there a better way to format my outputs?  Pre-process and break them into 1/2/3 severity categories? 

2. I need a better way to characterize the particle clouds. 
Actions to Take:
-Try adding weights as a signal (But I risk breaking my ROS environment - catkin_make is nuclear between directories and may mess up my ability to edit the Gazebo plugin in the future)

-Find some other statistical measure for the particle clouds


New idea: the first element of the covariance matrix shows reliable spikes following kidnapping events.  Use that somehow?

*****************************************

Followed up on Idea #1:Simplifying the NN Output

I had found on a previous day that setting the kidnap location to (0,0) was making the error volume go to 0.  The volume magnitude is really based on how far away from the original location the robot is kidnapped to - taking it to (1000, 1000) gives a HUGE error volume, but kidnapping it only 2 cm away makes a small error volume - and in that case, the error volume might blend into regular error...Hmmm.

I ran a new trial and had the robot kidnapped to currentPose + (5,5) (or something like that - kidnapped to a sorta nearby pose) and looked at the Error Volume (take diff in X dir * diff in Y dir * QW... *QZ...) - for some reason QX and QY of AMCL are 0's.


Then, I subtracted the Error Volume at Time=t1 from Time=t2 and plotted the result:




The highlighted portion occurred right after the kidnapping event.  So, perhaps the difference in Error Volume from one timestep to the next could be used as an Output - or, assign a 0/1 label to the data:
0=normal error
1=notable


Remaining Q's:
What's the significance of the idea that a NN can't predict what it hasn't seen yet?
In the case of the spike in (t2 - t1), a NN won't be able to predict that spike.


What about kidnapping 2cm over?  Probably result in normal error.

Why are the AMCL estimates giving 0s for QX and QY?  I'll look at print_amcl_gazebo_pose.txt .

No comments:

Post a Comment