代码改变世界

[置顶]The Gene of Bitizens

2019-03-31 15:02 by AndrewCja, 329 阅读, 0 推荐, 收藏, 编辑
摘要:1. Summary This document is about the general idea of the architectural design of the Bitizens game, the detail logic in the code may be more complica 阅读全文

[置顶]我们的团队

2018-08-19 10:16 by AndrewCja, 429 阅读, 0 推荐, 收藏, 编辑
摘要:首个区块链3D艺术品。 https://www.cnblogs.com/andycja/p/10631408.html https://medium.com/@BitGuild https://medium.com/the-notice-board https://twitter.com/BitGu 阅读全文

[置顶]译作感想

2017-08-30 18:23 by AndrewCja, 325 阅读, 1 推荐, 收藏, 编辑
摘要:英文有各种从句等结构,可以有长句。中文没有这些清晰的结构,建议中文尽量不要有长句。 不喜欢“将...进行...” 不喜欢“被...所...”,一般没有主语时译文才考虑用被动语态。 译文里,短语独立成体,不要被隔开。WebGL builds cannot be debugged in MonoDeve 阅读全文

[置顶]很酷的页面布局框架

2012-03-12 22:34 by AndrewCja, 5809 阅读, 6 推荐, 收藏, 编辑
摘要:建高楼大厦时,我们总是先用钢筋水泥搭好骨架,然后再加砖添瓦,布置每套房屋。编写一个网页也是这样,须先将布局框架搭好稳固,之后才能游刃有余。本博文阐述如何实现了两栏布局(main栏和sub栏),三栏布局(main栏、sub栏和extra栏),以及布局中各栏的排列顺序。 本示例布局框架具有以下特性: 跨 阅读全文

[置顶]Web中的Tip组件实现

2011-12-28 08:51 by AndrewCja, 2186 阅读, 4 推荐, 收藏, 编辑
摘要:Tip组件下载 Tip是页面设计中最常见不过的组件,但要从无到有实现一个优秀的tip组件并不是一件容易的事情。本文介绍了本人编写的tip组件,并提供源码供下载。您可以直接使用,但希望您能保留代码中的作者注释。: ) 本tip组件具有以下特性: 1、兼容各主流浏览器。2、高度自适应。3、有上方向和下方 阅读全文

[置顶]《学习HTML5游戏编程》译记

2011-12-11 10:56 by AndrewCja, 1732 阅读, 1 推荐, 收藏, 编辑
摘要:《学习HTML5游戏编程》译记我在2011年11月份中旬参与了北京华章图文信息有限公司提供的《Learning HTML5 Game Programming》一书的试译(前言和第一章前两页),并于11月下旬接到试译通过的通知,最终签约了该书的委托翻译合同。全书共250页左右,翻译期限为3个月。这个翻译任务对我来说是个很大的挑战。因为是在年底,身为程序员的我工作非常繁忙,再加上我没接触过HTML5游戏编程技术,阅读起来都着实费劲。经过两周出头的艰苦奋斗,只草草翻译完书的前两章,而且只是初译,还没有审校。由于种种原因,我无奈地做出了决定:这就是我此次翻译的全部了,就此打住吧。放弃翻译的原因有几个: 阅读全文

[置顶][译] 清除浮动的新方法

2011-11-06 22:49 by AndrewCja, 1782 阅读, 2 推荐, 收藏, 编辑
摘要:怎样不用结构化标记而能清除浮动Return to PIE(这个清除技术是由csscreator.com的Tony Aslett开发的。从这儿可以找到最早为人知的最基本的:after想法。)请注意,从2008-3-4起,您正在阅读的这篇文章已经算是有些陈旧了。因为从这边文章被创作之日起,关于清除浮动的更多薪信息开始出现。你会觉得这里的另外一篇文章也非常有趣。 清除浮动的过时方法当一个浮动元素被包含在一个具有可见边框和背景的盒子内时,浮动元素并不能将包含盒子的底边向下撑开。事实上,浮动元素被包含盒子忽略了,从而像一面旗子一样挂在包含盒子的底边之下。只熟悉Windows下IE的人会摇头说:“并不会那 阅读全文

[置顶]分页控件的web标准实现(始终显示第一页和最后一页的页码)

2011-11-01 20:14 by AndrewCja, 1961 阅读, 1 推荐, 收藏, 编辑
摘要:分页栏组件下载分页栏是网页上最常见不过的一个组件,本博文给出分页栏的web2.0标准示例,并作简要分析。本分页栏的界面效果如下图所示:本分页栏组件具有以下特性:1、不论当前是哪一页,分页栏始终显示第一页的页码和最后一页的页码(如上图所示)。这样,界面上不需要额外的文字说明总共有多少页,用户可以从最后的页码知道总共有多少页;界面上也不需要最前页和最后页两个按钮,因为始终显示第一页的页码和最后一页的页码,用户能方便地导航。2、使展现的页码个数(省略符也算一个)始终固定。如下面两图所示,当前页码为1或9(或任意其他数字)时,展现的页码个数都为11个。这样,下一页按钮的位置始终保持不变,在做Ajax分 阅读全文

The TTI / ASRSI project

2022-08-20 16:57 by AndrewCja, 30 阅读, 0 推荐, 收藏, 编辑

Some Thoughts on the TTI / ASRS (Automated Storage and Retrieval Systems) Project

The Slate River Systems Inc. | Warehouse Solutions | SRSI

 https://www.redblobgames.com/pathfinding/a-star/introduction.html

 

Hi kk.org, I'm writing this as a wish that it can help make the new project ASRS progress smoothly, also as a way to practice my English. Now I decide to exclusively send the article to you, with the hope that this could be helpful to the hardware side.

 

I'm writing this also because I feel it's quite risky on the hardware side of the new project -- New Kind of Robots, Motion, Calculation, Accuracy; Building Steel Structure, Rails, Elevators; And if a robot gets stuck, it won't be on the ground, we need to lift human up to the air to handle problems... -- Especially at the very beginning when I didn't know/sure there are ways (laser, holes on rails) to help accurately determine the position of a robot, I felt the risk even deeper.

 

I'm writing this also because I feel it's quite risky on the hardware side of the new project -- New Kind of Robots, Motion, Calculation, Accuracy; Building Steel Frame Structure, Rails, Elevators, etc.; and if a robot gets stuck, it won't be on the ground, we need to lift human up to the air to handle the problem -- Especially at the very beginning when I didn't know/sure there are ways (laser, holes on rails) to help accurately determine the position of a robot, I felt the risk even deeper.

 

  1. How to present multi-layer storage space on a web page?

 

As what is shown in the video above, the physical space of the ASRS system is a steel frame structure which has multi-layers. According to the design, we may consider each layer somewhat resembles the ground we use in FM, so for each layer we can create a distinct map in FM to present it.

 

I agree with this methodology, as by now we are not a powerful company, it's better that we reuse what we already have and do the modification needed to fulfill the requirements of the new project instead of building everything up from the ground again. So we won't do it in a 3D way, no "Metaverse" for the moment. : )

 

In addition to the presentation of each storage layer using the existing grid map technology, we need to do the user interface and software/physical control of the elevators that lift robots and goods among different storage layers. 

 

   2. Still use Grid (Integer XY Coordinate System)?

 

As what we have done for Allen (and Nepa), Grid is suitable for QR code based ground. Grid is an integer location (x, y) based coordinate system that use A* pathfinding algorithm to find the shortest path between point A and point B in the grid. The question is, can we still use this for the ASRS project which has no QR codes in the air for robots to scan for the (x, y) info and tell RCS where the robot is?

 

