了解ROS是深入學(xué)習(xí)ROS和進(jìn)行ROS應(yīng)用開發(fā)的基礎(chǔ),硅步機(jī)器人以連載的形式對ROS的基本概念、常用命令及開發(fā)應(yīng)用進(jìn)行由淺入深的介紹。本期介紹3D可視化工具RViz。
RViz對數(shù)據(jù)進(jìn)行三維可視化并進(jìn)行交互操作,還常用于機(jī)器人的運(yùn)動規(guī)劃,包括機(jī)械臂運(yùn)動規(guī)劃、移動機(jī)器人路徑規(guī)劃等。本期主要內(nèi)容有:RViz的安裝和啟動、顯示面板、視圖面板和坐標(biāo)系。
1.Rviz的安裝和啟動
如果你還沒有安裝Rviz,請首先運(yùn)行下面的指令:
sudo apt-get install ros-indigo-rviz
運(yùn)行下面的指令啟動Rviz:
source /opt/ros/indigo/setup.bash
roscore &
rosrun rviz rviz
Rviz首次啟動時(shí),你會看到圖5-1所示的空白界面:
圖1 Rviz啟動界面
圖1中間黑色的區(qū)域?yàn)?D視圖,這里由于尚未載入可視化對象,所以是空的。左側(cè)為顯示列表,目前僅顯示全局選項(xiàng)和時(shí)間視圖,右側(cè)是視圖和選擇面板。
2.顯示(Displays)面板
顯示面板中間有一個(gè)包含了模擬環(huán)境下不同參數(shù)項(xiàng)的樹形列表,該列表中的選項(xiàng)包括點(diǎn)云、軸、網(wǎng)格、標(biāo)記等。
2.1添加新的顯示
要添加一個(gè)新的顯示,點(diǎn)擊底部的“Add”按鈕:
Rviz將會彈出如下圖所示的新顯示對話框:
該對話框包括三項(xiàng)內(nèi)容:顯示類型、描述和顯示名稱。顯示類型列表給出了該顯示將要可視化的數(shù)據(jù)類型,描述給出了所選中顯示的簡要介紹,而顯示名稱則需要由用戶輸入一個(gè)獨(dú)一無二的名字。例如,如果你的機(jī)器人有兩個(gè)激光掃描儀,你需要?jiǎng)?chuàng)建兩個(gè)“Laser Scan”的顯示,可以將它們分別命名為“Lase Base”和“Laser head”。
2.2 顯示屬性
每個(gè)顯示都有自己的屬性列表(如圖4),你可根據(jù)需要對其屬性進(jìn)行修改。
2.3 顯示狀態(tài)
每一顯示都有一個(gè)相應(yīng)的狀態(tài)與之對應(yīng),通過狀態(tài)可以了解某一顯示是否正常。狀態(tài)一共有四種:OK(正常),Warning(警告),Error(錯(cuò)誤)和Disabled(禁用)。不同的狀態(tài)用不同的背景色表示(如圖5),黑色為OK,黃色為Warning,紅色為Error,灰色為Disabled。
2.4內(nèi)置顯示類型
Rviz內(nèi)置了許多顯示類型,如表1所示。
表1 部分Rviz內(nèi)置的顯示
顯示類型 |
描述 |
消息 |
Axes(軸) |
顯示一組坐標(biāo)軸 |
|
Camera(攝像機(jī)) |
從該攝像機(jī)的視角創(chuàng)建一個(gè)新的渲染窗口,在其上覆蓋原來的圖像 |
sensor_msgs/Image sensor_msgs/CameraInfo |
Grid(網(wǎng)格) |
顯示2D或3D網(wǎng)格 |
|
Grid Cells(網(wǎng)格單元) |
從網(wǎng)格中提取單元,通常為導(dǎo)航棧代價(jià)地圖中的障礙 |
nav_msgs/GridCells |
Image(圖像) |
創(chuàng)建一個(gè)帶有圖像的渲染窗口。與Camera顯示不同,該顯示不使用CameraInfo。 |
sensor_msgs/Image |
InteractiveMarker(互動標(biāo)記) |
從一個(gè)或多個(gè)交互標(biāo)記服務(wù)器顯示3D對象,允許使用鼠標(biāo)與它們交互。 |
visualization_msgs/InteractiveMarker |
Laser Scan(激光掃描) |
顯示來自激光掃描儀的數(shù)據(jù),帶有不同的渲染和累積選項(xiàng)。 |
sensor_msgs/LaserScan |
Map(地圖) |
在地平面顯示地圖 |
nav_msgs/OccupancyGrid |
Markers(標(biāo)記) |
允許程序員通過主題顯示任意的原始形狀 |
visualization_msgs/Marker visualization_msgs/MarkerArray |
Path(路徑) |
顯示來自導(dǎo)航棧的路徑 |
nav_msgs/Path |
Point(點(diǎn)) |
將點(diǎn)繪制成一個(gè)小球體 |
geometry_msgs/PointStamped |
Pose(位姿) |
將位姿繪制成箭頭或軸 |
geometry_msgs/PointStamped |
Pose Array(位姿陣列) |
繪制箭頭“云”,每一個(gè)箭頭代表位姿陣列中的一個(gè)位姿 |
geometry_msgs/PoseArray |
Point Cloud(點(diǎn)云) |
顯示來自點(diǎn)云的數(shù)據(jù),帶有不同的渲染和累積選項(xiàng)。 |
sensor_msgs/PointCloud, sensor_msgs/PointCloud2 |
Polygon(多邊形) |
將多邊形的輪廓繪制成線 |
geometry_msgs/Polygon |
Odemetry(里程計(jì)) |
隨時(shí)間累積里程計(jì)的位姿 |
nav_msgs/Odometry |
Range(距離) |
用圓錐體表示聲吶或紅外距離傳感器的測量距離 |
sensor_msgs/Range |
RobotModel(機(jī)器人模型) |
顯示處于正確位姿(由當(dāng)前TF變換定義)的機(jī)器人的可視化表示 |
|
TF |
顯示TF變換層次 |
|
Wrench(扳手) |
將扳手繪制成箭頭(力)和箭頭+圓(力矩) |
geometry_msgs/WrenchStamped |
3.視圖面板
Rviz的視圖面板中提供了幾種不同類型的攝像機(jī),每一種攝像機(jī)的控制方式和投影方式(正交投影、透視投影等)也不盡相同。
3.1 軌道攝像機(jī)(默認(rèn)值)
軌道攝像機(jī)圍繞焦點(diǎn)旋轉(zhuǎn),且始終朝向該焦點(diǎn)。當(dāng)移動攝像機(jī)時(shí),焦點(diǎn)可視為一個(gè)小圓盤,如圖6所示。
軌道攝像機(jī)的控制:
鼠標(biāo)左鍵:單擊并拖動圍繞焦點(diǎn)進(jìn)行旋轉(zhuǎn)。
鼠標(biāo)中鍵:單擊并拖動在由攝像機(jī)向上和向右的矢量組成的平面上移動焦點(diǎn)。移動的距離取決于焦點(diǎn)。如果焦點(diǎn)上有物體,你在該物體上單擊,它會停留在你的鼠標(biāo)下面。
鼠標(biāo)右鍵:單擊并拖動放大/縮小焦點(diǎn)。向上拖動放大,向下拖動縮小。
鼠標(biāo)滾輪:放大/縮小焦點(diǎn)。
3.2 FPS(第一人稱)攝像機(jī)
FPS是第一人稱攝像機(jī),相當(dāng)于手持?jǐn)z像機(jī)進(jìn)行控制。
FPS攝像機(jī)的控制:
鼠標(biāo)左鍵:單擊并拖動進(jìn)行旋轉(zhuǎn)。單擊鼠標(biāo)下方的對象并直接查看它。
鼠標(biāo)中鍵:單擊并拖動沿由攝像機(jī)向上和向右的矢量組成的平面移動。
鼠標(biāo)右鍵:單擊并拖動沿?cái)z像機(jī)前向矢量移動。向上拖動向前移動,向下拖動向后移動。
鼠標(biāo)滾輪:向前/向后移動。
3.3 垂直正交攝像機(jī)
垂直(Top-down)正交攝像機(jī)始終沿Z軸(機(jī)器人框架內(nèi))向下觀察對象,看到的是正交視圖,這意味著當(dāng)對象遠(yuǎn)離時(shí)看起來也不會變小。
垂直正交攝像機(jī)的控制:
鼠標(biāo)左鍵:單擊并拖動繞Z軸進(jìn)行旋轉(zhuǎn)。
鼠標(biāo)中鍵:單擊并拖動沿XY平面移動攝像機(jī)。
鼠標(biāo)右鍵:單擊并拖動縮放圖像。
鼠標(biāo)滾輪:縮放圖像。
3.4 XY軌道攝像機(jī)
同軌道攝像機(jī),但焦點(diǎn)限制在XY平面。
4.坐標(biāo)系
Rviz使用tf變換系統(tǒng)將局部坐標(biāo)系中的數(shù)據(jù)變換到全局坐標(biāo)系中。Rviz常用的坐標(biāo)系有兩種:固定坐標(biāo)系和目標(biāo)坐標(biāo)系。
4.1 固定坐標(biāo)系
固定坐標(biāo)系相比而言更重要一些。固定坐標(biāo)系是用來表示“世界”坐標(biāo)系的參考坐標(biāo)系,它通常指“地圖”、“世界”等,也可以是你的里程計(jì)坐標(biāo)系。
如果固定坐標(biāo)系被錯(cuò)誤地設(shè)置成了機(jī)器人底座,那么該機(jī)器人曾看到的所有對象都將在其前面消失。為了得到正確的結(jié)果,固定坐標(biāo)系相對于“世界”應(yīng)該是靜止的。如果你更改了固定坐標(biāo)系,當(dāng)前顯示的所有數(shù)據(jù)都被清除,而非重新變換。
4.2 目標(biāo)坐標(biāo)系
目標(biāo)坐標(biāo)系是攝像機(jī)視圖的參考坐標(biāo)系。比如,如果你的目標(biāo)坐標(biāo)系是地圖,你將會看到繞地圖行駛的機(jī)器人。如果你的目標(biāo)坐標(biāo)系是機(jī)器人底座,你將會看到機(jī)器人將待在原地,而其他一切相對于機(jī)器人底座移動。
硅步機(jī)器人(Gaitech Robotics) 是專業(yè)提供機(jī)器人整體解決方案的創(chuàng)新型公司,在香港、首爾、臺北、上海、山東五地?fù)碛蟹种C(jī)構(gòu)。硅步的業(yè)務(wù)和合作伙伴遍布全球多個(gè)國家,擁有健全的銷售和服務(wù)網(wǎng)絡(luò)。同時(shí)硅步擁有一支國際化的高水平技術(shù)團(tuán)隊(duì),致力于為客戶提供業(yè)內(nèi)領(lǐng)先的產(chǎn)品、技術(shù)和專業(yè)的服務(wù)。公司目前主要業(yè)務(wù)是基于ROS(Robot Operating System)系統(tǒng)的智能機(jī)器人的集成、生產(chǎn)、銷售和技術(shù)支持服務(wù)。
硅步機(jī)器人于2016年3月參與投資了加拿大Agile Sensor Technologies Inc.(www.agilesensors.com),致力于機(jī)器人電機(jī)控制系統(tǒng)、無人機(jī)飛行穩(wěn)定系統(tǒng)、智能相機(jī)和高性能傳感器等技術(shù)和產(chǎn)品的研究和開發(fā)。
硅步機(jī)器人聯(lián)合協(xié)作移動機(jī)器人技術(shù)先驅(qū)西班牙Robotnik公司和協(xié)作機(jī)械臂國際知名公司北京遨博智能共同研發(fā)了工業(yè)智能移動抓取機(jī)器人JR2,它代表了目前國際上協(xié)作機(jī)器人的最高技術(shù)水平,有著巨大的市場潛力。
考慮到山東的人文環(huán)境、地理區(qū)位、產(chǎn)業(yè)基礎(chǔ)等多個(gè)有利因素,硅步機(jī)器人于2017年3月斥資3億元在山東鄒城建造了科教無人機(jī)及工業(yè)機(jī)器人研發(fā)生產(chǎn)基地。這意味著硅步機(jī)器人正式進(jìn)入機(jī)器人生產(chǎn)、加工產(chǎn)業(yè)鏈條,與研發(fā)和銷售互為有效補(bǔ)充,標(biāo)志著硅步機(jī)器人的發(fā)展從此邁上一個(gè)新的臺階。
同時(shí),硅步所屬企業(yè)積極參與了多項(xiàng)國家自然科學(xué)基金和973項(xiàng)目,擁有多項(xiàng)產(chǎn)品專利和軟件著作權(quán)。在引進(jìn)消化吸收國際先進(jìn)技術(shù)的同時(shí),硅步所屬企業(yè)與國內(nèi)科研單位緊密合作,不斷創(chuàng)新,加速中國智造的前進(jìn)步伐。
2025-09-03 14:14
2025-09-03 14:10
2025-09-03 11:09
2025-09-03 11:09
2025-09-02 22:09
2025-09-02 22:01
2025-09-02 22:00
2025-09-01 15:14
2025-08-29 10:19
2025-08-29 10:18