yocs_cmd_vel_mux和yocs_velocity_smoother

1、yocs_cmd_vel_mux

進行速度的選擇,比如機器人在自主導航時遇到緊急情況要切換到手動控制模式,這時就要將機器人控制權從自主導航的節點切換到方向盤、手柄、鍵盤、急停開關等控制節點。
例如機器人自主導航時可能會有下面4種優先級的任務(通常將自主行爲的優先級設爲最低):
3 (highest priority): safety controller (安全控制)
2: keyboard teleop (鍵盤遙控)
1: android teleop (Android 遙控)
0 (lowest priority): navi stack teleop (導航包自主控制)

yocs_cmd_vel_mux包的源文件到ROS工程目錄中編譯,如catkin_ws/src。包中standalone.launch文件有一個nodelet_manager_name node,加載cmd_vel_mux.launch;cmd_vel_mux.launch中加載yocs_cmd_vel_mux/CmdVelMuxNodelet。

輸出:

output/cmd_vel

參考:使用yocs_cmd_vel_mux進行機器人速度控制切換

2、yocs_velocity_smoother

輸入:

raw_cmd_vel 控制命令,通過鍵盤、遙控或者navigation layer發出的
odometry 里程, 實際使用了其中的機器人的反饋速度
robot_cmd_vel 機器人反饋速度

輸出:

smooth_cmd_vel
active

作用:

1、對x方向的vel、acc進行約束;
2、對vel進行平滑,防止vel突變引起機器人抖動;
3、vel平滑效果比ros自帶的平滑效果更好。

參考:ros中的速度平滑處理和yocs_smoother_velocity介紹及關於全向擴展包實現

3、聯合使用

launch文件裏將yocs_cmd_vel_mux/mux_cmd_vel輸給yocs_velocity_smoother/raw_cmd_cmd進行vel約束和平滑。

參考:自主導航與遠程控制中的速度優化velocity_smoother與多路輸入切換cmd_vel_mux的層次關係(ros/ cmd_vel)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章