We will still use Grid System and A* Pathfinding to direct robots where to go, but need to do some modification to the protocol for the communication between RCS and the robots. That is, although robots have no QR codes to tell the location (x, y) they are, but they can tell RCS how far in physical length they have moved, and RCS will convert the physical length into integer location (x, y) in the grid, then do the grid pathfinding. Also, conversely, instead of telling a robot which (x, y) to move to, RCS tells the robot how far in physical length it should move.

 

Be more detailed, in FM's MapBuilder when building the map, User will be required to set the physical length between every two Keep points. (e.g. User clicks on Keep point A, and then can config the physical length between point A and each of its four adjacent Keep points in its surrounding directions).

 

And between Keep point A and its adjacent Keep point B (or C/D/E), there are a specific number of Path points, then RCS can figure out how many millimeters each Path point represents, by dividing the physical length User sets between A and B with the number of Path points in between. So when Robot tells RCS how far in physical length it has moved from Keep point A, RCS can tell what the integer x coordinate is in the grid by dividing that physical length with that of each path cell.

 

 

--------------------------------

 

Sorry for the interruption of your weekend and thank you very much for reading this far. Hope this can be helpful for your understanding of the whole system. It should be easy to understand the above if I am not too foolish in thinking and bad at writing. And it seems not that risky, right? (At least for the software side it could be ok)

 

I know little about motion control and hardware, I don't even know if there are any fundamental things that I deserve to have a look at. But on the software side, I know something that is really classic and in good writing. If you would like, please go here https://www.redblobgames.com/pathfinding/a-star/introduction.html

 

---------------------------------

 

 

As mentioned earlier, the reason I originally began writing this article is partially because at the time I was not sure that there are ways (laser, holes on rails) to help diminish the deviation of mileage calculation and determine the position of a robot with accuracy, and thus felt the risk was mainly on the hardware side.

 

What follows is my original thoughts/writing before I became sure about the laser positioning thing (Only until the latest software meeting, I was told laser positioning is rightly the tool for ASRS). The writing below is outdated, and can be over-complicating your thinking. It's here for completeness only. You may simply ignore it, or focus on the number 3, 4 points only.

 

  1. Still use Grid System (Integer XY Coordinate System)?

 

As what we have done for Allen (and Nepa), Grid is suitable for the identical cell-sized and QR code based ground. But for the ASRS project, as you can see from the video link blow, the rails may have arbitrary lengths, and so may not be easily divided into identical sized cells.

 

The design is to still use the integer xy coordinate grid system for ASRS, but with some improvements to support new requirements. That is, the map will still have identical-sized cells rendered on the web page, but a cell may correspond to 1 meter in the real world, while another cell with the same rendered size on the web page may correspond to 1.7 or 2 meters, etc.

 

