ROS Coding.1.2.myrobot1.urdf အား RVIZ တြင္ launch ျပဳလုပ္ျခင္း

ကၽြန္ေတာ္တို႕ model လုပ္လို႕ ရလာတဲ့ myrobot1.urdf ဖိုင္ကို visualization ျပဳလုပ္ဖို႕ လိုအပ္လာပါတယ္။ ဒါျပီးမွ computer keyboard ကေနတဆင့္ ခိုင္းေစတာကို ဆက္ေရးပါမယ္။ ဒီအတြက္ကိုေတာ့ RVIZ ဆိုတဲ့ sdk ကို အသံုးျပဳထားပါတယ္။ RVIZ ရဲ႕ အေၾကာင္းကိုေတာ့ ဒီမွာ ဖတ္ရွဳနိုင္ပါတယ္။ model ကို launch လုပ္ဖို႕ရာအတြက္ ကၽြန္ေတာ္တို႕ရဲ႕ package ျဖစ္တဲ့ myrobot/src ဆိုတဲ့ directory ထဲမွာ launch ဆိုတဲ့ folder တစ္ခုကို တည္ေဆာက္ျပီး ယူထားလိုက္ပါမယ္။ ဒီအထဲမွာေတာ့ ကြၽန္ေတာ္တို႕ launch လုပ္ခ်င္တဲ့ အရာအားလံုးကို ေရးပါ့မယ္။ အခု myrobot1.urdf ဖိုင္ကို display လုပ္မွာျဖစ္တဲ့ အတြက္ ကၽြန္ေတာ္ကေတာ့ အလြယ္တကူပဲ display.launch လို႕ document တစ္ခုကို create ျပဳလုပ္ ထားလိုက္ပါမယ္။ ဒီ document ထဲမွာေတာ့ ေအာက္ပါ code ေတြကို ကူးထည့္ထားပါမယ္။ ျပီးရင္ေတာ့ code ေတြကို တစ္ခုခ်င္းျပန္ျပီး ရွင္းျပေပးပါမယ္။

<?xml version="1.0"?>
<launch>
    <arg name="model" default="$(find myrobot1)/urdf/myrobot1.urdf"/>
    <arg name="gui" default="True"/>
    <param name="robot_description" textfile="$(arg model)"/>
    <param name="use_gui" value="$(arg gui)"/>
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"/>
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher"/>
    <!--  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find myrobot1)/rviz/myrobot1.rviz"/> -->
</launch>

အနီနဲ႕ ျပထားတဲ့ line ကေတာ့ comment လုပ္ထားတာျဖစ္ျပီး ေနာက္က်ရင္ေတာ့ ဘာလို႕ comment လုပ္ထားတယ္ဆုိတာရယ္ ျပီးရင္ comment ကိုပဲ ဘာေၾကာင့္ျပန္ျဖဳတ္ရတယ္ဆိုတာ ထပ္ရွင္းေပးပါမယ္။ ေလာေလာဆယ္ေတာ့ ဒီအတိုင္းပဲကူးထည့္ျပီး ေအာက္ပါ အတိုင္း launch လုပ္ၾကည့္ရေအာင္..

roslaunch myrobot1 display.launch

ဒီလို run လုိက္ရင္ေတာ့ ေအာက္ပါပံုအတိုင္းရရွိလာပါမယ္။ဒါဆိုရင္ေတာ့ display.launch ထဲမွာ ေရးထားတာအားလံုးမွန္သြားျပီျဖစ္ပါတယ္။

ျပီးရင္ေတာ့ ေနာက္ထပ္ terminal မွာ ေအာက္ပါအတိုင္းထပ္ run ေပးရပါမယ္။

rosrun rviz rviz

ဒီလို run လိုက္ရင္ေတာ့ေအာက္ပါပံုကို ရရွိလာပါလိမ့္မယ္။

