2020/12/7 實艇控制總體框架(代碼就不傳啦)

1、gps和激光雷達的資料接收、決議、處理、發布話題
2、 坐標系轉換:LLA轉ECEF,ECEF轉ENU
3、根據LOS及障礙物位置計算目標航向
4、PID差速轉向控制 及 原地轉向
2020\11\16 更新:vrep仿真,ros\gps\imu\lidar
仿真環境:vrep最新版本(CoppeliaSim)、ros-kinetic、Ubuntu16.04、Python 2.7,仿真時記得先打開ros,再打開vrep,這樣會自動加載vrep_ros interface插件,
兩推進器船、有波浪的水面(改編自github某不知名環境)

控制量:兩推進器的力的大小,基于差速模型的pid控制
坐標系:
1、仿真環境中有一個世界坐標系,所有位置資訊都是基于這個世界坐標系的,例如gps發送的位置不是經緯度,而是在環境中的(x,y,z),
2、船的航向角,從x軸正方向順時針為正逆時針為負(這里記不太清了),范圍為(-pi,pi),
ROS資訊傳輸:
1、先打開ros再打開vrep,自動加載ros插件后,執行命令 rosnode list會發現有一個 sim_ros_interface的節點,這樣我們在vrep環境中發送的訊息都是基于這個節點,
發布話題有角速度、線速度、gps(x,y,航向)、激光雷達點云;訂閱話題:左右電機的推力

2、在vrep界面中,雙擊每個名字后面的小檔案(child_script),會出現該物體的lua執行代碼,vrep端發送的話題主要有 gps_data,imu_data 等,主要在Boat、GPS 這三個物體的檔案里,

3、在vrep中使用ros,參考了vrep自帶的ros例程,發布話題:初始化話題(simRos.advertise),發布話題資訊(simros.publish),shutdown,訂閱話題: 初始化話題(simRos.subscribe),回呼函式(自定義call_back)
usv_ros.py 代碼決議:
1、初始化ros話題、目標位置、pid引數等

2、訂閱話題的回呼函式

將四元數轉化為歐拉角:

3、計算無人艇當前航向與目標航向的角度差,

向量夾角的計算

4、pid差速,基礎速度base_vel

5、發送話題:左右電機推力

5、主程式中需要初始化ros節點和vrep 連接id

vrep model 下載鏈接:https://download.csdn.net/download/weixin_40820983/14003396
2020\10\20
1、找到幾個不錯的仿真環境,但搭建程序可能會比較費時:
基于java:https://github.com/He-Ze/Autonomous-Surface-Vehicle-Simulator
基于gazebo,試了兩天各種報錯不能運行:https://github.com/disaster-robotics-proalertas/usv_sim_lsa
一個無人艇比賽的官方仿真環境,基于gazebo ubuntu18.04 https://github.com/osrf/vrx
這個可運行,但是模型寫的不對,船跑不了!!!https://github.com/OUXT-Polaris/ros_ship_packages
2、卡爾曼濾波
協方差矩陣https://blog.csdn.net/u011362822/article/details/95905113 https://www.zhihu.com/question/53788909
公式推導:https://blog.csdn.net/victor_zy/article/details/82862904?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.compare
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243832.html
標籤:其他
上一篇:計算機網路-應用層筆記
下一篇:計算機網路試題
