版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ROS應(yīng)用開發(fā)技術(shù)SLAM導(dǎo)航(上)目錄CONTENTS01TurtleBot3安裝02TurtleBot3安裝目錄CONTENTS準(zhǔn)備工作TurtleBot3安裝功能包創(chuàng)建TurtleBot3概念文件介紹TurtleBot3是TurtleBot系列中的第三代產(chǎn)品,它在二代的基礎(chǔ)之上進(jìn)行了一些改進(jìn),并開發(fā)了一些新功能,以補(bǔ)充其前身缺乏的功能和滿足用戶的需求。TurtleBot3采用機(jī)器人智能驅(qū)動(dòng)器Dynamixel驅(qū)動(dòng),是一款小型的、可編程的、基于ROS(RobotOperatingSystem,機(jī)器人操作系統(tǒng))的高性價(jià)比移動(dòng)機(jī)器人,主要用于教育、研究和產(chǎn)品原型制造。資源包文件介紹sudoapt-getinstallros-melodic-joyros-melodic-teleop-twist-joyros-melodic-teleop-twist-keyboardros-melodic-laser-procros-melodic-rgbd-launchros-melodic-depthimage-to-laserscanros-melodic-rosserial-arduinoros-melodic-rosserial-pythonros-melodic-rosserial-serverros-melodic-rosserial-clientros-melodic-rosserial-msgsros-melodic-amclros-melodic-map-serverros-melodic-move-baseros-melodic-urdfros-melodic-xacroros-melodic-compressed-image-transportros-melodic-rqt-image-viewros-melodic-gmappingros-melodic-navigationros-melodic-interactive-markersrviz代碼倉庫克隆文件目錄創(chuàng)建mkdir-p~/turtlebot3_ws/src/克隆消息定義克隆模擬環(huán)境克隆TurtleBot3主要代碼文件編寫編譯Turtlebot3資源包目錄切換cd~/turtlebot3_ws編譯catkin_make異常處理測(cè)試Turtlebot3是否安裝成功020301環(huán)境變量添加exportTURTLEBOT3_MODEL=burgerroslaunchturtlebot3_faketurtlebot3_fake.launch環(huán)境變量保存文件啟動(dòng)source~/turtlebot3_ws/devel/setup.bashpackage.xml文件內(nèi)容添加仿真環(huán)境搭建launch文件編寫Gazebo9更新為Gazebo11效果展示0204050301sudosh-c'echo"deb/gazebo/ubuntu-stable`lsb_release-cs`main">/etc/apt/sources.list.d/gazebo-stable.list'查看文件寫入是否正確查看一下Gazebo的插件sudoapt-getremovegazebo9gazebo9-commongazebo9-plugin-baselibgazebo9:amd64libgazebo9-dev:amd64ros-melodic-gazebo-*設(shè)置Key卸載全部插件配置鏡像cat/etc/apt/sources.list.d/gazebo-stable.listwget/gazebo.key-O-|sudoapt-keyadd-dpkg-l|grepgazeboGazebo9更新為Gazebo11效果展示08070906檢查是否安裝成功gazebo下載、安裝Gazebo11安裝Gazebo的Ros插件sudoapt-getupdate更新sudoapt-getinstallgazebo11sudoapt-getinstalllibgazebo11-devsudoaptinstallros-melodic-gazebo11-*打開建筑編輯器文件介紹點(diǎn)擊上方“Edit”中“BuidingEdit”進(jìn)入建筑編輯器。打開.bashrc文件用戶型圖作為參考文件介紹點(diǎn)擊左下角的“Import”按鈕,選擇一張戶型照片進(jìn)行導(dǎo)入。創(chuàng)建模型文件介紹點(diǎn)擊左邊“Wall”,對(duì)著房屋輪廓和內(nèi)部墻壁描邊,下方的3D視圖會(huì)同步顯示墻壁信息。再按照戶型圖進(jìn)行門窗的設(shè)置,點(diǎn)擊左邊的“Window”和“Door”,在相應(yīng)墻壁位置選擇即可。可以雙擊2D視圖里的墻壁進(jìn)行詳細(xì)參數(shù)設(shè)置。保存模型點(diǎn)擊左上角“File”→“Save”保存,保存為model.config和model.sdf文件launch文件編寫生成.world文件效果展示02030401將克隆文件夾重命名為modelsmvgazebo_models/./models克隆Gazebo模型安裝Git工具cd~/.gazebo/進(jìn)入.gazebo文件夾sudoaptinstallgit放置房間模型文件介紹打開gazebo,左上角insert選項(xiàng)卡里找到自己的模型,找到并選擇自己剛才建好的模型放置到右邊窗口。放置部分家具文件介紹在insert選項(xiàng)下,選擇添加想要的家具等模型,來豐富自己的world。可以通過上方按鈕,來平移、旋轉(zhuǎn)模型選擇合適的擺放位置點(diǎn)擊“File”中“Saveworld”,保存到.world文件下,并命名為Myhouse.worldROS應(yīng)用開發(fā)技術(shù)SLAM導(dǎo)航(下)目錄CONTENTS01配置ROS工作空間02地圖構(gòu)建03SLAM自主導(dǎo)航目錄CONTENTS準(zhǔn)備工作配置ROS
工作空間功能包創(chuàng)建創(chuàng)建ROS工作空間文件介紹03010204創(chuàng)建文件夾echo"source~/roshomework/devel/setup.bash">>~/.bashrcROS的工作空間初始化命令編譯整個(gè)工作空間配置文件中加入環(huán)境變量mkdir-p~/roshomework/srccdroshomework/srccatkin_makecatkin_create_pkgros-wroscpprospycatkin_init_workspaceturtlebot3_world.launch文件<launch><argname="model"default="$(envTURTLEBOT3_MODEL)"doc="modeltype[burger,waffle,waffle_pi]"/><argname="x_pos"default="0.0"/><argname="y_pos"default="0.0"/><argname="z_pos"default="0.0"/><includefile="$(findgazebo_ros)/launch/empty_world.launch"><argname="world_name"value="$(findros-w)/worlds/gazebo_world/Myhouse.world"/>
進(jìn)入launch文件夾,編寫turtlebot3_world.launch文件launch文件編寫turtlebot3_world.launch文件<argname="paused"value="false"/><argname="use_sim_time"value="true"/><argname="gui"value="true"/><argname="headless"value="false"/><argname="debug"value="false"/></include><paramname="robot_description"command="$(findxacro)/xacro--inorder$(findturtlebot3_description)/urdf/turtlebot3_$(argmodel).urdf.xacro"/><nodepkg="gazebo_ros"type="spawn_model"name="spawn_urdf"args="-urdf-modelturtlebot3_$(argmodel)-x$(argx_pos)-y$(argy_pos)-z$(argz_pos)-paramrobot_description"/></launch>進(jìn)入launch文件夾,編寫turtlebot3_world.launch文件launch文件編寫編寫package.xml文件<buildtool_depend>catkin</buildtool_depend><build_depend>rospy</build_depend><build_export_depend>rospy</build_export_depend><exec_depend>rospy</exec_depend><exec_depend>gazebo_ros</exec_depend><export><gazebo_rosgazebo_media_path="${prefix}/worlds"/></export>在package.xml文件中添加以下內(nèi)容新依賴添加更改Turtlebot3類型文件介紹#原為burgerexportTURTLEBOT3_MODEL=burger#改為waffleexportTURTLEBOT3_MODEL=waffle打開.bashrc文件測(cè)試工作空間是否建立roslaunchros-wturtlebot3_world.launch效果展示地圖構(gòu)建launch文件編寫鍵盤控制腳本importrospyfromgeometry_msgs.msgimportTwistimportsys,select,osif=='nt':importmsvcrt,timeelse:importtty,termiosBURGER_MAX_LIN_VEL=0.22BURGER_MAX_ANG_VEL=2.84WAFFLE_MAX_LIN_VEL=0.26WAFFLE_MAX_ANG_VEL=1.82LIN_VEL_STEP_SIZE=0.01ANG_VEL_STEP_SIZE=0.1效果展示進(jìn)入ros-w功能包的src目錄,編寫rosw_teleop_key.py鍵盤控制腳本msg="""ControlYourTurtleBot3!---------------------------Movingaround:wasdxw/x:increase/decreaselinearvelocity(Burger:~0.22,WaffleandWafflePi:~0.26)a/d:increase/decreaseangularvelocity(Burger:~2.84,WaffleandWafflePi:~1.82)spacekey,s:forcestopCTRL-Ctoquit"""e="""CommunicationsFailed"""效果展示進(jìn)入ros-w功能包的src目錄,編寫rosw_teleop_key.py鍵盤控制腳本defgetKey():if=='nt':timeout=0.1startTime=time.time()while(1):ifmsvcrt.kbhit():ifsys.version_info[0]>=3:returnmsvcrt.getch().decode()else:returnmsvcrt.getch()eliftime.time()-startTime>timeout:return''tty.setraw(sys.stdin.fileno())rlist,_,_=select.select([sys.stdin],[],[],0.1)ifrlist:key=sys.stdin.read(1)else:key=''termios.tcsetattr(sys.stdin,termios.TCSADRAIN,settings)returnkey效果展示進(jìn)入ros-w功能包的src目錄,編寫rosw_teleop_key.py鍵盤控制腳本defvels(target_linear_vel,target_angular_vel):return"currently:\tlinearvel%s\tangularvel%s"%(target_linear_vel,target_angular_vel)defmakeSimpleProfile(output,input,slop):ifinput>output:output=min(input,output+slop)elifinput<output:output=max(input,output-slop)else:output=inputreturnoutputdefconstrain(input,low,high):ifinput<low:input=lowelifinput>high:input=highelse:input=inputreturninput效果展示進(jìn)入ros-w功能包的src目錄,編寫rosw_teleop_key.py鍵盤控制腳本defcheckLinearLimitVelocity(vel):ifturtlebot3_model=="burger":vel=constrain(vel,-BURGER_MAX_LIN_VEL,BURGER_MAX_LIN_VEL)elifturtlebot3_model=="waffle"orturtlebot3_model=="waffle_pi":vel=constrain(vel,-WAFFLE_MAX_LIN_VEL,WAFFLE_MAX_LIN_VEL)else:vel=constrain(vel,-BURGER_MAX_LIN_VEL,BURGER_MAX_LIN_VEL)returnveldefcheckAngularLimitVelocity(vel):ifturtlebot3_model=="burger":vel=constrain(vel,-BURGER_MAX_ANG_VEL,BURGER_MAX_ANG_VEL)elifturtlebot3_model=="waffle"orturtlebot3_model=="waffle_pi":vel=constrain(vel,-WAFFLE_MAX_ANG_VEL,WAFFLE_MAX_ANG_VEL)else:vel=constrain(vel,-BURGER_MAX_ANG_VEL,BURGER_MAX_ANG_VEL)returnvel效果展示進(jìn)入ros-w功能包的src目錄,編寫rosw_teleop_key.py鍵盤控制腳本if__name__=="__main__":if!='nt':settings=termios.tcgetattr(sys.stdin)rospy.init_node('turtlebot3_teleop')pub=rospy.Publisher('cmd_vel',Twist,queue_size=10)turtlebot3_model=rospy.get_param("model","burger")status=0target_linear_vel=0.0target_angular_vel=0.0control_linear_vel=0.0control_angular_vel=0.0效果展示進(jìn)入ros-w功能包的src目錄,編寫rosw_teleop_key.py鍵盤控制腳本try:print(msg)whilenotrospy.is_shutdown():key=getKey()ifkey=='w':target_linear_vel=checkLinearLimitVelocity(target_linear_vel+LIN_VEL_STEP_SIZE)status=status+1print(vels(target_linear_vel,target_angular_vel))elifkey=='x':target_linear_vel=checkLinearLimitVelocity(target_linear_vel-LIN_VEL_STEP_SIZE)status=status+1print(vels(target_linear_vel,target_angular_vel))elifkey=='a':target_angular_vel=checkAngularLimitVelocity(target_angular_vel+ANG_VEL_STEP_SIZE)status=status+1print(vels(target_linear_vel,target_angular_vel))效果展示進(jìn)入ros-w功能包的src目錄,編寫rosw_teleop_key.py鍵盤控制腳本elifkey=='d':target_angular_vel=checkAngularLimitVelocity(target_angular_vel-ANG_VEL_STEP_SIZE)status=status+1print(vels(target_linear_vel,target_angular_vel))elifkey==''orkey=='s':target_linear_vel=0.0control_linear_vel=0.0target_angular_vel=0.0control_angular_vel=0.0print(vels(target_linear_vel,target_angular_vel))else:if(key=='\x03'):breakifstatus==20:print(msg)status=0twist=Twist()效果展示進(jìn)入ros-w功能包的src目錄,編寫rosw_teleop_key.py鍵盤控制腳本control_linear_vel=makeSimpleProfile(control_linear_vel,target_linear_vel,(LIN_VEL_STEP_SIZE/2.0))twist.linear.x=control_linear_vel;twist.linear.y=0.0;twist.linear.z=0.0control_angular_vel=makeSimpleProfile(control_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育部部長(zhǎng)競(jìng)選演講稿4篇
- 七夕節(jié)海報(bào)文案(50句)
- 報(bào)關(guān)實(shí)務(wù)-教學(xué)課件 第九章 海關(guān)企業(yè)管理
- 慢性腎炎的飲食禁忌
- 國際貿(mào)易單證樣式 第2部分:電子單證 征求意見稿
- 介紹京劇課件教學(xué)課件
- 幼兒文學(xué)課件教學(xué)課件
- 前廳服務(wù)課件教學(xué)課件
- 羊絨衫后加工合同(2篇)
- 綠化樹木移植合同(2篇)
- 第15課《誡子書》課件(共29張PPT) 部編版語文七年級(jí)上冊(cè)
- 大型設(shè)備說明-涂膠顯影機(jī)第1臺(tái)
- 壓力變送器的安裝與校驗(yàn)演示教學(xué)課件
- 六年級(jí)上冊(cè)美術(shù)課件 8《參觀券的設(shè)計(jì)》 人美版
- 阿基米德原理 公開課一等獎(jiǎng)?wù)n件
- 扁平魚骨圖模板課件
- 公司食堂人員工資及績(jī)效考核方案-
- 人教部編版語文五年級(jí)上冊(cè)第六單元:語文園地六教學(xué)課件
- A級(jí)招聘法(聘誰)解析課件
- 農(nóng)行流水模板
- 四年級(jí)上冊(cè)生命生態(tài)安全期末復(fù)習(xí)資料
評(píng)論
0/150
提交評(píng)論