在自己的工作空間中建立package:
要使用手柄控制
cd ~/wry_ws/src
catkin_create_pkg learning_joy roscpp turtlesim joy
cd ..
catkin_make
以上是在自己的工作空間中建立功能包,並編譯工作空間。
因為要使用手柄控制turtlesim運動,因此該功能包依賴有:joy功能包和turtlesim功能包。
1、建立turtle_teleop_joy
#include #include #include class teleopturtle
;teleopturtle::teleopturtle():linear_(1), angular_(0)
void teleopturtle::joycallback(const sensor_msgs::joy::constptr& joy)
int main(int argc, char** argv)
注意:在hydro版本以後,傳送turtlesim運動資訊的topic:turtle/cmd_vel的型別為:geometry_msgs/twist。
在hydro版本之前,均使用turtlesim/velocity的訊息型別。
在上述程式中,需要控制turtlesim運動,需要訂閱手柄資訊(通過topic:joy),並將從joy獲得的手柄資訊,通過joycallback函式轉換為twist型別的資料,發布出去(發布到topic:turtle1/cmd_vel)。
2、設定手柄
將手柄的usb介面接到筆記本上,執行指令:
ls /dev/input/
顯示如下內容:
by-id event0 event2 event4 event6 event8 mouse0 mouse2 uinput
by-path event1 event3 event5 event7 js0 mice mouse1
可以發現,手柄的接入埠為js0;
測試手柄:
sudo jstest /dev/input/js0
執行該命令後,如果顯示如下,說明joystick的驅動是合適的:
driver version is 2.1.0.
joystick (microsoft x-box 360 pad) has 8 axes (x, y, z, rx, ry, rz, hat0x, hat0y)
and 11 buttons (btnx, btny, btntr, btntl2, btntr2, btnselect,btnthumbl, btnthumbr, ?, ?, ?
).testing ... (interrupt to exit)
執行roscore,設定系統對於手柄的預設埠:
rosparam set joy_node/dev "/dev/input/js0"
3、建立launch檔案:
4、執行launch檔案
roslaunch learning_joy turtle_joy.launch
即可用手柄控制turtlesim執行
5、執行rosrun rqt_graph rqt_graph 即可看到節點關係圖。
羅技手柄使用及總結
sudo apt get install ros kinetic joyls dev input 你會看到 by id event1 event12 event15 event18 event3 event6 event9 mouse0 by path event10 event13 event16...
通過遊戲手柄控制機械人(ROS,Twist)
首先把手柄插入主機,一般來說可以通過檢查 dev input檢視,裡面js 的裝置一般就是手柄了 ls dev input 然後使用jstest,安裝的話sudo apt get install就好,使用jstest的語句如下 sudo jstest dev input jsxx為之前js 的字尾數...
通過遊戲手柄控制機械人(ROS)
1.適配與測試遊戲手柄 首先把手柄插入主機,一般來說可以通過檢查 dev input檢視,裡面js 的裝置一般就是手柄了 ls dev input 然後使用jstest,安裝的話sudo apt get install就好,使用jstest的語句如下 sudo jstest dev input js...