webots自學筆記(四)傳感器API使用、查看官方文檔


       原創文章,來自博客園,_阿龍clliu http://www.cnblogs.com/clliu/,轉載請注明原文章出處。

 

 

      不能說webots的學習資料少,只能說它的中文資料少。但是英文資料也的看呀,畢竟要深入了解這款軟件,看官方的幫助文檔是最好不過的了。

      官方參考文檔地址https://www.cyberbotics.com/doc/reference/index,其實也是可以離線查看的,但是離線是英文,本人的英文水平也不咋地,所以就投機取巧了,瀏覽器是有在線翻譯的功能的。

      既然說的是傳感器的API使用,那就選慣性測量單元 (IMU)吧,在節點和API函數下選擇(慣性單元 )InertialUnit,就出現了關於這個傳感器的描述和使用方法。

      在webots中有許多傳感器,包括GPS、Gyro(陀螺儀)、touchSensor(接觸傳感器)、Receiver(接收器)、Pen(筆)、Emitter(發射器)、Compass(指南針)、DistanceSensor(距離傳感器)、Camane(照相機)等等。

 

----------------------------------------------以下部分來自webots官方reference------------------------------------

Webots參考手冊 

慣性單位

派生自設備

InertialUnit {
  MFVec3f lookupTable [ ]  # interpolation
  SFBool  xAxis       TRUE # compute roll
  SFBool  zAxis       TRUE # compute pitch
  SFBool  yAxis       TRUE # compute yaw
  SFFloat resolution  -1
}

描述

      該InertialUnit節點模擬一個慣性測量單元 (IMU)。InertialUnit計算並返回它的, 俯仰偏航相角在限定的全局坐標系和WorldInfo節點。如果要測量加速度或角速度,請改用加速度計或 陀螺儀節點。InertialUnit節點必須被放置在機器人使得其點¯x在方向a軸分機器人的向前運動(縱軸)。 正z軸必須指向機器人的右側,例如右臂,右翼(橫向軸)。y軸必須指向 機器人的上/上方向。如果慣性單元具有該取向,則滾動俯仰偏航角對應於通常的汽車,航空或空間意義。更精確地, 慣性單元測量沿x軸(滾動),z軸(俯仰)和y軸(偏航)的Tait-Bryan角這個慣例通常稱為xzy外部序列; 它對應於由YZX表示的元素旋轉的組成。參考框架由給出北方向的單位向量,與歸一化重力向量和它們的叉積(cross-product)相反的單位向量組成(參見WorldInfo以定制該框架)。

注意:在萬向節鎖定情況下,即當俯仰為-π/ 2或π/ 2時,側傾和偏航設置為NaN(不是數字)。

字段摘要

  • lookupTable:該字段可選地指定查找表,其可以用於將角度值[rad]改變為設備特定輸出值,或者例如將單位改變為度數。使用查找表,還可以定義最小和最大輸出值,並將噪聲添加到輸出值。默認情況下,查找表為空,因此返回的角度值以弧度表示,不添加噪聲。

  • xAxis, yAxis, zAxis:每個布爾字段指定是否應為指定軸啟用或禁用計算。xAxis字段定義是否應計算轉角。yAxis字段定義是否應該計算偏航角。zAxis字段定義是否 應該計算俯仰角。如果這些字段之一設置為FALSE,則不會計算相應的角度元素,並且它將返回NaN (不是數字)。例如,如果zAxis為FALSE,則 wb_inertial_unit_get_values()[2]返回NaN默認值是所有三個軸都被啟用(TRUE)。

roll_pitch_yaw.png
 
Webots慣性單元中的滾動,俯仰和偏航角
  • resolution:此字段允許定義傳感器的分辨率,分辨率是其能夠測量的最小變化。將此字段設置為-1(默認)意味着傳感器具有“無限”分辨率(可以測量任何無限小的變化)。此字段接受間隔(0.0,inf)中的任何值。

慣性單位函數

名稱

wb_inertial_unit_enablewb_inertial_unit_disablewb_inertial_unit_get_sampling_periodwb_inertial_unit_get_roll_pitch_yaw - 啟用,禁用和讀取慣性單元的輸出值

C ++ },{ Java },{ Python },{ Matlab },{ ROS }

#include <webots/inertial_unit.h>

void wb_inertial_unit_enable(WbDeviceTag tag, int sampling_period);
void wb_inertial_unit_disable(WbDeviceTag tag);
int wb_inertial_unit_get_sampling_period(WbDeviceTag tag);
const double *wb_inertial_unit_get_roll_pitch_yaw(WbDeviceTag tag);

描述

wb_inertial_unit_enable()功能打開角度測量。sampling_period參數指定傳感器的采樣周期並以毫秒表示。注意,第一次測量僅在第一個采樣周期過去后才可用。

wb_inertial_unit_disable()函數關閉 InertialUnit設備。

wb_inertial_unit_get_sampling_period()函數返回給定的周期wb_inertial_unit_enable(),如果設備被禁用,則返回0。

wb_inertial_unit_get_roll_pitch_yaw()函數返回InertialUnit的當前滾動, 俯仰偏航值作為3個組件的數組返回,因此只有索引0,1和2對訪問返回的數組有效。注意,索引0,1和2分別返回滾轉俯仰偏航角。

角度指示單元的旋轉角度繞其點¯x軸,在間隔[-π,π]。角為零時 InertialUnit是水平的,即,當其ÿ軸具有重力相反的方向(和WorldInfo定義 gravity向量)。

槳距角表示本裝置的旋轉角度大約是ž軸,在間隔[-π/ 2,π/ 2]。槳距角為零時 InertialUnit是水平的,即,當其ÿ軸具有重力的方向相反。如果慣性單元以標准方向放置在機器人上,則 當機器人向下時,俯仰角為負,當機器人向上時,俯仰角為正。

偏航角指示單元取向,在間隔[-π,π],相對於和WorldInfonorthDirection偏航角為零時InertialUnit點¯x軸與正北方向對齊,它為π時的零件是向東/ 2,和-π/ 2時的單元被向西定向。偏航角可以用作一個羅盤。

注意 [C,C ++]:返回的向量是指向由Webots管理的內部值的指針,因此釋放此指針是非法的。此外,請注意,指向的值只有在下一次調用wb_robot_step()或 時才有效Robot::step()如果這些值需要較長時間,則必須復制它們。

注意 [Python]: getRollPitchYaw()以包含三個浮點的列表的形式返回角度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM