• اولین مرجع آموزش رآس در ایران
  • info@iranros.com
wikiros-minwikiros-minwikiros-minwikiros-min
  • ایران رآس
  • ROS
    • پیش نیازهای شروع ROS
      • بررسی مفاهیم، اطلاعات فنی
      • نصب ROS برای تمام توزیع‌ها
      • برای آموزش ROS از کجا شروع کنیم؟
      • آموزش ROS
      • واژه‌نامه ROS
    • آموزش گام به گام
      • پیش‌نیازهای ROS
      • آموزش مقدماتی ROS
      • آموزش سطح متوسط
    • .
    • .
  • Software
    • نمایشگر سه‌بعدی (Rviz)
    • شبیه‌ساز گزبو Gazebo
    • نرم افزار moveit
  • Robots
    • Robots
      • ربات‌های پرکاربرد در ROS
        • ربات‌های زمینی
      • حسگرهای پرکاربرد در ROS
      • موتورهای پرکاربرد در ROS
  • publications
  • ایران رآس
  • ROS
    • پیش نیازهای شروع ROS
    • آموزش گام به گام
    • .
    • .
  • Software
    • نمایشگر سه‌بعدی (Rviz)
    • شبیه‌ساز گزبو Gazebo
    • نرم افزار moveit
  • Robots
    • Robots
  • publications
اشتراک گذاری اطلاعات و فایل‌ها بین ویندوز و ماشین مجازی (VMware®Workstation 12)
اشتراک گذاری اطلاعات و فایل‌ها بین ویندوز و ماشین مجازی (VMware®Workstation 12)
آوریل 5, 2019
ساخت یک پکیج به صورت دستی
سپتامبر 19, 2019

گام یازدهم: ضبط و بازپخش داده‌ها در ROS

Categories
  • آموزش مقدماتی ROS
Tags
  • rosbag
  • ذخیره دیتا
  • ضبط داده
گام یازدهم

ضبط و بازپخش داده‌ها در ROS

ضبط و بازپخش داده‌ها در ROS

زمانی که شما در حال اجرای یک برنامه هستید دیتاهایی در حال انتشار بین نودها است. گاهی نیاز دارید تا این دیتاها را تجزیه‌وتحلیل و یا از آن‌ها در نرم‌افزار دیگری استفاده نمایید؛ اما نه در زمان اجرای برنامه!؟ بنابراین نیاز دارید تا دیتاها را درجایی ذخیره کنید. در ROS ابزاری وجود دارد که این امکان را در اختیار کاربران قرار می‌دهد تا بتوانند دیتاهای خود را ذخیره نمایند. Rosbag به شما این امکان را می‌دهد تا با استفاده از این ابزار، دیتاهای تاپیک‌ها را در یک فایل با پسوند.bag ذخیره نمایید.

به‌طور مثال، اگر بخواهیم تمام تایپک‌های موجود در زمانی که لاک‌پشت در حال حرکت است را در یک فایل ذخیره نماییم. مراحل زیر را باید به ترتیب اجرا کنیم:

مرحله‌ی اول:

ابتدا ROS مستر را اجرا نمایید:

roscore

مرحله‌ی دوم:

نود مربوط به نمایش لاک‌پشت را اجرا نمایید. در یک ترمینال جدید دستور زیر را وارد نمایید:

rosrun turtlesim turtlesim_node

مرحله‌ی سوم:

نود مربوط به ارسال فرمان سرعت توسط صفحه‌کلید را در ترمینال جدید اجرا کنید.

rosrun turtlesim turtle_teleop_key

خب، الآن می‌توانید با باز کردن یک ترمینال جدید و واردکردن دستور rostopic list -v لیست تمام تاپیک‌هایی که وجود دارند را ببینید.

در خروجی مشاهده خواهید کرد:

Published topics:
 * /turtle1/color_sensor [turtlesim/Color] 1 publisher
 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
 * /rosout [rosgraph_msgs/Log] 2 publishers
 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
 * /turtle1/pose [turtlesim/Pose] 1 publisher

Subscribed topics:
 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber
 * /rosout [rosgraph_msgs/Log] 1 subscriber

مرحله‌ی چهارم:

حال می‌خواهیم تا دیتاها را در یک فایل ذخیره نماییم. برای این منظور از دستور زیر استفاده می‌کنیم:

mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a

دو خط اول به ترتیب دایرکتوری bagfiles را ایجاد می‌کند و سپس مسیر ترمینال را در آن قرار می‌دهد. سپس به کمک دستور rosbag و آپشن record –a تمام تاپیک‌های موجود در فایل ذخیره می‌شود.

درصورتی‌که بخواهید در همین مثال تنها دیتاهای تاپیک خاص مثلاً سرعت و موقعیت را ذخیره نمایید باید از دستور زیر استفاده کنید.

rosbag record -O subset /turtle1/cmd_vel /turtle1/pose

حال می‌خواهیم اطلاعات فایل bag ذخیره‌شده خودمان را مشاهده کنیم. برای این منظور باید از دستور کلی زیر استفاده کنید:

rosbag info your_bagfile.bag

اما اگر بخواهیم یک فایل bag را اجرا نماییم، از دستور زیر باید استفاده نمود:

rosbag play  your_bagfile.bag

در دستورات بالا بجای your_bagfile.bag از نام فایل ذخیره‌شده خود استفاده نمایید.

واردکردن rosbag در متلب

معمولاً کار با داده‌ها و تحلیل آن‌ها در نرم‌افزار متلب آسان‌تر و مورد پسندتر است. در متلب این امکان وجود دارد که فایل‌های ذخیره شده با پسوند.bag  را فراخوانی کنیم. برای این کار به صورت زیر عمل می‌کنیم.

پس از اینکه داده‌های مورد نظر خودتون رو در رآس تولید کردید و اونا رو در یک فایل .bag ذخیره کردید، متلب رو باز کنید و فایل خودتون رو در دایرکتوری اون قرار بدید. (اگر از ماشین مجازی برای رآس استفاده می‌کنید و متلب رو در ویندوز دارید، میتونید برای انتقال راحت تر فایلهاتون از آموزش اشتراک فایل بین ویندوز و ماشین مجازی استفاده کنید.)

در گام بعد با استفاده از دستور زیر فایل خودتون رو فراخوانی کنید.

bag = rosbag('your_bagfile.bag')

در مورد مثال خودمون در صورتی که با اجرای نودهای مربوط به شبیه‌ساز لاکپشت مسیری رو در صفحه رسم کرده باشید و تاپیک‌ موقعیت رو طبق دستورات بالا ذخیره کرده باشید، در متلب نیز می‌توانیم این مسیر رو مشاهده کنید. پس از اینکه فایل بگ رو فراخوانی کردید باید اطلاعاتی مشابه به این در خروجی به شما نشون داده بشه.

 bag = 
  BagSelection with properties:

           FilePath: your path\...\ your_bagfile.bag'
          StartTime: 1.5643e+09
            EndTime: 1.5643e+09
        NumMessages: 1844
    AvailableTopics: [2×۳ table]
    AvailableFrames: {0×۱ cell}
        MessageList: [1844×۴ table]

با استفاده از دستور زیر می‌توانیم یک تاپیک خاص را انتخاب کنیم.

bSel = select(bag,'Topic','/turtle1/pose');

در ادامه با استفاده از دستور زیر داده‌ها را به فرمت استراکچر ذخیره می‌کنیم.

msgStructs = readMessages(bSel,'DataFormat','struct');

داده‌های هر آرایه با اشاره به آن قابل دستیابی خواهد بود.

msgStructs{1}
ans = 
  struct with fields:
        MessageType: 'turtlesim/Pose'
                  X: 5.5444
                  Y: 5.5444
              Theta: 0
     LinearVelocity: 0
    AngularVelocity: 0

در ادامه می‌توانیم با استفاده از دستور زیر مسیر حرکتی که ربات در رآس طی کرده را در متلب رسم کنیم.

xPoints = cellfun(@(m) double(m.X),msgStructs);
yPoints = cellfun(@(m) double(m.Y),msgStructs);
plot(xPoints,yPoints)

خروجی مشابه زیر خواهد بود.

مشاهده تغییرات یک داده در طول زمان

فرض کنید بخواهیم تغییرات سرعت بر حسب زمان را ببینیم. ابتدا تاپیک سرعت را انتخاب می‌کنیم.

