控制kobuki底盤 二

2021-07-07 05:40:37 字數 1263 閱讀 9221

(一)開環控制小車的速度和角速度–使小車按簡單函式軌跡移動.

座標系的建立:差速底盤的正面為初始方向, 設初始方向與所建立座標系的夾角θ.

θ=atan(f'(0))

(二)計算

1)勻速轉向:由於傳送topic需要以次數i計算.故在設定阻塞頻率rate後大致可估算出w=θ/(i*t)=θ*rate/i;

w即為speed.angular.z;

2)計算軌跡對應的速度和角速度:思路是,角速度用積分;線速度用極限(保持掃過的面積相同花費同樣的時間)得:

w(t)=-f」(t)/(1+[f』(t)]^2);

v(t)=sqrt(1+[f』(t)]^2);

(三)調整

補充啟動轉角:按上述公式計算忽略了初始方位,預設為剛好沿著曲線在t=0時的切線方向.實際上,這個初值需要額外給定.在形成路徑之前應有 θ 大小的轉角.

(四)實現

//此按鍵處理為非阻塞的

#include //包含#include sting

#include

#include

#include

#include "feiduseexit.h"

#define pi 3.14

//延時等待 並用於 調整初始方向

void delayforadapt(ros::publisher& cmdvelpub_ ,geometry_msgs::twist& speed_, double angle_)

speed_.angular.z = 0; //角速度清零

cmdvelpub_.publish(speed_); //將速度傳送給機械人

ros_info("finish direction adapted");

} int main(int argc, char **argv)

else

cmdvelpub.publish(speed); // 將剛才設定的指令傳送給機械人//ros::spinonce();//用來接收訊息

looprate.sleep();//按looprate(rate)設定的頻率將程式堵塞

} speed.linear.x =0;

speed.angular.z =0;

cmdvelpub.publish(speed);

ros_info("newkeyop cpp has finished...");

return

0;}

控制kobuki底盤 一

一 aicrobo的成果 有了catkin ws裡aicrobo xi系列的package後,分別用不同ternimal啟動 依次為虛擬底盤,rviz,鍵盤控制 roslaunch aicroboxi bringup fake aicroboxi.launch roslaunch aicroboxi...

ROS學習記錄(3) Kobuki控制大合集

宣告 本文收錄kobuki所有操作命令,以後都在本文更新。1.啟動kobuki roslaunch kobuki node minimal.launch2.改變顏色或關閉led 通過發布話題 rostopic pub mobile base commands led1 kobuki msgs led...

二輪差動模型,機械人底盤chassis里程計計算。

二輪差動模型的機械人底盤,是最常見的機械人底盤,像掃地機械人,循跡小車等。作為機械人的移動部件,它需要實現輸入輸出兩大功能。輸入 接收控制指令速度v和角速度w v,w 單位m s rad s 輸出 機械人相對位姿x y軸座標,角度th x,y,th 單位 m m rad 必要時反饋當前機械人速度cv...