亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
1033
2022-05-29
(圖文設計來源于創客貼-免費非商用板塊)
# 0x1實驗環境:
本實驗環境使用的是Ubuntu16.04系統環境,當然目前ROS在Ubuntu18.04上也較為兼容。并且如果使用C語言進行ROS開發的話,可安裝類似于Windows下VS的Cmake工具,便于更近一步開發。
本文近1400字,閱讀需要8分鐘
# 0x2開啟ROS:
king@king:~$ roscore
# 0x3啟動小烏龜測試節點:
king@king:~$ rosrun turtlesim turtlesim_node
此時,我們可以看到在Ubuntu系統終端命令行的控制下,ROS為我們打開了ROS自帶的小烏龜測試節點。此時在配合控制節點就可以對于小烏龜進行方向操控。
# 0x4查看各節點直接的關系:
king@king:~$ rqt_graph
# 0x5列出各系統節點:
king@king:~$ rosnode list /rosout /teleop_turtle /turtlesim
其中 /rosout 是采集所有節點里面的日志信息,用來提交給上面的仿真模擬界面來做顯示。
查看指定節點的具體信息 (以 turtlesim 節點具體信息為例):
king@king:~$ rosnode info /turtlesim -------------------------------------------------------------------------------- Node [/turtlesim] Publications: * /rosout [rosgraph_msgs/Log] * /turtle1/color_sensor [turtlesim/Color] * /turtle1/pose [turtlesim/Pose] Subscriptions: (通過鍵盤方向來反饋給仿真模擬系統) * /turtle1/cmd_vel [geometry_msgs/Twist] Services: * /clear * /kill * /reset * /spawn * /turtle1/set_pen * /turtle1/teleport_absolute * /turtle1/teleport_relative * /turtlesim/get_loggers * /turtlesim/set_logger_level contacting node http://king:45867/ ... Pid: 2709 Connections: * topic: /rosout * to: /rosout * direction: outbound (45045 - 127.0.0.1:38664) [24] * transport: TCPROS * topic: /turtle1/cmd_vel * to: /teleop_turtle (http://king:39861/) * direction: inbound (58676 - king:50595) [31] * transport: TCPROS
通過分析,我們甚至能夠看到底層運行的TCP協議,會話等。
# 0x6打印當前系統的所有話題列表:
king@king:~$ rostopic list/rosout/rosout_agg/turtle1/cmd_vel/turtle1/color_sensor/turtle1/pose
嘗試通過 ros-topic 命令來控制海龜實例按照要求移動
其中 ros-topic 表示發布數據給某一個 topic
其中 /turtle1/cmd_vel 為話題名 (選中后直接按 Tab 會自動補全話題)
自動補全的 geom-e-try_msgs/Twist 為發布的數據內容,消息結構
消息結構內的具體數據,例如本實例中即為 x,y,z
king@king:~$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0"
# 0x7終端產生器的服務器列表:
king@king:~$ rosservice list/clear/kill/reset/rosout/get_loggers/rosout/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
# 0x8使用/spawn產生一只新的海龜:
king@king:~$ rosservice call /spawn "x: 0.0y: 0.0theta: 0.0name: ''"
我們在模擬器中,畫出模擬器的 x,y,z(具體的控制方位是這么回事)
此時就建立出了一個坐標系位于x=2 y=2的海龜。
這樣我們在節點列表內在查看,出現一個名為turle2的海龜。
king@king:~$ rostopic list/rosout/rosout_agg/turle2/cmd_vel/turle2/color_sensor/turle2/pose/turtle1/cmd_vel/turtle1/color_sensor/turtle1/pose
此時我們通過第二個海龜的節點即可以對第二只海龜進行控制 (可以雙人海歸快打)
/turle2/cmd_vel/turle2/color_sensor/turle2/pose
# 0x9保存之前的姿勢狀態:
rosbag record -a -o cmd_record
-a指的是保存全部all,-o是將調整好的姿勢狀態保存成文件夾的形式,方便第二次打開處理。
開始記錄姿態數據......
記錄完畢后,退出自動保存
rosbag play cmd_record.bag(保存的bag目錄)
機器人
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。