ROS中階筆記(三):機器人仿真—ArbotiX+rviz功能仿真


ROS中階筆記(三):機器人仿真—ArbotiX+rviz功能仿真

01 機器人URDF模型優化—xacro模型文件

1.1 xacro模型文件

URDF模型的進化版本—xacro模型文件

xacro里面的模型仍然是urdf模型,但是從整個模型的管理上發生了很大的變化

  • 精簡模型代碼
    1、創建宏定義
    2、文件包含
  • 提供可編程接口
    1、常量
    2、變量
    3、數學計算
    4、條件語句

1.2 xacro使用方法

1.常量定義

<xacro:property name="M_PI" value="3.14159"/>

2.常量使用

<origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>

3.數學計算

注意:所有數學運算都會轉換成浮點數進行,以保證運算精度

<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>

4.宏定義

<xacro:macro name="name" params="A B C">
   ......                                      # ······填寫具體模型定義(類似函數內容)
</xacro:macro>

5.宏調用

<name A="A_value" B="B_value" C="C_value" />

6.文件包含

<xacro:include filename="$(find mbot_descripiton)/urdf/xacro/mbot_base.xacro" />

1.3 模型顯示

~/catkin_ws/src/mbot_description/urdf/xacro 下 mbot_base.xacro文件不能單獨運行,還需要實現一個上層文件mbot.xacro來實現;

方法一: 將xacro文件轉化成URDF文件后顯示 (不常用)

在~/catkin_ws/src/mbot_description/urdf/xacro 下,運行下面命令:

$ rosrun xacro xacro.py mbot.xacro>mbot.urdf

# 出現警告忽略,看到生成mbot.urdf文件

方法二:直接調用xacro文件解析器,解析成機器人模型 (常用)

在~/catkin_ws/src/mbot_description/launch/xacro下 可以看到display_mbot_base_xacro.launch文件

	<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'" />
	<arg name="gui" default="true" />

	<param name="robot_description" command="$(arg model)" />

$ roslaunch mbot_description display_mbot_base_xacro.launch

02 ArbotiX+rviz功能仿真

參見:http://wiki.ros.org/arbotix

2.1 Arboti簡介

  • ArbotiX是一款控制電機、舵機的硬件控制板;
  • 提供了相應的ROS功能包;
  • 提供了一個差速控制器,通過接收速度控制指令,更新機器人的里程計狀態。

2.2 安裝Arbotix

arbotix_ros文件放在catkin_ws/src/文件夾下:

$ cd ~/catkin_ws/src
$ git clone https://github.com/vanadiumlabs/arbotix_ros.git  #放在catkin_ws/src/文件夾下
$ cd ~/catkin_ws 

# 下面兩種方法編譯
$ catkin_make                # 編譯arbotix_ros
$ catkin_make -DCATKIN_WHITELIST_PACKAGES="arbotix_ros"

注意:arbotix_ros中的python文件需要添加可執行權限;

python文件添加可執行權限,鼠標右鍵—屬性—權限—執行:√允許作為程序執行文件(E);

2.3 配置ArbotiX控制器

第一步:配置launch文件

~/catkin_ws/src/mbot_description/launch/xacro/下arbotix_mbot_with_camera_xacro.launch

可以看出它其實跟之前的launch文件是差不多的,只是多了一個啟動 arbotix_python 節點的命令,這個文件在之前下的啟動 arbotix_ros中可以找到,如果這里節點啟動失敗可以找到該文件,右鍵屬性查看可執行權限,python文件需要添加可執行權限才能運行。

<launch>
	<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot_with_camera.xacro'" />
	<arg name="gui" default="false" />

	<param name="robot_description" command="$(arg model)" />

    <!-- 設置GUI參數,顯示關節控制插件 -->
	<param name="use_gui" value="$(arg gui)"/>

      <!-- 啟動 arbotix_python 節點-->
	<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
	         <!-- 加載控制器參數-->
        <rosparam file="$(find mbot_description)/config/fake_mbot_arbotix.yaml" command="load" />
        <param name="sim" value="true"/>
    </node>

    <!-- 運行joint_state_publisher節點,發布機器人的關節狀態  -->
	<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />

	<!-- 運行robot_state_publisher節點,發布tf  -->
	<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

    <!-- 運行rviz可視化界面 -->
	<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_arbotix.rviz" required="true" />

</launch>

第二步:創建配置文件

~/catkin_ws/src/mbot_description/config/下fake_mbot_arbotix.yaml

這是一個參數配置文件,定義了一個controller。包括了控制器類型、控制的車體坐標系、輪子的間距、控制頻率、PID以及加速度等參數

controllers: {
   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 
    }
}

第三步:啟動仿真器

$ roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch 

第四步:啟動鍵盤控制(再開一個新終端)

$ roslaunch mbot_teleop mbot_teleop.launch

# i小車向前,  u轉向···

odom里程計坐標系,是一個全局坐標系;通過里程計記錄機器人當前的運動位姿

2.4 ArbotiX+rviz—導航仿真示例

參考:《ROS by example》

1.安裝一下turtlebot,輸入下列安裝命令:

$ sudo apt-get install ros-kinetic-turtlebot-*

2.安裝arbotix模擬器:

$ sudo apt-get install ros-kinetic-arbotix-*

這里沒有執行上面的rviz的安裝是因為在安裝ROS的時候默認已經安裝好了,不需要重復安裝。

3.安裝ROS by example書配套的代碼包rbx1

cd ~/catkin_ws/src
 
git clone https://github.com/pirobot/rbx1.git
 
cd ..
 
catkin_make

4.分別在三個終端運行以下代碼:

$ roslaunch rbx1_bringup fake_turtlebot.launch 
$ roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
$ rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz

運行結果:點擊rviz畫面中的2D Nav Goal ,之后隨便標記地圖中的一點,小車可以根據路徑規划進行導航,到達目的地。

03 問題解決

3.1 問題一:ImportError: No module named arbotix_msgs.msg

2.3 配置ArbotiX控制器中

第三步:啟動仿真器

$ roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch 

這里在開啟上一個launch文件的時候出現了一個問題:缺少依賴項

ImportError: No module named arbotix_msgs.msg        

解決方法:

不要 sudo apt-get安裝,把源碼包下載下來,編譯;

順便刷新下空間

$ source ~/catkin_ws/devel/setup.bash

04 參考資料

ROS xacro使用方法: http://wiki.ros.org/xacro

古月居:https://www.guyuehome.com/237


免責聲明!

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



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