先鋒機器人

ARIA是為MobileRobots開發的,面向對象的,用於機器人控制的應用程式接口系統。該系統基於C++語言,是一個可以簡單、方便的用於先鋒系列機器人的運動控制以及感測器操作的客戶端軟體。該軟體具有強大的功能和適應性,是機器人高端軟體編寫的理想選擇,包括MobileSim在內的先鋒機器人基本軟體系統都是以ARIA為基礎的。

基本介紹

  • 中文名:先鋒機器人
  • 外文名Pioneer
  • 平台:windows
  • 開發國家:美國
  • 類別:開發程式
ARIA源碼和例程
例程和原始碼路徑
windows用戶:
1.\ProgramFiles\MobileRobots\Arnl\examplesGuiServer.cpp sickLogger.cpp等
2. \Program Files\ActivMedia Robotics\Aria\examples wander.cpp等
3. \Program Files\ActivMedia Robotics\Aria\include
4. \Program Files\ActivMedia Robotics\Aria\src
Linux用戶:
../usr/local/ARIA
Pioneer3系列機器人庫函式
ARIA是為MobileRobots開發的,面向對象的,用於機器人控制的應用程式接口系統。該系統基於C++語言,是一個可以簡單、方便的用於先鋒系列機器人的運動控制以及感測器操作的客戶端軟體。該軟體具有強大的功能和適應性,是機器人高端軟體編寫的理想選擇,包括MobileSim在內的先鋒機器人基本軟體系統都是以ARIA為基礎的。
ArRobot
最基礎的,也是最重要的ARIA類庫。
enableMotors();//啟動馬達
disableMotors();//禁用馬達
disconnect();//下線
lock();unlock();//鎖定機器人實例,解除鎖定,通常用來保護髮給機器人的命令
findAngleTo(const ArPose pose);//機器人當前位置到指定位置的絕對角度
findDeltaHeadingTo(const ArPose pose);//相對角度
findDistanceTo(const ArPose pose); //距離
move(1500); //前進1.5米
setDeltaHeading(90); //左轉90度,右轉為負
setHeading(90);//轉動絕對角度,初始朝向為0度
setRotVel(double velocity);//轉動速度
setVel(50); getVel(); //設定/獲取機器人速度
setVel2(50,100); //分別設定左右輪速度
getLeftVel();getRightVel();//獲取兩輪的速度
getSonarReading(i);//獲得聲納的讀數,i為聲納的序號,逆時針
getPose(); //獲得機器人當前的位置
getTh(); getX(); getY(); //詳細的信息,x,y, th
checkRangeDevicesCurrentPolar(10,20);//檢查所有感測器讀數,獲得10-20度的讀數,返回一個最近距離
moveTo(ArPose pose,); //將機器人位置移動到pose這個位置,並不是真正移動,而是一個坐標變化
run(true) ; //啟動機器人執行緒,以單執行緒方式
runAsync(true); //啟動機器人執行緒,以多執行緒方式,參數為true,則如果機器人連線失去,則執行緒終止,為false則等待傳送停止命令stop(void)後終止執行緒
判斷機器人狀態的一些函式
isConnected(void);//是否連線
isMoveDone();//是否完成移動
isHeadingDone();//是否完成轉動
isRunning();//是否在運行中
ArPose
和機器人位置相關的一個類
setPose(double x, double y, double th = 0) ;setPose(ArPose position) ;//設定機器人的位置
setX(100);setY(100);setTh(45);setThRad(1.33);//設定具體的操作,最後一個為設定弧度同樣的有獲取位置信息的操作
getPose() ;//獲取機器人的位置
getX();getY();getTh();getThRad();//獲取具體的信息,最後一個返回值為弧度
findAngleTo(ArPose position) ;//到指定位置的角度
findDistanceTo(ArPose position) ;//距離
ArSensorReading
獲取感測器數據的一個類,必須為一個感測器對象的實例。
getRange(void) ;//獲取障礙物到機器人的距離
isNew() ;//當前的讀數有沒有更新
getPose(void) ;//獲得感測器讀數的位置信息(比如聲納返回的位置)
getLocalPose(void);//局部坐標系中的位置
getPoseTaken(void);//獲取讀數發生時機器人的位置
getSensorPosition(void) ;//獲取感測器在機器人上的位置信息
getCounterTaken(void) ;//當前是第幾次讀數
ArRangeDevice
控制所有感測器的一個類,聲納類ArSonarDevice,雷射雷達類ArSick都是從這個類派生出來的。
getName(void);//獲取感測器名字
setRobot(ArRobot *robot);//設定感測器連線的機器人getRobot(void)
setCurrentBufferSize(size_t size);setCumulativeBufferSize(size_t size);//設定緩衝區
addReading(double x, double y);//增加一個讀數
currentReadingPolar(double startAngle, double endAngle);//獲取當前角度內讀數的最小值
currentReadingBox(double x1, double y1, double x2, double y2);//獲取當前給定區域的讀數的最小值
getCurrentRangeBuffer(void);//獲取當前讀數的緩衝區
clearCurrentReadings(void);//清空所有當前讀數
getRawReadings(void);//獲得未經過處理的感測器得到的數據
setMaxRange(unsigned int maxRange);getMaxRange(void);//設定,獲取感測器的最大測量範圍
lockDevice();unlockDevice();//鎖定設備,解除鎖定
setMaxSecondsToKeepCurrent(int maxSecondsToKeepCurrent);
getMaxSecondsToKeepCurrent();//獲取/設定讀數的保存時間
ArSick
configure(false,true,false,ArSick::BAUD38400,ArSick::DEGREES180,ArSick::INCREMENT_HALF);//設定雷射雷達參數,波特率,掃描角度,掃描間隔
setDeviceConnection(&con);//設定連線
runAsync();//啟動執行緒
blockingConnect();//連線雷射雷達
setSensorPosition(ArPose pose);//設定雷射雷達在機器人上的位置
getSensorPosition();//獲取位置
isUsingSim(void);//是否套用模擬器
一些用於連線的類
ArSimpleConnector 用於同機器人連線的類
setupRobot(ArRobot *robot);connectRobot(ArRobot *robot);//同機器人連線
setupLaser(ArSick *sick);sick.runAsync();sick.blockingConnect() ;//必須運行後面兩個才能連線
connectSecondLaser(ArSick *sick);//同雷射器連線
ArDeviceConnection 一個基礎的連線類,可以同機器人和模擬器連線,也可以用來連線雷射雷達和其他的設備。
以下兩個類為ArDeviceConnection的派生類
ArSerialConnection通過串口連線設備
ArTcpConnection通過tcp/ip連線
open();//打開連線
close();//關閉連線
setPort();//設定連線埠
getPort();//獲取連線埠
read(const char *data, unsigned int size, unsigned int msWait = 0); write(const char *data, unsigned int size);//讀/寫數據
openSimple(void);//連線並判斷
ArAction
這是一個比較高級的類,封裝了機器人的一些行為,比如壁障,移動等等,我們要想實現自己的操作,可以從這個類派生。
class ArActionAvoidFront //前方壁障的行為類
class ArActionAvoidSide //側面壁障的行為類
class ArActionGoto //移動機器人到目的地的行為類
class ArActionColorFollow //追蹤顏色的行為類
class ArActionBumpers //處理碰撞開關的行為類
class ArActionConstantVelocity //以一個恆定的速度直走的行為類
一個簡單的例子
#include "Aria.h“
int main(int argc,char **argv)//移動0.5m
{
ArRobot robot;
Aria::init(); //初始化
ArSimpleConnector connector(&argc,argv);
if(!connector.parseArgs()||argc>1)
{
connector.logOptions();
exit(1);
}
if(!connector.connectRobot(&robot))
{
printf("cound not connect to robot...exiting\n");
Aria::shutdown();
return 1;
}
robot.comInt(ArCommands::ENABLE,1);
robot.comInt(ArCommands::SOUNDTOG,0);
robot.runAsync(true); //啟動機器人執行緒
robot.move(500); //機器人向前移動500mm
do
{
}while(!robot.isMoveDone());//檢查機器人動作是否完成,否則循環等待
robot.lock();
robot.disconnect(); //下線
robot.unlock();
Aria::shutdown(); //退出
return 0;
}

相關詞條

熱門詞條

聯絡我們