If you're new to Mesos
See the getting started page for more information about downloading, building, and deploying Mesos.
If you'd like to get involved or you're looking for support
See our community page for more details.
Persistent Volumes
Mesos provides a mechanism to create a persistent volume from disk resources. When launching a task, you can create a volume that exists outside the task’s sandbox and will persist on the node even after the task dies or completes. When the task exits, its resources – including the persistent volume – can be offered back to the framework, so that the framework can launch the same task again, launch a recovery task, or launch a new task that consumes the previous task’s output as its input. Persistent volumes enable stateful services such as HDFS and Cassandra to store their data within Mesos rather than having to resort to workarounds (e.g., writing task state to a distributed filesystem that is mounted at a well-known location outside the task’s sandbox).
Usage
Persistent volumes can only be created from reserved disk resources, whether it be statically reserved or dynamically reserved. A dynamically reserved persistent volume also cannot be unreserved without first explicitly destroying the volume. These rules exist to limit accidental mistakes, such as a persistent volume containing sensitive data being offered to other frameworks in the cluster. Similarly, a persistent volume cannot be destroyed if there is an active task that is still using the volume.
Please refer to the Reservation documentation for details regarding reservation mechanisms available in Mesos.
Persistent volumes can also be created on isolated and auxiliary disks by reserving multiple disk resources.
By default, a persistent volume cannot be shared between tasks running being managed by different executors: that is, once a task is launched using a persistent volume, that volume will not appear in any resource offers until the task has finished running. Shared volumes are a type of persistent volumes that can be accessed by multiple tasks at the same agent simultaneously; see the documentation on shared volumes for more information.
Persistent volumes can be created by operators and authorized
frameworks. By default, frameworks and operators can create volumes for any
role and destroy any persistent volume. Authorization
allows this behavior to be limited so that volumes can only be created for
particular roles and only particular volumes can be destroyed. For these
operations to be authorized, the framework or operator should provide a
principal
to identify itself. To use authorization with reserve, unreserve,
create, and destroy operations, the Mesos master must be configured with the
appropriate ACLs. For more information, see the
authorization documentation.
Offer::Operation::Create
andOffer::Operation::Destroy
messages are available for frameworks to send back via theacceptOffers
API as a response to a resource offer./create-volumes
and/destroy-volumes
HTTP endpoints allow operators to manage persistent volumes through the master.
When a persistent volume is destroyed, all the data on that volume is removed
from the agent’s filesystem. Note that for persistent volumes created on Mount
disks, the root directory is not removed, because it is typically the mount
point used for a separate storage device.
In the following sections, we will walk through examples of each of the interfaces described above.
Framework Scheduler API
Offer::Operation::Create
A framework can create volumes through the resource offer cycle. Suppose we receive a resource offer with 2048 MB of dynamically reserved disk.
{
"id" : <offer_id>,
"framework_id" : <framework_id>,
"slave_id" : <slave_id>,
"hostname" : <hostname>,
"resources" : [
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 2048 },
"role" : <framework_role>,
"reservation" : {
"principal" : <framework_principal>
}
}
]
}
We can create a persistent volume from the 2048 MB of disk resources by sending
an Offer::Operation
message via the acceptOffers
API.
Offer::Operation::Create
has a volumes
field which specifies the persistent
volume information. We need to specify the following:
- The ID for the persistent volume; this must be unique per role on each agent.
- The non-nested relative path within the container to mount the volume.
- The permissions for the volume. Currently,
"RW"
is the only possible value. If the framework provided a principal when registering with the master, then the
disk.persistence.principal
field must be set to that principal. If the framework did not provide a principal when registering, then thedisk.persistence.principal
field can take any value, or can be left unset. Note that theprincipal
field determines the “creator principal” when authorization is enabled, even if authentication is disabled.{ "type" : Offer::Operation::CREATE, "create": { "volumes" : [ { "name" : "disk", "type" : "SCALAR", "scalar" : { "value" : 2048 }, "role" : <framework_role>, "reservation" : { "principal" : <framework_principal> }, "disk": { "persistence": { "id" : <persistent_volume_id>, "principal" : <framework_principal> }, "volume" : { "container_path" : <container_path>, "mode" : <mode> } } } ] } }
If this succeeds, a subsequent resource offer will contain the following persistent volume:
{
"id" : <offer_id>,
"framework_id" : <framework_id>,
"slave_id" : <slave_id>,
"hostname" : <hostname>,
"resources" : [
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 2048 },
"role" : <framework_role>,
"reservation" : {
"principal" : <framework_principal>
},
"disk": {
"persistence": {
"id" : <persistent_volume_id>
},
"volume" : {
"container_path" : <container_path>,
"mode" : <mode>
}
}
}
]
}
Offer::Operation::Destroy
A framework can destroy persistent volumes through the resource offer cycle. In Offer::Operation::Create, we created a persistent volume from 2048 MB of disk resources. The volume will continue to exist until it is explicitly destroyed. Suppose we would like to destroy the volume we created. First, we receive a resource offer (copy/pasted from above):
{
"id" : <offer_id>,
"framework_id" : <framework_id>,
"slave_id" : <slave_id>,
"hostname" : <hostname>,
"resources" : [
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 2048 },
"role" : <framework_role>,
"reservation" : {
"principal" : <framework_principal>
},
"disk": {
"persistence": {
"id" : <persistent_volume_id>
},
"volume" : {
"container_path" : <container_path>,
"mode" : <mode>
}
}
}
]
}
We can destroy the persistent volume by sending a Offer::Operation
message via
the acceptOffers
API. Offer::Operation::Destroy
has a volumes
field which
specifies the persistent volumes to be destroyed.
{
"type" : Offer::Operation::DESTROY,
"destroy" : {
"volumes" : [
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 2048 },
"role" : <framework_role>,
"reservation" : {
"principal" : <framework_principal>
},
"disk": {
"persistence": {
"id" : <persistent_volume_id>
},
"volume" : {
"container_path" : <container_path>,
"mode" : <mode>
}
}
}
]
}
}
If this request succeeds, the persistent volume will be destroyed, and all the files and directories associated with the volume will be deleted. However, the disk resources will still be reserved. As such, a subsequent resource offer will contain the following reserved disk resources:
{
"id" : <offer_id>,
"framework_id" : <framework_id>,
"slave_id" : <slave_id>,
"hostname" : <hostname>,
"resources" : [
{
"name" : "disk",
"type" : "SCALAR",
"scalar" : { "value" : 2048 },
"role" : <framework_role>,
"reservation" : {
"principal" : <framework_principal>
}
}
]
}
Those reserved resources can then be used as normal: e.g., they can be used to create another persistent volume or can be unreserved.
Operator HTTP Endpoints
As described above, persistent volumes can be created by a framework scheduler
as part of the resource offer cycle. Persistent volumes can also be created and
destroyed by sending HTTP requests to the /create-volumes
and
/destroy-volumes
endpoints, respectively. This capability is intended for use
by operators and administrative tools.
/create-volumes
To use this endpoint, the operator should first ensure that a reservation for
the necessary resources has been made on the appropriate agent (e.g., by using
the /reserve HTTP endpoint or by configuring a
static reservation). The information that must be included in a request to this
endpoint is similar to that of the CREATE
offer operation. One difference is
the required value of the disk.persistence.principal
field: when HTTP
authentication is enabled on the master, the field must be set to the same
principal that is provided in the request’s HTTP headers. When HTTP
authentication is disabled, the disk.persistence.principal
field can take any
value, or can be left unset. Note that the principal
field determines the
“creator principal” when authorization is enabled, even if
HTTP authentication is disabled.
To create a 512MB persistent volume for the ads
role on a dynamically reserved
disk resource, we can send an HTTP POST request to the master’s
/create-volumes endpoint like so:
curl -i \
-u <operator_principal>:<password> \
-d slaveId=<slave_id> \
-d volumes='[
{
"name": "disk",
"type": "SCALAR",
"scalar": { "value": 512 },
"role": "ads",
"reservation": {
"principal": <operator_principal>
},
"disk": {
"persistence": {
"id" : <persistence_id>,
"principal" : <operator_principal>
},
"volume": {
"mode": "RW",
"container_path": <path>
}
}
}
]' \
-X POST http://<ip>:<port>/master/create-volumes
The user receives one of the following HTTP responses:
202 Accepted
: Request accepted (see below).400 BadRequest
: Invalid arguments (e.g., missing parameters).401 Unauthorized
: Unauthenticated request.403 Forbidden
: Unauthorized request.409 Conflict
: Insufficient resources to create the volumes.
A single /create-volumes
request can create multiple persistent volumes, but
all of the volumes must be on the same agent.
This endpoint returns the 202 ACCEPTED HTTP status code, which indicates that the create operation has been validated successfully by the master. The request is then forwarded asynchronously to the Mesos agent where the reserved resources are located. That asynchronous message may not be delivered or creating the volumes at the agent might fail, in which case no volumes will be created. To determine if a create operation has succeeded, the user can examine the state of the appropriate Mesos agent (e.g., via the agent’s /state HTTP endpoint).
/destroy-volumes
To destroy the volume created above, we can send an HTTP POST to the master’s /destroy-volumes endpoint like so:
curl -i \
-u <operator_principal>:<password> \
-d slaveId=<slave_id> \
-d volumes='[
{
"name": "disk",
"type": "SCALAR",
"scalar": { "value": 512 },
"role": "ads",
"reservation": {
"principal": <operator_principal>
},
"disk": {
"persistence": {
"id" : <persistence_id>
},
"volume": {
"mode": "RW",
"container_path": <path>
}
}
}
]' \
-X POST http://<ip>:<port>/master/destroy-volumes
The user receives one of the following HTTP responses:
202 Accepted
: Request accepted (see below).400 BadRequest
: Invalid arguments (e.g., missing parameters).401 Unauthorized
: Unauthenticated request.403 Forbidden
: Unauthorized request.409 Conflict
: Insufficient resources to destroy the volumes.
A single /destroy-volumes
request can destroy multiple persistent volumes, but
all of the volumes must be on the same agent.
This endpoint returns the 202 ACCEPTED HTTP status code, which indicates that the destroy operation has been validated successfully by the master. The request is then forwarded asynchronously to the Mesos agent where the reserved resources are located. That asynchronous message may not be delivered or destroying the volumes at the agent might fail, in which case no volumes will be destroyed. To determine if a destroy operation has succeeded, the user can examine the state of the appropriate Mesos agent (e.g., via the agent’s /state HTTP endpoint).
Listing Persistent Volumes
Information about the persistent volumes at each agent in the cluster can be
found by querying the /slaves master endpoint
(under the reserved_resources_full
key).
The same information can also be found in the /state
endpoint on the agent (under the reserved_resources_full
key). The agent
endpoint is useful to confirm if changes to persistent volumes have been
propagated to the agent (which can fail in the event of network partition or
master/agent restarts).
Programming with Persistent Volumes
Some suggestions to keep in mind when building applications that use persistent volumes:
A single
acceptOffers
call can be used to both create a new dynamic reservation (viaOffer::Operation::Reserve
) and create a new persistent volume on those newly reserved resources (viaOffer::Operation::Create
).Volume IDs must be unique per role on each agent. However, it is strongly recommended that frameworks use globally unique volume IDs, to avoid potential confusion between volumes on different agents that use the same volume ID. Note also that the agent ID where a volume resides might change over time. For example, suppose a volume is created on an agent and then the agent’s host machine is rebooted. When the agent registers with Mesos after the reboot, it will be assigned a new AgentID—but it will retain the same volume it had previouly. Hence, frameworks should not assume that using the pair <AgentID, VolumeID> is a stable way to identify a volume in a cluster.
Attempts to dynamically reserve resources or create persistent volumes might fail—for example, because the network message containing the operation did not reach the master or because the master rejected the operation. Applications should be prepared to detect failures and correct for them (e.g., by retrying the operation).
When using HTTP endpoints to reserve resources or create persistent volumes, some failures can be detected by examining the HTTP response code returned to the client. However, it is still possible for a
202
response code to be returned to the client but for the associated operation to fail—see discussion above.When using the scheduler API, detecting that a dynamic reservation has failed is a little tricky: reservations do not have unique identifiers, and the Mesos master does not provide explicit feedback on whether a reservation request has succeeded or failed. Hence, framework schedulers typically use a combination of two techniques:
They use timeouts to detect that a reservation request may have failed (because they don’t receive a resource offer containing the expected resources after a given period of time).
To check whether a resource offer includes the effect of a dynamic reservation, applications cannot check for the presence of a “reservation ID” or similar value (because reservations do not have IDs). Instead, applications should examine the resource offer and check it contains sufficient reserved resources for the application’s role. If it does not, the application should make additional reservation requests as necessary.
When a scheduler issues a dynamic reservation request, the reserved resources might not be present in the next resource offer the scheduler receives. There are two reasons for this: first, the reservation request might fail or be dropped by the network, as discussed above. Second, the reservation request might simply be delayed, so that the next resource offer from the master will be issued before the reservation request is received by the master. This is why the text above suggests that applications wait for a timeout before assuming that a reservation request should be retried.
A consequence of using timeouts to detect failures is that an application might submit more reservation requests than intended (e.g., a timeout fires and an application makes another reservation request; meanwhile, the original reservation request is also processed). Recall that two reservations for the same role at the same agent are “merged”: for example, role
foo
makes two requests to reserve 2 CPUs at a single agent and both reservation requests succeed, the result will be a single reservation of 4 CPUs. To handle this situation, applications should be prepared for resource offers that contain more resources than expected. Some applications may also want to detect this situation and unreserve any additional reserved resources that will not be required.It often makes sense to structure application logic as a “state machine”, where the application moves from its initial state (no reserved resources and no persistent volumes) and eventually transitions toward a single terminal state (necessary resources reserved and persistent volume created). As new events (such as timeouts and resource offers) are received, the application compares the event with its current state and decides what action to take next.
Because persistent volumes are associated with roles, a volume might be offered to any of the frameworks that are registered in that role. For example, a persistent volume might be created by one framework and then offered to a different framework in the same role. This can be used to pass large volumes of data between frameworks in a convenient way. However, this behavior might also allow sensitive data created by one framework to be read or modified by another framework in the same role. It can also make it more difficult for frameworks to determine whether a dynamic reservation has succeeded: as discussed above, frameworks need to wait for an offer that contains the “expected” reserved resources to determine when a reservation request has succeeded. Determining what a framework should “expect” to find in an offer is more difficult when multiple frameworks can make reservations for the same role concurrently. In general, whenever multiple frameworks are allowed to register in the same role, the operator should ensure that those frameworks are configured to collaborate with one another when using role-specific resources. For more information, see the discussion of multiple frameworks in the same role.
Version History
Persistent volumes were introduced in Mesos 0.23. Mesos 0.27 introduced HTTP
endpoints for creating and destroying volumes. Mesos 0.28 introduced support for
multiple disk resources, and also enhanced the /slaves
master endpoint to include detailed information about persistent volumes and
dynamic reservations. Mesos 1.0 changed the semantics of destroying a volume:
in previous releases, destroying a volume would remove the Mesos-level metadata,
but would not remove the volume’s data from the agent’s filesystem. Mesos 1.1
introduced support for shared persistent volumes.


