機器人系統仿真(十)——arbotix控制機器人運動


參考視頻:【奧特學園】ROS機器人入門課程《ROS理論與實踐》零基礎教程_嗶哩嗶哩_bilibili

參考文檔:http://www.autolabor.com.cn/book/ROSTutorials/

接下來,通過一個案例演示 arbotix 的使用。

需求描述:

控制機器人模型在 rviz 中做圓周運動

結果演示:

實現流程:

  1. 安裝 Arbotix

  2. 創建新功能包,准備機器人 urdf、xacro 文件

  3. 添加 Arbotix 配置文件

  4. 編寫 launch 文件配置 Arbotix

  5. 啟動 launch 文件並控制機器人模型運動

1.安裝 Arbotix

方式1:命令行調用

sudo apt-get install ros-<<VersionName()>>-arbotix

將 <<VsersionName()>> 替換成當前 ROS 版本名稱,如果提示功能包無法定位,請采用方式2。

方式2:源碼安裝

先從 github 下載源碼,然后調用 catkin_make 編譯

git clone https://github.com/vanadiumlabs/arbotix_ros.git

2.創建新功能包,准備機器人 urdf、xacro

urdf 和 xacro 調用上一講實現即可

3.添加 arbotix 所需的配置文件

添加 arbotix 所需配置文件

control.yaml

# 該文件是控制器配置,一個機器人模型可能有多個控制器,比如: 底盤、機械臂、夾持器(機械手)....
# 因此,根 name 是 controller
controllers: {
   # 單控制器設置
   base_controller: {
          #類型: 差速控制器
       type: diff_controller,
       #參考坐標
       base_frame_id: base_footprint, 
       #兩個輪子之間的間距
       base_width: 0.2,
       #控制頻率
       ticks_meter: 2000, 
       #PID控制參數,使機器人車輪快速達到預期速度
       Kp: 12, 
       Kd: 12, 
       Ki: 0, 
       Ko: 50, 
       #加速限制
       accel_limit: 1.0 
    }
}

4.launch 文件中配置 arbotix 節點

launch 示例代碼

demo07_control.launch

<launch>
    <!--1.在參數服務器中載入urdf-->
    <!--<param name="robot_description" textfile="$(find urdf01_rviz)/urdf/xacro/demo05_car_base.urdf" />-->
    <param name="robot_description" command="$(find xacro)/xacro  $(find urdf01_rviz)/urdf/xacro/car.urdf.xacro" />
    <!--2.啟動rviz-->
    <node pkg="rviz" name="rviz" type="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz"/>

    <!--3.關節狀態發布節點-->
    <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher"/>
    <!--4.機器人狀態發布節點-->
    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"/>

    <!--集成 arbotix 運動控制節點,並且加載參數-->
    <node pkg="arbotix_python" type="arbotix_driver" name="driver" output="screen">
        <rosparam command="load" file="$(find urdf01_rviz)/config/control.yaml" />
        <param name="sim" value="true" />
    </node>


</launch>

代碼解釋:

<node> 調用了 arbotix_python 功能包下的 arbotix_driver 節點

<rosparam> arbotix 驅動機器人運行時,需要獲取機器人信息,可以通過 file 加載配置文件

<param> 在仿真環境下,需要配置 sim 為 true

5.啟動 launch 文件並控制機器人模型運動

輸入命令,運行rviz

cys@ubuntu:~/demo05_ws$ source ./devel/setup.bash
cys@ubuntu:~/demo05_ws$ roslaunch urdf01_rviz demo07_control.launch

更改 fixed frame

打開命令行,讓小車運動

此時調用 rostopic list 會發現一個熟悉的話題: /cmd_vel

也就說我們可以發布 cmd_vel 話題消息控制小陳運動了,該實現策略有多種,可以另行編寫節點,或者更簡單些可以直接通過如下命令發布消息: 

cys@ubuntu:~$ rostopic list
/clicked_point
/cmd_vel
/diagnostics
/initialpose
/joint_states
/move_base_simple/goal
/odom
/rosout
/rosout_agg
/tf
/tf_static
cys@ubuntu:~$ rostopic pub -r 10 /cmd_vel  geometry_msgs/Twist "linear:
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.0" 

小車開始運動啦!

 顯示小車運動的方向

更改運動方向表示的箭頭

 顯示機器人的坐標系

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM