1. 程式人生 > 其它 >ROS基礎系列(七):機器人的建模與模擬(中)

ROS基礎系列(七):機器人的建模與模擬(中)

技術標籤:ROS學習ROS基礎模擬器

上節 講解機器人建模、相關建模語言、簡單感測器模型

中節講解控制器,包括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

待續…

參考文獻

  1. https://github.com/ROSClub/mrobot