ဘာပံုမွေတာ့ ေပၚလာေသးမွာ မဟုတ္ပါဘူး။ ပံုေပၚလာဖို႕အတြက္ကိုေတာ့ Global Options က Fixed Frame မွာ base_link ကို ေရြးေပးဖုိ႕လိုပါတယ္။ Add ဆုိတဲ့ button ကို နွိပ္ျပီးေတာ့လည္း RobotModel ဆိုတာကို ထပ္ျပီး select လုပ္ေပးရဦးမွာ ျဖစ္ပါတယ္။ ကၽြန္ေတာ့္ ပံုမွာေတာ့ ေရြးျပီးသား ျဖစ္ေနပါတယ္။ မိတ္ေဆြတို႕ကေတာ့ ကိုယ့္ဟာကုိယ္ေရြးေပးရပါလိမ့္မယ္။ ဒါဆိုရင္ေတာ့ ေအာက္ပါပံုအတိုင္းပဲ ကၽြန္ေတာ္တို႕ရဲ႕ robot ပံုကို ရရွိမွာျဖစ္ပါတယ္။

ဒါဆိုရင္ေတာ့ ကၽြန္ေတာ္တို႕ရဲ႕ robot model ကို create လုပ္တာနဲ႕ launch လုပ္တာဟာ ေအာင္ျမင္သြားျပီျဖစ္ပါတယ္။ myrobot1/src ထဲမွာ rviz ဆိုတဲ့ folder တစ္ခုကို ထပ္ create လုပ္ျပီး ဒီထဲမွာ အထက္ပါ model ကိုပဲ myrobot1.rviz လို႕ save ထားလိုက္မယ္။ ျပီးရင္ေတာ့ display.launch မွာ comment လုပ္ထားခဲ့တာကို ျပန္ျဖဳတ္ျပီး ေအာက္ပါအတိုင္းျပန္ run ၾကည့္ပါက rviz sdk သည္လည္း တန္း run ျပီး ကၽြန္ေတာ္တို႕ robot model ကိုတန္ျပီး ျမင္ေတြ႕ရမွာျဖစ္ပါတယ္။

roslaunch myrobot1 display.launch

display.launch ထဲမွာ ေအာက္ပါ argument ၂ ခုကို ေရးထားပါတယ္။

<arg name="model" default="$(find myrobot1)/urdf/myrobot1.urdf"/>
<arg name="gui" default="True"/>

ပထမ argument ကိုေတာ့ model လို႕ေပးထားျပီး ဒုတိယတစ္ခုကေတာ့ gui လို႕ ေပးထားပါတယ္။ arg tag ေတြ အေၾကာင္းကိုေတာ့ဒီလင့္မွာသြားဖတ္နိုင္ပါတယ္။

ပထမ arg name မွာ model လုိ႕နာမည္ေပးထားျပီး default မွာေတာ့ သူ႕ဖိုင္ရွိတဲ့ေနရာကို ညႊန္ျပေပးထားပါတယ္။ ဒုတိယ arg name မွာ gui လို႕ ေပးထားျပီး default မွာေတာ့ True လို႕ေပးထားပါတယ္။ false ေပးထားလည္း ရပါတယ္။ <arg name=”gui”/> လို႕ေရးထားလည္း ရပါတယ္။ အေရးေတာ့ မၾကီးပါဘူး။ param ေတြမွာေတာ့ ဒီတစ္ခုက အေရးၾကီးပါတယ္။

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

RVIZ မွာတုန္းက RobotModel ရဲ႕ parameter ေတြျဖစ္ပါတယ္။ RobotModel မွာပါတာေတြကို ထပ္ျပီးၾကည့္မယ္ဆိုရင္ေတာ့ ေအာက္ပါပံုအတိုင္းေတြ႕ရမွာ ျဖစ္ပါတယ္။

<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"/>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher"/>

ဒီ ၂ ခုကေတာ့ robot ရဲ႕ joint state နဲ႕ robot state ကို အျမဲေဖာ္ျပေပးေနမယ့္ ၂ ခုျဖစ္ပါတယ္။ ဒီ tag 2 ခုကို comment လုပ္ျပီး run ၾကည့္ရင္ေတာ့ robot ကို ျမင္ရေပမယ့္ cartesian coordinate frame နဲ႕ ဘယ္ေလာက္ေရာက္ေနျပီးဆိုတာကို transform လုပ္ေပးမယ့္ အရာေတြမရွိျဖစ္ေနပါလိမ့္မယ္။ ဒါဆိုရင္ေတာ့ robot ကို ဘယ္ information ေပးေပး robot က origin ေနရာမွာပဲရပ္ေနပါလိမ့္မယ္။ node tag ေတြအေၾကာင္းကိုေတာ့ ဒီမွာဖတ္နိုင္ပါတယ္ခင္ဗ်ာ။

results matching ""

    No results matching ""