| Coupon |
* Sponsored Results
Craftsman Style Door Design, Pictures, Remodel, Decor and Ideas
there is a Craftsman-style window trim, you'd expect to see a Craftsman-style door trim. over door...not too exaggeratted but nice. window and door casing .
http://www.houzz.com/craftsman-style-door
fix a bad credit report texas xp system restore recommended size
Medallion Industries, Portland, Oregon, Windows, Doors, New Home ...
The Craftsman style home features low-pitched, gabled roof lines; hand-crafted stone work; exposed roof rafters; and wide window casings. Our selection of .
http://www.medallionindustries.com/styles/craftsman.html
how to establish brand architecture making patterns in photoshop cs4
400 Elm Ave
Yukon,
OK 73099
imax at franklin institute
Family Night Dinner Group Studies Ministries for all ages
husky 51111 floor liner jewelery appraisal greeneville tn license click key enter
900 S Littler Ave
Edmond,
OK 73034
1970s version of the our father
Craftsman Style Custom Wood Doors. - Wood Window Workshop
Craftsman Style Custom Wood Doors. . renovated by new owners and includes custom wood windows and doors manufactured by Wood Window Workshop.
http://www.woodwindowworkshop.com/lombardo_house.html
family city u s a disorders advanced guestbook 2.3.3 wow 2003 sheet music
500 S Country Club Rd
Luxury home: Craftsman style new-built large in McLean ...
Aug 9, 2012 . The solid stained-wood Craftsman-style front door has sidelights and a transom window. Inside, the home has five bedrooms, five full baths and .
http://www.washingtontimes.com/news/2012/aug/9/luxury-home-craftsman-style-new-built-large-in-mcl/
Huge List of Arts & Crafts Style Doors and Windows Products Arts ...
Jun 15, 2010 . ABOVE: Replacement windows in the original style, by Marvin Windows . Distinctive doors in classic, Craftsman, and bungalow styles with .
http://artsandcraftshomes.com/new-work-great-style-you-will-love/
how to refresh grout events maryland state fair grounds kansas city universe movie
Basic Listings
226 S 29th St
Marvin Windows and Doors for Traditional Style Home
Other examples of Cottage style are a classic Craftsman-style or arched top front door. A welcoming bay window, arched windows or a shutter theme throughout .
http://www.marvin.com/window-door-ideas/style-index-style-traditional/
bible cloaked american flag problems ripping the disney dvd up bvrp wireless connection manager
1202 W Grand Ave
Craftsman Style Guide
The Craftsman Style was the dominant style for smaller houses built throughout . Wide Window and Door Casings . will apply to each Craftsman-style building.
http://www.ci.glendale.ca.us/planning/craftsmansurvey/craftsman%20style%20guide-pdf%20version.pdf
rain by laura sonido free christ based anniversary e-cards how to refresh grout
116 E Georgia Ave
Heart of Oak Workshop, Authentic Craftsman & Mission style Doors ...
California Craftsman #2 style Entry and Interior Doors . Handcrafted Mission style leaded glass windows in quarter sawn white oak casements & custom trim.
http://www.heartofoakworkshop.com/doors.html
mary kay wagner ash's quotes university of hampton football community college pasco washington
301 S 2nd St
Craftsman Style Garage Doors Design, Pictures, Remodel, Decor ...
6,264 Craftsman Style Garage Doors Home Design Photos. clear search . No windows but still some style using the with bands/trim. bungalow style house .
http://www.houzz.com/Craftsman-Style-Garage-Doors
britton movie theater in tampa 2c loan private student wow rogue axe trainer
1910 S 20th St
Craftsman Bungalow Home Style - Andersen Windows
Craftsman Bungalow. Craftsman Bungalow Home Style Window Door Overview; Craftsman Bungalow Home Style Exterior Window Door Details. Share + .
http://www.andersenwindows.com/ideas/home-style-library/craftsman-bungalow
exercises for shoulder subluxation free kneeling africian american santa graphics texas tech versus smu
728 W Michigan Ave
Craftsman Style Entry Front Exterior Doors Craftsman Style
A Craftsman Style or Arts and Crafts home will not look complete without a matching craftsman style front door. Doors by Decora can custom design and build .
http://www.doorsbydecora.net/craftsmanstyleentryfrontexteriordoors
wow 2003 sheet music sat set up for 2700a download game development software
3340 S 16th St
Craftsman Bungalow reference images
board and batten panels and transom windows over interior doors. 1 repin. hookedonhouses. . A craftsman house founded on the California mission style, pp.
http://pinterest.com/deborah_merriam/craftsman-bungalow-reference-images/
sole makeup for mephisto adama shoes friends of quetico foundation most white christian states
828 S 9th St
Installing Window and Door Mouldings - Kelleher
The trim around windows and doors greatly influences the . The top of the door may be trimmed like windows with a craftsman style head, corner blocks, or .
http://www.kelleher.com/documents/InstallWindow-DoorMouldings.pdf
outdoor folding sling chair hp rp7410 service manual youth and conflict styles
1300 S 29th St
Craftsman-Style Home Ideas
Jun 25, 2012 . Craftsman-Style houses are known for their attention to Arts and Crafts details, found especially in small, economical bungalows. Here are .
http://www.bhg.com/home-improvement/exteriors/curb-appeal/craftsman-style-home-ideas/
airlines leaving from brazil best paint for face painting ballet dancer music boxes
102 E Almar Dr
Craftsman III - Jeld-Wen
Windows and Doors Manufacturer ENERGY STAR 2012 Award Sustained . JELD-WEN is proud to offer the first true craftsman style door with flat panels and .
http://en.jeld-wen.ca/interior_doors/moulded/smooth_finish/craftsman_iii/
nora lamb and china cry steel toe western boots 287 covina long beach
320 S 4th St
house doors replacement windows Catalog
dp doors logo door window showroom best door window la times best doors . Craftsman style doors for the front of your home, French doors for the patio or .
http://www.dpdoor.com/doors-windows/doors-vinyl-windows.html
traverse city soccer tournament michigan russian music video download school 4 in jacksonville
901 W Grand Ave
Andersen Window and Door Art Glass From Everclear Windows and ...
We supply the complete line of Andersen windows, patio doors, repair parts, and . Colonial Revival, Prairie and Craftsman style homes built between 1880 and .
http://www.everclearwindows.com/andersen-art-glass.html
anatomy of the ovaries pet grooming winn st woburn ma anatomy of the ovaries
2414 State Highway 92
Superior Window Manufacturer - Marvin Windows and Doors
Windows and patio doors by Marvin are a superior value with expert . windows and doors, Marvin offers unparalleled value with craftsman-quality construction, . and the industry's most extensive selection of shapes, styles, sizes and options.
http://www.marvin.com/benefits-features/
who lives with brooke hogan all-well primary clinic edmonton ab
124 S 6th St
Window Grids for Your Home Style : Interior Remodeling : HGTV ...
Photo courtesy of Marvin Windows and Doors . These Craftsman-style homes sport a mix of full-pane windows on the bottom accented with divided panes on .
http://www.hgtvremodels.com/interiors/window-grids-for-your-home-style/index.html
3320 S 16th St
Craftsman Style Front Doors | Entry Doors | Exterior Doors ...
Craftsman style exterior doors and entryways are also referred .
http://www.door.cc/exterior-doors/craftsman-exterior-doors.html
nutritional value of chocolate chips outdoor folding sling chair jesus feeds the five thousand modernized
802 Frisco Ave
Trim Styles
Craftsman-ish window casing . Designers say painting interiors doors black ~ add a richness & warmth to your home despite . craftsman style window trim .
http://pinterest.com/angelajo/trim-styles/
wii fit new release where can i buy cheap saddle keep internet logged on
609 W Highway 277
Arts & Crafts Styles - StarCraft Custom Builders
These are now commonly called "Craftsman" windows. . at the overall configuration, roof style, type of porch and placement of the front door and chimneys.
http://starcraftcustombuilders.com/Architectural.Styles.ArtsAndCrafts.htm
black friday laptop special wich force acts on a tower soft air sports of oregon
2828 S 9th St
Photo Gallery | Kolbe Windows & Doors
Cottage featuring unique window configurations · Double hungs . French-Style Swinging Patio Doors and Sterling Double Hungs · Expansive wall of windows .
http://kolbewindows.com/inspiration/photo-gallery
world of warcraft class guide toyoota and rental costa rica ada space saver toliet
202 S 6th St
Wood Entry Doors from Pella | Pella.com
Home; Windows; Doors; Pella Replacement; Where to Buy; Support Center; About Us. BROWSE WINDOWS » . Explore Door Styles . Craftsman. Doors from Pella's Craftsman Collection bring to life the beauty of nature and the countryside.
http://www.pella.com/doors/explore-door-styles/wood-entry-doors.aspx
kenmore gas grill replacement burners verizon wireless in niles il
428 E Almar Dr
Wood Doors | Colonial,Rustic,Mission,Tuscan,Tudor,Contemporary ...
Browse By Architectural Style Sun Mountain manufactures doors to match . early mission churches, with bell towers and elaborate arched windows and doors.
http://www.sunmountaindoor.com/doors/browse/arch/
professional truck driver association courses illegal drugs by paul gahlinger free eeyore word graphics
Heritage Series Craftsman Entrance Doors - Kolbe Windows & Doors
Heritage Series Craftsman doors are typically used for the main entry to a home or business, and may swing to the indoors or outdoors. They have wood on the .
http://www.kolbe-kolbe.com/products/index.cfm?pcID=4&pID=70&pCat=15&pSubCat=29&pl=108
Architectural Patterns - Institute of Classical Architecture & Art
In the first half of the 20th century, the Colonial Revival style emerged in the United . windows, doors, and building mass . The Craftsman style was first seen .
http://www.classicist.org/workspace/pdf/4_HabitatPB_Architecture.pdf
Video: Craftsman-Style Wooden Fence
Learn how to build a Craftsman-style wooden fence and arbor. . How to Build Window Seat From Wall Cabinets · How to Remove a Popcorn Ceiling · How to .
http://www.diynetwork.com/videos/craftsman-style-wooden-fence/10367.html
* Sponsored Results
| Select from the listings below | (northrock theatre wichita kansas) | |
|
paper box characters to make 226 S 29th St DOORS & WINDOWS |
||
|
alpine development group december 20 2007 1202 W Grand Ave Craftsman Trim Design, Pictures, Remodel, Decor and Ideas |
||
|
consumer report nissan maxima 116 E Georgia Ave Truax Builders Supply<PHONE_NUMBER> windows and doors in Portland ... |
||
|
temporary internet files location xp 301 S 2nd St How to Install DOOR TRIM-133 for About $52.84 | The Joy of ... |
||
|
discount tickets to coyotes tickets 1910 S 20th St See How We Incorporated The Craftsman / Arts & Crafts Style Into ... |
||
|
wii fit new release 728 W Michigan Ave Comprehensive Index of Craftsman-style Plans - Antique Home ... |
||
|
bravero princess resort dominican republic 3340 S 16th St EXOVATIONS | Front Door Photos, Replacement Door Photos, Lead ... |
||
|
movie trailers hulk avabile downloading 828 S 9th St Craftsman style window trim - TOH Discussions |
||
|
school newspaper welcome message 1300 S 29th St Cool Craftsman Style : Kitchen Impossible : DIY Network |
||
|
stanfords home center plum pa 102 E Almar Dr One Stop Windows and Doors - Torrance Doors and Moulding |
||
|
exotic newcastle disease virus symptoms 320 S 4th St Craftsman Style Bungalito - Red River Restorations |
||
|
the best homemade hd tv antenna 901 W Grand Ave Craftsman style home plans, Craftsman style house plans |
||
|
direct mailing lists free 2414 State Highway 92 Craftsman Windows Design, Pictures, Remodel, Decor and Ideas |
||
|
youths implication to drugabuse control 124 S 6th St Truax Builders Supply<PHONE_NUMBER> fiberglass doors in Portland ... |
||
|
plantronics 220 vs 222 3320 S 16th St Welcome to McDaniel Window & Door |
||
|
dr clark mount royal chiropractor 802 Frisco Ave Part II: Historic Homes - City of South Pasadena |
||
|
where do leopards thrive 609 W Highway 277 Milwaukee Bungalows: Craftsman Style Homes |
||
|
monika berry fine art 2828 S 9th St Find the Right Pella Window or Door |
||
|
systems in science activities 202 S 6th St Craftsman Style Design, Pictures, Remodel, Decor and Ideas |
||
|
idaho boise copyright attorney search 428 E Almar Dr Windows & Doors » Doors & Door Hardware |
||
| Select from the listings above | (all-well primary clinic edmonton ab) | |


