Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Monday, 29 March 2021

This is Boston Dynamics’ next commercial robot

Boston Dynamics’ transition from a decades-long research robotics firm to a company that productizes and sells hardware has been a fascinating one to watch. There have been some tough lessons along the way, including the very real lesson that at the end of the day, most robots in the world will be deployed for mundane tasks.

Sure, the company will continue to court the public with fun viral videos of its technology dancing to the oldies, but when it comes to actually selling robotics, the targets continue to be the dull, dirty and dangerous jobs we humans just don’t want to do. Or, as I’ve been putting it for a while now, robotics are — more often than not — cool technology performing decidedly uncool tasks.

Spot has found most of its success as an inspection robot. The quadruped has been deployed to oil rigs, nuclear plants and other places where most people would rather limit their time, given a choice. That takes care of the dangerous part of the three Ds, and you could make a reasonable argument that the company’s second commercially available robot is going after the dull bit.

Image Credits: Boston Dynamics

I’m guessing you don’t need me to cite a bunch of statistics about how massive an industry shipping and logistics is. And with so many orders moving online, things are only growing. There’s a reason, after all, so many robotics companies — including Locus, Fetch and Berkshire Grey — are devoting their entire operation to this sort of automation. As the CEO of Locus told me recently, everyone is looking for the technology that will help them compete with Amazon and its massive robotics army.

Stretch (currently a prototype) is the long-promised commercial version of Handle, a robot the company introduced via viral YouTube video a little over four years ago. In its earliest form, the wheeled robot was an extremely versatile robot with an impressive ability to maintain balance while gliding and taking on different obstacles. The robot also picked up a 100-pound crate. Little did we realize at the time that would become the foundational element of its future evolution.

In fact, Handle’s box lifting dates back even further, to a video featuring the company’s humanoid robot, Atlas. “We showed some box moving, among other things. And it got a lot of interest from people in warehouses,” Boston Dynamics VP of Product Engineering Kevin Blankespoor tells TechCrunch. “They actually wanted Atlas to come work for them. We really thought we could design a much more simple robot that could tackle a warehouse task. There’s where Handle was born. It really split off of the Atlas project at that point.”

Blankespoor says Handle was born out of the company’s long-standing desire to combine wheels with legs, forming the basis of some early experimentation with designing a robot that could help move objects in a warehouse setting.

Image Credits: Boston Dynamics

“We started experimenting with customers with Handle in warehouses. He did a couple of different tasks. The first was unloading pallets, which was pretty good. The second application was unloading trucks. Handle could do that, but it did it pretty slowly. It’s a tight space, it had to maneuver a lot and it was too slow.”

A 2019 video titled, “Handle Robot Reimagined for Logistics,” shows the wheeled robot outfitted with a large top-mounted arm and a gripper comprised of a series of suction cups. In the video, a pair of robots work in tandem, moving boxes from one pallet to another. But images of Stretch showcase how dramatically Boston Dynamics has rethought the robot in order to make it commercially viable.

Most immediately apparent is the loss of Handle’s two large wheels. In their place is a large black platform. “The mobile base is in the bottom,” Blankespoor says. “It is designed to be the size of a pallet, so it can maneuver wherever a pallet can in the warehouse.”

The unit still has wheels, though they’re far less prominent. The two wheels are now four, hidden under the corners of the base. They move in any direction, allowing for a broad range of movement and relatively tight turns for a robot of its size. Also included is a “perception mast” to the side of the arm, effectively serving as the unit’s eyes for autonomous movement and picking.

Image Credits: Boston Dynamics

The robot was designed by Boston Dynamics’ warehouse division — now numbering around 100 people. That includes those employees the company picked up as part of its Kinema Systems acquisition, back in 2019. The San Francisco-based company’s 3D vision technology has been incorporated here, as well, to improve Stretch’s picking.

Early applications include truck unloading and order building (effectively combining goods onto a single pallet). Future applications include truck loading, as well, though this is still early stages for the tech. The nature of the system is more plug and play than ground-up automation from companies like Berkshire-Grey. The company is also working to make it compatible with other warehouse systems.

Boston Dynamics plans to build the first units over the summer and will make Stretch available for sale next year. The company’s not ready to talk pricing yet, but Blankespoor says it will be “comparable to a traditional robotic system that you see in factories where you have the robot bolted to the floor.”



from TechCrunch https://ift.tt/3fo1W3J
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support