首先複習一下roscp,這個用法類似roslaunch,前面只要輸入package name,中間輸入檔案名稱,只要在這個package裡面都可以複製,後面就必須有路徑。
我要把ros_by_example這本書的範例檔案複製到自己的package裡面,~/catkin_ws/src裡面是這個樣子:
自己的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是修改rbx2_bringup裡面的pi_robot_with_gripper.launch而來,arm.yaml則是參考turtlebot_arm裡面的arm.yaml寫出來的。
turtlebot_arm這個package在這:
如果有ROS indigo的環境,也可以直接安裝turtlebot_arm:
sudo apt-get install ros-indigo-turtlebot-arm
這個測試還有其他關聯檔案,我就直接把路徑指向rbx2,然後在終端機輸入:
roslaunch my_turtlebot2 arm.launch sim:=false
rqt_robot_monitor出現了
每一個joint都OK,發出命令的時候每一個馬達也會按照指定的角度轉動,如果要說有什麼不對勁,大概就是,馬達好像不是那麼“relax”,理論上馬達應該可以用手轉動,因為arm.launch調用了arbotix_relax_all_servos.py,但是…這種馬達比較小,就算它沒有relax,還是轉得動,再說,relax狀態的扭力應該是多少?
算了,這也不算是重要的議題,對了,rbx2這個package,我只是把它複製到~/catkin_ws/src,還沒有編譯。到目前為止所用到的檔案都是python,所以使用上都ok,至於那個arbotix_relax_all_servos.py
看起來是綠色的,這應該是可執行狀態……
然後呢…測試完,量了一下電壓,想不到這麼快就把電用完了,目前這隻手的電源來自電動起子的鋰電池,看樣子1200mAh不太夠…
在joint名稱上面點兩下,就可以看到馬達狀態
您好
不知可否在這向您請教一個問題
我在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沒多久
正在努力學習中
你好,我的進度還沒有到 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在學習上還是有一定的難度,資源還不多,我目前也是慢慢地在摸索,如果有其他疑問或心得,歡迎提出來一起討論。
您好
我在想會缺原件會不會是因為作者是用groovy版本,而我們是用indigo
所以要把indigo裡面的檔案複製到groovy裡面,我覺得這樣應該能解決問題,又或者要用作者提供的urdf檔來做一個package吧?
因為我是一個超級新手
所以還不太會使用作者提供的程式碼
想請問您是如何使用的呢?
我有上網搜尋一些資訊
發現要用ROS Wrapper來實現,我現在雖然知道ROS Wrapper的概念
但不知道如何實現ROS Wrapper在這作者的程式碼
根據我現在的理解,您這方法應該就是ROS Wrapper的概念了吧?
能否指點一下呢?
感謝
對了,補充一下,我之前有用moveit和作者提供的URDF開起直升機,不過開起之後還是有漏原件~
祝您研究順利,讓我們一起學習
雖然知道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.
了解,謝謝
我還不太清楚要怎麼使用作者提供的程式包
好像要放到build裡面然後輸入
cmake ../src
make
我覺得我先充實一下有關workspace和catkin的知識好了
感謝您的幫忙~
請問一下,我把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檔案呢?
對了,他裡面已經有CMakeLists了,這樣可否省略catkin_create_pkg?
補充一下,我之後有執行
$ cd ~/catkin_ws
$ catkin_make
$ . ~/catkin_ws/devel/setup.bash
來建packages
我的做法跟你不太一樣,參考這個網頁:
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/
我現在能開啟單個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檔
我對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就好。
在歷經多次除錯和安裝缺少的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指令總會出問題
不知該如何解決
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
就搞定了。
Thank you so much for this artlice, it saved me time!