turtlebot note 3

首先複習一下roscp,這個用法類似roslaunch,前面只要輸入package name,中間輸入檔案名稱,只要在這個package裡面都可以複製,後面就必須有路徑。

我要把ros_by_example這本書的範例檔案複製到自己的package裡面,~/catkin_ws/src裡面是這個樣子:

 photo my_src_zpspnliefge.png

自己的package是my_turtlebot2,範例檔案在rbx2裡面,接下來把rbx2_bringup/launch裡面的pi_robot_with_gripper.launch複製到my_turtlebot2/launch:

roscd my_turtlebot2

roscp rbx2_bringup pi_robot_with_gripper.launch launch/arm.launch

這一次要發出命令讓馬達轉動,不使用arbotix_gui,而是rostopic,並且載入自己製作的urdf模型。需要兩個檔案:

arm.launch

arm.yaml

arm.launch是修改rbx2_bringup裡面的pi_robot_with_gripper.launch而來,arm.yaml則是參考turtlebot_arm裡面的arm.yaml寫出來的。

turtlebot_arm這個package在這:

turtlebot_arm

如果有ROS indigo的環境,也可以直接安裝turtlebot_arm:

sudo apt-get install ros-indigo-turtlebot-arm

這個測試還有其他關聯檔案,我就直接把路徑指向rbx2,然後在終端機輸入:

roslaunch my_turtlebot2 arm.launch sim:=false

rqt_robot_monitor出現了

 photo my_turtlebot_arm_zpspolnsmzg.png

每一個joint都OK,發出命令的時候每一個馬達也會按照指定的角度轉動,如果要說有什麼不對勁,大概就是,馬達好像不是那麼“relax”,理論上馬達應該可以用手轉動,因為arm.launch調用了arbotix_relax_all_servos.py,但是…這種馬達比較小,就算它沒有relax,還是轉得動,再說,relax狀態的扭力應該是多少?

算了,這也不算是重要的議題,對了,rbx2這個package,我只是把它複製到~/catkin_ws/src,還沒有編譯。到目前為止所用到的檔案都是python,所以使用上都ok,至於那個arbotix_relax_all_servos.py

 photo relax_servos_zpshpgqopkl.png

看起來是綠色的,這應該是可執行狀態……

然後呢…測試完,量了一下電壓,想不到這麼快就把電用完了,目前這隻手的電源來自電動起子的鋰電池,看樣子1200mAh不太夠…

※12月11日補充
 photo joint_state_zpsw6pf4vdb.png

在joint名稱上面點兩下,就可以看到馬達狀態

作者: takashi156

正在更換圖床,緩慢進行中......