Allows users to create, search, and view basic info on Star Wars characters
App inspired by Twitter to keep neighbors in Cities close during Covid19/Quarantine in order to help one another.
This is a backend app to be used and excuted in the command line. It pulls info for Songs, Concerts and Movies.


Algorithms for Walking, Running, Swimming, Flying, and Manipulation
© Russ Tedrake, 2023
Last modified .
How to cite these notes, use annotations, and give feedback.
Note: These are working notes used for a course being taught at MIT. They will be updated throughout the Spring 2023 semester. Lecture videos are available on YouTube.
| Previous Chapter | Table of contents | Next Chapter |
A great deal of work in the control of underactuated systems has been done in the context of low-dimensional model systems. These model systems capture the essence of the problem without introducing all of the complexity that is often involved in more real-world examples. In this chapter we will focus on two of the most well-known and well-studied model systems--the Acrobot and the Cart-Pole. After we have developed some tools, we will see that they can be applied directly to other model systems; we will give a number of examples using Quadrotors. All of these systems are trivially underactuated, having less actuators than degrees of freedom.
The Acrobot is a planar two-link robotic arm in the vertical plane
(working against gravity), with an actuator at the elbow, but no actuator at
the shoulder. It was first described in detail in
The Acrobot is representative of the primary challenge in underactuated robots. In order to swing up and balance the entire system, the controller must reason about and exploit the state-dependent coupling between the actuated degree of freedom and the unactuated degree of freedom. It is also an important system because, as we will see, it closely resembles one of the simplest models of a walking robot.
Figure 3.1 illustrates the model parameters used in our analysis. $\theta_1$ is the shoulder joint angle, $\theta_2$ is the elbow (relative) joint angle, and we will use $\bq = [\theta_1,\theta_2]^T$, $\bx = [\bq,\dot\bq]^T$. The zero configuration is with both links pointed directly down. The moments of inertia, $I_1,I_2$ are taken about the pivots. The task is to stabilize the unstable fixed point $\bx = [\pi,0,0,0]^T$.
We will derive the equations of motion for the Acrobot using the method of Lagrange. The locations of the center of mass of each link, $\bp_{c1}, \bp_{c2},$ are given by the kinematics: \begin{equation} \bp_{c1} = \begin{bmatrix} l_{c1} s_1 \\ -l_{c1} c_1 \end{bmatrix}, \quad \bp_{c2} = \begin{bmatrix} l_1 s_1 + l_{c2} s_{1+2} \\ -l_1 c_1 - l_{c2} c_{1+2} \end{bmatrix}, \end{equation} where $s_1$ is shorthand for $\sin(\theta_1)$, $c_{1+2}$ is shorthand for $\cos(\theta_1+\theta_2)$, etc. The energy is given by: \begin{gather} T = T_1 + T_2, \quad T_1 = \frac{1}{2} I_1 \dot{q}_1^2 \\ T_2 = \frac{1}{2} ( m_2 l_1^2 + I_2 + 2 m_2 l_1 l_{c2} c_2 ) \dot{q}_1^2 + \frac{1}{2} I_2 \dot{q}_2^2 + (I_2 + m_2 l_1 l_{c2} c_2) \dot{q}_1 \dot{q}_2 \\ U = -m_1 g l_{c1} c_1 - m_2 g (l_1 c_1 + l_{c2} c_{1+2}) \end{gather} Entering these quantities into the Lagrangian yields the equations of motion: \begin{gather} (I_1 + I_2 + m_2 l_1^2 + 2m_2 l_1 l_{c2} c_2) \ddot{q}_1 + (I_2 + m_2 l_1 l_{c2} c_2)\ddot{q}_2 - 2m_2 l_1 l_{c2} s_2 \dot{q}_1 \dot{q}_2 \\ \quad -m_2 l_1 l_{c2} s_2 \dot{q}_2^2 + m_1 g l_{c1}s_1 + m_2 g (l_1 s_1 + l_{c2} s_{1+2}) = 0 \\ (I_2 + m_2 l_1 l_{c2} c_2) \ddot{q}_1 + I_2 \ddot{q}_2 + m_2 l_1 l_{c2} s_2 \dot{q}_1^2 + m_2 g l_{c2} s_{1+2} = \tau \end{gather} In standard, manipulator equation form: $$\bM(\bq)\ddot\bq + \bC(\bq,\dot\bq)\dot\bq = \btau_g(\bq) + \bB\bu,$$ using $\bq = [\theta_1,\theta_2]^T$, $\bu = \tau$ we have: \begin{gather} \bM(\bq) = \begin{bmatrix} I_1 + I_2 + m_2 l_1^2 + 2m_2 l_1 l_{c2} c_2 & I_2 + m_2 l_1 l_{c2} c_2 \\ I_2 + m_2 l_1 l_{c2} c_2 & I_2 \end{bmatrix},\label{eq:Hacrobot}\\ \bC(\bq,\dot{\bq}) = \begin{bmatrix} -2 m_2 l_1 l_{c2} s_2 \dot{q}_2 & -m_2 l_1 l_{c2} s_2 \dot{q}_2 \\ m_2 l_1 l_{c2} s_2 \dot{q}_1 & 0 \end{bmatrix}, \\ \btau_g(\bq) = \begin{bmatrix} -m_1 g l_{c1}s_1 - m_2 g (l_1 s_1 + l_{c2}s_{1+2}) \\ -m_2 g l_{c2} s_{1+2} \end{bmatrix}, \quad \bB = \begin{bmatrix} 0 \\ 1 \end{bmatrix}. \end{gather}
You can experiment with the Acrobot dynamics in
The other model system that we will investigate here is the cart-pole system, in which the task is to balance a simple pendulum around its unstable equilibrium, using only horizontal forces on the cart. Balancing the cart-pole system is used in many introductory courses in control, including 6.003 at MIT, because it can be accomplished with simple linear control (e.g. pole placement) techniques. In this chapter we will consider the full swing-up and balance control problem, which requires a full nonlinear control treatment.
The figure shows our parameterization of the system. $x$ is the horizontal position of the cart, $\theta$ is the counter-clockwise angle of the pendulum (zero is hanging straight down). We will use $\bq = [x,\theta]^T$, and $\bx = [\bq,\dot\bq]^T$. The task is to stabilize the unstable fixed point at $\bx = [0,\pi,0,0]^T.$
The kinematics of the system are given by \begin{equation}\bx_1 = \begin{bmatrix} x \\ 0 \end{bmatrix}, \quad \bx_2 = \begin{bmatrix} x + l\sin\theta \\ -l\cos\theta \end{bmatrix}. \end{equation} The energy is given by \begin{align} T=& \frac{1}{2} (m_c + m_p)\dot{x}^2 + m_p \dot{x}\dot\theta l \cos{\theta} + \frac{1}{2}m_p l^2 \dot\theta^2 \\ U =& -m_p g l \cos\theta. \end{align} The Lagrangian yields the equations of motion: \begin{gather} (m_c + m_p)\ddot{x} + m_p l \ddot\theta \cos\theta - m_p l \dot\theta^2 \sin\theta = f_x \\ m_p l \ddot{x} \cos\theta + m_p l^2 \ddot\theta + m_p g l \sin\theta = 0 \end{gather} In standard, manipulator equation form: $$\bM(\bq)\ddot\bq + \bC(\bq,\dot\bq)\dot\bq = \btau_g(\bq) + \bB\bu,$$ using $\bq = [x,\theta]^T$, $\bu = f_x$, we have: \begin{gather*} \bM(\bq) = \begin{bmatrix} m_c + m_p & m_p l \cos\theta \\ m_p l \cos\theta & m_p l^2 \end{bmatrix}, \quad \bC(\bq,\dot{\bq}) = \begin{bmatrix} 0 & -m_p l \dot\theta \sin\theta \\ 0 & 0 \end{bmatrix}, \\ \btau_g(\bq) = \begin{bmatrix} 0 \\ - m_p gl \sin\theta \end{bmatrix}, \quad \bB = \begin{bmatrix} 1 \\ 0 \end{bmatrix} \end{gather*} In this case, it is particularly easy to solve directly for the accelerations: \begin{align} \ddot{x} =& \frac{1}{m_c + m_p \sin^2\theta}\left[ f_x + m_p \sin\theta (l \dot\theta^2 + g\cos\theta)\right] \label{eq:ddot_x}\\ \ddot{\theta} =& \frac{1}{l(m_c + m_p \sin^2\theta)} \left[ -f_x \cos\theta - m_p l \dot\theta^2 \cos\theta \sin\theta - (m_c + m_p) g \sin\theta \right] \label{eq:ddot_theta} \end{align} In some of the analysis that follows, we will study the form of the equations of motion, ignoring the details, by arbitrarily setting all constants to 1: \begin{gather} 2\ddot{x} + \ddot\theta \cos\theta - \dot\theta^2 \sin\theta = f_x \label{eq:simple}\\ \ddot{x}\cos\theta + \ddot\theta + \sin\theta = 0. \label{eq:simple2} \end{gather}
You can experiment with the Cart-Pole dynamics in
Quadrotors have become immensely popular over the last few years -- advances in outrunner motors from the hobby community made them powerful, light-weight, and inexpensive! They are strong enough to carry an interesting payload (e.g. of sensors for mapping / photographing the environment), but dynamic enough to move relatively quickly. The most interesting dynamics start showing up at higher speeds, when the propellors start achieving lift from the airflow across them due to horizontal motion, or when they are close enough to the ground to experience significant ground-effect, but we won't try to capture those effects (yet) here.
When the quadrotor revolution started to happen, I predicted that it would be followed quickly by a realization that fixed-wing vehicles are better for most applications. Propellors are almost optimally efficient for producing thrust -- making quadrotors very efficient for hovering -- but to be efficient in forward flight you probably want to have an airfoil. Wings are a really good idea! But I was wrong -- quadrotors have completely dominated fixed-wings for commercial UAVs. Perhaps it's only because they are easier to control? Maybe there is still hope...
We can get started with an extremely simple model of a quadrotor that is restricted to live in the plane. In that case, it actually only needs two propellors, but calling it a "birotor" doesn't have the same ring to it. The equations of motion are almost trivial, since it is only a single rigid body, and certainly fit into our standard manipulator equations: \begin{gather} m \ddot{x} = -(u_1 + u_2)\sin\theta, \label{eq:quad_x}\\ m \ddot{y} = (u_1 + u_2)\cos\theta - mg, \label{eq:quad_y}\\ I \ddot\theta = r (u_1 - u_2) \label{eq:quad_theta} \end{gather}
The dynamics of the 3D Quadrotor follow similarly. The only
complexity comes from handling the 3D rotations. The code implementing
the dynamics of the QuadrotorPlant
example in Drake is almost as readable as a LaTeX derivation. The most
interesting feature of this model that we include the
moment produced by the rotating propellers. Surprisingly, without
these moments, the system linearized about the hovering configuration is
actually not controllable.
The QuadrotorPlant
example implements the simple model.
But often you may want to add extra features to the quadrotor model. For
instance, you might wish to add collision dynamics to land on the ground
or to bounce off obstacles, or you might want to add a pendulum to the
quadrotor to balance, or a suspended payload hanging off the bottom. In
these cases, rather than implement the equations by hand, it is much more
convenient to use Drake's main physics engine (in
MultibodyPlant
). We just need to manually wire the
Propeller
forces into the Diagram
(because Propeller
is
not a concept supported in URDF nor SDF just yet). I've implemented both
versions side-by-side in the notebook.
Note that by default, the orientation of each floating body in
MultibodyPlant
is represented by a unit quaternion. If you
were to try to linearize the model using the quaternion representation of
state, without accounting for unit norm constraint, the linearization of
this model is also uncontrollable. To avoid this for now, I have manually
added a "roll-pitch-yaw" floating base to the model. This keeps
linearization simple but does introduce a singularity at "gimble lock".
I've tried to mostly avoid dealing with 3D rotations throughout these
notes, but I do have a few more notes about this here.
For both the Acrobot and the Cart-Pole systems, we will begin by designing a linear controller which can balance the system when it begins in the vicinity of the unstable fixed point. To accomplish this, we will linearize the nonlinear equations about the fixed point, examine the controllability of this linear system, then using linear quadratic regulator (LQR) theory to design our feedback controller.
Although the equations of motion of both of these model systems are relatively tractable, the forward dynamics still involve quite a few nonlinear terms that must be considered in any linearization. Let's consider the general problem of linearizing a system described by the manipulator equations.
We can perform linearization around a fixed point, $(\bx^*, \bu^*)$, using a Taylor expansion: \begin{equation} \dot\bx = {\bf f}(\bx,\bu) \approx {\bf f}(\bx^*,\bu^*) + \left[ \pd{\bf f}{\bx}\right]_{\bx=\bx^*,\bu=\bu^*} (\bx - \bx^*) + \left[ \pd{\bf f}{\bu}\right]_{\bx=\bx^*,\bu=\bu^*} (\bu - \bu^*) \end{equation} Let us consider the specific problem of linearizing the manipulator equations around a (stable or unstable) fixed point. In this case, ${\bf f}(\bx^*,\bu^*)$ is zero, and we are left with the standard linear state-space form: \begin{align} \dot\bx =& \begin{bmatrix} \dot\bq \\ \bM^{-1}(\bq) \left[ \btau_g(\bq) + {\bf B}(\bq)\bu - \bC(\bq,\dot\bq)\dot\bq \right] \end{bmatrix},\\ \approx& {\bf A}_{lin} (\bx-\bx^*) + \bB_{lin} (\bu - \bu^*), \end{align} where ${\bf A}_{lin}$, and $\bB_{lin}$ are constant matrices. Let us define $\bar\bx = \bx - \bx^*, \bar\bu = \bu - \bu^*$, and write $$\dot{\bar\bx} = {\bf A}_{lin}\bar\bx + \bB_{lin}\bar\bu.$$ Evaluation of the Taylor expansion around a fixed point yields the following, very simple equations, given in block form by: \begin{align} {\bf A}_{lin} =& \begin{bmatrix} {\bf 0} & {\bf I} \\ \bM^{-1} \pd{\btau_g}{\bq} + \sum_{j} \bM^{-1}\pd{\bB_j}{\bq} u_j & {\bf 0} \end{bmatrix}_{\bx=\bx^*,\bu=\bu^*} \\ \bB_{lin} =& \begin{bmatrix} {\bf 0} \\ \bM^{-1} \bB \end{bmatrix}_{\bx=\bx^*, \bu=\bu^*} \end{align} where $\bB_j$ is the $j$th column of $\bB$. Note that the term involving $\pd{\bM^{-1}}{q_i}$ disappears because $\btau_g + \bB\bu - \bC\dot{\bq}$ must be zero at the fixed point. All of the $\bC\dot\bq$ derivatives drop out, too, because $\dot{\bq}^* = 0$, and any terms with $\bC$ drop out as well, since centripetal and centrifugal forces are zero when velocity is zero. In many cases, including both the Acrobot and Cart-Pole systems (but not the Quadrotors), the matrix $\bB(\bq)$ is a constant, so the $\pd\bB{\bq}$ terms also drop out.
Linearizing around the (unstable) upright point, we have: \begin{gather} \left[\pd{\bf \tau_g}{\bq}\right]_{\bx=\bx^*} = \begin{bmatrix} g (m_1 l_{c1} + m_2 l_1 + m_2 l_{c2}) & m_2 g l_{c2} \\ m_2 g l_{c2} & m_2 g l_{c2} \end{bmatrix} \end{gather} The linear dynamics follow directly from these equations and the manipulator form of the Acrobot equations.
Linearizing around the unstable fixed point in this system, we have: \begin{gather} \left[\pd{\btau_g}{\bq}\right]_{\bx=\bx^*} = \begin{bmatrix} 0 & 0 \\ 0 & m_p g l \end{bmatrix} \end{gather} Again, the linear dynamics follow simply.
Studying the properties of the linearized system can tell us some
things about the (local) properties of the nonlinear system. For
instance, having a strictly stable linearization implies local exponential
stability of the nonlinear system
For the linear system $$\dot{\bx} = {\bf A}\bx + \bB\bu,$$ we can integrate this linear system in closed form, so it is possible to derive the exact conditions of controllability. In particular, for linear systems it is sufficient to demonstrate that there exists a control input which drives any initial condition to the origin.
Let us first examine a special case, which falls short as a general tool but may be more useful for understanding the intuition of controllability. Let's perform an eigenvalue analysis of the system matrix ${\bf A}$, so that: $${\bf A}{\bf v}_i = \lambda_i {\bf v}_i,$$ where $\lambda_i$ is the $i$th eigenvalue, and ${\bf v}_i$ is the corresponding (right) eigenvector. There will be $n$ eigenvalues for the $n \times n$ matrix ${\bf A}$. Collecting the (column) eigenvectors into the matrix ${\bf V}$ and the eigenvalues into a diagonal matrix ${\bf \Lambda}$, we have $${\bf A}{\bf V} = {\bf V}{\bf \Lambda}.$$ Here comes our primary assumption: let us assume that each of these $n$ eigenvalues takes on a distinct value (no repeats). With this assumption, it can be shown that the eigenvectors ${\bf v}_i$ form a linearly independent basis set, and therefore ${\bf V}^{-1}$ is well-defined.
We can continue our eigenmodal analysis of the linear system by defining the modal coordinates, ${\bf r}$, with: $$\bx = {\bf V}{\bf r},\quad \text{or}\quad {\bf r} = {\bf V}^{-1}\bx.$$ In modal coordinates, the dynamics of the linear system are given by $$\dot{\bf r} = {\bf V}^{-1} {\bf A} {\bf V} {\bf r} + {\bf V}^{-1} \bB \bu = {\bf \Lambda} {\bf r} + {\bf V}^{-1}\bB \bu.$$ This illustrates the power of modal analysis; in modal coordinates, the dynamics diagonalize yielding independent linear equations: $$\dot{r}_i = \lambda_i r_i + \sum_j \beta_{ij} u_j,\quad {\bf \beta} = {\bf V}^{-1} \bB.$$
Now the concept of controllability becomes clear. Input $j$ can
influence the dynamics in modal coordinate $i$ if and only if ${\bf
\beta}_{ij} \neq 0$. In the special case of non-repeated eigenvalues,
having control over each individual eigenmode is sufficient to (in
finite time) regulate all of the eigenmodes
A more general solution to the controllability issue, which removes
our assumption about the eigenvalues, can be obtained by examining the
time-domain solution of the linear equations. The solution of this
system is $$\bx(t) = e^{{\bf A}t} \bx(0) + \int_0^{t} e^{{\bf A}(t -
\tau)} \bB \bu(\tau) d\tau.$$ Without loss of generality, lets consider
the that the final state of the system is zero. Then we have: $$\bx(0)
= - \int_0^{t_f} e^{-{\bf A}\tau}\bB \bu(\tau) d\tau.$$ You might be
wondering what we mean by $e^{{\bf A}t}$; a scalar raised to the power
of a matrix..? Recall that $e^{z}$ is actually defined by a convergent
infinite sum: $$e^{z} =1 + z + \frac{1}{2} z^2 + \frac{1}{6} z^3 + ...
.$$ The notation $e^{{\bf A}t}$ uses the same definition: $$e^{{\bf A}t}
= {\bf I} + {\bf A}t + \frac{1}{2}({\bf A}t)^2 + \frac{1}{6}({\bf A}t)^3
+ ... .$$ Not surprisingly, this has many special forms. For instance,
if ${\bf A}$ is diagonalizable, $e^{{\bf A}t} = {\bf
V}e^{{\bf\Lambda}t}{\bf V}^{-1},$ where ${\bf A} = {\bf V \Lambda
V}^{-1}$ is the eigenvalue decomposition of ${\bf A}$
ControllabilityMatrix
, or check the rank condition directly using IsControllable
.
Note that a linear feedback to change the eigenvalues of the
eigenmodes is not sufficient to accomplish our goal of getting to the
goal in finite time. In fact, the open-loop control to reach the goal
is easily obtained with a final-value LQR problem, and (for ${\bf
R}={\bf I}$) is actually a simple function of the controllability
Grammian
Analysis of the controllability of both the Acrobot and Cart-Pole systems reveals that the linearized dynamics about the upright are, in fact, controllable. This implies that the linearized system, if started away from the zero state, can be returned to the zero state in finite time. This is potentially surprising - after all the systems are underactuated. For example, it is interesting and surprising that the Acrobot can balance itself in the upright position without having a shoulder motor.
The controllability of these model systems demonstrates an extremely important, point: An underactuated system is not necessarily an uncontrollable system. Underactuated systems cannot follow arbitrary trajectories, but that does not imply that they cannot arrive at arbitrary points in state space. However, the trajectory required to place the system into a particular state may be arbitrarily complex.
The controllability analysis presented here is for linear time-invariant (LTI) systems. A comparable analysis exists for linear time-varying (LTV) systems. We will even see extensions to nonlinear systems; although it will often be referred to by the synonym of "reachability" analysis.
Controllability tells us that a trajectory to the fixed point exists, but does not tell us which one we should take or what control inputs cause it to occur. Why not? There are potentially infinitely many solutions. We have to pick one.
The tools for controller design in linear systems are very advanced.
In particular, as we describe in the linear
optimal control chapter, one can easily design an optimal feedback
controller for a regulation task like balancing, so long as we are
willing to linearize the system around the operating point and define
optimality in terms of a quadratic cost function: $$J(\bx_0) =
\int_0^\infty \left[ \bx^T(t) \bQ \bx(t) + \bu^T(t) \bR \bu(t) \right]dt,
\quad \bx(0)=\bx_0, \bQ=\bQ^T>0, \bR=\bR^T>0.$$ The linear feedback
matrix $\bK$ used as $$\bu(t) = - \bK\bx(t),$$ is the so-called optimal
linear quadratic regulator (LQR). Even without understanding the
detailed derivation, we can quickly become practitioners of LQR.
K =
LinearQuadraticRegulator(A, B, Q, R)
for linear
systems. It also provides a version controller =
LinearQuadraticRegulator(system, context, Q, R)
that
will linearize the system for you around an equilibrium and return the
controller (in the original coordinates). Therefore, to use LQR, one
simply needs to define the symmetric positive-definite cost matrices,
${\bf Q}$ and ${\bf R}$. In their most common form, ${\bf Q}$ and ${\bf
R}$ are positive diagonal matrices, where the entries $Q_{ii}$ penalize
the relative errors in state variable $x_i$ compared to the other state
variables, and the entries $R_{ii}$ penalize actions in $u_i$.
Take a minute to play around with the LQR controller for the Acrobot and the Cart-Pole
Make sure that you take a minute to look at the code which runs during these examples. Can you set the ${\bf Q}$ and ${\bf R}$ matrices differently, to improve the performance?
Simulation of the closed-loop response with LQR feedback shows that the task is indeed completed - and in an impressive manner. Oftentimes the state of the system has to move violently away from the origin in order to ultimately reach the origin. Further inspection reveals the (linearized) closed-loop dynamics are in fact non-minimum phase (acrobot has 3 right-half zeros, cart-pole has 1).
LQR works essentially out of the box for Quadrotors, if linearized around a nominal fixed point (where the non-zero thrust from the propellers is balancing gravity).
Note that LQR, although it is optimal for the linearized system, is
not necessarily the best linear control solution for maximizing basin of
attraction of the fixed-point. The theory of robust
control(e.g.,
In the introductory chapters, we made the point that the underactuated systems are not feedback equivalent to $\ddot{q} = \bu$. Although we cannot always simplify the full dynamics of the system, it is still possible to linearize a portion of the system dynamics. The technique is called partial feedback linearization.
Consider the cart-pole example. The dynamics of the cart are affected by the motions of the pendulum. If we know the model, then it seems quite reasonable to think that we could create a feedback controller which would push the cart in exactly the way necessary to counter-act the dynamic contributions from the pendulum - thereby linearizing the cart dynamics. What we will see, which is potentially more surprising, is that we can also use a feedback controller for the cart to feedback linearize the dynamics of the passive pendulum joint.
We'll use the term collocated partial feedback linearization to
describe a controller which linearizes the dynamics of the actuated joints.
What's more surprising is that it is often possible to achieve
non-collocated partial feedback linearization - a controller which
linearizes the dynamics of the unactuated joints. The treatment presented
here follows from
Starting from the equations \ref{eq:simple} and \ref{eq:simple2}, we have \begin{gather*} \ddot\theta = -\ddot{x}c - s \\ % \ddot\theta = -\frac{1}{l} (\ddot{x} c + g s) \ddot{x}(2-c^2) - sc - \dot\theta^2 s = f_x \end{gather*} Therefore, applying the feedback control \begin{equation} f_x = (2 - c^2) \ddot{x}^d - sc - \dot\theta^2 s % f = (m_c + m_p) u + m_p (u c + g s) c - m_p l \dot\theta^2 s \end{equation} results in \begin{align*} \ddot{x} =& \ddot{x}^d \\ \ddot{\theta} =& -\ddot{x}^dc - s, \end{align*} which are valid globally.
Look carefully at the resulting equations. Of course, it says that we can impose whatever accelerations we like on the cart. But even the resulting equations of the pole happen to take a nice form here: they have been reduced to the equations of the simple pendulum (without a cart), where the torque input is now given instead by $\ddot{x}c$. It's as if we have a simple pendulum with torque control, except our command is modulated by a $\cos\theta$ term, and this $\cos\theta$ term is fundamental -- it's true that our control authority goes to zero when the pole is horizontal, because no amount of force on the cart in that configuration can act like a torque on the pole.
Starting again from equations \ref{eq:simple} and \ref{eq:simple2}, we have \begin{gather*} \ddot{x} = -\frac{\ddot\theta + s}{c} \\ \ddot\theta(c - \frac{2}{c}) - 2 \tan\theta - \dot\theta^2 s = f_x \end{gather*} Applying the feedback control \begin{equation} f_x = (c - \frac{2}{c}) \ddot\theta^d - 2 \tan\theta - \dot\theta^2 s \end{equation} results in \begin{align*} \ddot\theta =& \ddot\theta^d \\ \ddot{x} =& -\frac{1}{c} \ddot\theta^d - \tan\theta. \end{align*} Note that this expression is only valid when $\cos\theta \neq 0$. Once again, we know that the force cannot create a torque when the pole is perfectly horizontal. In fact, the controller we have written will "blow-up" -- requesting infinite force at $\cos\theta = 0$; so make sure you saturate the command before you implement it on hardware (or even in simulation). Although it may come as a small consolation, at least we have that $(c - \frac{2}{c})$ never goes to zero; in fact you can check for yourself that $|c - \frac{2}{c}| \ge 1$.
For systems that are trivially underactuated (torques on some joints, no torques on other joints), we can, without loss of generality, reorganize the joint coordinates in any underactuated system described by the manipulator equations into the form: \begin{align} \bM_{11} \ddot{\bq}_1 + \bM_{12} \ddot{\bq}_2 &= \btau_1, \label{eq:passive_dyn}\\ \bM_{21} \ddot{\bq}_1 + \bM_{22} \ddot{\bq}_2 &= \btau_2 + \bu, \label{eq:active_dyn} \end{align} with $\bq \in \Re^n$, $\bq_1 \in \Re^l$, $\bq_2 \in \Re^m$, $l=n-m$. $\bq_1$ represents all of the passive joints, and $\bq_2$ represents all of the actuated joints, and the $\btau = \btau_g - \bC\dot\bq$ terms capture all of the Coriolis and gravitational terms, and $$\bM(\bq) = \begin{bmatrix} \bM_{11} & \bM_{12} \\ \bM_{21} & \bM_{22} \end{bmatrix}.$$ Fortunately, because $\bM$ is uniformly (e.g. for all $\bq$) positive definite, $\bM_{11}$ and $\bM_{22}$ are also positive definite, by the Schur complement condition for positive definiteness.
Performing the same substitutions into the full manipulator
equations, we get:
\begin{gather}
\ddot\bq_1 = \bM_{11}^{-1} \left[ \btau_1 - \bM_{12} \ddot\bq_2
\right] \\
(\bM_{22} - \bM_{21} \bM_{11}^{-1} \bM_{12})
\ddot\bq_2 - \btau_2 + \bM_{21} \bM_{11}^{-1} \btau_1 = \bu
\end{gather}
It can be easily shown that the matrix $(\bM_{22} - \bM_{21}
\bM_{11}^{-1} \bM_{12})$ is invertible
\begin{gather} \ddot\bq_2 = \bM_{12}^+ \left[ \btau_1 - \bM_{11} \ddot\bq_1 \right] \\ (\bM_{21} - \bM_{22} \bM_{12}^+ \bM_{11}) \ddot\bq_1 - \btau_2 + \bM_{22} \bM_{12}^+ \btau_1 = \bu \end{gather} where $\bM_{12}^+$ is a Moore-Penrose pseudo-inverse. This inverse provides a unique solution when the rank of $\bM_{12}$ equals $l$, the number of passive degrees of freedom in the system (it cannot be more, since the matrix only has $l$ rows). The rank condition in this context is sometimes called the property of "Strong Inertial Coupling". It is state dependent; in the cart-pole example above $\bM_{12} = \cos\theta$ and drops rank exactly when $\cos\theta = 0$. A system has Global Strong Inertial Coupling if it exhibits Strong Inertial Coupling in every state.
In general, we can define some combination of active and passive
joints that we would like to control. This combination is sometimes
called a "task space".
If the actuated joints are commanded so that \begin{equation} \ddot\bq_2 = \bar\bH^+ \left [\ddot\by^d - \dot\bH\dot\bq - \bH_1 \bM_{11}^{-1}\btau_1 \right], \label{eq:q2cmd} \end{equation} where $\bar{\bH} = \bH_2 - \bH_1 \bM_{11}^{-1} \bM_{12}.$ and $\bar\bH^+$ is the right Moore-Penrose pseudo-inverse, $$\bar\bH^+ = \bar\bH^T (\bar\bH \bar\bH^T)^{-1},$$ then we have \begin{equation} \ddot\by = \ddot\by^d.\end{equation} subject to \begin{equation}\text{rank}\left(\bar{\bH} \right) = p, \label{eq:rank_condition}\end{equation}
Proof Sketch. Differentiating the output function we have \begin{gather*} \dot\by = \bH \dot\bq \\ \ddot\by = \dot\bH \dot\bq + \bH_1 \ddot\bq_1 + \bH_2 \ddot\bq_2. \end{gather*} Solving \ref{eq:passive_dyn} for the dynamics of the unactuated joints we have: \begin{equation} \ddot\bq_1 = \bM_{11}^{-1} (\btau_1 - \bM_{12} \ddot\bq_2) \label{eq:q1cmd} \end{equation} Substituting, we have \begin{align} \ddot\by =& \dot\bH \dot\bq + \bH_1 \bM_{11}^{-1}(\btau_1 - \bM_{12}\ddot\bq_2) + \bH_2 \ddot\bq_2 \\ =& \dot\bH \dot\bq + \bar{\bH} \ddot\bq_2 + \bH_1 \bM_{11}^{-1}\btau_1 \\ =& \ddot\by^d \end{align} Note that the last line required the rank condition ($\ref{eq:rank_condition}$) on $\bar\bH$ to ensure that the rows of $\bar{\bH}$ are linearly independent, allowing $\bar\bH \bar\bH^+ = \bI$.
In order to execute a task space trajectory one could command
$$\ddot\by^d = \ddot{\by}^d + \bK_d (\dot{\by}^d - \dot\by)
+ \bK_p (\by^d -\by).$$ Assuming the internal dynamics are stable,
this yields converging error dynamics when
$\bK_p,\bK_d > 0$
Consider the task of trying to track a desired kinematic trajectory with the endpoint of pendulum in the cart-pole system. With one actuator and kinematic constraints, we might be hard-pressed to track a trajectory in both the horizontal and vertical coordinates. But we can at least try to track a trajectory in the vertical position of the end-effector.
Using the task-space PFL derivation, we have: \begin{gather*} y = h(\bq) = -l \cos\theta \\ \dot{y} = l \dot\theta \sin\theta \end{gather*} If we define a desired trajectory: $$y^d(t) = \frac{l}{2} + \frac{l}{4} \sin(t),$$ then the task-space controller is easily implemented using the derivation above.
The task space derivation above provides a convenient generalization
of the partial feedback linearization (PFL)
If we choose ${\bf y} = \bq_1$ (non-collocated), we have $$\bH_1 =
\bI, \bH_2 = 0, \dot\bH = 0, \bar{\bH}=-\bM_{11}^{-1}\bM_{12}.$$ The
rank condition ($\ref{eq:rank_condition}$) requires that
$\text{rank}(\bM_{12}) = l$, in which case we can write
$\bar{\bH}^+=-\bM_{12}^+\bM_{11}$, reducing the rank condition to
precisely the "Strong Inertial Coupling" condition described in
Recall in the last chapter, we used energy shaping to swing up the simple pendulum. This idea turns out to be a bit more general than just for the simple pendulum. As we will see, we can use similar concepts of "energy shaping" to produce swing-up controllers for the acrobot and cart-pole systems. It's important to note that it only takes one actuator to change the total energy of a system.
Although a large variety of swing-up controllers have been proposed
for these model systems (c.f.
Let's try to apply the energy-shaping ideas to the cart-pole system.
The basic idea, from
Let us regulate the energy of this decoupled pendulum using energy shaping. The energy of the pendulum (a unit mass, unit length, simple pendulum in unit gravity) is given by: $$E(\bx) = \frac{1}{2} \dot\theta^2 - \cos\theta.$$ The desired energy, equivalent to the energy at the desired fixed-point, is $$E^d = 1.$$ Again defining $\tilde{E}(\bx) = E(\bx) - E^d$, we now observe that \begin{align*} \dot{\tilde{E}}(\bx) =& \dot{E}(\bx) = \dot\theta \ddot\theta + \dot\theta s \\ % \dot\tilde{E} = ml^2 \dot\theta \ddot\theta + mgl s =& \dot\theta [ -uc - s] + \dot\theta s \\ % - ml \dot\theta [ u c + g s ] + mgl s =& - u\dot\theta \cos\theta. % - ml u \dot\theta c \end{align*}
Therefore, if we design a controller of the form $$u = k \dot\theta\cos\theta \tilde{E},\quad k>0$$ the result is $$\dot{\tilde{E}} = - k \dot\theta^2 \cos^2\theta \tilde{E}.$$ This guarantees that $| \tilde{E} |$ is non-increasing, but isn't quite enough to guarantee that it will go to zero. For example, if $\theta = \dot\theta = 0$, the system will never move. However, if we have that $$\int_0^t \dot\theta^2(t') \cos^2 \theta(t') dt' \rightarrow \infty,\quad \text{as } t \rightarrow \infty,$$ then we have $\tilde{E}(t) \rightarrow 0$. This condition, a version of the LaSalle's theorem that we will develop in our notes on Lyapunov methods, is satisfied for all but the trivial constant trajectories at fixed points.
Now we return to the full system dynamics (which includes the cart).
Swing-up control for the acrobot can be accomplished in much the same
way.
Use collocated PFL. ($\ddot{q}_2 = \ddot{q}_2^d$). $$E(\bx) = \frac{1}{2}\dot\bq^T\bM\dot{\bq} + U(\bx).$$ $$ E_d = U(\bx^*).$$ $$\bar{u} = \dot{q}_1 \tilde{E}.$$ $$\ddot{q}_2^d = - k_1 q_2 - k_2 \dot{q}_2 + k_3 \bar{u},$$
Extra PD terms prevent proof of asymptotic convergence to homoclinic
orbit. Proof of another energy-based controller in
The energy shaping controller for swing-up presented here is a pretty faithful representative from the field of nonlinear underactuated control. Typically these control derivations require some clever tricks for simplifying or canceling out terms in the nonlinear equations, then some clever Lyapunov function to prove stability. In these cases, PFL was used to simplify the equations, and therefore the controller design.
We will see another nice example of changing coordinates in the nonlinear equations to make the problem easier when we study "differential flatness" for trajectory optimization. This approach is perhaps most famous these days for very dynamic trajectory planning with quadrotors.
These controllers are important, representative, and relevant. But clever tricks with nonlinear equations seem to be fundamentally limited. Most of the rest of the material presented in this book will emphasize more general computational approaches to formulating and solving these and other control problems.
The acrobot and cart-pole systems are just two of the model systems used heavily in underactuated control research. Other examples include:
For this exercise you will work exclusively in . You will be asked to complete the following steps.
For this exercise you will work in . You will complete the following steps.
Can you make a conclusion whether these systems are underactuated? (Note that the definition requires the system to be interpreted as a second-order system with, i.e., $\bx = [q, \dot{q}]^T$)
You should only need the conditions described the definition of controllability to explain your conclusion. (Hint: Think about the similarity between system $({\bf A}_4, {\bf B}_4)$ and the grid-world discrete-time system in (b)). The more general tools found in this collapsable section will certainly work, too.
In this problem, we use phase portraits to examine how linearization technique helps with local stability analysis for nonlinear systems and its limitations using the nonlinear pendulum with zero torque as an example. The pendulum parameters are chosen as $m = 1$, $l = 1$, $g = 9.81$. Follow the exercises below and complete the graphical analysis for equilibrium points $\bx^* = [0, 0]^T$, $\bx^* = [\pi, 0]^T$, which will guide you to studying the systems. When you are done, populate this table:
| sign$(Re(\lambda_1))$ | sign$(Re(\lambda_2))$ | stable i.s.L. | Asymp. Stable | Exp. Stable | |
| Nonlinear $b = 0$, $\bx^* = [0, 0]^T$ |
N/A | N/A | |||
| Nonlinear $b = 0$, $\bx^* = [\pi, 0]^T$ |
N/A | N/A | |||
| Linearization $b = 0$, $\bx^* = [0, 0]^T$ |
|||||
| Linearization $b = 0$, $\bx^* = [\pi, 0]^T$ |
|||||
| Nonlinear $b = 1$, $\bx^* = [0, 0]^T$ |
N/A | N/A | |||
| Nonlinear $b = 1$, $\bx^* = [\pi, 0]^T$ |
N/A | N/A | |||
| Linearization $b = 1$, $\bx^* = [0, 0]^T$ |
|||||
| Linearization $b = 1$, $\bx^* = [\pi, 0]^T$ |
plot_2d_phase_portrait
function around equilibrium $\bx^*$. Is the nonlinear undamped pendulum stable i.s.L.? asymptotically stable? exponentially stable?
plot_2d_phase_portrait
function around equilibrium $\bx^*$. Is the nonlinear damped pendulum stable i.s.L.? asymptotically stable? exponentially stable?
| Previous Chapter | Table of contents | Next Chapter |


"You don't know what you're missing. I'm a pop star! I have a big cock!"
| 8 Jan 1947 |
David Robert Jones born, 40 Stansfield Road, Brixton, London. |
| 1961 |
A fistfight with George Underwood leaves Bowie with very little sight in his left eye. Part of the pupil had to be surgically removed. This also makes Bowie's eyes appear to be different colors. |
| 1966 |
Changes stage name to David Bowie. |
| 1969 |
Space Oddity. |
| 20 Mar 1970 |
Marries Mary Angela Barnett. According to Bowie, they met when they were both "fucking the same bloke" (Asian record executive Calvin Mark Lee.) |
| 30 May 1971 |
Son, Duncan Zowie Heywood Bowie (Zowie Bowie), born. |
| Jan 1972 |
In an interview with Melody Maker, Bowie states that he is gay. |
| 1972 |
The Rise And Fall Of Ziggy Stardust And The Spiders From Mars. |
| Aug 1972 |
"If [ Elvis Presley's ] image wasn't bisexual then I don't know what. I think Jagger's image was also very bisexual. People talk about 'fag-rock' but that's an unwieldy title at the best of times. I think it's all rock 'n roll. It's the audiences that are fags if anything." Interview with Steve Turner, Beat Instrumental. |
| Sep 1973 |
A stalker breaks into David and Angela's apartment, and requests to kiss David's foot. Police are summoned. |
| 1976 |
"I'm pretty much over my affection for me. The only time I get halfway wistful for those old days is in Japan. All those little boys are so cute, I just want to take them all up to my room." |
| Jan 1978 |
Angie Bowie attempts suicide. |
| 8 Feb 1980 |
Divorces Angie. |
| 1980 |
Stars in a Broadway play, The Elephant Man. |
| 1981 |
Under Pressure with Queen. Riff later stolen by Vanilla Ice. |
| 1985 |
A brother, Terry, commits suicide. |
| 1988 |
Appears as Pontius Pilate in The Last Temptation of Christ. |
| 24 Apr 1992 |
Marries exotic Somali model Iman Abdulmajid. |
| 1996 |
Appears as Andy Warhol in Basquiat. |
| 1997 |
Estimated net worth $919M, though this is almost certainly overstated. |
| 1997 |
Issues a bond on the basis of his back catalog, raising $55M. |
| 15 Aug 2000 |
Daughter, Alexandrina Zahra Jones, born. |


| Trees | Indices | Help |
|
|---|
|
|
object --+ | Task
Abstract base class of a callable to be called later.
It stores the result or raised exception of the last time it is called.
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Inherited from |
|
|||
|
|
|||
|
_exception The exception last raised when executing this task, or None. |
|||
|
_result The result of the last execution of this task (if no exception was raised). |
|||
|
_str A string representation of this task. |
|||
|
args The positional arguments of this task. |
|||
|
kwds The keyword arguments of this task. |
|
|||
|
Inherited from |
|
|
|
Return the computed result for this task. If an exception had been raised, it is reraised here. If the task has not been executed yet, UnprocessedTaskError is raised. |
Execute this task and store the result or raised exception. Intended to be called by workers only. |
Abstract method for executing this task. This method should have the same signature with __init__. It can be implemented either explicitly in a concrete subclass or implicitly by decorating a callable with the subclass decorator. |
deco(f) that binds a function
f as the _execute method of a dynamically generated subclass of
this class (cls ).
|
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0beta1 on Tue Aug 12 05:39:45 2008 | http://epydoc.sourceforge.net |


Contact Us
Address
123 Main Street, Anytown, CA 12345 – USA
Phone
Mobile: (08) 123 456 789
Hotline: 1009 678 456
<EMAIL_ADDRESS><EMAIL_ADDRESS>123 Main Street, Anytown, CA 12345 – USA
Mobile: (08) 123 456 789
Hotline: 1009 678 456
<EMAIL_ADDRESS>support@hastech.company


I saw this line in some code one of my fellow students submitted to a group project we were working on together this week:
source.each {|x| found << x if x.to_s.include?(thing_to_find) == true}
Immediately, I thought, == true
is redundant in this method. Your if
statement will correctly recognize a true or false return from the .include?
method without it, since .include?
always returns a boolean value.
Essentially, you're taking either a true
or a false
and then checking to see if they equal true
:
   true == true     =>     true
   false == true     =>     false
The code works just as well without it:
source.each {|key,value| found << key if value.to_s.include?(thing_to_find.to_s)}
But... I gave this some more thought. Initially I wanted to flatly say that == true
is never necessary and should pretty much never appear in our code, but I've changed my mind. I'd say it's probably not needed, but in special cases it might be valuable.
Since if
statements evaluate all objects that aren't nil
or false
as true, when some other possible value might be returned, inserting == true
at the end might be appropriate.
Here's a small chart of how == true
would affect our control flow.
.method? returns: | if statement evaluates as: |
true | true - value is pushed to array |
false | false - value is not pushed |
nil | false - value is not pushed |
"anything else"
|
true - value is pushed to array
|
.method? returns: | if statement evaluates as: |
true | true - value is pushed to array |
false | false - value is not pushed |
nil | false - value is not pushed |
"anything else"
|
false - value is not pushed
|
I feel like this type of usage might introduce more problems than it would solve, though. After all, why would one write code that seems to expect a boolean but isn't totally sure whether it's going to get one? Clean code shouldn't need to rely on this kind of thing.
So rather than out-and-out saying one should never use == true
, I think I'll soften my stance to something more like this:
While not explicitly unnecessary, == true
is something to watch out for. If you see it in your code, try to refactor in a way that doesn't require it.


Rise of the Ancestors
Invoke powerful mages from the past era to take up fight anew alongside you. Those sorcerors can only be kept under your control for a brief moment.
^a${value} Second(s) Recharge
120
${value} Energy Cost
100 104 108 112 116 120 124 128 132 136 139 143 147 151 155 159 163 167 171 175
${value} Summon Limit
3
${value} Summoned Immediately
3
Life Time ${value} Seconds
30
MaxLevel
16
UltimateLevel
20


I was at a party with my girlfriend and I did not have any bud, so I bought some synthetics called 'Diamond Dove'. I arrived at the party and I started to drink some vodka. I was drunk and had ran out of alcohol.  I had only taken 2 hits and about 10 seconds later I had felt the following:
-my heart beat was 3 beats per second, at 180bpm, 2nd degree hypertension.
-I was leaning sideways when walking and all sounds echoed strongly
-my vision would pulse everytime my heart beated
-my vision was extremely swirly like a horizontal S and moved not stop like a wave.
-my reaction time a about 5 seconds
-I collapsed on the balcony against the railing and was in aw when looking at everyone staring at me
-many people tried to help me but I kicked them away because I thought they were going to kill me
-I was screaming at the top of my lungs 'go away!'
-my speech was slurred to where it would only be mumbles and grunts (I was actually trying to say a full sentence)
-I had sat on the railing for about 15 to 30 mins
-when my girlfriend tried for 15 mins to get me up and to the car so she could help
-when I had gotten up I fell again
-eventually she got me up and literally was holding my whole body up
-I punched her in the face leaving her with a black eye (she told me that the next morning because I did not remember)
-I passed out in the car
-woke up in the car near my house with my best friend in the drivers seat
-I tried with all I had to just move my arm and when I did I threw up from the movement
-I got the bed spins in the car and passed out again.
- 2hrs had passed and my heart rate had not decreased
- I had a seizure (yes a real seizure) and my friend had to help me
-they had spent 30 mins to get me out of the car but I would refuse.
-stumbled inside and luckily no one was home
- passed out on my bed
-woke up and I did not remember a single thing (not exaggerating, and my memory had come to me weeks later)
The day after that night I had gone out with my friends and smoked more, geeking about what had happened. You can never stop a true stoner from smoking.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Contact Us
locationRegistered Office:
Ability Foundation,
27, Fourth Main Road,
Gandhi Nagar, Chennai - 600 020,
Tamil Nadu, India
Administrative Office:
Ability Foundation, New No.4, Old No.23, Third Cross Street,
Radhakrishnan Nagar, Thiruvanmiyur
Chennai - 600 041, India.
Telephone Numbers:
91 44 2452 0016
E-mail:
Jayshree Raveendran(Founder, Managing Trustee and Honorary Executive Director)
–<EMAIL_ADDRESS>C. K. Ranganathan –<EMAIL_ADDRESS>Leela Swamy –<EMAIL_ADDRESS>Dr. M. Thangavelu – ability@abilityfoundation.org


Aspire for more
Learning keeps you in the lead. Get in-demand skills to impress anyone.
Learning keeps you in the lead. Get in-demand skills to impress anyone.
Training 5 or more people?Get your team access to Udemy's top 5,500+ courses
Bryan Cairns
Andrew Pach
Benjamin Lynott
Brendon Rose


{% extends 'mgmt/index.html'%} {% load static%} {% block content %} {% load widget_tweaks %}
1. Navigate to the Calibrated Tool Shelf.
4. Place Tool on Shelf.
1. Press the button below to print the barcode.


It mainly targets the clusters in Uttar Pradesh, Haryana, Uttarakhand, Punjab, Bihar and Delhi.
HOW DOES THIS SCHEME WORK –THE FATHER OF THE DAUGHTER PUTS MONEY IN BANK FOR HER FUTURE ACCORDING TO HIS FINANCIAL CONDITION (NO RESTRICTION ON AMOUNT) IN THE SUKANYA BANK.WHERE THE BANK PROVIDES AN INTEREST OF 9.1% ON THE ACCOUNT.THIS ACCOUNT IS CLOESD AS SOON AS SHE TURNS 21.SHE CAN WITHDRAW 50% AMOUNT AT AGE OF 18 AND ENITRE AMOUNT AFTER 21.
HOW TO APPLY FOR BETI BACHAO BETI PADHAO SCHEME
Opening an account in SUKANYA SAMRUDHI YOJANA ACCOUNT IN bank in the name of girl is the first basic step.
AGE LIMIT FOR BETI BACHAO BETI PADHAO SCHEME
– All the girls upto 10 years of age are eligible under this scheme. It is necessary to open bank account in their name.
Tax Free scheme – This welfare scheme launched by the Prime Minister has been set kept completely tax free. No amount will be deducted from your account after opening it.
NECESSARY DOCUMENTS FOR BETI BACHAO BETI PADHAO SCHEME
– make sure you have the following documents to open an account:
• Child’s birth certificate
• Parent or legal guardian’s identity proof
• Proof of address of parent or legal guardian
• Note: – The scheme does not apply to NRIs
This scheme is presented in all over india
Eligibilty:
For Scheduled Castes, Scheduled Tribes, Other Backward Classes and Minority Communities and other 25% to 75% admission reserved for Girls of below Poverty Line families.
Free provisions payable in KGBV
1. Accommodation to all girls.
2. Books and teaching materials
3. School Uniforms, Sweaters, Shoes-Socks
4. Daily use items and soaps, oils, towels, toothpaste, comb, slippers, sanitary napkins etc.
5. 100 / – per month deposited in the personal bank account of the girl child.
Facilities provided in KGBV:
1. NIOS accredited vocational training
2. Computer training
3. Educational Tours
4. Sports competitions
5. Free health check-up and medicines facility per month.
6. Educational Teen Fairs.
7. Self-defense training for girls.
Duration
Scholarships are paid from Class IX to Class XII.
Amount
A total annual amount of Rs. 6000 is paid to 100,000 students across the country.
Eligibility
Students enrolled in a government-aided or local body run schools, belonging to families whose annual income is less than Rs.1,50,000 from all the sources combined, are eligible for receiving the scholarship. Students have to take up studies in approved courses in the government/aided/local body run schools. They have to maintain good conduct, as certified by the Head of the institution. They have to be full-time students. Leaves should be taken via proper manner and should not absent themselves otherwise. They should not be employed. Students getting clear promotion from Class VIII to Class IX are only eligible for receiving the scholarship.
Other criteria
• Each state and UT has fixed quota of scholarship, which are determined by the basis of population of children of age group of class VII and class VIII, and children enrolled in class VII and class VIII.
• Scholarships valid for studying courses in India for a period of four years maximum.
• No scholarships for pursuing studies outside India.
• No scholarships will be paid if the student leaves the course within one month of registration/admission.
• After the passage of 12 months of the academic year for which the claim has been made, no claims can be made for due arrears of the scholarship.
• No scholarships for diploma courses.
• Students from Kendriya Vidyalaya and Jawahar Vavodaya Vidyalaya are not eligible for the scholarship. Students studying in non-recognized schools will not be eligible for the scholarship as well.
• Candidates should clear the Class IX examination and Class XI examination with 55% marks, to be eligible to receive scholarships for Class X and Class XII. This is relaxed by 5 % for SC/ST candidates.
• Candidates should clear Class X examinations with 60% marks to eligible for continuing scholarship in class XI.
• If the student falls ill and is unable to attend the final examination, they should submit a medical certificate from a Registered Medical Practitioner to the Head of the Institution, certifying the duration of the illness. Student would be considered eligible for the scholarship if the attendance is over 50% for the year in aggregate.
• If a school does not have the examination at the end of class IX or Class XI, scholarship will be disbursed after submission of a written declaration by the Head of the Institution certifying the same.
NMMS Exam Fee
The Examination Fees is Rs. 100/- per student and affiliation fees of Rs. 200/- per year per institution.


Pump!Share Your URLs
The one-stop to share all your URLs with friends and Family. Found Something Interesting? Go Ahead and Share It!
UserName:
Password:
Login!


— Very Groovy browser automation… web testing, screen scraping and more —
- Multi Page | Single Page | Zip Download -
The Book of Geb - @geb-version@ - @created-at@ Licensed under the Apache License, Version 2.0


Update: R. Kelly's Ex-Tour Manager Will Testify To Buying Aaliyah Fake ID
by VladTVUpdate 12/09/2019 12:33pm:
Previously, it was reported that R. Kelly allegedly bribed a public official to allow him to marry Aaliyah in 1994. Now, R. Kelly’s ex-tour manager— Demetrius Smith, has admitted to getting false documents for the singer to allegedly carry out his plan of marrying a 15-year old Aaliyah.
Smith gave his testimony, saying, “I was in the room when they got married. I’m not proud of that. I had papers forged for them when Aaliyah was underaged. It was just a quick little ceremony. She didn’t have on a white dress. He didn’t have on a tux. Just every day wear. She looked worried and scared." It was noted that Smith agreed to testify against Kelly, but doesn’t want the singer to go to jail.
source: TMZ
Original 12/05/2019 7:16pm:
According to court documents obtained by Complex, R. Kelly is being accused of bribing a public official to obtain a fake ID for Aaliyah so the two could get married when the late singer was just 15-years-old. The document reads:
On or about August 30, 1994, within the Northern District of Illinois, the defendant ROBERT SYLVESTER KELLY, together with others, did knowingly and intentionally cause another individual to promise and tender to a public officer and public employee property, to wit: Unites States currency, that such public officer and public employee was not authorized by law to accept, with the intent to influence the performance of an act related to the employment and function of a public officer and public employee, to wit: the creation of a fraudulent identification document for Jane Doe #1, an individual whose identity is known to the Grand Jury, in violation of Illinois Criminal Code Sections 5/33-l(a) and 5/5-1.
Source: complex.com


Kim Namjoon
12 September 1994
Seoul
Rap Monster is BTS's beloved leader and main rapper. When he's not rapping, he's taking care of the other members, writing lyrics, or producing. While Rap Monster is great at rapping, he is not a "dance monster." Even if his dancing isn't the greatest, he's still pretty good. Before Rap Monster even debuted with BTS, Rap Monster was an amazing student, scoring high on exams and being in the nation's 1%. Now, he's charting high on the music charts with BTS. Rap Monster works very hard and raps with passion. He even has his own mixtape that reflects upon how broken society is.


This is the Solutions noodle.
some overview
This is block 1 of the Solutions noodle.
some 3rd level content within the front
block
This is block 2 of the Solutions noodle and it lies within the back
block.
This is my rant about Web Apps which is not in any block because the 2nd level header ended the block above (because it was a level-2-heading block).
Now here is some markdown just for fun: with bullet points oh yes! * with many bullet points!!!
This header and content is contained in the front
block.
Yet another paragraph.
This header and content is contained in the back
block.
...which is not contained in any block.


Politico
Sign Up
Log In
☰
Sign Up
Upload Passport:
Upload Passport
First Name
Last Name
Username
Email Address
Phone Number
Password
Sign Up
Loading
Have an account? Log in


In the last 20 years, society has been profoundly reshaped as a result of the creation and adoption of the World Wide Web.
Countless industries have arisen leveraging the convenience, flexibility, and pervasiveness of the Internet and its technologies. One such industry is that of online web-payments; eCommerce as it were.
CollectorSolutions Incorporated (CSI) is one such company born of the eCommerce revolution. Founded in 1999, CSI specializes in the processing, management and reconciliation of check and credit card payments executed via web technologies. CSI’s singular mission is to provide our clients with a correct, stable and integrated solution that is uniquely simple, efficient and cost effective.
With a client base consisting of hundreds of government agencies, tax collectors, municipalities, and utilities throughout more than 35 states, CSI has developed an unrivalled understanding of the demands and complexities of ‘eGovernment’ payment processing solutions. It is this understanding that enables the CSI team to excel at customer support and service; far surpassing the accepted industry norms and expectations.
CSI would like to offer to you our utmost gratitude for your consideration of our team as a provider of your payment processing solutions. We look forward to the opportunity to demonstrate to you that in choosing CSI, you will ensure your organization and your customers of an exceptional solution that is exceptionally simple… exceptionally cost effective… exceptionally supported.
Sincerely,
Robert Cothran
President & Senior Software Architect


PIG DICE
player1's turn
player2
Begin
New Game
player1
Roll dice
Hold
Dice-roll:
Round:
Total:
player2
Roll dice
Hold
Dice-roll:
Round:
Total:


(#) Creating a MutableState object with a mutable collection type
!!! WARNING: Creating a MutableState object with a mutable collection type
This is a warning.
Id
: `MutableCollectionMutableState`
Summary
: Creating a MutableState object with a mutable collection type
Severity
: Warning
Category
: Correctness
Platform
: Any
Vendor
: Jetpack Compose
Identifier
: androidx.compose.runtime
Feedback
: https://issuetracker.google.com/issues/new?component=612128
Min
: Lint 7.0
Compiled
: Lint 8.0 and 8.1
Artifact
: [androidx.compose.runtime:runtime](androidx_compose_runtime_runtime.md.html)
Affects
: Kotlin and Java files and test sources
Editing
: This check runs on the fly in the IDE editor
Implementation
: [Source Code](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetector.kt)
Tests
: [Source Code](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetectorTest.kt)
Copyright Year
: 2021
Writes to mutable collections inside a MutableState will not cause a
recomposition - only writes to the MutableState itself will. In most
cases you should either use a read-only collection (such as List or Map)
and assign a new instance to the MutableState when your data changes, or
you can use an snapshot-backed collection such as SnapshotStateList or
SnapshotStateMap which will correctly cause a recomposition when their
contents are modified.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface ViewComponent
View components represent the graphical component for backend data models rendered within a view.
Examples for ViewComponents are NodeComponent
in trees and ArrangementComponent
for representing
domain arrangements.
Each view component is in general managed by a ComponentManager
mapping the backend data to the graphical component.
During the layout process each ViewComponent is assigned to its correct position on the view panel. Therefore various methods are needed to let layouter classes set the position for the view component. All those methods are defined in this interface.
The basic implementation for this interface is AbstractViewComponent
and view components like ArrangementComponent
just extend the
basic implementation.
| Method Summary | |
|---|---|
java.awt.Shape |
getBoundingShape()
Returns the bounding shape of this component. |
java.awt.geom.Rectangle2D |
getBounds()
Returns the bounds of this component, where X,Y is the anchor point and therefore not necessarily the upper left corner. |
java.awt.Shape |
getDisplayedShape()
Returns the actual displayed shape for this component, which is used for mouse events to determine whether or not the component was clicked on. |
int |
getHeight()
Returns the height of this component. |
java.awt.Point |
getLocation()
Returns the Position of the components anchor point. |
java.awt.geom.Rectangle2D.Double |
getRelativeBounds()
Returns the relative bounds of this component, which can be used during the layout process. |
int |
getWidth()
Returns the width of this component. |
int |
getX()
Returns the (anchors) x coordinate for this component. |
int |
getY()
Returns the (anchors) y coordinate for this component. |
void |
setBounds(int x,
int y,
int width,
int height)
Sets the new bounds for this component. |
| Method Detail |
|---|
void setBounds(int x, int y, int width, int height)
AbstractViewComponent.setBounds(int, int, int, int)
for details.
x
- the x coordinate of the anchor point.y
- the y coordinate of the anchor point.width
- components widthheight
- components heightint getX()
int getY()
int getWidth()
int getHeight()
java.awt.Point getLocation()
java.awt.geom.Rectangle2D getBounds()
java.awt.geom.Rectangle2D.Double getRelativeBounds()
Changes on the relative bounds are done by using this method. For example node.getRelativeBounds().y = newY;
java.awt.Shape getBoundingShape()
This can be used to determine if the component intersects with the clipping area and therefore has to be drawn during the rendering process.
java.awt.Shape getDisplayedShape()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


{{#if currentUser}}
{{#if loggingIn}}
{{! We aren't actually logged in yet; we're just setting Meteor.userId
optimistically during an at-startup login-with-token. We expose this
state so other UIs can treat it specially, but we'll just treat it
as logged out. }}
{{#if dropdown}}
Logging in
{{> _loginButtonsLoggingIn }}
{{else}}
Logging in
{{> _loginButtonsLoggingInSingleLoginButton }}
{{/if}}
{{else}}
You’re already logged in!
Sign Out
{{/if}}
{{else}}
Please Login or Sign Up:
{{> _loginButtonsLoggedOut}}
{{/if}}


After reading so much information about the liquer known as 'Absinthe', I became very curious about its main herbal constituent, wormwood. I ordered a large 1/2 lb. bag of dried wormwood foliage and a one ounce bottle of wormwood extract from an online vendor. Here are some of my experiences with the substance.
First, I tried smoking the dried foliage (roughly 1/3 gram). I did this alone on a quiet evening. There were no other drugs or alcohol consumed for my first experiment, and I was in a tranquil state of mind. I dimmed down the lights and relaxed, and then packed a bowl of the wormwood into a small ceramic pipe. I drew in a small hit. The first thing I noticed was the taste...very much like dried hay, but not terribly harsh on the lungs. After finishing the bowl, I just sat back and relaxed for a bit, hoping to feel some effects. There was a slight calming of my mood, but that was about all I noticed. I must say that I was somewhat disappointed with my first experiment.
The second experiment was similar to the first. It was just a few nights later with a similar mind set. The difference is that I smoked much more of the substance, this time in cigarette form. It was probably at least a gram of material. Once again, I felt very little effect from smoking the wormwood. I even consumed a couple of beers afterward to see if this would enhance the effects, but there was no noticable difference. I concluded that smoking wormwood was really not worth the effort, since the taste is not particularly pleasant and the effects almost too mild to notice.
The third experiment again involved the dried wormwood foliage. This time, I decided to try the herb in a tea form. I had read that this was a popular way to consume wormwood. I again chose a quiet evening alone to brew my tea. Since my smoking efforts had been so disappointing, I figured that a much larger amount of herb was needed to achieve any psychoactive effects. I placed roughly 15 grams of wormwood into a perculator, and brewed the tea for about 10 minutes. After the tea had cooled, I poured some into a mug and tasted it...HORRIBLE!!! I found it to be extremely bitter and unpleasant to drink. Even with this setback, I managed to eventually consume the entire batch of tea (it took about 45 minutes). Unfortunately, my perseverence did not pay off...I still found the effects to be negatable.
By this time, I had become frustrated with the wormwood foliage and shelved it for a while. Even though it seemed to have a mild calming effect, it hardly seemed worth the effort of smoking the herb or drinking it in a tea. I still had the bottle of extract, but was not certain how to make use of it. The final experiment happened a couple of months later, when a friend was visiting from out of town. My friend is a heavy drinker, and has a particular fondness of vodka. While we were reading about Absinthe online, an idea came to mind...why not pour the wormwood extract into a glass of vodka?
We realized that this was not the same as 'Absinthe', that is why I have submitted this report to the wormwood vault. We were hoping that we could at least get a 'sense' of what the real Absinthe would be like. Late in the evening, we each poured ourselves a stiff Vox on the rocks (we only drink high quality vodka). We then put about 3 dropperfuls of wormwood extract into each drink, turning the vodka dark green. I had predicted that the flavor would be awful, but was surprised that it was not as bad as the tea I had brewed previously. This is not to say that it tasted good...we had regrets about using such expensive vodka for this experiment.
It was after a couple of these 'cocktails' that I began to get quite buzzed. I believe it was mainly from the alcohol, but I did notice a slight difference...it seemed as though I was more stimulated than usual. I was a little more talkative and jovial than I usually get when drinking. After a third 'wormwood cocktail', I started to get a bit tipsy. I felt a warmth in my body that is not typical of three drinks. I cannot say that there was anything 'psychedelic' about this state, but it was not a normal drunkeness.
All this time, I kept asking my friend is he had any effects. He did not seem to be getting the effects as profoundly as I was, though he was enjoying himself. We ended up using the enitire bottle of extract. The next morning, I awoke with the worst hangover that I can remember having in many years. I was dehydrated, and my head felt as though it was clamped in a vice. It seemed a bit odd, since I normally do not get hangovers when I drink. It took me the entire day to recover.
Here is my conclusion based on my experiences with wormwood: It is simply not worth it to me. I have tried about every method of consumption possible, and have found the results not worth the efforts. I am glad that I experimented with this herb, however, and would love to try real Absinthe some day.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Software
Exploring Data with R
- Motivation, why and how to think about data, and getting started with R (Rmd file, zip file of all pieces)
- Making basic plots, grammar of graphics, good practices (Rmd file, zip file of all pieces)
- Advanced graphics, layering, using maps (Rmd file, zip file of all pieces)