4 機(jī)器人仿真

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

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

URDF模型的進(jìn)化版本——xacro模型文件

精簡模型代碼

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

提供可編程接口

  • 常量
  • 變量
  • 數(shù)字計(jì)算
  • 條件語句
常量定義

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

數(shù)學(xué)計(jì)算

<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
注意:所有數(shù)學(xué)運(yùn)算都會(huì)轉(zhuǎn)換成浮點(diǎn)數(shù)進(jìn)行诅福,以保證運(yùn)算精度

宏定義

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

文件包含

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

模型顯示

方法一.將xacro文件轉(zhuǎn)換成URDF文件后顯示
rosrun xacro xacro.py mbot.xacro > mbot.urdf
方法二.直接調(diào)用xacro文件解析器(在launch文件中進(jìn)行)
<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:

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

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

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


添加可執(zhí)行權(quán)限
配置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)" />

    <!-- 設(shè)置GUI參數(shù)亚隙,顯示關(guān)節(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>

    <!-- 運(yùn)行joint_state_publisher節(jié)點(diǎn)昔搂,發(fā)布機(jī)器人的關(guān)節(jié)狀態(tài)  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />

    <!-- 運(yùn)行robot_state_publisher節(jié)點(diǎn)竹观,發(fā)布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

    <!-- 運(yùn)行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 
    }
}

第三步:啟動(dòng)仿真器
roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch

第四步:啟動(dòng)鍵盤控制
另外打開一個(gè)終端,輸入指令

導(dǎo)航仿真示例

安裝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

運(yùn)行示例程序
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
運(yùn)行結(jié)果:點(diǎn)擊rviz畫面中的2D Nav Goal 隨便標(biāo)記地圖中的一點(diǎn)遭赂,小車可以根據(jù)路徑規(guī)劃進(jìn)行導(dǎo)航

在三個(gè)終端中輸入上述三個(gè)命令循诉,結(jié)果如圖

導(dǎo)航效果如圖

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

  • ros_control

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

  • 常用控制器(Controllers)

joint_effort_controller
joint_state_controller
joint_position_controller
joint_velocity_controller

  • 仿真步驟

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

配置物理仿真模型

1.為link添加慣性參數(shù)和碰撞屬性
2.為link添加gazebo標(biāo)簽
3.為joint添加傳動(dòng)裝置<transmission> </transmission>
4.添加gazebo控制器插件

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

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

在gazebo中加載機(jī)器人模型
view_mbot_gazebo_empty_world.launch

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

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

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


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

方法二:使用Building Editor


編輯效果

編輯
保存

加載
啟動(dòng)

開始仿真

啟動(dòng)仿真環(huán)境

roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch


啟動(dòng)成功

啟動(dòng)鍵盤控制 roslaunch mbot_teleop mbot_teleop.launch

查看里程計(jì)信息rostopic echo odom

傳感器仿真

  • 攝像頭仿真
    <sensor>:描述傳感器划纽。type:傳感器類型,camera锌畸。name:攝像頭命名勇劣,自由設(shè)置
    <camera>:描述攝像頭參數(shù)。分辨率潭枣,編碼格式比默,圖像范圍,噪音參數(shù)等
    <plugin>:加載攝像頭仿真插件盆犁。


    查看攝像頭仿真圖像rqt_image_view
  • RGB-D攝像頭仿真
    啟動(dòng)launch文件


    啟動(dòng)rviz命咐,添加點(diǎn)云話題,添加圖像話題

-激光雷達(dá)仿真
啟動(dòng)launch文件


添加RobotModel谐岁、LaserScan話題
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末醋奠,一起剝皮案震驚了整個(gè)濱河市瓮下,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钝域,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锭魔,死亡現(xiàn)場離奇詭異例证,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)迷捧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門织咧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漠秋,你說我怎么就攤上這事笙蒙。” “怎么了庆锦?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵捅位,是天一觀的道長。 經(jīng)常有香客問我搂抒,道長艇搀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任求晶,我火速辦了婚禮焰雕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芳杏。我一直安慰自己矩屁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布爵赵。 她就那樣靜靜地躺著吝秕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亚再。 梳的紋絲不亂的頭發(fā)上郭膛,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音氛悬,去河邊找鬼则剃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛如捅,可吹牛的內(nèi)容都是我干的棍现。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镜遣,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼己肮!你這毒婦竟也來了士袄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤谎僻,失蹤者是張志新(化名)和其女友劉穎娄柳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘绍,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赤拒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诱鞠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挎挖。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖航夺,靈堂內(nèi)的尸體忽然破棺而出蕉朵,到底是詐尸還是另有隱情,我是刑警寧澤阳掐,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布始衅,位于F島的核電站,受9級(jí)特大地震影響锚烦,放射性物質(zhì)發(fā)生泄漏觅闽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一涮俄、第九天 我趴在偏房一處隱蔽的房頂上張望蛉拙。 院中可真熱鬧,春花似錦彻亲、人聲如沸孕锄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畸肆。三九已至,卻和暖如春宙址,著一層夾襖步出監(jiān)牢的瞬間轴脐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工抡砂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留大咱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓注益,卻偏偏與公主長得像碴巾,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丑搔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容