Excel2016打印預(yù)覽表格的教程是什么(excel2016怎么看打印預(yù)覽)">Excel2016打印預(yù)覽表格的教程是什么(excel2016怎么看打印預(yù)覽)
1081
2022-05-30
參考網(wǎng)址: 1 MooreRobots ? ?2 Richard Wang? ? 3 Shawn Chen
部分視頻網(wǎng)址:?http://v.youku.com/v_show/id_XMjUxMTc5MzE5Mg
http://i.youku.com/i/UMTg1NDE4MDM2/videos
注意下面是機(jī)器翻譯結(jié)果~
MooreRobots
博客
關(guān)于
博客文章
2016/09/27 15:33
2016/10/12 03:34
2016/10/11 03:51
2016/09/27 04:52
2016/09/20 04:18
2016/09/20 02:40
【概述】獲得通過(guò)模擬在ROS與自主機(jī)器人開始
RPW
2016/09/27 15:33
學(xué)習(xí)打造自主機(jī)器人真的很難,尤其是當(dāng)剛開始關(guān)閉。這源于機(jī)器人的獨(dú)特性,它是非常有必要了解一個(gè)廣泛的跨硬件和軟件的概念。
1.模擬啟動(dòng)
ROS仿真是一個(gè)很好的起點(diǎn),以幫助我們從架構(gòu)的角度獲得接觸到機(jī)器人。我們將能夠看到的測(cè)距和激光傳感器數(shù)據(jù)能以某種方式變成導(dǎo)致執(zhí)行有意義的行動(dòng)機(jī)器人運(yùn)動(dòng)指令。不幸的是,它可以是很難找到了最新的教程,不是簡(jiǎn)單地遞給我們一個(gè)全功能的機(jī)器人。
我們分享我們的工作,展示了如何構(gòu)建從地上爬了涼亭和ROS模擬機(jī)器人。我們希望這將節(jié)省您的時(shí)間。我們已經(jīng)創(chuàng)建了一個(gè)代碼庫(kù),一個(gè)簡(jiǎn)短的一系列寫起坐,和視頻演示我們的模擬機(jī)器人。
我們的代碼模擬了在ROS中自主導(dǎo)航差分驅(qū)動(dòng)機(jī)器人。寫窗口被分成三個(gè)部分:
第1部分 :創(chuàng)建一個(gè)涼亭模型與ROS兼容。
第2部分 :添加必要的感受外界刺激的傳感器
第3部分 :?jiǎn)⒂米灾鲗?dǎo)航
2.將物理機(jī)器人
上的物理機(jī)器人運(yùn)行的代碼帶來(lái)由于硬件變化額外的挑戰(zhàn),環(huán)境的不確定性,以及在物理設(shè)備上測(cè)試的乏味性質(zhì)。
考慮到這些困難,我們開始用通用的學(xué)習(xí)硬件現(xiàn)成的機(jī)器人,它方便地附帶了固件電機(jī)驅(qū)動(dòng)器和編碼器。請(qǐng)記住,這個(gè)機(jī)器人缺乏必要的傳感器和計(jì)算能力運(yùn)用先進(jìn)的算法,如SLAM。盡管如此,它仍然是非常有趣的,以了解如何適當(dāng)控制發(fā)送到電動(dòng)機(jī),以在期望的軌跡移動(dòng)機(jī)器人(即直線移動(dòng),圓形,方形等)。
第4部分 :開環(huán)控制通過(guò)差動(dòng)驅(qū)動(dòng)模型的機(jī)器人
第5部分 :閉環(huán)控制經(jīng)由輪編碼器的傳感器數(shù)據(jù)的機(jī)器人
希望你現(xiàn)在更好地理解都使自主式機(jī)器人工作所需的部件。祝你好運(yùn)!
[教程]模擬機(jī)器人模型ROS(第1部分)
RPW
2016/09/20 02:40
ROS的軟件仿真可以幫助您了解如何使機(jī)器人“思考”。畢竟,這是一個(gè)大的飛躍,從線去以下機(jī)器人自動(dòng)駕駛汽車。可以說(shuō),在建設(shè)有用的機(jī)器人的最大挑戰(zhàn)之一就是軟件。通過(guò)ROS,你就能了解如何使用傳感器來(lái)確定機(jī)器人的根本性的挑戰(zhàn)(感應(yīng)),制定計(jì)劃,計(jì)算出機(jī)器人應(yīng)該做的(計(jì)劃),然后計(jì)算命令機(jī)器人執(zhí)行(表演)。
在本教程中,我們將從頭開始開發(fā)一個(gè)仿真機(jī)器人(嗯......相對(duì)于turtlebot模擬)。有幾個(gè)原因,您可能希望走這條路線。
通過(guò)編輯URDF模型(這樣你就不會(huì)與turtlebot卡)模擬你自己定制的機(jī)器人
啟用了可開發(fā)的算法插入軟件和硬件機(jī)器人(因?yàn)橛布倪^(guò)度發(fā)展容易磨損和撕裂)
暴露于ROS機(jī)器人架構(gòu)(這樣就可以避免重復(fù)從已經(jīng)了解到的設(shè)計(jì)錯(cuò)誤等)
概述:仿真模型
目標(biāo):創(chuàng)建在涼亭模擬器是由ROS訪問(wèn)的URDF模型。
參考文獻(xiàn):有許多有用的教程。他們沒(méi)有完美地工作對(duì)我來(lái)說(shuō)開箱。我懷疑他們是不是跟上時(shí)代的,但它也有可能是我沒(méi)能正確地按照說(shuō)明進(jìn)行操作:
RRBot
R2D2
差分驅(qū)動(dòng)(URDF格式)
差分驅(qū)動(dòng)(SDF格式)
結(jié)果:從頭開始建立一個(gè)簡(jiǎn)單的差分驅(qū)動(dòng)模型,模擬在涼亭和rviz可視化的
庫(kù)代碼
GIT中克隆-b基https://github.com/richardw05/mybot_ws.git
視頻演練
兼容性
本教程將過(guò)時(shí)隨著時(shí)間的推移毫無(wú)懸念地成為。這是用于此的書面記錄的硬件和軟件:
ROS:動(dòng)力學(xué)
操作系統(tǒng):Ubuntu的16.04
OS:7.0.0涼亭
內(nèi)存:8GB DDR4
SSD:三星EVO
CPU:英特爾酷睿i5
GPU:GTX 750ti
目錄結(jié)構(gòu)
大多數(shù)教程會(huì)聚到以下工作空間結(jié)構(gòu):
mybot_ws
SRC
mybot_control
配置
mybot_control.yaml
發(fā)射
mybot_control.launch
的CMakeLists.txt
package.xml中
mybot_description
發(fā)射
mybot_rviz.launch
urdf
macros.xacro
materials.xacro
mybot.gazebo
mybot.xacro
的CMakeLists.txt
package.xml中
mybot_gazebo
發(fā)射
mybot_world.launch
世界
mybot.world
的CMakeLists.txt
package.xml中
簡(jiǎn)要說(shuō)明:
mybot_description指定整個(gè)機(jī)器人結(jié)構(gòu)為鏈接和關(guān)節(jié),并且可以在啟動(dòng)rviz模型。
mybot_gazebo推出在涼亭環(huán)境中的模型,包含不同的仿真世界。
mybot_control(未使用)能在我們的模型中的關(guān)節(jié)控制,以便它可以左右移動(dòng)。
要了解更多關(guān)于創(chuàng)建工作區(qū)/包,看看這個(gè)YouTube上的教程。
創(chuàng)建目錄結(jié)構(gòu)的基本骨架,我們開始與工作空間{WORKSPACE} _ws,這里我們?cè)O(shè){WORKSPACE}?= mybot。
CD? MKDIR mybot_ws CD mybot_ws 柳絮INIT MKDIR SRC 柳絮構(gòu)建 回聲 “源?/ mybot_ws / devel的/ setup.bash” >>的?/ .bashrc#添加的工作區(qū)進(jìn)行搜索路徑
src文件夾中有三個(gè)主要的包,{} MODEL _Control,{} MODEL _description,{}模型_gazebo。我們?cè)O(shè)定{}模型?= mybot。要?jiǎng)?chuàng)建一個(gè)包:catkin_create_pkg?{程序包名稱}?{} PKG_DEPENDENCIES。在這種情況下,我們沒(méi)有{} PKG_DEPENDENCIES?=“”。
CD?/ mybot_ws / src目錄/ catkin_create_pkg mybot_control catkin_create_pkg mybot_description catkin_create_pkg mybot_gazebo
創(chuàng)建機(jī)器人模型(URDF)
在?/ mybot_ws / src目錄/ mybot_description / urdf,有四個(gè)文件:
mybot.xacro:主文件加載其他三個(gè)文件,僅包含URDF項(xiàng)目,如關(guān)節(jié)和鏈接
mybot.gazebo:包含特定涼亭的標(biāo)簽,包裹內(nèi)嘎斯
materials.xacro:地圖串色
macros.xacro:宏來(lái)幫助簡(jiǎn)化
運(yùn)行模式
加載在單獨(dú)的終端涼亭模擬器和rviz
roslaunch mybot_gazebo mybot_world.launch roslaunch mybot_description mybot_rviz.launch
發(fā)送一基本控制器命令,并確保在兩個(gè)涼亭和rviz機(jī)器人移動(dòng)
rostopic酒吧/ cmd_vel geometry_msgs /扭轉(zhuǎn)“線性: X:0.2 Y:0.0 有:0.0 角度: X:0.0 Y:0.0 Z:0.1"
雜項(xiàng)
如果無(wú)法找到?jīng)鐾げ寮惭bROS運(yùn)動(dòng)控制器
命令和apt-get安裝ROS動(dòng)能-ROS控制 命令和apt-get安裝ROS動(dòng)能-ROS控制器 命令和apt-get安裝ROS-動(dòng)能涼亭封郵件 命令和apt-get安裝ROS-動(dòng)能涼亭-ROS
如果機(jī)器人不rviz移動(dòng),檢查TF改造樹
rosrun TF view_frames 了Evince frames.pdf
如果你想運(yùn)行在mybot_controller自己的控制器,看看這個(gè)教程
[教程]在涼亭模擬傳感器(第2部分)
RPW
2016/09/20 04:18
有效地與周圍環(huán)境交互的機(jī)器人需要三個(gè)基本組成部分:
傳感器揭示周圍環(huán)境
規(guī)劃要弄清楚該怎么做
執(zhí)行器,使機(jī)器人移動(dòng)
我們將展示如何傳感器加入到我們的基本差分驅(qū)動(dòng)模式。一旦配有傳感器,我們的機(jī)器人將有足夠的準(zhǔn)備使用ROS導(dǎo)航堆棧,這將使它能夠自行移動(dòng)!
概述:模擬傳感器
目標(biāo):外感受性的傳感器添加到我們的模擬差分驅(qū)動(dòng)機(jī)器人
用途:?jiǎn)⒂靡蕾囉诟兄車h(huán)境的算法(又名自主導(dǎo)航!!)。
參考文獻(xiàn):
涼亭插件庫(kù)
涼亭相機(jī)教程
庫(kù)代碼
混帳克隆-b base_sensors https://github.com/richardw05/mybot_ws.git
視頻演練
模擬攝像機(jī)
我們只需要添加的代碼兩個(gè)街區(qū)。
mybot_description / urdf / mybot.xacro - 添加相機(jī)型號(hào)
mybot_description / urdf / mybot.gazebo - 添加攝像頭插件
啟動(dòng)在涼亭模型。
roslaunch mybot_gazebo mybot_world.launch
運(yùn)行一個(gè)節(jié)點(diǎn),以查看相機(jī)數(shù)據(jù)。
rosrun image_view image_view圖像:= / mybot /攝像機(jī)1 / image_raw
在涼亭模擬器插入的對(duì)象,以確保它在相機(jī)視圖顯示出來(lái)。
啟動(dòng)rviz。
roslaunch mybot_description mybot_rviz.launch
/ mybot /攝像機(jī)1 / image_raw:確保相機(jī)數(shù)據(jù)可以rviz與主題閱讀
模擬激光
再次,代碼只有兩個(gè)上下的塊:
mybot_description / urdf / mybot.xacro - 添加激光模型
mybot_description / urdf / mybot.gazebo - 添加激光插件
mybot_description /網(wǎng)格/ hokuyo.dae(可選) - 花式HOKUYO激光模型
啟動(dòng)在涼亭和rviz檢查
[教程]模擬ROS導(dǎo)航堆棧(第3部分)
RPW
2016/09/27 04:52
在這一點(diǎn)上,我們已經(jīng)創(chuàng)建了滿足必要的先決條件自主導(dǎo)航模擬差分驅(qū)動(dòng)器型號(hào):變換樹,測(cè)距,激光掃描儀,和基本控制器。現(xiàn)在,我們可以使我們的仿真機(jī)器人使用ROS的導(dǎo)航堆棧走動(dòng)自身。在本教程中,我們要:
插上ROS導(dǎo)航堆棧
創(chuàng)建地圖
導(dǎo)航與地圖
正如你所看到的,這些步驟都是有據(jù)可查的,所以我們只是把他們放在一起為我們的機(jī)器人。
概述:使用ROS導(dǎo)航堆棧
目標(biāo):整合ROS導(dǎo)航堆棧為我們的模擬機(jī)器人
用途:?jiǎn)⒂米灾鲗?dǎo)航,所以我們并不需要遠(yuǎn)程控制我們的機(jī)器人
資源
利用ROS導(dǎo)航堆棧啟動(dòng)文件示例
提示組織大型項(xiàng)目
眾多機(jī)器人項(xiàng)目的啟動(dòng)文件示例
roscd turtlebot_navigation /啟動(dòng)/包括更多的啟動(dòng)文件的例子
混帳克隆-b導(dǎo)航https://github.com/richardw05/mybot_ws.git
地圖和導(dǎo)航:Turtlebot(可選)
學(xué)做自主的Turtlebot此舉有助于建立在期待什么樣的行為的基線。基本上有三個(gè)步驟:創(chuàng)建地圖,保存地圖,和加載地圖。
創(chuàng)建地圖
下面運(yùn)行下面的命令。使用teleop四處移動(dòng)機(jī)器人,建立一個(gè)準(zhǔn)確和全面的地圖。
在1號(hào)航站樓,推出世界涼亭
roslaunch turtlebot_gazebo turtlebot_world.launch
在2號(hào)航站樓,啟動(dòng)地圖構(gòu)建
roslaunch turtlebot_gazebo gmapping_demo.launch
在3號(hào)航站樓,推出rviz并設(shè)置以下參數(shù):Localmap / Costmap /主題為/圖辦事處一覽/ Costmap /主題為/圖
roslaunch turtlebot_rviz_launchers view_navigation.launch
在第4航站樓,開始teleop
roslaunch turtlebot_teleop keyboard_teleop.launch
保存地圖
在5號(hào)航站樓,地圖保存一些文件路徑
rosrun map_server map_saver -f?/ mybot_ws / test_map
載入地圖
關(guān)閉所有之前的終端和運(yùn)行下面的下面的命令。一旦加載,使用rviz設(shè)置導(dǎo)航航路點(diǎn)和機(jī)器人應(yīng)該自主地移動(dòng)。
在1號(hào)航站樓,推出世界涼亭
roslaunch turtlebot_gazebo turtlebot_world.launch
在2號(hào)航站樓,啟動(dòng)地圖構(gòu)建
roslaunch turtlebot_gazebo amcl_demo.launch MAP_FILE:=?/ mybot_ws / test_map.yaml
在3號(hào)航站樓,啟動(dòng)rviz
roslaunch turtlebot_rviz_launchers view_navigation.launch
地圖和導(dǎo)航:我們的機(jī)器人
我們遵循我們自己的差分驅(qū)動(dòng)機(jī)器人相同的步驟。
請(qǐng)注意,我們修改我們的模型導(dǎo)航好一點(diǎn)。例如,我們?cè)黾恿艘粋€(gè)額外腳輪,以減少在突然停車彈跳激光。據(jù)我們了解,我們的機(jī)器人模型需要額外的調(diào)整,因?yàn)樗幸恍┢婀值膶?dǎo)航扭結(jié)。任何建議,將不勝感激。然而,我們的模型是足以與ROS導(dǎo)航堆棧播放。
創(chuàng)建地圖
下面運(yùn)行下面的命令。使用teleop四處移動(dòng)機(jī)器人,建立一個(gè)準(zhǔn)確和全面的地圖。
在1號(hào)航站樓,推出世界涼亭
roslaunch mybot_gazebo mybot_world.launch
在2號(hào)航站樓,啟動(dòng)地圖構(gòu)建
roslaunch mybot_navigation gmapping_demo.launch
在3號(hào)航站樓,推出rviz并設(shè)置以下參數(shù):
roslaunch mybot_description mybot_rviz_gmapping.launch
在第4航站樓,開始teleop
roslaunch mybot_navigation mybot_teleop.launch
保存地圖
在5號(hào)航站樓,地圖保存一些文件路徑
rosrun map_server map_saver -f?/ mybot_ws / src目錄/ mybot_navigation /地圖/ test_map
載入地圖
關(guān)閉所有之前的終端和運(yùn)行下面的下面的命令。一旦加載,使用rviz設(shè)置導(dǎo)航航路點(diǎn)和機(jī)器人應(yīng)該自主地移動(dòng)。
在1號(hào)航站樓,推出世界涼亭
roslaunch mybot_gazebo mybot_world.launch
在2號(hào)航站樓,啟動(dòng)地圖構(gòu)建
roslaunch mybot_navigation amcl_demo.launch
在3號(hào)航站樓,啟動(dòng)rviz
roslaunch mybot_description mybot_rviz_amcl.launch
雜項(xiàng)
(可選)安裝Turtlebot一個(gè)很好的參考
命令和apt-get安裝ROS-動(dòng)能turtlebot ROS-動(dòng)能turtlebot-ROS的應(yīng)用程序,動(dòng)能turtlebot- 相互作用ROS-動(dòng)能turtlebot模擬器ROS-動(dòng)能kobuki-FTDI ROS動(dòng)能-AR-徑跡 阿爾瓦 - 封郵件
如果ROS找不到turtlebot_gazebo
rosdep更新
無(wú)法建立一個(gè)適當(dāng)?shù)牡貓D嗎?
考慮降低你的貼圖的分辨率。改變?cè)隽恐祻?.05至.01:
/opt/ros/kinetic/share/turtlebot_navigation/launch/includes/gmapping.launch.xml
自主移動(dòng)時(shí)紡紗很多嗎?
設(shè)置這些參數(shù),以抑制發(fā)送到基站控制器的命令。加
<名稱= “move_base / DWAPlannerROS / acc_lim_theta” 值= “10.0”/>
在
/opt/ros/kinetic/share/turtlebot_gazebo/launch/amcl_demo.launch
AMCL不加載地圖是否正確?
當(dāng)您保存的地圖文件,該文件YAML包含對(duì)PGM文件的路徑;?因此,你不能移動(dòng)地圖文件。如果你這樣做,重定向在YAML文件的路徑。
[教程]在ROS硬件機(jī)器人的開環(huán)控制(部分4)
RPW
2016/10/11 03:51
我們以一個(gè)實(shí)際的機(jī)器人運(yùn)行ROS我們的第一個(gè)步驟。我們將改變線性和旋轉(zhuǎn)目標(biāo)速度命令轉(zhuǎn)換為將我們的差分驅(qū)動(dòng)機(jī)器人的左右輪執(zhí)行的運(yùn)動(dòng)指令。我們使用不使用傳感器數(shù)據(jù)(如編碼器)作為反饋的開環(huán)控制系統(tǒng)。
概述:機(jī)器人的開環(huán)控制
目標(biāo):通過(guò)速度指令的機(jī)器人通過(guò)WiFi的開環(huán)控制
目的:學(xué)習(xí)差分驅(qū)動(dòng)機(jī)器人的開環(huán)控制,使用ROS的消息傳遞接口通過(guò)WiFi,和物理機(jī)器人的電機(jī)控制。
概述:
我們有兩臺(tái)機(jī)器:一臺(tái)主機(jī)運(yùn)行Ubuntu,并通過(guò)樹莓派控制的機(jī)器人。這些器件通過(guò)ROS消息通過(guò)網(wǎng)絡(luò)在一起,以共享相同的ROS主通信。為樹莓裨ROS節(jié)點(diǎn)控制所述馬達(dá)(左+右)和發(fā)布機(jī)器人的編碼器的讀數(shù)。ROS為電機(jī)主機(jī)計(jì)算速度目標(biāo)節(jié)點(diǎn)并更新機(jī)器人的里程計(jì)。
安裝軟件為機(jī)器人的樹莓派
主機(jī)和樹莓派之間建立聯(lián)網(wǎng)
用于發(fā)送電機(jī)命令給機(jī)器人創(chuàng)建ROS節(jié)點(diǎn)
測(cè)試機(jī)器人正確地如下控制命令
混帳克隆-b的開環(huán)https://github.com/richardw05/gopigo_ws.git
ROS:動(dòng)力學(xué)
操作系統(tǒng):Ubuntu的16.04
差分驅(qū)動(dòng)機(jī)器人:GoPiGo
無(wú)線USB棒:樹莓派USB無(wú)線適配器
其它差分驅(qū)動(dòng)機(jī)器人會(huì)工作,但可能需要修改代碼來(lái)控制電機(jī)。
如果訂購(gòu)一個(gè)新的USB加密狗的WiFi,考慮到支持802.11交流,如果你最終打算在未來(lái)的流攝像機(jī)數(shù)據(jù)的WiFi設(shè)備。
0(GoPiGo)軟件安裝
機(jī)器人的覆盆子裨將與GoPiGo板控制并與各種外圍設(shè)備進(jìn)行通信(如馬達(dá),IR傳感器等)接口。我們將安裝ROS并在樹莓派的GoPiGo庫(kù)。
在樹莓派安裝ROS的樹莓派使用自定義ROS的安裝過(guò)程。請(qǐng)按照這里的教程:wiki.ros.org/ROSberryPi/Installing ROS動(dòng)力學(xué)的樹莓派。
在樹莓派安裝GoPiGo?有關(guān)安裝GoPiGo庫(kù)可以在這里找到:http://www.dexterindustries.com/GoPiGo/programming/python-programming-for-the-raspberry-pi-gopigo/installing-gopigo-python -圖書館
1.(可選)與ROS網(wǎng)絡(luò)通過(guò)WiFi
WiFi聯(lián)網(wǎng)將允許主機(jī)和機(jī)器人通過(guò)ROS消息進(jìn)行通信。我們首先要設(shè)置Wi-Fi網(wǎng)絡(luò),然后配置ROS網(wǎng)絡(luò)。
無(wú)線網(wǎng)絡(luò)設(shè)置。
如果你已經(jīng)可以機(jī)器之間的SSH,你可以跳過(guò)this.Make確保兩臺(tái)設(shè)備都連接到同一子網(wǎng)(或簡(jiǎn)單地連接到同一個(gè)路由器)。我們希望從主機(jī)SSH到樹莓派。
如果您不知道設(shè)備的IP地址,使用NMAP搜索設(shè)備的子網(wǎng)。
NMAP -sN 192.168.1.0/24
您現(xiàn)在應(yīng)該能夠通過(guò)SSH進(jìn)入樹莓派。
SSH PI @ {IPADDRESS}
如果你有麻煩SSH'ing到樹莓派,你可能需要您的主機(jī)的SSH公鑰添加到樹莓派的的?/ .ssh / authorized_keys中。
作為可選步驟,IP地址是很難記住,改變定期所以請(qǐng)考慮使用主機(jī)名代替
主機(jī)名-I
ROS在無(wú)線網(wǎng)絡(luò)
我們?cè)O(shè)置兩個(gè)設(shè)備通過(guò)WiFi與ROS,使它們共享相同的ROS主溝通。我們選擇在主機(jī)上運(yùn)行的ROS主machine.On主機(jī),啟動(dòng)ROS主
roscore
在樹莓派,其配置為使用主機(jī)的ROS主人。
對(duì)于一個(gè)臨時(shí)解決方案,
出口ROS_MASTER_URI = HTTP:// IP_ADDRESS:11311
對(duì)于一個(gè)永久的解決方案,加上線以上到你的.bashrc文件。
試驗(yàn)表明,該工程。在樹莓派:
rostopic酒館/測(cè)試std_msgs /浮點(diǎn)32 5.0
在主機(jī)上:
rostopic回聲/測(cè)試
wiki.ros.org/ROS/Tutorials/MultipleMachines
nootrix.com/software/ros-networking
wiki.ros.org/turtlebot/Tutorials/indigo/NetworkConfiguration
2.體系結(jié)構(gòu)
在這個(gè)項(xiàng)目中,我們的主機(jī)將在高級(jí)別目標(biāo)速度指令讀取機(jī)器人的身體是轉(zhuǎn)化為機(jī)器人執(zhí)行個(gè)人左右輪的命令。如下所示,我們有兩個(gè)關(guān)鍵ROS節(jié)點(diǎn):diffdrive_controller其被在機(jī)器人上運(yùn)行主機(jī)和gopigo_controller上運(yùn)行。這種分離將讓我們通過(guò)重新編寫GoPiGo具體ROS節(jié)點(diǎn)替代其他機(jī)器人硬件的未來(lái)。
從的結(jié)構(gòu)借用ROS導(dǎo)航堆棧,我們基本上實(shí)現(xiàn)基本控制器。下面顯示的是一個(gè)更精細(xì)的粒面折紋ROS節(jié)點(diǎn)之間傳輸?shù)暮诵男畔⒌南蛳隆?/p>
在操作上,我們采取目標(biāo)線性和旋轉(zhuǎn)速度,并使用逆運(yùn)動(dòng)學(xué)來(lái)生成用于左眼和右輪的切向車輪速度。機(jī)器人變換這些切向速度目標(biāo)納入角速度目標(biāo)。然后這些轉(zhuǎn)化到電動(dòng)機(jī)指令并發(fā)送至電動(dòng)機(jī)。詳情如下實(shí)施進(jìn)一步討論。
3.實(shí)施
我們實(shí)行從地上爬起來(lái)這個(gè)項(xiàng)目。我們通過(guò)初始化工作空間開始。然后,我們創(chuàng)建了GoPiGo控制器與電機(jī)接口。在此之上,我們所建立的差分驅(qū)動(dòng)器控制器將控制速度目標(biāo)為每個(gè)車輪。
初始化一個(gè)新的工作區(qū)
我們創(chuàng)建了一個(gè)名為gopigo_ws工作區(qū)。回憶柳絮命令:
MKDIR gopigo_ws 柳絮INIT CD gopigo_ws MKDIR SRC 柳絮構(gòu)建
GoPiGo控制器
所述GoPiGo控制器接收目標(biāo)速度,并將它們轉(zhuǎn)換成電機(jī)命令使機(jī)器人執(zhí)行。對(duì)于每個(gè)車輪,我們?nèi)∧繕?biāo)切向速度(如何快速向前或向后移動(dòng)),其轉(zhuǎn)換為角速度(如何快速旋轉(zhuǎn)的車輪),然后將其轉(zhuǎn)化為電機(jī)命令(馬達(dá)的方向和速度) 。
定義如下:
v:切向速度
瓦特:角速度
[R?:車輪半徑
為涉及切向速度與角速度,
用于馬達(dá),我們可以指定電動(dòng)機(jī)方向(0向后1個(gè)向前)和電機(jī)速度(0最慢; 255最快)。鑒于電機(jī)速度是無(wú)單位的,我們將創(chuàng)建從目標(biāo)角速度到電機(jī)的命令的映射。
有幾個(gè)因素需要考慮:有低于該輪根本就沒(méi)有移動(dòng)最小電動(dòng)機(jī)速度指令,有一個(gè)最大的電機(jī)速度指令上面我們不能進(jìn)一步增加,我們必須謹(jǐn)慎指定在電機(jī)旋轉(zhuǎn)方向。
如以上所描述的,我們創(chuàng)建從角速度的簡(jiǎn)單分段線性映射到電動(dòng)機(jī)指令為如下所示。當(dāng)給定的最小和最大電動(dòng)機(jī)速度我們內(nèi)插的角速度。進(jìn)一步校準(zhǔn)可以幫助創(chuàng)造未來(lái)的更細(xì)粒度的映射。
要理解公式:http://www8.cs.umu.se/kurser/5DV122/HT13/material/Hellstrom-ForwardKinematics.pdf
差分驅(qū)動(dòng)器
差動(dòng)驅(qū)動(dòng)控制器采取/ cmd_vel消息并計(jì)算左右車輪的切向速度。我們?nèi)绾螐木€性和機(jī)器人的身體各個(gè)車輪的速度轉(zhuǎn)動(dòng)速度(V,W)走這并不完全是顯而易見的。幸運(yùn)的是,這是被稱為逆運(yùn)動(dòng)在充分研究的問(wèn)題。
定義以下輸入:
:機(jī)器人本體的目標(biāo)線速度
:機(jī)器人本體的目標(biāo)旋轉(zhuǎn)速度
大號(hào):機(jī)器人輪之間距離
定義以下輸出:
:右輪的切向速度
:左車輪的切向速度
我們知道下面的等式成立(請(qǐng)參閱下面的進(jìn)一步的解釋資源)。基本的直覺(jué)是,上面公式反映當(dāng)機(jī)器人直線前進(jìn)運(yùn)動(dòng),而底部方程反映了機(jī)器人代替旋轉(zhuǎn)的情況:
有趣的是,我們能夠解決這些方程得到:
我鼓勵(lì)你去嘗試和解決車輪速度。結(jié)果意義,如果你考慮的邊緣情況。試想,如果我們只想機(jī)器人直線前進(jìn)運(yùn)動(dòng),從而和。你會(huì)得到意料之中相同的切向車輪速度使該機(jī)器人直線前進(jìn):
試想,如果我們只設(shè)定的角度旋轉(zhuǎn),方便和。您還將獲得意料之中相反的切向車輪速度使機(jī)器人到位旋轉(zhuǎn)。
正運(yùn)動(dòng)學(xué)介紹:MotionAndSensing.pptx
正運(yùn)動(dòng)學(xué)數(shù)學(xué):http://www8.cs.umu.se/kurser/5DV122/HT13/material/Hellstrom-ForwardKinematics.pdf
全機(jī)器人實(shí)現(xiàn)教程:http://apprize.info/programming/ros/10.html
堿控制器示例:http://wiki.ros.org/pr2_controllers/Tutorials/Using機(jī)器人基座控制器,以驅(qū)動(dòng)機(jī)器人
Turtlebot控制代碼示例:https://github.com/markwsilliman/turtlebot
差分驅(qū)動(dòng)運(yùn)動(dòng)學(xué):https://chess.eecs.berkeley.edu/eecs149/documentation/differentialDrive.pdf
差分驅(qū)動(dòng)帶腳輪:http://robotics.stackexchange.com/questions/8911/how-to-find-kinematics-of-differential-drive-caster-robot
運(yùn)動(dòng)學(xué)優(yōu)秀篇章:http://www.cs.cmu.edu/~rasc/Download/AMRobots3.pdf
隨著gopigo_controller和diffdrive_controller,我們現(xiàn)在有機(jī)器人的開環(huán)控制。通過(guò)發(fā)布/ cmd_vel的消息,我們將能夠控制機(jī)器人的運(yùn)動(dòng)。
4.啟動(dòng)
我們引入托管多個(gè)方便的啟動(dòng)文件的兩個(gè)ROS節(jié)點(diǎn):nav_behaviors和gopigo_description。要啟動(dòng)我們的實(shí)際機(jī)器人的開環(huán)控制,在主機(jī)上:
roslaunch nav_behaviors nav_behaviors.launch
在樹莓派:
roslaunch gopigo_description gopigo_interface.launch
現(xiàn)在,我們的ROS節(jié)點(diǎn)監(jiān)聽速度指令,運(yùn)行在?/ gopigo_ws /這兩個(gè)shell腳本之一:
./nav_forward.py ./nav_rotate.py
結(jié)果應(yīng)該是機(jī)器人分別向前移動(dòng)或代替旋轉(zhuǎn),。如果發(fā)生這種情況,您已成功創(chuàng)建一個(gè)開環(huán)控制器為你的機(jī)器人!
如果您沒(méi)有訪問(wèn)GoPiGo機(jī)器人,你仍然可以測(cè)試代碼:
如果你有一個(gè)不同類型的機(jī)器人,那么你將需要編輯gopigo_controller / src目錄/ gopigo_controller.py。搜索gopigo_on標(biāo)志和編輯對(duì)傳輸指令您電機(jī)。您可能需要編輯gopigo_description /啟動(dòng)/ gopigo_interface.launch的參數(shù)值
您仍然可以測(cè)試模擬控制器。轉(zhuǎn)到gopigo_description /啟動(dòng)/ gopigo_interface.launch和gopigo_on標(biāo)志設(shè)置為false。這將消除發(fā)送到電機(jī)的任何命令。然后,您可以檢查以下ROS消息意義:
rostopic回聲/ cmd_vel rostopic回聲/ lwheel_tangent_vel_target rostopic回聲/ rwheel_tangent_vel_target rostopic回聲/ lwheel_angular_vel_control rostopic回聲/ rwheel_angular_vel_control rostopic回聲/ lwheel_angular_vel_motor rostopic回聲/ rwheel_angular_vel_motor
如果執(zhí)行nav_forward.py,那么將會(huì)看到相應(yīng)的車輪匹配值。
如果執(zhí)行nav_rotate.py,然后期望看到對(duì)面的值對(duì)應(yīng)的車輪。
[教程]在ROS硬件機(jī)器人的閉環(huán)控制(部分5)
RPW
2016/10/12 03:34
在本節(jié)中,我們側(cè)重于使用輪編碼器的傳感器數(shù)據(jù)有兩個(gè)目的:
閉環(huán)PID控制
雖然開環(huán)控制實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,它并不總是可靠地在實(shí)際的機(jī)器人運(yùn)行時(shí),由于工作環(huán)境(即從地面摩擦)及內(nèi)在因素(即左,右馬達(dá)之間的差異)的組合發(fā)揮作用。
閉環(huán)控制使用傳感器數(shù)據(jù)(即輪編碼器),以調(diào)節(jié)通過(guò)反饋電機(jī)控制(即誤差作為目標(biāo)和測(cè)量之間的差)。PID控制是一種流行的閉環(huán)控制器,實(shí)現(xiàn)起來(lái)很簡(jiǎn)單。
測(cè)距W /慣性導(dǎo)航
測(cè)距是有價(jià)值的,因?yàn)樗牵?)在未來(lái)使用ROS導(dǎo)航堆棧一個(gè)必要的輸入和2)讓我們看到了機(jī)器人的軌跡
我們結(jié)合車輪編碼器的讀數(shù)從兩個(gè)輪子(推算)估計(jì)隨著時(shí)間的推移(測(cè)距)機(jī)器人的位置。
概述:機(jī)器人的閉環(huán)控制
目標(biāo):用于閉環(huán)PID控制和估計(jì)機(jī)器人測(cè)距輪編碼器的傳感器數(shù)據(jù)的使用
目的:學(xué)習(xí)從傳感器數(shù)據(jù)結(jié)合反饋來(lái)改進(jìn)機(jī)器人控制和狀態(tài)估計(jì)
大綱:
閱讀機(jī)器人輪編碼器
兩個(gè)輪子的PID控制
航位推算估計(jì)機(jī)器人里程計(jì)
庫(kù)代碼
混帳克隆-b閉環(huán)https://github.com/richardw05/gopigo_ws.git
視頻演練
建筑
再次,我們有一個(gè)主機(jī)和通過(guò)WiFi連接的機(jī)器人。如下圖所示,我們添加兩個(gè)ROS節(jié)點(diǎn)。gopigo_state_updater是在機(jī)器人上運(yùn)行,并變換輪編碼數(shù)據(jù)轉(zhuǎn)換成角速度車輪速度的估計(jì)。我們擴(kuò)大gopigo_controller使用PID控制這些編碼器的讀數(shù)。diffdrive_odom是在主機(jī)上運(yùn)行, 并使用編碼器測(cè)算進(jìn)行航位推算。
下面顯示的是這些ROS節(jié)點(diǎn)之間傳送的ROS消息。
在操作上,我們首先估計(jì)從輪編碼器的讀數(shù)角速度車輪速度。這些都是用于PID控制器,這將減少目標(biāo)和測(cè)量速度之間的誤差。下一步,我們通過(guò)使用正向運(yùn)動(dòng)學(xué)來(lái)恢復(fù)機(jī)器人的線性和旋轉(zhuǎn)速度,其被用來(lái)估計(jì)機(jī)器人測(cè)距執(zhí)行航位推算。
履行
我們將通過(guò)創(chuàng)建一個(gè)新gopigo_state_updater節(jié)點(diǎn)和編輯gopigo_controller節(jié)點(diǎn)把我們的開環(huán)控制到閉環(huán)控制。然后,我們?cè)谛耫iffdrive_odom節(jié)點(diǎn)進(jìn)行航位推算。
GoPiGo狀態(tài)更新
車輪編碼器測(cè)量每個(gè)車輪實(shí)際上多少轉(zhuǎn)過(guò)身來(lái),估計(jì)其實(shí)際的角速度。后來(lái),我們的PID控制器將修正目標(biāo)和實(shí)際車輪速度之間的不匹配。首先,gopigo_state_updater節(jié)點(diǎn)必須變換輪編碼讀數(shù)角速度。
有趣的是,GoPiGo的車輪編碼器返回走過(guò)的厘米數(shù);?相比之下,大多數(shù)編碼器返回經(jīng)過(guò)蜱蟲的數(shù)量。任一測(cè)量類型可以轉(zhuǎn)化為角速度。對(duì)于我們的車輪編碼器數(shù)據(jù),我們可以計(jì)算橫移為經(jīng)過(guò)編碼器距離的比例弧度。然后我們計(jì)算除以在拍攝的時(shí)候anuglar速度。
定義如下:
e:在距離變化的編碼器
[R?:機(jī)器人車輪半徑
:時(shí)間移動(dòng)的距離編碼器讀取
瓦特:車輪的角速度
為了計(jì)算角速度,我們首先使用編碼器的距離,以計(jì)算所述車輪的圓周穿過(guò)的比例。我們用總弧度為一個(gè)旋轉(zhuǎn)(顯然2 PI)乘以此。最后,我們除以移動(dòng)的距離所需要的時(shí)間。
該方程可以進(jìn)一步簡(jiǎn)化導(dǎo)致車輪的角速度。所述gopigo_state_updater節(jié)點(diǎn)的這個(gè)主要目的是發(fā)布這些角度車輪速度。
GoPiGo控制器瓦特/ PID控制
一旦我們有了一個(gè)測(cè)量的角車輪速度,我們可以應(yīng)用PID控制器來(lái)校正誤差(目標(biāo)角速度車輪速度 - 測(cè)量的角車輪速度)。回想一下,每個(gè)車輪的目標(biāo)角速度車輪速度由diffdrive_controller節(jié)點(diǎn)給出。直觀地說(shuō),這個(gè)想法是,如果我們的電機(jī)沒(méi)有在我們的目標(biāo)速度移動(dòng)(過(guò)慢或過(guò)快),那么我們就應(yīng)該調(diào)整我們的電機(jī)控制命令(快或慢)來(lái)糾正這些差異。例如,如果地板摩擦導(dǎo)致車輪旋轉(zhuǎn)速度低于預(yù)期,那么我們需要給予較高的電機(jī)控制命令以進(jìn)行補(bǔ)償。
PID控制器充分研究所以讓我們只提供一點(diǎn)直覺(jué)。它往往是容易想象像汽車的巡航控制一維的例子。的狀態(tài)的系統(tǒng)的是機(jī)器人的當(dāng)前速度。巡航控制設(shè)定的目標(biāo)速度。的控制命令來(lái)調(diào)整油門踏板。如果移動(dòng)速度太慢,然后推更難對(duì)油門踏板反之亦然。該測(cè)量是告訴我們車輛的速度里程表。的錯(cuò)誤是測(cè)量和目標(biāo)之間的差。調(diào)整誤差為0,意味著我們將實(shí)現(xiàn)我們的目標(biāo)速度。在大多數(shù)的物理系統(tǒng),我們不想立即跳到0至100英里每小時(shí),所以我們需要計(jì)算的控制命令是逐步調(diào)整車速。PID控制器基本上覆蓋不同的情況三個(gè)單獨(dú)的控制調(diào)整技術(shù)的總和:
(P)roportional?-控制命令是一個(gè)比例的電流誤差(例如,在油門踏板推足夠緩慢斜坡上升到目標(biāo)速度)
(I)ntegral?-控制指令的比例過(guò)去的錯(cuò)誤(例如更多的天然氣,如果我們有很大的誤差了一會(huì)兒)
(D)。微分?-控制命令是一個(gè)比例未來(lái)在誤差變化(例如快速反應(yīng)以在錯(cuò)誤的變化)
請(qǐng)注意,關(guān)鍵的區(qū)別是考慮(過(guò)去,現(xiàn)在和將來(lái))的時(shí)間框架。它實(shí)際上是沒(méi)有必要使用所有這三個(gè)控制調(diào)整,以便隨時(shí)根據(jù)需要進(jìn)行調(diào)整。請(qǐng)看看這些資源,了解更多詳情。
https://www.coursera.org/learn/mobile-robot
https://en.wikipedia.org/wiki/PID_controller
除了概念上理解PID控制,我們還需要實(shí)現(xiàn)它。盡管方程在連續(xù)表示給定的,我們的計(jì)算平臺(tái)必須以離散表示抗衡。對(duì)于比例控制,我們只考慮電流測(cè)量所以它僅僅是當(dāng)前誤差(目標(biāo)減計(jì))的比例。對(duì)于積分控制,我們可以計(jì)算錯(cuò)誤的滾動(dòng)總和。對(duì)于差分控制,我們只計(jì)算當(dāng)前和以前的錯(cuò)誤之間的區(qū)別。
我們希望,pid_control功能表明它是如何實(shí)現(xiàn)簡(jiǎn)單的PID控制器。當(dāng)然,密鑰將試驗(yàn)來(lái)確定合適的增益(KP,KI,KD)使用。
差分驅(qū)動(dòng)里程計(jì)
通過(guò)航位推算,我們可以從兩個(gè)車輪結(jié)合輪編碼器的傳感器數(shù)據(jù),不僅恢復(fù)機(jī)器人的線性和旋轉(zhuǎn)速度(在一個(gè)完美的系統(tǒng)中,我們將恢復(fù)輸入/ cmd_vel),而且還估計(jì)其隨時(shí)間的位置。正向運(yùn)動(dòng)學(xué)指方程的序列(基于物理系統(tǒng)如何響應(yīng)給定的輸入模式)到傳感器的數(shù)據(jù)轉(zhuǎn)換成機(jī)器人測(cè)距。我們的運(yùn)動(dòng)學(xué)方程不承擔(dān)任何車輪打滑,拖,而本質(zhì)上是難以準(zhǔn)確預(yù)測(cè)在現(xiàn)實(shí)環(huán)境中如此測(cè)距估計(jì)往往不會(huì)完全符合實(shí)際等因素的影響。
讓我們定義以下輸入:
大號(hào):機(jī)器人的輪子之間的距離
W_L:左車輪的角速度
w_r:右輪的角速度
:及時(shí)更新變化
X:機(jī)器人的前面x位置
?:機(jī)器人的前一個(gè)y位置
:機(jī)器人前的姿態(tài)
定義以下輸出:
[R?:曲率瞬時(shí)中心的半徑
V_L:左車輪的切向速度
V_R:右輪的切向速度
V_C:機(jī)器人的線速度
w_c:機(jī)器人的旋轉(zhuǎn)速度
:機(jī)器人的X位置
:機(jī)器人的當(dāng)前y位置
:機(jī)器人的當(dāng)前方向
我們使用假設(shè)兩種情況之一時(shí),我們的差動(dòng)驅(qū)動(dòng)機(jī)器人正在移動(dòng)簡(jiǎn)單正向運(yùn)動(dòng)學(xué)方程:要么機(jī)器人正在移動(dòng)直線前進(jìn)或繞“曲率(ICC)的瞬時(shí)中心”移動(dòng)。
移動(dòng)直線前進(jìn)
如果在前進(jìn),動(dòng)力很簡(jiǎn)單。注意,機(jī)器人的角速度是0,因?yàn)閮蓚€(gè)車輪以相同的速度移動(dòng):
當(dāng)然,我們可以更新機(jī)器人的姿勢(shì)(全球位置和方向)為:
旋轉(zhuǎn)一圈
我們首先計(jì)算其周圍的機(jī)器人以下(在這個(gè)時(shí)刻)的圓的半徑。這使我們能夠計(jì)算出機(jī)器人的旋轉(zhuǎn)速度。
然后,我們可以計(jì)算出這個(gè)圈子的中心。
我們遵循通過(guò)更新機(jī)器人的姿勢(shì)。
我們發(fā)布了計(jì)算機(jī)器人的全球姿態(tài)在世界上機(jī)器人的TF變換和里程計(jì)信息兩者。測(cè)距消息還包括速度信息,這當(dāng)然意味著,測(cè)距消息包括關(guān)于機(jī)器人的狀態(tài)的詳細(xì)信息(位置,方向,線速度,旋轉(zhuǎn)速度)。
ROS測(cè)程執(zhí)行:http://wiki.ros.org/navigation/Tutorials/RobotSetup/Odom
ROS測(cè)程在Python:answers.ros.org/question/79851/python-odometry
發(fā)射
我們將使用車輪編碼器傳感器數(shù)據(jù)用于1)PID反饋控制和2)來(lái)估計(jì)機(jī)器人的測(cè)距。
我們使用相同的啟動(dòng)文件nav_behaviors.launch和gopigo_interface.launch。我們編輯它們運(yùn)行額外的ROS節(jié)點(diǎn)(diffdrive_odom為nav_behaviors.launch和gopigo_state_updater為gopigo_interface.launch)。嘗試運(yùn)行以下場(chǎng)景。
測(cè)距的仿真
作為一個(gè)基本的完整性檢查,我們要確保我們的前進(jìn)運(yùn)動(dòng)轉(zhuǎn)換通過(guò)展示,我們可以恢復(fù)原來(lái)的cmd_vel消息正確。
在gopigo_interface.launch,為所有的以下內(nèi)容:
現(xiàn)在運(yùn)行的啟動(dòng)文件。在主機(jī)上:
roslaunch nav_behaviors nav_behaviors.launch
在樹莓派:
roslaunch gopigo_description gopigo_interface.launch
打印以下消息來(lái)驗(yàn)證我們的計(jì)算是正確的:
rostopic回聲/ cmd_vel rostopic回聲/ lwheel_tangent_vel_target rostopic回聲/ rwheel_tangent_vel_target rostopic回聲/ lwheel_angular_vel_target rostopic回聲/ rwheel_angular_vel_target rostopic回聲/ lwheel_angular_vel_control rostopic回聲/ rwheel_angular_vel_control rostopic回聲/ lwheel_angular_vel_motor rostopic回聲/ rwheel_angular_vel_motor rostopic回聲/ lwheel_angular_vel_enc rostopic回聲/ rwheel_angular_vel_enc rostopic回聲/ lwheel_tangent_vel_enc rostopic回聲/ rwheel_tangent_vel_enc rostopic回聲/ cmd_vel_enc
發(fā)送目標(biāo)/ cmd_vel消息,并看到這些消息如何變化。
./nav_forward.sh ./nav_rotate.sh
當(dāng)我們?cè)O(shè)置gopigo_on為False,gopigo_state_updater節(jié)點(diǎn)基本上都會(huì)在目標(biāo)角速度復(fù)制(在本質(zhì)上,模擬仿佛編碼器讀數(shù)完全匹配我們給定的模型)。檢查/ cmd_vel和/ cmd_vel_enc匹配。
測(cè)程的GoPiGo
讓我們用實(shí)際車輪編碼器傳感器數(shù)據(jù)計(jì)算測(cè)距。
在gopigo_interface.launch,為所有的以下內(nèi)容:
運(yùn)行上面列出的相同的啟動(dòng)文件。同時(shí)打印出同樣的ROS消息。
驗(yàn)證/ cmd_vel和/ cmd_vel_enc是相似的。這應(yīng)該告訴你,以及如何現(xiàn)實(shí)我們預(yù)期的模式相匹配。
PID控制在GoPiGo
PID控制應(yīng)該確保車輪在預(yù)期的速度旋轉(zhuǎn)。
在gopigo_interface.launch,設(shè)置
嘗試不同的摩擦運(yùn)行上表面上的機(jī)器人,并驗(yàn)證該機(jī)器人更可靠地行進(jìn)相同的距離時(shí),PID控制被接通。
GitHub 機(jī)器人 視頻
版權(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)容。