Node.js:開(kāi)發(fā)資源和技術(shù)棧整理">Node.js:開(kāi)發(fā)資源和技術(shù)棧整理
1014
2022-05-30
RoboWare中文官網(wǎng): http://cn.roboware.me/#/home
github: https://github.com/TonyRobotics/RoboWare-Studio
目前主要有三款軟件產(chǎn)品:Designer+Studio+Viewer,如下
.
.
.
----
RoboWare Studio - Open Source
RoboWare Studio?is an IDE environment for ROS development.It makes the ROS development visual, simple and manageable.It provides ROS workspace management, code editing, building and debugging.It is an IDE, but it will not be an IDE only!
Development
Please refer to the?Development Guide?or?開(kāi)發(fā)指南?for details.
License
Copyright (c) Jinan Tony Robotics Co., Ltd. All rights reserved.
Licensed under the?BSD?License.
----
RoboWare Studio 開(kāi)發(fā)指南
開(kāi)發(fā)者可參照本文檔進(jìn)行所需功能的開(kāi)發(fā)。
RoboWare Studio 基于 Visual Studio Code 的源代碼進(jìn)行二次開(kāi)發(fā),最新版本是 RoboWare Studio 1.2.0 基于 vscode 1.15.1。由于 RoboWare Studio 與 ROS 功能緊密結(jié)合,所以它只有 Linux deb 版本的,只能在 ubuntu 14.04 或更高版本的系統(tǒng)上進(jìn)行開(kāi)發(fā),也只能在裝有 ROS 的 ubuntu 系統(tǒng)上運(yùn)行。
RoboWare Studio 建議的開(kāi)發(fā)環(huán)境:
系統(tǒng)環(huán)境:Ubuntu Linux Desktop v14.04 64bit,或更高版本
ROS環(huán)境:ROS 1,indigo,或更高版本
集成開(kāi)發(fā)環(huán)境:vscode
nodejs:v7.4.0,或更高版本
electron:v1.6.6,或更高版本
RoboWare Studio 在 vscode 的基礎(chǔ)上已增加了哪些功能?
1、檢查打開(kāi)目錄的結(jié)構(gòu),保證打開(kāi)的目錄是一個(gè)合法的 ROS workspace,而普通的目錄不予打開(kāi)。
2、修改“new workspace”功能,使之在創(chuàng)建目錄完成以后調(diào)用 ROS 的 catkin_init_workspace 命令初始化工作區(qū)。
3、分析打開(kāi)的 ROS workspace 目錄結(jié)構(gòu),在 explorer 的右鍵上下文菜單中對(duì)不同的目錄和文件顯示不同的功能,并一一實(shí)現(xiàn)新增的功能。
4、在 explorer 面板頂端增加任務(wù)選擇列表,作為編譯和部署選項(xiàng)。
5、在 explorer 面板底部增加 ROS 節(jié)點(diǎn)列表,用于顯示編譯出的 C++ ROS 節(jié)點(diǎn)文件。
6、在左側(cè)新增一個(gè) ROS 面板,用于顯示一些 ROS 環(huán)境的信息,包括:Active Topic,Active Nodes,Active Services,Installed Packages,Installed Messages,Installed Services 六個(gè)列表。
7、在左側(cè)新增一個(gè) ROS Packages Manager 面板,用于管理 ROS 的官方軟件包。
8、Edit 菜單增加 vim 編輯模式的切換菜單項(xiàng)。
9、增加 ROS 菜單,內(nèi)有一些調(diào)用 ROS 命令的菜單項(xiàng)。
10、ROS message、service、action 文件的語(yǔ)法提示。
11、集成了 python 語(yǔ)法服務(wù)和調(diào)試插件、C++ 語(yǔ)法服務(wù)、CMake 語(yǔ)法提示、vim 編輯模式、C++ 調(diào)試器及遠(yuǎn)程調(diào)試插件。
對(duì) vscode 的源代碼做了哪些修改?
功能1:檢查打開(kāi)的目錄結(jié)構(gòu)
參考位置:/src/vs/code/electron-main/windows.ts:498
代碼說(shuō)明:檢查要打開(kāi)的路徑是否是一個(gè)合法的 ROS workspace,檢查的依據(jù)就是目錄中應(yīng)包含 /src/CMakeLists.txt 符號(hào)鏈接。如果不包含這個(gè)符號(hào)鏈接就會(huì)彈出提示框,終止打開(kāi)路徑。接下來(lái)在目錄中檢查是否存在 .vscode 目錄,如果沒(méi)有則會(huì)創(chuàng)建,并且將所有必要的預(yù)配置文件都寫(xiě)入目錄中。
功能2:創(chuàng)建新的 ROS workspace
參考位置:/src/vs/workbench/parts/files/browser/fileActions.ts:2094
代碼說(shuō)明:調(diào)用 service 的功能:/src/vs/workbench/services/ros/electron-browser/rosService.ts:26。打開(kāi)文件對(duì)話框,創(chuàng)建目錄,調(diào)用 ROS 命令初始化新的 ROS workspace,最后打開(kāi)這個(gè)目錄,切換到新的目錄中。
功能3:分析 ROS workspace 的目錄結(jié)構(gòu),在不同層級(jí)和文件類型上加入不同的上下文菜單
參考位置:/src/vs/workbench/parts/files/browser/fileActions.contribution.ts:63
代碼說(shuō)明:在 stat 常量中可以獲取到 explorer 樹(shù)形控件中選中項(xiàng)的所有屬性,stat.name 是目錄項(xiàng)名,stat.isDirectory 指示是否是目錄,stat.hasChild() 檢查是否包含子目錄項(xiàng)。用這些屬性可以判斷出不同文件的不同分支,在對(duì)應(yīng)的分支中把對(duì)應(yīng)的 Action 實(shí)例放入 actions 數(shù)組,即可為不同文件插入不同的菜單項(xiàng)。
目前實(shí)現(xiàn)的 explorer 上下文菜單功能非常多,這些功能都在 /src/vs/workbench/parts/files/browser/fileActions.ts 中實(shí)現(xiàn),以下是插入到右鍵菜單中的 Action 類名:
AddRosPkgAction, ActivateRosPkgAction, DisactivateRosPkgAction, ActivateAllRosPkgAction, AddIncludeFolderAction, AddSrcFolderAction, AddMsgFolderAction, AddSrvFolderAction, AddActionFolderAction, AddLaunchFolderAction, AddCfgFolderAction, AddCppNodeAction, AddPythonNodeAction, AddCppClassAction, EditRosPkgDepAction, AddHeaderFileAction, AddCppFileAction, AddPyFileAction, AddMsgFileAction, AddSrvFileAction, AddActionFileAction, AddLaunchFileAction, AddCfgFileAction, RunLaunchFileAction, RunRemoteLaunchFileAction, PlayBagFileAction, LoopPlayBagFileAction
功能4:explorer 標(biāo)題欄上的任務(wù)選擇列表
參考位置:/src/vs/workbench/parts/files/browser/explorerViewlet.ts:97
代碼說(shuō)明:在 explorer 的標(biāo)題欄上增加了4個(gè)控件,方便快速地進(jìn)行部署和編譯,它們對(duì)應(yīng)的 action 類:運(yùn)行任務(wù)按鈕:RunBuildTaskAction,任務(wù)列表:RunTaskActionItem,配置任務(wù)按鈕:ConfigureTaskAction,配置遠(yuǎn)程任務(wù)參數(shù)按鈕:ConfigureRemoteTaskAction。
功能5:explorer 面板底部的 ROS 節(jié)點(diǎn)列表
參考位置:/src/vs/workbench/parts/files/browser/views/rosNodeView.ts
代碼說(shuō)明:ROS 節(jié)點(diǎn)列表的 view 類(RosNodeView)實(shí)際上是一個(gè) ExplorerView 類的精簡(jiǎn)版,只用于查看編譯出來(lái)的 C++ ROS 節(jié)點(diǎn)文件。類里重新實(shí)現(xiàn)了 FileRenderer 用于顯示 ROS 節(jié)點(diǎn)的圖標(biāo),重新實(shí)現(xiàn)了 FileFilter 用于過(guò)濾編譯出來(lái)的無(wú)關(guān)文件,另外重新實(shí)現(xiàn)的還有 FileController, ActionProvider, FileAccessibilityProvider 都在 /src/vs/workbench/parts/files/browser/views/rosNodeViewer.ts 中。
重新實(shí)現(xiàn)的 RosNodeView 類在此處被調(diào)用 /src/vs/workbench/parts/files/browser/explorerViewlet.ts:49。顯示在 explorerView 控件的下方。
功能6:ROS 環(huán)境信息面板
參考位置:/src/vs/workbench/parts/ros/browser/rosViewlet.ts
代碼說(shuō)明:RosViewlet 是 ROS 環(huán)境信息面板的 Viewlet 類,其中包含了6個(gè)類似的 View 對(duì)象(rosTopicView, rosNodeView, rosServiceView, rosPackView, rosMsgView, rosSrvView),用于顯示不同的列表。這6個(gè)對(duì)象的共同基類 RosListView 在這里實(shí)現(xiàn) /src/vs/workbench/parts/ros/browser/views/rosListView.ts。其功能是獲取指定的 ROS 命令的執(zhí)行結(jié)果,并且把結(jié)果用列表展示出來(lái)。
功能7:ROS Packages Manager 面板
參考位置:/src/vs/rw/rpm/browser/viewlet.ts
代碼說(shuō)明:該模塊從系統(tǒng)目錄中獲取已安裝的 ROS 官方包,顯示在列表中。未安裝的包可執(zhí)行"sudo apt-get install xxx"命令進(jìn)行安裝,已安裝的包可執(zhí)行"sudo apt-get remove xxx"命令進(jìn)行卸載。
功能8:切換 vim 編輯模式
參考位置:/src/vs/workbench/parts/extensions/browser/extensionsActions.ts:1296
代碼說(shuō)明:RoboWare Studio 采用了"vscodevim.vim" extension 實(shí)現(xiàn)了 vim 編輯模式,加載這個(gè)擴(kuò)展即可打開(kāi) vim 模式,ToggleVimAction 類只是實(shí)現(xiàn)了是否加載"vscodevim.vim"的即時(shí)切換,當(dāng)然,切換以后還需要重新加載整個(gè)窗口。
功能9:ROS 功能菜單
參考位置:/src/vs/code/electron-main/menus.ts:884
代碼說(shuō)明:ROS 有一些專用的工具,都可以用菜單打開(kāi),添加菜單的方法可依照 vscode 的代碼。而 ROS 菜單功能的實(shí)現(xiàn)大部分都實(shí)現(xiàn)在 /src/vs/workbench/parts/ros/browser/rosActions.ts 中。包括一些調(diào)用 ROS 命令的功能,和打開(kāi) ROS 相關(guān)配置文件的功能。
功能10:ROS 文件語(yǔ)法高亮
參考位置:/extensions/ros
代碼說(shuō)明:RoboWare Studio 實(shí)現(xiàn)了一些簡(jiǎn)單的 ROS message、service、action 文件語(yǔ)法高亮,實(shí)現(xiàn)的方法就是采用了 vscode 的語(yǔ)言擴(kuò)展功能。在 /extensions/ros 目錄中的就是該擴(kuò)展的語(yǔ)法配置文件,詳情請(qǐng)參考 vscode 的官方文檔。
功能11:集成第三方擴(kuò)展
參考位置:/extensions
代碼說(shuō)明:RoboWare Studio 去除了一些 vscode 中集成的擴(kuò)展,也增加了一些第三方擴(kuò)展,這些擴(kuò)展都存放在 /extensions 目錄中。內(nèi)容包括:
python 語(yǔ)法及調(diào)試擴(kuò)展:donjayamanne.python-0.6.9
C++ 語(yǔ)法自動(dòng)完成擴(kuò)展:RichardHe.you-complete-me-1.0.36
CMake 語(yǔ)法高亮擴(kuò)展:twxs.cmake-0.0.17
vim 編輯模式擴(kuò)展:vscodevim.vim-0.9.0
gdb 調(diào)試器支持?jǐn)U展:webfreak.debug-0.21.2
C++ 代碼格式化擴(kuò)展:xaver.clang-format-1.5.0
注意:在代碼中修復(fù)了 webfreak.debug 擴(kuò)展中的一個(gè)問(wèn)題,參考:/extensions/webfreak.debug-0.21.2/out/src/backend/mi2/mi2.js:154,在此增加了關(guān)鍵的一行,這樣可以保證在遠(yuǎn)程調(diào)試時(shí)是用登錄模式執(zhí)行 gdb 命令,如果不加入這一行將無(wú)法在遠(yuǎn)程主機(jī)上獲取到 ROS 環(huán)境變量。
另外 RoboWare Studio 對(duì) vscode 做了一些針對(duì) ROS 開(kāi)發(fā)者使用習(xí)慣上的修改,在此不進(jìn)行詳細(xì)描述。開(kāi)發(fā)者可以對(duì)比與 vscode 代碼的不同之處。
濟(jì)南湯尼機(jī)器人科技有限公司
----
具體信息查閱官網(wǎng)最新文檔。
----
或者更具體地說(shuō):我們所有在ROS Answers上發(fā)帖的人都需要你的幫助。
為什么?
不計(jì)算重復(fù)項(xiàng)和易于回答的重復(fù)項(xiàng)(“您是否收集setup.bash?”,“不,pkg X未發(fā)布到ROS版本Y中”),我每周都很容易在ROS Answers上看到100個(gè)新問(wèn)題。
雖然很多都是關(guān)于安裝,部署或集成的問(wèn)題,但是使得ROS Answers真的值得花時(shí)間的是那些詢問(wèn)關(guān)于配置特定軟件包的建議的人。如何調(diào)整ros_control基于驅(qū)動(dòng)fi?的PID?,robot_localization在地下洞穴中選擇哪些傳感器,或者是否可以通過(guò)6D無(wú)人機(jī)實(shí)際使用2D導(dǎo)航堆棧,“?如果我只在一架飛機(jī)上飛行?”。
來(lái)自社區(qū)的大量志愿者通過(guò)回答相當(dāng)多的這些問(wèn)題來(lái)幫助他們,或者至少試圖幫助他們接近解決方案 - 他們應(yīng)該得到很多的認(rèn)可和感謝。然而,我注意到了我在ROS Answers社區(qū)中稱為主題專家的交互次數(shù)有所下降:在特定功能方面擁有豐富經(jīng)驗(yàn)的用戶,如映射,本地化,運(yùn)動(dòng)規(guī)劃,應(yīng)用程序設(shè)計(jì),人機(jī)器人交互,行為建模,系統(tǒng)架構(gòu),大容量數(shù)據(jù)流處理,多機(jī)器人系統(tǒng)等。
正是這些互動(dòng)使得ROS Answers成為無(wú)價(jià)的資源,如果我們失去了這一點(diǎn),那將是不幸的。
因此,這篇文章是一個(gè)行動(dòng)呼吁(或者甚至是一個(gè)參與的呼吁):如果您有一個(gè)或多個(gè)軟件包的使用經(jīng)驗(yàn),并且您認(rèn)為您可以幫助一位可能剛剛起步的ROS用戶,請(qǐng)花15分鐘結(jié)束或開(kāi)始您的一天,檢查是否有任何問(wèn)題可以為您做出貢獻(xiàn)。
即使是一個(gè)簡(jiǎn)短的評(píng)論指出海報(bào)的正確方向,也有可能節(jié)省一些小時(shí)的調(diào)試或搜索。不要低估你可以幫助某人,即使你覺(jué)得自己不是“ROS專家”(無(wú)論這可能意味著什么)。
如果你剛開(kāi)始自己 ,你可以考慮使用ROS Answers來(lái)熟悉ROS:選擇一個(gè)問(wèn)題并試圖弄清楚答案可能是什么。我以這種方式了解了很多有關(guān)ROS的有趣事情,這些我都不知道。
----
API Explorer
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。