4 機器人仿真

  • 機器人URDF模型優(yōu)化
  • ArbotiX+rviz功能仿真
  • Gazebo物理仿真環(huán)境搭建

機器人URDF模型優(yōu)化

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

精簡模型代碼

  • 創(chuàng)建宏定義
  • 文件包含

提供可編程接口

  • 常量
  • 變量
  • 數字計算
  • 條件語句
常量定義

常量定義
<xacro:property name="M_PI" value="3.14159" />
常量使用
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />

數學計算

<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
注意:所有數學運算都會轉換成浮點數進行,以保證運算精度

宏定義

宏定義
<xacro:macro name="name" params="A B C">
......
</xacro:macro>
宏調用
<name A="A_value" B="B_value" C="C_value" />

文件包含

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

模型顯示

方法一.將xacro文件轉換成URDF文件后顯示
rosrun xacro xacro.py mbot.xacro > mbot.urdf
方法二.直接調用xacro文件解析器(在launch文件中進行)
<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'" />
<param name="robot_description" command="$(arg model)" />

ArbotiX+rviz功能仿真

ArbotiX:

  • 一種控制電機、舵機的硬件控制板
  • 提供了相應的ROS功能包
  • 提供了一個差速控制器,通過接受速度控制指令,更新機器人的里程計狀態(tài)。
    ps.http://wiki.ros.org/arbotix
安裝Arbotix功能包

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

注意:arbotix_ros中的Python文件需要添加可執(zhí)行權限


添加可執(zhí)行權限
配置ArbotiX控制器

第一步:創(chuàng)建launch文件arbotix_mbot_with_camera_xacro.launch

<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參數,顯示關節(jié)控制插件 -->
    <param name="use_gui" value="$(arg gui)"/>

    <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節(jié)點,發(fā)布機器人的關節(jié)狀態(tài)  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />

    <!-- 運行robot_state_publisher節(jié)點,發(fā)布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>

第二步:創(chuàng)建配置文件

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

第四步:啟動鍵盤控制
另外打開一個終端,輸入指令

導航仿真示例

安裝turtlebot包
sudo apt-get install ros-kinetic-turtlebot-*

安裝ROS by example書配套的代碼包rbx1
cd ~/catkin_ws/src
git clone https://github.com/pirobot/rbx1.git
cd ..
catkin_make

運行示例程序
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 隨便標記地圖中的一點,小車可以根據路徑規(guī)劃進行導航

在三個終端中輸入上述三個命令,結果如圖

導航效果如圖

Gazebo物理仿真環(huán)境搭建

  • ros_control

ROS為開發(fā)者提供的機器人控制中間件
包含一系列控制器接口、傳動裝置接口、硬件接口、控制器工具箱等等
可以幫助機器人應用功能包快速落地,提高開發(fā)效率

  • 常用控制器(Controllers)

joint_effort_controller
joint_state_controller
joint_position_controller
joint_velocity_controller

  • 仿真步驟

配置機器人模型
創(chuàng)建仿真環(huán)境
開始仿真

配置物理仿真模型

1.為link添加慣性參數和碰撞屬性
2.為link添加gazebo標簽
3.為joint添加傳動裝置<transmission> </transmission>
4.添加gazebo控制器插件

<robotNamespace>
<leftJoint> <rightJoint>
<wheelSeparation> <wheelDiameter>
<commandTopic>
<odometryFrame>

創(chuàng)建仿真環(huán)境

在gazebo中加載機器人模型
view_mbot_gazebo_empty_world.launch

空環(huán)境中的機器人
roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch

啟動之后的效果
創(chuàng)建仿真環(huán)境的兩種方法

方法一:直接添加仿真環(huán)境


點擊左上角Insert,選擇模型添加至環(huán)境

方法二:使用Building Editor


編輯效果

編輯
保存

加載
啟動

開始仿真

啟動仿真環(huán)境

roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch


啟動成功

啟動鍵盤控制 roslaunch mbot_teleop mbot_teleop.launch

查看里程計信息rostopic echo odom

傳感器仿真

  • 攝像頭仿真
    <sensor>:描述傳感器。type:傳感器類型,camera。name:攝像頭命名,自由設置
    <camera>:描述攝像頭參數。分辨率,編碼格式,圖像范圍,噪音參數等
    <plugin>:加載攝像頭仿真插件。


    查看攝像頭仿真圖像rqt_image_view
  • RGB-D攝像頭仿真
    啟動launch文件


    啟動rviz,添加點云話題,添加圖像話題

-激光雷達仿真
啟動launch文件


添加RobotModel、LaserScan話題
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容