turtlebot note 3 有 “ 15 則迴響 ”

  1. 您好
    不知可否在這向您請教一個問題
    我在youtube看到這個影片

    因為他有提供程式碼(在下面資訊那邊),所以我想照著他的方法做一遍

    我安裝了movei、hector quadrotor、gazebo,他上面提到的都裝了
    我的ROS版本是indigo
    ubuntu是14.04LTS
    我在開啟moveit setup assistant載入urdf檔(you can find it in “hector_quadrotor/hector_quadrotor_urdf/urdf/quadrotore.urdf" )

    只有出現

    一個相機
    沒有直升機出現,不知您是否知道如何解決這問題
    順便請問一下,您知道要如何完整執行這些程式像youtube影片上的嗎?
    不好意思冒昧在這詢問
    我是ROS新手,才剛碰ROS沒多久
    正在努力學習中

    1. 你好,我的進度還沒有到 mapping,因為目前把重點放在多關節手臂,而且又卡關了……不過,我把他的 source 複製到~/catkin_ws/src 裡面,
      使用 check_urdf 做初步測試,沒什麼問題:

      但是 hector_quadrotor_urdf 的 xacrodisplay_quadrotor_base.launch 出現了找不到 hector_sensors_description 的訊息:

      然後,quadrotore2_movit 的 demo.launch 也是有跑出一些找不到sensor資料的訊息,不過在rviz裡面還是能看到模型:

      大概原作者提供的source少了一些東西,也許你可以選一個飛行器模型、按照網路上的教學來做一個自己的package,並參考作者的 code 來做一些模擬。

      ROS在學習上還是有一定的難度,資源還不多,我目前也是慢慢地在摸索,如果有其他疑問或心得,歡迎提出來一起討論。

  2. 您好
    我在想會缺原件會不會是因為作者是用groovy版本,而我們是用indigo
    所以要把indigo裡面的檔案複製到groovy裡面,我覺得這樣應該能解決問題,又或者要用作者提供的urdf檔來做一個package吧?
    因為我是一個超級新手
    所以還不太會使用作者提供的程式碼
    想請問您是如何使用的呢?
    我有上網搜尋一些資訊
    發現要用ROS Wrapper來實現,我現在雖然知道ROS Wrapper的概念
    但不知道如何實現ROS Wrapper在這作者的程式碼
    根據我現在的理解,您這方法應該就是ROS Wrapper的概念了吧?
    能否指點一下呢?
    感謝

    1. 對了,補充一下,我之前有用moveit和作者提供的URDF開起直升機,不過開起之後還是有漏原件~

      祝您研究順利,讓我們一起學習

    2. 雖然知道wrapper這個東西,但是我本身不具備程式員的背景,所以也很難說得清楚。
      既然你提到了版本問題,也許安裝groovy會減少一些使用上的困擾(必須搭配ubuntu 12.04)
      我本來也在用indigo,現在則轉移到比較舊的hydro.
      如果作者使用groovy,我們就安裝groovy,理論上可以最大限度的採用作者的程式碼。當然理論上,把groovy那邊的package放到indigo裡面,也是可以用的,不過根據我自己的經驗,有時候還是得碰一下運氣

      使用作者的urdf來製作一個package,可以參考這個網頁:
      http://wiki.ros.org/catkin/Tutorials/CreatingPackage
      基本上是用catkin_create_pkg這個命令,自己的package完成之後,再搭配合適的launch檔案就可以利用rviz做一些模擬。如果在細節的部分有什麼疑問,我們可以再討論。

      再來是你提到的漏原件問題,這個我也遇到了,我目前使用turtlebot的相關package,對於turtlebot內建的sensor是沒有問題的,但是自己加裝的sensor就跑出一個警告訊息,也許是編寫urdf的時候有什麼規則是我沒有注意到的、也許有什麼driver沒有安裝,這是後續必須排除的問題,雖然現階段問題不大,但是如果要完全讓程式來驅動機器,就會用到這些sensor.

      1. 了解,謝謝
        我還不太清楚要怎麼使用作者提供的程式包
        好像要放到build裡面然後輸入
        cmake ../src
        make
        我覺得我先充實一下有關workspace和catkin的知識好了
        感謝您的幫忙~

      2. 請問一下,我把packages丟到src後,執行
        cd ~/catkin_ws/build
        cmake ../src
        make

        有出現error
        make[2]: *** [pr2_teleop/CMakeFiles/teleop_gripper.dir/src/teleop_gripper.cpp.o] Error 1
        make[1]: *** [pr2_teleop/CMakeFiles/teleop_gripper.dir/all] Error 2
        make: *** [all] Error 2

        可否忽略它呢?
        執行完這指令後要如何才能launch檔案呢?

    1. 我的做法跟你不太一樣,參考這個網頁:
      http://wiki.ros.org/catkin/Tutorials/create_a_workspace

      從workspace開始:
      $ mkdir -p ~/catkin_ws/src
      $ cd ~/catkin_ws/src
      $ catkin_init_workspace

      $ cd ~/catkin_ws/
      $ catkin_make

      $ echo “source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
      $ source ~/.bashrc

      然後是catkin_create_pkg,如果要直接用現成的package,就把它複製到~/catkin_ws/src,然後打開終端機,輸入:
      $ cd ~/catkin_ws
      $ catkin_make
      這樣就可以了,如果編譯過程沒有出現error,應該就可以直接用。
      如果要自己建立一個package,然後把別人的urdf拿來用,就打開終端機,輸入:
      $ cd ~/catkin_ws/src
      $ catkin_create_pkg my_hector_quadrotor roscpp rospy urdf

      $ cd my_hector_quadrotor
      $ mkdir urdf
      $ mkdir meshes
      $ mkdir launch

      $ cd ~/catkin_ws
      $ catkin_make

      my_hector_quadrotor是package的名稱,我隨便取的,roscpp rospy urdf這三個是我們自己定義的my_hector_quadrotor的相依套件,接著把urdf檔案複製到~/catkin_ws/src/my_hector_quadrotor/urdf,把對應的STL檔案(也有可能是.dae)複製到~/catkin_ws/src/my_hector_quadrotor/meshes,再根據自己的需求寫一個launch檔案放在~/catkin_ws/src/my_hector_quadrotor/launch,在終端機執行roslaunch這樣的命令,基本流程就是這樣。

      對了,另外一位朋友也在網路寫了一些ROS的心得,我覺得可以參考:
      https://rosonjetson.wordpress.com/tag/ros/

      1. 我現在能開啟單個launch檔案了(不過有些還是無法開啟),也成功開啟 quadrotore2_moveit 裡的demo.launch
        先請問您一下,您之前的xacrodisplay_quadrotor_base.launch 出現找不到 hector_sensors_description 的訊息,是打什麼指令呢?

        我現在還是無法執行如作者一樣模擬
        我在readme裡看到作者說我們需要create一個給moveit用的pack,也就是要Create 一連串的configuration檔,請問要如何create呢?他也說可以用他已經create的configuration檔案,quadrotore2_moveit,但我還是不太清楚要如何使用,因為裡面有很多launch檔,不確定要開哪個~

        作者也說到當configure correctly後,要開啟Gazebo然後spawn(我還不太清楚spawn的概念和做法),在launch action_controller節點,最後在launch moveit plugin 和 rviz visualizer, 四軸就可以飛起來建模了,不過會用到sh file,我還不清楚要如何使用sh file。

        對了,您提供的網址我看過了,關於他說到一次性解決catkin source問題所輸入的
        echo “source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
        和source ~/.bashrc指令
        我發現有時會出現"source: command not found
        有時會出現>
        enter後也只會出現>
        如下圖
        http://ppt.cc/yRSAv

        所以我會用
        gedit ~/.bashrc &
        直接改bash檔

  3. 我對gazebo還不熟,所以現在只能根據自己的經驗來理解,在quadrotore2裡面可以看到7個資料夾,實際上我自己的case到目前為止就是
    兩個package,一個用來定義機器(裡面會有urdf及config檔案,cpp或python檔案也可以放在這裡)、一個是moveit,一開始為了測試quadrotor的urdf,我執行了xacrodisplay_quadrotor_base.launch,然後出現找不到hector_sensors_description 的訊息,問題點在於quadrotor_base.urdf.xacro,這個檔案裡面有一段:find hector_sensor_description,因為實際上沒有這個package,它當然會報錯,至於它對應的檔案:sonar_sensor.urdf.xacro也不存在。我想這應該不影響模擬的程序,因為作者是用hokuyo這種雷射感應器。

    作者有4個.sh檔案,每一個都打開來看看就會有一個方向了,sh檔案只是把一串rosrun、roslaunch的命令變成一個單獨的檔案而已,我也沒用過sh檔案,如果要直接使用這個檔案,比如說“1-simulator.sh”應該是這樣:
    $ sh 1-simulator.sh

    關於.bashrc,直接改也可以,只要系統能找得到package就好。

    1. 在歷經多次除錯和安裝缺少的packages後,我現在可以成功用sh開起作者的程式了
      不過有出現一些錯誤,只能開到這裡

      且裡面有顯示NO planning library loading,有搜尋過網路上的資訊,但還是無解,不知道是不是版本的問題

      我懷疑是跟這些錯誤有關
      Group ‘Quadrotore’ is not a chain
      Kinematics solver of type ‘kdl_kinematics_plugin/KDLKinematicsPlugin’ could not be initialized for group ‘Quadrotore’
      Kinematics solver could not be instantiated for joint group Quadrotore.

      還有每打開3-planner.sh時
      用2-controller.sh打開的node總會斷掉連結
      [ERROR] [1456759693.645172013, 718.539000000]: Client [/move_group] wants topic /multi_dof_joint_trajectory_action/feedback to have datatype/md5sum [action_controller/MultiDofFollowJointTrajectoryActionFeedback/0611ea4a62fe3c6e8470a86482016c70], but our version has [action_controller/MultiDofFollowJointTrajectoryActionFeedback/bb90301ebf9ac17d9c3bcafa7a141cba]. Dropping connection.

      不知是否真為版本問題,網路上找不到此類資訊

      還有,請問您知道如何使用pr2-teleop嗎?
      我能成功打開4-teleOp.sh

      但無法操控直升機
      是不是跟前面的錯誤有關呢?

      我還有用UBUNTU 12.04建一個groovy版本的,直接引用作者groovy的程式
      不過在make package時,總出現這錯誤QQ

      我做法是在建好workspace後,
      把packages丟到workspace裡的src,然後
      cd ~/catkin_ws/build
      cmake ../src
      make

      cd ~/catkin_ws
      catkin_make
      . ~/catkin_ws/devel/setup.bash

      用14.04和Indigo版本能成功除錯,但在12.04 groovy版本時,在make指令總會出問題
      不知該如何解決

      1. Group ‘Quadrotore’ is not a chain
        這個error可能需要去了解飛行器的group在moveit!應該怎麼定義,比如說我現在在學習arm navigation,有2個group,arm還有gripper,arm是一個chain,但是gripper就不是了。然後Kinematics solver沒有初始化,我也遇過,但是好像不影響手臂的動作。

        關於pr2的teleop,我沒有用過,它應該跟turtlebot類似,屬於differential steering system,但是我的學習進度還沒有到這邊。

        你在groovy環境catkin_make遇到的error,也許可以把~/catkin_ws/src裡面的moveit_simple_controller_manager刪掉試試看,也許是因為/opt/ros/groovy/share裡面也有一個moveit_simple_controller_manager,indigo比較容易編譯成功大概是因為它比舊版ROS稍微聰明一點。
        另外,我沒有用過groovy,我常用的是hydro還有indigo,編譯的時候只要
        cd ~/catkin_ws
        catkin_make
        就搞定了。

發表留言