(FM's MapBuilder can let User set the corresponding physical length for a specific cell, but the cell will render with the same size on the web page as other cells). As you might wonder, can FM render a proportionally scaled cell on the map? This is technically possible but hard for the frontend to implement (this is the reason I haven't mentioned proportional map rendering to other people yet, with also the consideration that it's not the key point, the key point is whether the hardware side can accept the XY Grid System with varied physical length info for each (x, y) location, but with no QR codes physically for robots to scan for integer xy info).

 

  2. How do robots know their xy location without scanning QR codes?

 

RCS has decided to use the Grid System (which is currently used for QR code floor) for the ASRS Project with some modification to support cells with varied sizes in the real world. 

 

I know little about hardware and motion control, but with respect to the hardship we endured in the Allen project, I think this one of the most risky things for the hardware team. Scanning QR codes is somewhat easier and accurate, but figuring out xy coordinate from speed or mileage should be extremely hard, especially when the robot is moving way more faster on the rails, it seems impossible to be accurate. Because the deviation/inaccuracy of the mileage calculation by robots will constantly accumulate along the way.

 

Yet to design the new Grid Protocol to work with the hardware motion. I think the new protocol will kind of tell the robot from location x to location x + 1 you will need to move 1 meter; and from location x + 1 to x + 2, you will need to move 1.7 meters, etc. For short distance, it seems this may work; but as the robot continues to run further, the inaccuracy may accumulate to be larger and larger along the way.

 

  3. How to reduce the risk and progress smoothly?

 

To test the new robot motion control and positioning protocol, before building up the steel scaffolding, how about we get rid of the QR codes on the ground, and see if robots can do the motion and other things accurately and stably or not on the ground?

 

This is the simple way I can think of to test the design/protocol that we will make to direct robot movements without QR codes. Before the manufacturing of ASRS robots which run on rails, we may firstly modify the existing robots to run on the ground with no QR codes to scan against, and see whether we can solve the hard and key points or not.

     

Hope this can lower the risk level of the new project.

 

  4. Can use laser to help accurately determine the location of robots?

 

As for accurate positioning, can we use laser detection? I think laser is more sensitive and quick to detect than QR codes, the problem is, can we store information (x, y, or mileage, etc.) in laser?

 

If not, then I think the hardware side should be way more risky, as the software side is still based on A* grid pathfinding, but the hardware team needs to produce new kind of robots, the steel frame structure robots run on, elevators to lift robots, and use easily inaccurate mileage calculation to locate itself instead of QR codes. 

 

 

Backend Serverside Programing (Nginx)

2022-05-29 09:19 by AndrewCja, 45 阅读, 0 推荐, 收藏, 编辑
摘要:upstream auth.backend { server 172.18.4.197:10000; server 172.18.4.198:10000; } map $http_origin $cors_list { default 0; ~127.0.0.1 $http_origin; ~www 阅读全文

Everything Docker

2022-03-02 16:11 by AndrewCja, 93 阅读, 0 推荐, 收藏, 编辑
摘要:>>>>DockerfileARGARG <name>[=<default value>]The ARG instruction defines a variable that users can pass at build-time to the builder with the docker b 阅读全文

Redis 笔记

2021-03-07 14:40 by AndrewCja, 66 阅读, 0 推荐, 收藏, 编辑
摘要:Redis 笔记 // Redis is an in-memory but persistent on disk database, so it represents a different trade off where very high write and read speed is achi 阅读全文

React Native

2021-01-24 14:17 by AndrewCja, 185 阅读, 0 推荐, 收藏, 编辑
摘要:React Native HOCsconst EnhancedComponent = higherOrderComponent(WrappedComponent);Use HOCs For Cross-Cutting ConcernsWe previously recommended mixins 阅读全文

docker run 命令

2021-01-24 14:08 by AndrewCja, 70 阅读, 0 推荐, 收藏, 编辑
摘要:docker run 命令 Detached (-d)To start a container in detached mode, you use -d=true or just -d option. By design, containers started in detached mode ex 阅读全文

Networking from the container's point of view

2020-12-20 20:53 by AndrewCja, 105 阅读, 0 推荐, 收藏, 编辑
摘要:Networking from the container's point of view Published portsThe type of network a container uses, whether it is a bridge, an overlay, a macvlan netwo 阅读全文

Application Data in Docker 笔记

2020-12-12 15:59 by AndrewCja, 90 阅读, 0 推荐, 收藏, 编辑
摘要:Application Data in Docker By default all files created inside a container are stored on a writable container layer. This means that: The data doesn't 阅读全文

MQTT 笔记

2020-11-22 13:12 by AndrewCja, 140 阅读, 0 推荐, 收藏, 编辑
摘要:MQTT MQTT Over WebSocketsWebsockets allows you to receive MQTT data directly into a web browser. Q- Are messages stored on the broker?A- Yes but only 阅读全文

Docker Networks 笔记

2020-11-22 13:05 by AndrewCja, 347 阅读, 0 推荐, 收藏, 编辑
摘要:Docker Networks Bridge NetworksThe Docker bridge driver automatically installs rules in the host machine so that containers on different bridge networ 阅读全文
点击右上角即可分享
微信分享提示