ROS基礎系列(七):機器人的建模與模擬(中)
阿新 • • 發佈:2021-01-19
上節 講解機器人建模、相關建模語言、簡單感測器模型
中節講解控制器,包括ros_control, ArbotiX差分控制器
下節主要介紹gazebo,講解如何構建模擬環境、機器人如何在模擬環境中的運動
第七章:機器人的建模與模擬(中)
一、ArbotiX差分控制器
在一些簡單場景,我們通常使用rviz + ArbotiX構建運動模擬器,使用rviz作為模擬場景就夠用了。
本小節我們來實現依賴ArbotiX的機器人模擬。
1. 安裝
sudo apt-get install ros-melodic-arbotix
筆者的ros系統為melodic,各位看官根據自己環境安裝對應功能包。
安裝成功後如上圖所示,五個相關功能包會被安裝。
2. 關鍵功能包
arbotix_python
是關鍵功能包,提供與ros相關的介面。功能包中的節點arbotix_driver
做詳細解釋。(筆者的ros系統為melodic)
對diff_controller
控制器型別:
節點訂閱:
/cmd_vel (geometry_msgs/Twist)
move_base釋出的速度指令
節點發布:
/odom (nav_msgs/Odometry)
navigation stack 需要的TF座標變換:odom → base_link
節點引數配置:
引數比較多,通常使用yaml檔案直接對節點進行配置,然後用launch檔案批量load。
常見的配置引數如下
port: /dev/ttyUSB0
baud: 115200
rate: 20
sync_write: True
sync_read: True
read_rate: 20
write_rate: 20
controllers: {
# Pololu motors: 1856 cpr = 0.3888105m travel = 4773 ticks per meter (empirical: 4100)
base_controller: {type : diff_controller, base_frame_id: base_footprint, base_width: 0.26, ticks_meter: 4100, Kp: 12, Kd: 12, Ki: 0, Ko: 50, accel_limit: 1.0 }
}
前面埠收發等引數是面對真實控制器而言,如果是模擬環境,直接配置引數 sim
= true 即可
關鍵引數controllers解釋:
- 控制器名稱:
base_constoller
- 控制型別:
diff_controller
差速控制器,對應差速運動的雙輪機器人 - 參考座標系:
base_footprint
(根據自己情況更改) - 編碼器編碼次數/m:
ticks_meter
- 機器人底盤寬度:
base_width
- pid 以及加速度限制
節點launch檔案:
<launch>
<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
<rosparam file="$(find your_package)/default.yaml" command="load" />
<param name="sim" value="true"/>
</node>
</launch>
3. 例項
這裡我們使用mrobot提供的機器人URDF模型進行實驗。
二、ROS_control
待續…
參考文獻
- https://github.com/ROSClub/mrobot