ROS中階筆記(三):機器人仿真—ArbotiX+rviz功能仿真node
URDF模型的進化版本—xacro模型文件python
xacro裏面的模型仍然是urdf模型,可是從整個模型的管理上發生了很大的變化git
1.常量定義github
<xacro:property name="M_PI" value="3.14159"/>
2.常量使用shell
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0"/>
3.數學計算編程
注意:全部數學運算都會轉換成浮點數進行,以保證運算精度bash
<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.宏調用dom
<name A="A_value" B="B_value" C="C_value" />
6.文件包含機器學習
<xacro:include filename="$(find mbot_descripiton)/urdf/xacro/mbot_base.xacro" />
~/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
參見:http://wiki.ros.org/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);
第一步:配置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里程計座標系,是一個全局座標系;經過里程計記錄機器人當前的運動位姿
參考:《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 ,以後隨便標記地圖中的一點,小車能夠根據路徑規劃進行導航,到達目的地。
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
ROS xacro使用方法: http://wiki.ros.org/xacro
古月居:https://www.guyuehome.com/237
微信公衆號:喵哥解說 公衆號介紹:主要研究機器學習、計算機視覺、深度學習、ROS等相關內容,分享學習過程當中的學習筆記和心得!期待您的關注,歡迎一塊兒學習交流進步!同時還有1200G的Python視頻和書籍資料等你領取!!!