Anti windup on PidController - drake

I'm using PidController in a drake project and I need of an anti windup control to limit the integral term growth. I was examine the PidController documentation,
https://drake.mit.edu/doxygen_cxx/classdrake_1_1systems_1_1controllers_1_1_pid_controller.html
but I cannot find functions or parameters related to this limit.
It is correct or i missed something in the documentation?
What's the smartest way to implement it?
Thanks

I agree; the current PidController implementation does not provide those features. It would not be too hard to implement this (by modifying the current PidController interface in C++, or providing a similar implementation in pydrake). And we would welcome a contribution like this if you wanted to make it.
For bonus points, the class should really declare witness events when the "clamp" turns on/off, so that error-controlled integrators get to know about this discontinuity.

Related

Lidars in Drake

I want to simulate lidars. I saw that a class DepthSensor was mentioned in the documentation, but I have not found its actual implementation. For now, I am planning on using the RgbdSensor class and use only the height I need of the depth point cloud I receive to simulate my lidars.
Just to get your input on that, maybe I missed something, but is there a specific class for lidars, and how would you go about adding lidars to a simulation?
Thanks in advance,
Arnaud
You've discovered an anchronism in the code. There had previously been a lidar-like sensor (called DepthSensor). The extant documentation refers to that class. The class's removal should've been accompanied by a clean up of the documentation.
The approach you are taking is the expected approach given Drake's current state.
There has always been an intention to re-introduce a lidar-like sensor in Drake's current architecture. It simply hasn't been a high priority.
I'd recommend you proceed with what you're currently doing (lidar from depth images) but, at the same time, post an issue requesting a lidar-like query with specific focus on the minimum lidar-properties that you require. A discussion regarding how that would differ from what you can actually get from the depth images would better inform of us your unique needs and how to prioritize it. (You can also indicate more advanced features that you need less but would be good to have, of course).
As for the question: how would you go about adding lidars?
That's problematic. Ideally, what you would need is ray-casting ability. The intent is for QueryObject to support such a query, but it hasn't happened yet. (It's certainly the underlying technology we'd have used to implement a LidarSensor.) In the absence of that kind of functionality, you'd essentially have to do it yourself in the most horrible, tedious way imaginable. I'd go so far as to suggest that it's not feasible with the current API.

Dart Implementation for Patricia/Radix-Tree

I am writing a flutter app. For this I have to cache some places and want to search for names. For this purpose, I would like to use a radix trie.
I have searched for implementations under dart, but I have not found anything useful.
Did anyone know where I can find an implementation? Or has anyone ever bothered?
Greetings Dagobert
Radix-Trees are also called Tries, Digital-Trees and Prefix-Trees.
You can find a Dart implementation of a Trie here

F# Priority Queue

I have tried to use this snippet of code
https://code.msdn.microsoft.com/windowsdesktop/Net-Implementation-of-a-d3ac7b9d
to implement a heap-based implementation of Prim's algorithm to solve the Minimum Spanning Tree (MST) problem in a non-directed connected graph.
after a few iterations, i find that the heap/priority queue is not well maintained anymore.
that is the head of the PriorityQueue doesn't have the lowest Key in the Heap.
PQ 0 [-7230, 309]
...
PQ 146 [-7277, 308]
Has anyone use this code and experienced similar problems ?
I can post a link on GitHub if anyone would be looking at it
My needs are for a heap datastructure which supports deletion of an element in the middle. It looks like Fsharpx.collections doesnt have such a data structure.
does anybody know a good implementation available somewhere ?
thanks
Recently, I ported a MaxHeap from PLINQ to F# here and made it MinHeap. It is array-based and performs much better than any "pure functional" alternative.
However, after a lot of benchmarking, I found that SortedDeque based on just a simple sorted circular buffer performs significantly better on most use cases even when I need to add or delete in the middle.
My answer is inspired by V.B. but here it is in full
I have used another library than FSharpx.collections, it is called
Spreads
read that page for details and instructions.
SortedDeque is the data structure i need for this problem.
I used the same code, just changing from the microsoft blog page code to the library functions and found the good result, so it is indeed some bug in the microsoft blog page code
PS. this spreads library has been designed to format financial data for quantitative analysis and i'm happy i found it !!! IT looks like this library is rather recent and thats why its not on top of Google's search or referenced in any other SO question (or if it is i didn't see it)
FSharpx.Collections is of no use for that problem as you can see from that discussion heap issue in FSharpx.Collections

How does the spinglass community detection algorithm implemented in igraph work?

I want to use community_spinglass for my research, but I cannot figure out exactly what it does. I read the reference "Statistical Mechanics of Community Detection", which states that they use simulated annealing, but not exactly how. So I would like to know what update rules are used for the simulated annealing: How are the nodes moved between communities in each time step?

Where to find the manual for internal OpenCV functions starting with icv?

I would like to add a few functions to the OpenCV library for my own use.
Here, it involves some internal functions starting with icv, for example, icvGetQuadrangleSubPix_8u32f_C1R.
I can guess that I should take a look for its description of GetQuadrangleSubPix(). But there are some additional parameters that are not mentioned in the user-accessible functions.
My question is where can I find the manual or description for this function? or what i should do is to trace back the parameters in that function.
Appreciate every answer. Thank you very much.

Resources