![双目摄像头构建点云](https://i-blog.csdnimg.cn/blog_migrate/1d5bb40b873dd912e3eb04a6f498bfec.png)
双目摄像头构建点云
As a remote worker I'm always looking to find better ways to work with the team that don't involve actually going to Seattle. As much as I love/hate Microsoft, I'm not moving. However, this always puts me at a disadvantage. There's only so many places (and only so far) i can go as a remote worker.
作为一名远程工作者,我一直在寻找与团队合作的更好的方法,这些方法实际上并不涉及去西雅图。 尽我所爱/恨微软,我没有动。 但是,这总是使我处于不利地位。 作为远程工作者,我只能去的地方很多(而且到目前为止)。
When Phil and I made the "HanselPortal," essentially a persistent always-on Skype Chat, that gave folks a place to drop by and chat (at least those two lazy to just call me via Office Communicator) but there's already two people in Phil's office, I can't move (I'm a desktop computer) and my field of view is very small. Phil has a small inside office and I can't exactly hold meetings. It's a start, but it's not perfect.
当Phil和我进行“ HanselPortal”(本质上是永久性的Skype即时聊天)时,这为人们提供了一个闲聊和聊天的地方(至少这两个懒惰通过Office Communicator打电话给我),但是Phil已有两个人办公室,我无法移动(我是台式计算机),并且视野很小。 菲尔的内部办公室很小,我无法完全举行会议。 这是一个开始,但并不完美。
I stumbled upon the Embodied Social Proxies project at Microsoft Research and got a tour from their team. While their system costs about $3000 to $4000 (While I'd love an Axis 213 PTZ camera I can't afford the $1300 and I'm still trying to convince the boss.) and has a great cart, monitor and camera, I figured I could at least do a proof of concept on the cheap. And by proof of concept, I mean, in the same way my 1963 Ford Falcon was a proof of concept; I kept driving it until it stops, then started walking.
我偶然发现了Microsoft Research的Emboded Social Proxies项目,并从他们的团队中进行了参观。 虽然他们的系统售价约为$ 3000到$ 4000(虽然我会喜欢Axis 213 PTZ摄像机,但我负担不起$ 1300,但我仍在努力说服老板。)而且我认为它的手推车,显示器和摄像机很棒我至少可以便宜地做一个概念证明。 通过概念验证,我的意思是,以同样的方式,我1963年的福特猎鹰是概念验证; 我一直开车直到它停下来,然后开始走路。
想法 (The Idea)
While the name "Embodied Social Proxy" is very PHDy and very Researchy, the idea is that you want a physical stand-in for yourself. Sure, people can call me and contact me in any of a dozen ways and honestly, it's one click at Microsoft. I'm in the address list, I'm on chat, and I've even got a 5 digit phone extension. I've done all this and more to integrate with headquarters. However, out of sight, out of mind is really true. People subconsciously or not like to associate something physical with you. So, until I can get a 6 foot tall mobile video conferencing robot a $20 cart with a laptop super-glued to it might help. I'll set it up in an office in Building 5 so folks can "stop by." I can be "brought" to meetings where perhaps setting up a RoundTable isn't feasible. Maybe it'll work, perhaps not. But I'm going to continue to try.
尽管“ Embodied Social Proxy”的名称非常有意思,而且非常具有研究性,但其想法是您希望自己有一个实际的替身。 当然,人们可以通过多种方式给我打电话并与我联系,说实话,这是Microsoft的一键点击。 我在地址列表中,正在聊天,甚至还有5位数的电话分机。 我已经完成了所有这些工作,并与总部整合在一起。 但是,视线之外,头脑真的是真的。 人们在潜意识中或不喜欢将某些自然事物与您联系起来。 因此,在我能买到一个6英尺高的移动视频会议机器人之前,一个20美元的带有超级笔记本电脑的推车可能会有所帮助。 我将其设置在5号楼的办公室中,以便人们可以“路过”。 我可能会被“带到”可能无法建立圆桌会议的会议。 也许会起作用,也许不会。 但我将继续尝试。
问题所在 (The Problems )
The researches have done many iterations and discovered many things. You want "eye gaze" to be natural so you can tell when folks are looking at you and they can tell when you're looking at them. They recognize that you need to "look around" and watch whiteboards, so being able to pan and zoom around is important.
研究进行了许多迭代,发现了很多东西。 您希望“眼睛凝视”是自然的,这样您就可以告诉人们何时看着您,而他们可以告诉您何时看着他们。 他们认识到您需要“环顾四周”并观看白板,因此能够进行平移和缩放非常重要。
Security is important also. We don't want a domain-logged-in real user on a mobile cart wandering around Microsoft. However, as a remote person I need to be able to start up the camera without having to ask a person to do it. I need to control as much of the cart as possible remotely.
安全性也很重要。 我们不希望移动推车上的域登录真实用户在Microsoft周围徘徊。 但是,作为远程人,我需要能够启动相机而不必要求别人去做。 我需要远程控制尽可能多的购物车。
通用解决方案 (The General Solution)
I've got Office Communicator "corporate chat" on my side, so that makes things easier. If you wanted to generalize this solution you could use Skype or other things. I also have Exchange so my free/busy details are available programmatically. Again, this could be Google Calendar, or whatever.
我身边有Office Communicator“公司聊天”,因此使事情变得更容易。 如果您想推广此解决方案,则可以使用Skype或其他工具。 我也有Exchange,因此可以通过编程方式获得我的忙/闲详细信息。 同样,这可以是Google日历,也可以是其他。
I'll have a laptop mounted (not movable) to a cart. It'll include an HD Webcam at a fixed position (no zoom or pan) and a second IP camera that allows Pan/Tilt/Zoom (PTZ). This should let me look around a bit. This is an IP camera because there are no good pan/tilt/zoom USB cameras on the market. PTZ cameras can be $200 or up to $3000 and more. Mine's $200.
我将有一台笔记本电脑安装在推车上(不可移动)。 它将包括一个固定位置的高清网络摄像头(无变焦或平移)和另一个允许平移/倾斜/缩放(PTZ)的IP摄像机。 这应该让我环顾四周。 这是IP摄像机,因为市场上没有好的平移/倾斜/缩放USB摄像机。 PTZ摄像机的价格可能在200美元到3000美元之间,甚至更高。 我的200美元。
I need the laptop to have both wired and wireless. Here's where things get a little weird. The camera will have one IP and the laptop will have another. However, the laptop will have a security certificate that will allow it to get on the network while the camera will not only not be reliable, but it'll be hard to find from a DNS perspective. I would like to be able to access both the camera and the machine as a unit, reliably. I solve that below, in what I think is a pretty clever way.
我需要笔记本电脑同时具有有线和无线功能。 这是有些奇怪的地方。 相机将具有一个IP,笔记本电脑将具有另一个IP。 但是,笔记本电脑将具有安全证书,使它可以进入网络,而摄像机不仅不可靠,而且从DNS角度很难找到。 我希望能够可靠地同时访问相机和机器。 我以一种非常聪明的方式在下面解决了这个问题。
(便宜的)硬件 (The (Cheap) Hardware)
The hardware for my build is beyond
cheesy
cheap.
为我打造的硬件超越
俗气
便宜。
Rolling Cart from Office Depot: Height-Adjustable Mobile Laptop Cart, 33 1/16"H x 23 5/8"W x 15 3/4"D, Black/Silver - On sale for $20
Office Depot的滚动推车:可调高度的便携式笔记本电脑推车,33 1/16“ H x 23 5/8” W x 15 3/4“ D,黑色/银色-特价$ 20
APC UPS from Amazon: APC BE750G 10-Outlet Power-Saving Uninterruptible Power Supply - Yes, I realize we're talking about a laptop on a UPS, but this'll give me 4-6 more hours of power if I get stuck, plus it'll power the secondary IP PTZ camera and the Hub
亚马逊的APC UPS : APC BE750G 10出口节电不间断电源-是的,我知道我们在谈论UPS上的笔记本电脑,但是如果卡住,它将给我4-6个小时的电力,再加上它将为辅助IP PTZ摄像机和集线器供电
IP Camera: Panasonic BL-C111A Network Camera Wired by Panasonic
WebCam: Microsoft LifeCam Cinema HD by Microsoft - HD or not (perhaps you don't have the CPU or bandwidth, this is a crisp, clear camera.
网络摄像头: Microsoft发行的Microsoft LifeCam Cinema HD-是否高清(也许您没有CPU或带宽,这是一台清晰的摄像机。
Laptop: I used a crappy Dell Latitude D820 I had lying around. Decent, but not awesome.
笔记本电脑:我使用了躺在附近的笨拙的Dell Latitude D820。 不错,但是不很棒。
Zip Cable Ties: Buttloads of them. Deluxe Cable Tie Kit - 1,000 Pieces.
拉链扎带:它们的重担。 豪华扎带套件-1,000件。
A weight and pipe from a $14 Steadycam to give my IP Camera some height.
14美元的Steadycam提供的重量和烟斗,可以为我的IP摄像机提供一些高度。
3M Fasteners, I used like 12-16 strips to hold down the laptop and cameras. 3m Company 17202 "Command" Small Interlocking Fasteners & Strips
3M紧固件,我使用了12-16条条来固定笔记本电脑和相机。 3m Company 17202“ Command”小型互锁紧固件和胶条
软体(The Software)
There's a custom WPF-based .NET client written by the MS Research Team. I'm gonna continue to bug them to let me release the code or Open Source it or something. I don't think the software is the important part, it's the idea. The software is a little tricky and cobbled, but workable.
MS研究团队编写了一个基于WPF的自定义.NET客户端。 我将继续给他们打扰,让我发布代码或将其开源。 我不认为软件是重要的部分,而是想法。 该软件有些棘手,但已易用,但可行。
与Office Communicator交谈 (Talking to Office Communicator)
The machine is running on a local account that isn't Administrator. It's set to log in automatically, but the account has access to nothing. There's another Non-User Domain Account called "hanselcart" but while this account is in the Active Directory, but also has no access to resources or anything. That account has had Office Communicator access turn on so I can chat with it. Communicator is set to start up automatically as well. It's that ability to chat (really "address") the cart that makes it reasonably seamless.
机器正在不是管理员的本地帐户上运行。 它设置为自动登录,但是该帐户无权访问。 还有一个名为“ hanselcart”的非用户域帐户,但是尽管该帐户位于Active Directory中,但也无权访问资源或任何内容。 该帐户已打开Office Communicator访问权限,因此我可以与其聊天。 Communicator也设置为自动启动。 聊天(真的是“地址”)购物车的这种能力使购物车变得相当无缝。
You'll see that if I'm not currently visible on the screen, the program makes a call to Exchange Web Services and uses the Office Communicator Presence information to show where I am and what I'm doing generally, as well as a way to call me.
您将看到,如果我当前在屏幕上不可见,该程序将调用Exchange Web Services,并使用Office Communicator Presence信息显示我在哪里以及通常在做什么,以及一种方式给我打电话
There's an Office Communicator SDK so you can automate and listen to Communicator:
有一个Office Communicator SDK,因此您可以自动化并收听Communicator:
this.messenger = new Messenger();
this.messenger.OnSignin += new DMessengerEvents_OnSigninEventHandler(messenger_OnSignin);
this.messenger.OnContactStatusChange += new DMessengerEvents_OnContactStatusChangeEventHandler(messenger_OnContactStatusChange);
this.messenger.OnIMWindowCreated += new DMessengerEvents_OnIMWindowCreatedEventHandler(messenger_OnIMWindowCreated);
this.messenger.OnIMWindowDestroyed += new DMessengerEvents_OnIMWindowDestroyedEventHandler(messenger_OnIMWindowDestroyed);
this.messenger.OnMyStatusChange += new DMessengerEvents_OnMyStatusChangeEventHandler(messenger_OnMyStatusChange);
this.messenger.AutoSignin();
The code is very COM-ish, which is unfortunate, but it's easy enough to write to. If I chat "Start Video" to the cart, the program sees it and calls me back:
该代码非常像COM,很不幸,但是编写起来很容易。 如果我在购物车上聊天“开始视频”,程序会看到它并给我回电:
void StartVideo()
{
IMessengerAdvanced advanced = (IMessengerAdvanced) this.messenger;
object result = advanced.StartConversation(CONVERSATION_TYPE.CONVERSATION_TYPE_VIDEO, this.contact, null, null, "1", null);
// Float a "hang up" window on top
if(hangupWindow == null) {
hangupWindow = new HangupWindow(MachineName);
hangupWindow.Closed += new EventHandler(hangupWindow_Closed);
hangupWindow.Owner = this;
// put the hang up window top-right corner
hangupWindow.Top = 0;
hangupWindow.Left = System.Windows.SystemParameters.PrimaryScreenWidth - hangupWindow.Width;
}
// Set the video to full-screen
maxVideoTimer.Start();
hangupWindow.Show();
}
The FullScreen part is a horrific SendKeys hack to press F5 for me until I talk to the OC team and figure out how to do this programmatically.
全屏部分是一个可怕的SendKeys骇客,要为我按下F5,直到我与OC团队交谈并找出如何以编程方式进行操作为止。
如何寻址IP摄像机- “这是带有IIS的AAR的WebCam的WebFarm” (How to Address the IP Camera - "It's a WebFarm of WebCams with IIS's AAR")
I'm rather proud of this hack. Let's say the cart is called http://hanselcart. I'd like to be able to address the WebCam reliably even though it's not technically a managed-object on the MS network. Essentially, if the cart itself is on and online, I'd like to use the cart to get to the camera.
我为这次骇客感到骄傲。 假设购物车名为http:// hanselcart 。 我希望能够可靠地解决WebCam,即使从技术上讲它不是MS网络上的托管对象。 本质上,如果购物车本身是在线且在线的,我想使用购物车到达相机。
Then I remember that IIS (Internet Information Services, our Web Server) has an insanely powerful free module you can download called Application Request Routing or ARR. Regardless of what you think of the name IIS ARR, it really takes IIS to the next level. Think about it next time you are trying to do something tricky with IIS. It adds a bunch of features, but I figured I needed a Reverse Proxy, which ARR can do.
然后,我记得IIS(Internet信息服务,我们的Web服务器)有一个功能强大的免费模块,您可以下载该模块,称为Application Request Routing或ARR 。 不管您对IIS ARR的名称有什么看法,它确实将IIS提升到了一个新的水平。 下次尝试使用IIS做一些棘手的事情时,请考虑一下。 它增加了很多功能,但是我认为我需要一个反向代理,ARR可以做到。
Instead, I made my local IIS a WebFarm with one node, the WebCam. ;) I put the Webcam on a local network "behind" the laptop (192.168.x.x) and told my Laptop's instance of IIS to route all traffic to the Webcam. In fact, ARR smartly did it for me when i used the Add WebFarm Wizard. Whole thing took 5 minutes, counting download time.
取而代之的是,我将本地IIS设置为具有一个节点WebCam的WebFarm。 ;)我将网络摄像头放在便携式计算机(192.168.xx)后面的本地网络上,并告诉我的便携式计算机的IIS实例将所有流量路由到该网络摄像头。 实际上,当我使用“添加WebFarm向导”时,ARR巧妙地为我做到了。 整个过程花了5分钟,计算下载时间。
NOTE: I did also try a tool called WebcamXP, and while it's amazingly cool for other things and has some really diverse features around Webcams, especially IP webcams, it used about 30% CPU for what I wanted, while IIS's ARR used 1-2%.
注意:我也确实尝试了一个名为WebcamXP的工具,虽然它在其他方面非常出色,并且具有围绕网络摄像头的某些真正多样化的功能,尤其是IP网络摄像头,但它使用了大约30%的CPU来满足我的需求,而IIS的ARR使用了1-2。 %。
So now, I can just hit the cart by name and I'll get the IP Webcam. This Webcam has its own HTTP server and includes a quasi-RESTful API for Pan/Tilt/Zoom so I can video chat via Office Communicator and look around with the web interface of the IP Cam.
所以现在,我只需按名称输入即可,我将获得IP网络摄像头。 该网络摄像头拥有自己的HTTP服务器,并包含用于平移/倾斜/缩放的准RESTful API,因此我可以通过Office Communicator进行视频聊天,并可以使用IP Cam的Web界面进行浏览。
Here's a few shots of the cart itself. I'll be driving it up to Seattle for testing and installation this week.
这是购物车本身的一些镜头。 我本周将把它带到西雅图进行测试和安装。
Thanks to Gina and John and especially Peter Provost for helping me (virtually from Dallas) build it. Wish me luck!
感谢吉娜(Gina)和约翰(John),尤其是彼得·普罗沃斯特(Peter Provost)帮助我(实际上来自达拉斯)来建造它。 祝我好运!
Related Links
相关链接
VIDEO: Hanselminutes on 9: Embodied Social Proxies (and Remote Video Heads!) with Microsoft Research
YOUTUBE VIDEO: Embodied Social Proxy: Connecting Hub-and-Satellite Teams
YOUTUBE视频:经验丰富的社交代理:连接中心和卫星团队
Virtual Camaraderie - A Persistent Video "Portal" for the Remote Worker
Microsoft Research PDF - Can We Make "Distance Matter" Less?
翻译自: https://www.hanselman.com/blog/building-an-embodied-social-proxy-or-crazy-webcam-remote-cart-thing
双目摄像头构建点云