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)