安裝Tello Driver


為了讓空拍機可以使用ROS,我們必須先安裝Dji Tello 的驅動
在安裝的過程中,會安裝TelloPy、h264_image_transport、tello_driver
並且要放到對應的位置,才可以順利呼叫

 $ cd <CATKIN_WS/SRC>
 $ git clone https://github.com/anqixu/TelloPy.git
 $ cd TelloPy
 $ sudo -H pip2 install -e .
 $ cd ..
 $ git clone https://github.com/anqixu/h264_image_transport.git
 $ git clone https://github.com/anqixu/tello_driver.git
 $ cd ..
 $ rosdep install h264_image_transport
 $ catkin build tello_driver

執行Tello Driver


  1. 開啟tello,並讓筆電與tello連線
  2. 開啟終端機
  3. 執行指令roslaunch tello_driver tello_node.launch

安裝後的檢查

因為ROS 是用node 以及topic的方式貫穿所有指令,如果安裝沒裝好,會有指令無法使用的問題
所以我們會再一次如同上一篇一樣用rosnode list、rostopic list,以顯示目前有的。
rosnode list

rostopic list

開始寫第一個ROS控制空拍機飛行的程式


在發佈者Publisher方面

我們要在對應的拍令動作作出定義
像是起飛動作takeoff 會用rospy.publisher中呼叫/tello/takeoff
而在cmd則是/tello/cmd_vel

takeoff_pub = rospy.Publisher('/tello/takeoff', Empty, queue_size = 1)
cmd_pub = rospy.Publisher('/tello/cmd_vel', Twist, queue_size = 10)

另外,在Cmd中的Twist就是我們的message
單純地送出一個 geometry_msgs/Twist 的 command,所以我們只要定期送出一個 command 就可以維持空拍機的動作
同時在一連串的動作之間我們也要有sleep為指令之間的緩衝時間
當中message 這次用的是以x,y,z三軸的動力數值去控制空拍機的飛行行為

msg = Twist()
msg.linear.x = 0.4
msg.angular.z = 0.36
rospy.loginfo(msg)
cmd_pub.publish(msg)

在訂閱者Subscriber方面

因為這次我們要在飛行的中途取得影像,之後再作分析的動作
所以會用到ROS當中的影像

CvBridge

ROS以其自己的sensor_msgs/Image訊息格式釋出影象,但許多使用者會希望將影象與OpenCV結合使用。
CvBridge是一個ROS庫,提供ROS和OpenCV之間的介面。

要將ROS影象訊息轉換為opencv,模組cv_bridge.CvBridge提供以下功能:

cv_image = bridge.imgmsg_to_cv2(image_message, desired_encoding="passthrough")

輸入是影象訊息,以及可選的編碼。 編碼引用目標c影象。如果給出預設值“passthrough”,則目標影象編碼將與影象訊息編碼相同。 影象編碼可以是以下任何一種OpenCV影象編碼:

  • 8UC[1-4]
  • 8SC[1-4]
  • 16UC[1-4]
  • 16SC[1-4]
  • 32SC[1-4]
  • 32FC[1-4]
  • 64FC[1-4]
    對於流行的影象編碼,CvBridge將根據需要選擇進行顏色或畫素深度轉換。 要使用此功能,請指定編碼為以下字串之一:
  • mono8: CV_8UC1, grayscale image
  • mono16: CV_16UC1, 16-bit grayscale image
  • bgr8: CV_8UC3, color image with blue-green-red color order
  • rgb8: CV_8UC3, color image with red-green-blue color order
  • bgra8: CV_8UC4, BGR color image with an alpha channel
  • rgba8: CV_8UC4, RGB color image with an alpha channel
    請注意,mono8和bgr8是大多數OpenCV函式預期的兩種影象編碼。

下一編將說明OpenCV的導入








你可能感興趣的文章

How To Crack Data Science Interview

How To Crack Data Science Interview

Android Keyboard 顯示管理

Android Keyboard 顯示管理

進階 React Component Patterns 筆記(上)

進階 React Component Patterns 筆記(上)






留言討論