(一)aicrobo的成果
有了catkin_ws裡aicrobo_xi系列的package後,分別用不同ternimal啟動:依次為虛擬底盤,rviz,鍵盤控制
roslaunch aicroboxi_bringup fake_aicroboxi.launch使用鍵盤時會提示,是否enable the motor ,按e使能電機後可使用方向鍵控制.roslaunch aicroboxi_rviz view_mobile.launch
roslaunch kobuki_keyop keyop.launch
aicrobo寫的鍵盤控制:
roslaunch aicroboxi_teleop keyboard_teleop.launch按 uio/jkl/m,./ 控制底盤.
(二)三次啟動太麻煩,合成一次
cd ~/catkin_ws/src/aicrobo_xi/這樣建立的newteleop包下依賴roscpp,rospy,std_msgs等,建立過後產生cmakelists.txt和package.xml檔案.新建乙個launch資料夾,在裡面建立乙個newkeyop.launch的檔案:把上面的啟動的三個檔案的launch組合在乙個檔案裡.catkin_create_pkg aicrobo_newteleop roscpp rospy std_msgs geometry_msgs/twist
(三)寫乙個自己的按鍵控制代替ros::ok()
1)堵塞式按鍵掃瞄將影響其他程序
//堵塞式按鍵檢測
#include //printf() setbuf()
#include //input_event ev_key
#include //open()
#include //open()
#include //open()
#include //read(),close()
#define dev_path "/dev/input/event3" //difference is possible
int main()
while(1)
} }
} close(keys_fd);
/* 這段無作用
*/return
0;
}
可以檢測並顯示 按鍵的按下和鬆開.
2)非堵塞式按鍵掃瞄不影響其他工作
#include
#include
#include
#include
#include
#include
static
struct termios ori_attr, cur_attr;
static __inline
int tty_reset(void)
static __inline
int tty_set(void)
static __inline
int kbhit(void)
else
if (retval)
return
1; /* fd_isset(0, &rfds) will be true. */
else
return
0; return0;}
int main()
else
int i=0,j=0;///這樣可以很明顯的看出顯示效果
while(i++<1000)
} if(tty_set_flag == 0)
tty_reset();
return
0;}
這兩段程式非原創.
3)寫成函式,放在單獨的cpp檔案中,生成被包含的標頭檔案.
.cpp檔案
#include "feiduseexit.h"
bool feiduseexit()
} else
int i=0,j=0;///這樣可以很明顯的看出效果非阻塞
while(i++<1000)
if(tty_set_flag == 0)
tty_reset();
return
1;}
.h檔案
#ifndef feiduseexit_h
#define feiduseexit_h
#include
#include
#include
#include
#include
#include
static
struct termios ori_attr, cur_attr;
static __inline
int tty_reset(void)
static __inline
int tty_set(void)
static __inline
int kbhit(void)
else
if (retval)
return
1; /* fd_isset(0, &rfds) will be true. */
else
return
0; return0;}
bool feiduseexit();
#endif
cmakelists.txt
加入類似的結構
add_executable(feidusekaihuanroad src/feidusekaihuanroad.cpp src/feiduseexit.cpp)
啟動檔案的名字:feidusekaihuanroad 後面是包含的cpp
target_link_libraries(feidusekaihuanroad
$)
feiduseexit.h檔案放在catkin_ws的include檔案裡.
按鍵可被檢測和顯示返回ture,按q可以返回false.
控制kobuki底盤 二
一 開環控制小車的速度和角速度 使小車按簡單函式軌跡移動.座標系的建立 差速底盤的正面為初始方向,設初始方向與所建立座標系的夾角 atan f 0 二 計算 1 勻速轉向 由於傳送topic需要以次數i計算.故在設定阻塞頻率rate後大致可估算出w i t rate i w即為speed.angul...
ROS學習記錄(3) Kobuki控制大合集
宣告 本文收錄kobuki所有操作命令,以後都在本文更新。1.啟動kobuki roslaunch kobuki node minimal.launch2.改變顏色或關閉led 通過發布話題 rostopic pub mobile base commands led1 kobuki msgs led...
關於一汽大眾的車型底盤號
分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!關於一汽大眾的車型底盤號 一汽大眾的底盤號通常有17位,其中第7 8位合在一起可以表示車型,可是我不知道什麼號碼表示什麼車型,可以有高人指點一下嗎?謝謝了。問題補充 我沒看懂答覆幅哦?我的...