vel = select(bag,'Topic','/turtle1/cmd_vel');

سپس داده های این تاپیک را می‌خوانیم.

vel_msg = readMessages(vel);

سپس  با استفاده از دستور زیر داده‌های مورد نظر را انتخاب می‌کنیم. در مورد مثال حرکت لاکپشت سرعت خطی در راستای محورx و سرعت زاویه‌ای حول محورz را انتخاب می‌کنیم.

ts = timeseries(vel, 'Linear.X', 'Angular.Z')

برای مشاهده داده‌ها می‌توانید از دستور زیر استفاده کنید.

ts.Data

در نهایت می‌توانید با استفاده از دستورPlot می‌توانید تغییرات پارامترهای مورد نظر رو در طول زمان مشاهده کنید.

figure
plot(ts, 'LineWidth', 2)
Share
3

Related posts

مارس 16, 2020

نصب ROS بر روی ویندوز ۱۰


Read more
سپتامبر 20, 2019

گام سیزدهم: نوشتن یک service و client ساده (Python)


Read more
سپتامبر 19, 2019

گام دوازدهم: نوشتن یک service و client ساده (C++)


Read more

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آموزش سیستم عامل رباتیک ROS

  • پیش‌نیازهای شروع ROS
    • نصب Ubuntu در کنار ویندوز به صورت Dual Boot
    • نحوه نصب اوبونتو بر روی VMware در ویندوز ۱۰
    • اشتراک اطلاعات بین ویندوز و ماشین مجازی(VMware)
    • راه اندازی و تنظیمات اولیه Ubuntu جهت کار با ROS
    • نصب ROS
  • آموزش مقدماتی ROS
    • گام اول: نصب و پیکربندی محیط ROS
    • گام دوم: آدرس دهی در ROS
    • گام سوم: ایجاد بسته در ROS
    • گام چهارم :مفهوم Node در ROS
    • گام پنجم : مفهوم تاپیک در ROS
    • گام ششم : مفهوم service و parameters در ROS
    • گام هفتم : مفهوم launch فایل‌ها در ROS
    • گام هشتم : ایجاد فایل‌های msg و srv در ROS
    • گام نهم: مفهوم Publisher-Subscriber در ROS به زبان ++C
    • گام دهم: مفهوم Publisher-Subscriber در ROS به زبان python
    • گام یازدهم: ضبط و بازپخش داده‌ها در ROS
    • گام دوازدهم: نوشتن یک service و client ساده (C++)
    • گام سیزدهم: نوشتن یک service و client ساده (Python)
  • آموزش سطح متوسط ROS
    • ساخت یک پکیج به صورت دستی
    • مدیریت وابستگی‌های سیستم
    • تعریف پیام های سفارشی در ROS
    • مقدمه‌ای بر شبیه‌ ساز گزبو Gazebo
    • مقدمه‌ای بر RVIZ نمایشگر سه‌بعدی

ربات‌ها

  • ربات‌های زمینی
    • ربات TIAGo
    • TurtleBot
  • ربات‌های هوایی
  • بازوهای رباتیک
  • ربات‌های دریایی

برچسب‌ها

  • ;hvhdd fhgh
  • A Gentle Introduction to ROS
  • actor
  • actor_Gazebo
  • ajk nv vhs
  • bash
  • C++
  • ca tvhsd v
  • catkin
  • chmode

Google-fomrs

ایران رآس، اولین مرجع آموزش و توسعه ROS در ایران

سایت ایران رآس با بهره گیری از متخصصین حوزه رباتیک به تولید محتوای آموزشی پرداخته و آنها را در اختیار کاربران قرار می­دهد . همچنین متخصصین ما این آمادگی را دارند تا به موسسات و مراکزی که قصد ورود به دنیای رآس را دارند مشاوره های تخصصی داده و برای آنها دوره های آموزشی خصوصی برگزار کند.


درباره ما تماس با ما قوانین و مقررات ثبت شکایات
  • پیش نیازهای ROS
  • آموزش مقدماتی ROS
  • آموزش سطح متوسط ROS
  • کتاب آموزش ROS
  • نرم افزارها
  • ربات‌ها
© تمام حقوق مادی و معنوی برای ایران رآس محفوظ است.
  • No translations available for this page