, but this code // executes before the first paint, when

麻豆区

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); Interim: Creating quadcopters - News & Stories | 麻豆区

麻豆区

Skip to main content

Calvin News

Interim: Creating quadcopters

Tue, Jan 22, 2013
Laurie Lemmen

Students in professors Yoon Kim and Randy Brouwer鈥檚 Mobile Robotics Systems interim are designing and building small, unmanned, remote-control aircraft, propelled by four rotors and therefore dubbed quadcopters. Quadcopters can perform vital duties, such as providing security surveillance, assessing an area affected by disaster, covering a news story. They can also fly pre-programmed routes, using a GPS module, for crop monitoring.

Working in teams of four or five to design and build an aircraft, each group also decided on a purpose and business plan for its use: Team Inventory Control鈥檚 quadcopter would monitor inventory high on warehouse shelves, replete with an RFID scanner. Team Public Announcement鈥檚 quadcopter would be fitted with a speaker that provides public service announcements, such as for an area affected by a natural disaster. Team Mail would pick up mail at the end of a driveway and deliver it to its intended recipient. Team Waiter would retrieve empty glasses.

Students expressed a range of expectations for their final product. Team Mail exuded confidence that their quadcopter will take to the air, while team Public Announcement wasn鈥檛 so sure. 鈥淥ur biggest worry is that it won鈥檛 fly but will fall down and tear itself to shreds,鈥 said junior Jake Roorda.

An alumnus demonstrates

Advances in technology over the past decade鈥攕uch as weight of materials, battery quality, GPS module and microprocessors鈥攈ave made quadcopters feasible. Brouwer estimates that there are half a dozen or fewer in use in West Michigan, including one by Calvin alumnus Craig Newhouse, who demonstrated his machine on the first day of class. A landscape architect, Craig wanted to photograph his work from a low altitude but could not find someone to do it, so he started a business, Hovercams, that deploys a quadcopter equipped with a digital camera to take aerial photographs for landscape design and marketing purposes.

To make parts for their quadcopters, three of the four teams intend to use Calvin鈥檚 brand new 3-D printer. The 3-D printer reads CAD drawings that students create on engineering lab computers and uses micro-layers to print plastic parts. On the eighth day of interim, Team Mail had a jump on the rest of the class: they had a motor mount in production already and were waiting several hours for the plastic part to emerge from the printer.聽

Since quadcopters are quite new and uncommon, there are no rules governing their use.聽 Students developed an extensive list of safety procedures to guard against injury while operating the machines. 鈥淲e want to make sure they fly safely,鈥 stated Prof. Brouwer. 鈥淲e don鈥檛 want anyone getting an unexpected haircut or losing a finger.鈥 They also spent time considering ethical implications, such as spying, posed by the technology. 鈥淭his technology could be misused, so we wanted students to think about the ramifications before designing their quadcopter,鈥 Kim explained.

The interim class evolved due to Kim鈥檚 research interests in autonomous robots and technologies for disaster relief. Professors Kim and Brouwer wanted to offer a hands-on opportunity to make a high-tech device collaboratively with students from multiple engineering disciplines, since students will need cross-disciplinary skills when they enter the workforce.

When asked if teams were collaborating or competing with each other, mechanical engineering student Afa Malu replied, 鈥淪o far, we鈥檙e mainly collaborating. But we may get more competitive when we see each other鈥檚 products in test flight.鈥 All that cooperation will end on the last day of class, when teams will compete in the world鈥檚 first Quadcopter Olympics.聽 The games will include tests in speed, accuracy, strength and agility.


Authors: