ros機器人之小烏龜仿真-路徑記錄


------------恢復內容開始------------

通過自己不斷地摸索,對ros系統有了一定的了解,首先裝系統,這一過程中也遇到了很多問題,但通過不斷地嘗試,經過一天一夜的倒騰,總算是把系統給安裝好了,接下來配置環境,雖然這個過程比較艱辛,總是出現編譯出錯或者沒有功能包依賴等各種問題。但是通過我們的努力,都一點一點的解決了,我會再接再厲,

1.首先運行個小烏龜例程:

  打開一個終端:roscore                              #運行ros環境

  打開一個終端:rosrun turtlesim turtlesim_node        #運行小烏龜仿真器節點,打開小烏龜運行場景

  打開一個終端:rosrun turtlesim turtle_teleop_key             #運行鍵盤控制節點,通過方向鍵控制小烏龜的運動

 

 

2.通過話題給小烏龜發送消息讓小烏龜定向運動

命令如下

 qqtsj  ~  rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 3.0
  y: 0.0
  z: 2.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0" 
publishing and latching message. Press ctrl-C to terminate

 可以定向的改變小烏龜的角速度和線速度以及小烏龜的轉動角度,但是這樣只能發送一次消息。

若需以一定的頻率不斷地發送消息數據,則為如下命令

 qqtsj  ~  rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 2.0
  y: 0.0
  z: 2.0
angular:
  x: 0.0
  y: 0.0
  z: 3.0" 

 其中-r為循環,10為發送給消息的頻率(單位為hz),然后小烏龜就會根據規定的速度和角度定向的運動,這就用到了ROS系統中的話題通信,以便后面研究機器人打下基礎。

 

查看消息的結構:rosmsg show geometry/Twlist

 

服務:service

查看服務的列表(服務的內容):rosservice list

 qqtsj  ~  rosservice list
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rostopic_26871_1579011097016/get_loggers
/rostopic_26871_1579011097016/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

 

建立一個新的海龜:rosservice call /spawn  (Tab鍵兩下)

 qqtsj  ~  rosservice call /spawn "x: 0.0
y: 0.0
theta: 0.0
name: 'turtle2'" 
name: "turtle2"

 

路徑記錄

首先創建一個bag包,存放小烏龜運行的路徑,記錄下小烏龜的行進路線。命令為

 qqtsj  ~  rosbag record -a -O cmd_record
[ INFO] [1579021261.961366553]: Recording to cmd_record.bag.
[ INFO] [1579021261.962496904]: Subscribing to /turtle1/color_sensor
[ INFO] [1579021261.964809471]: Subscribing to /turtle2/color_sensor
[ INFO] [1579021261.966782329]: Subscribing to /rosout
[ INFO] [1579021261.968599482]: Subscribing to /turtle2/pose
[ INFO] [1579021261.970367259]: Subscribing to /rosout_agg
[ INFO] [1579021261.972389384]: Subscribing to /turtle1/cmd_vel
[ INFO] [1579021261.975169187]: Subscribing to /turtle1/pose

 

路徑重現

在bag包中已經記錄了小烏龜的路徑,然后通過調用bag包去實現小烏龜路徑的重現,小烏龜會按照記錄的路徑重新運動,如下

 qqtsj  ~  rosbag play cmd_record.bag 
[ INFO] [1579021485.400287473]: Opening cmd_record.bag

Waiting 0.2 seconds after advertising topics... done.

Hit space to toggle paused, or 's' to step.
 [RUNNING]  Bag Time: 1579021261.977381   Duration: 0.000000 / [RUNNING]  Bag Time: 1579021261.978402   Duration: 0.001021 / [RUNNING]  Bag Time: 1579021262.078691   Duration: 0.101311 / [RUNNING]  Bag Time: 1579021262.177369   Duration: 0.199988 / [RUNNING]  Bag Time: 1579021262.185319   Duration: 0.207938 / [RUNNING]  Bag Time: 1579021262.201285   Duration: 0.223904 / [RUNNING]  Bag Time: 1579021262.217652   Duration: 0.240271 / [RUNNING]  Bag Time: 1579021262.233162   Duration: 0.255782 / [RUNNING]  Bag Time: 1579021262.249374   Duration: 0.271993 / [RUNNING]  Bag Time: 1579021262.266055   Duration: 0.288674 / [RUNNING]  Bag Time: 1579021262.281470   Duration: 0.304090 /

 通過對小烏龜的控制,定向移動,路徑記錄,路徑重現。對接下來ros機器人的研究有一定的幫助,會加深我們對機器人的理解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM