初學ROS總結

2021-09-06 02:04:00 字數 2845 閱讀 5487

初步總結一下自己對ros的認識,遇到的坑以及相應的解決辦法。

首先介紹一下我的電腦配置,win10系統,裝虛擬機器ubuntu16.04,ros版本kinetic.

第一步是ubuntu的使用,如果不熟悉ubuntu的話,可以去乙個叫 實驗樓的**上學習ubuntu的基本操作,命令。

第二部ros的安裝,按照創客智造上面的操作步驟就可以完成安裝了,但是使用過程中遇到了兩個問題,都是和gazebo有關,

export svga_vgpu10=0

export libgl_ always_software=0

加上第二行**可以減小  coredump發生的概率。

第三  使用的ide是roboware,關於roboware的教程很多,但是有幾個注意的點,

這個小按鈕可以record topic.

這兩個按鈕可以切換活動包

這裡可以安裝包以及對沒有安裝的包進行安裝。之前從github上面轉殖的**在本地一直編譯不過去,很久找不到原因,後來才發現自己轉殖錯了,在git clone 的時候,加上-b 引數轉殖正確的分支,我的就是 git clone -b branch  gitsource.

第四部分,ros的基本概念是執行單元是node,通過topic,service,actonlib等進行通訊。

rviz只是ros的乙個展示資料的乙個工具,僅僅用來展示二維或者三維資料。

gazebo是乙個**環境,用來模擬真實的環境。

學習ros一定想要建立乙個模型,並且在ros中控制它。首先學習urdf來建立機械人模型,urdf主要包括兩部分,乙個是link(肢體),另外乙個是joint(關節),link通過joint鏈結在一起,joint有一些固定的型別,不同的型別就不同的引數配置。這裡需要注意的是link之間的相關位置計算。 每個link對應乙個座標系,不同的link的座標系的轉換通過joint,joint不僅定義了關節的型別,還有joint 的parent和children 之間的座標系轉換,  gazebo裡面簡單的shape存在固定的中心,link有乙個origin屬性,像這樣

這個屬性定義了關節在自己的座標中的偏移和轉向。r代表繞x軸旋轉的弧度,p代表繞y軸旋轉的弧度,y代表繞z軸旋轉的弧度。

joint中也存在這個屬性,

像這樣。

rviz中存在乙個外掛程式叫robotmodel,他會從 rosparams中獲得robotdescption(urdf文字)引數,進行展示,並且監聽不同link之間的tf轉換訊息,你可以啟動joint_state_publisher,robot_state_publisher節點,他也會去讀取robotdescption引數,然後展現出乙個介面,來發布tf變換到rviz的robotmodel外掛程式中進行展示,rviz中就可以展示出相應的效果出來。

gazebo中渲染機械人並且控制它,

模型中一定要存在這個外掛程式,這件外掛程式的作用官網上寫的是鏈結ros和gazebo,

class gazeboroscontrolplugin : public gazebo::modelplugin

// create the controller manager

ros_debug_stream_named("ros_control_plugin","loading controller_manager");

controller_manager_.reset

(new controller_manager::controllermanager(robot_hw_sim_.get(), model_nh_));

// listen to the update event. this event is broadcast every simulation iteration.

update_connection_ =

gazebo::event::events::connectworldupdatebegin

(boost::bind(&gazeboroscontrolplugin::update, this));

關於控制器更新的細節,我也有待更加深入的學習,

控制gazebo中乙個關節的過程是,首先有乙個urdf檔案,配置好關節的物理引數,配置好關節的transmission資訊,

類似

transmission_inte***ce/******transmission

1 hardware_inte***ce/effortjointinte***ce

關節主要是配置hardwareinte***ce介面,介面型別主要有三種,力介面,速度介面,位置介面,分別控制關節的力,速度,位置。然後載入實現指定介面的控制器資訊到ros的引數伺服器中,gazebo節點就會監聽相應關節的command話題,就可以發布引數到指定話題來達到控制關節的目的。

學會控制關節之後就是slam,建圖演算法訂閱/scan話題等後發布map話題,表達演算法建的圖,move_base得到map資訊,然後根據acml演算法等進行定位,然後告訴move_base乙個目標點,move_base就會構建乙個通向目標的路徑,並且發布控制速度和轉向資訊,根據速度,轉向資訊就可以達到設定的目標點了,大致過程就是這樣的。

ROS 總結(一) ROS系統框架

ros的系統主要被分成了三部分 檔案系統級 程式是如何組織和構建的,需要的核心檔案 計算圖級 描述程式是如何執行的,程序和系統之間如何通訊 開源社群級 程式的分布式管理方式,開發人員之間如何共享知識 演算法和 ros系統的不同元件被放在不同的功能資料夾下。這些資料夾根據功能的不同來對檔案進行組織 功...

ROS總結 建立ROS工作空間

mkdir p catkin ws src cd catkin ws src2.編譯catkin工作空間 cd catkin ws catkin make3.配置環境變數 source devel setup.bashnote 要想保證工作空間已配置正確需確保ros package path環境變數...

ROS學習資料總結

官方資料 wiki cn api tf tf html c index.html github 活動 ros暑期學校 國內首次ros愛好者聚會2015.7.23 7.26 華東師範大學 blog exbot 老王說ros bradlucas csdn 小菜鳥上校 東方赤龍曲和政 aicrobo 論壇...