Gestion du GPS.
class DeviceGPS : public Device;
ModaCpp.h
La classe DeviceGPS ne dois pas être instanciée par le programme lui même: elle doit être obtenue par QueryDeviceGPS de la classe RobotPHX.
Les différents paramètres passés aux fonctions d'accès à la device sont interprétés et modifiés si nécessaire afin de respecter les contraintes imposées dans la modélisation.
//Sample from [installDir/Samples/Devices/Motor
#include "ModaCPP.h"
int main(int argc, char* argv[])
{
//process the command line
ModaCPP::CommandLine::ProcessCommandLine(argc,argv);
//Connect to MODA server
ModaCPP::Connection *pConnection=new ModaCPP::Connection(true);
if(pConnection->Connect( ModaCPP::CommandLine::GetArgumentValue("/modaserver","127.0.0.1"),ModaCPP::CommandLine::GetArgumentValueINT("/modaport",0),false))
{
_cprintf("Connection ok to moda server\r\n");
//Find the robot
ModaCPP::RobotPHX *robot=pConnection->QueryRobotPHX("/");
if(robot)
{
_cprintf("Robot found in this world\r\n");
ModaCPP::DeviceMotor *pMotorLeft=robot->QueryDeviceMotor("JointLeft/axis/motor");
ModaCPP::DeviceMotor *pMotorRight=robot->QueryDeviceMotor("Jointright/axis/motor");
ModaCPP::DeviceGPS *pGPS=robot->QueryDeviceGPS("socle/gps");
if(pMotorLeft && pMotorRight && pGPS)
{
//read the GPS configuration
GPSConfigStruct GPSConfig=pGPS->GetSettings();
GPSValuesStruct GPS;
_cprintf("Intrinsic error:%f, %f, %f (m) Noise:%f (m) Update: %u ms\r\n",GPSConfig.IntrinsicError.x,GPSConfig.IntrinsicError.y,GPSConfig.IntrinsicError.z,GPSConfig.Noise,GPSConfig.UpdateDelay);
while(!_kbhit())
{
//Read GPS position
pGPS->GetValues(&GPS);
_cprintf("Position: %f %f %f, speed: %f, North/Dir: %f°\r\n",GPS.XPos,GPS.YPos,GPS.ZPos,GPS.LinearSpeed, Moda::Commons::MathFunctions::ToDeg(GPS.NorthAngleRad));
//Move the robot
pMotorLeft->SetVelocityDPS(90);
pMotorRight->SetVelocityDPS(180);
pConnection->Sleep(4000);
//Read GPS position
pGPS->GetValues(&GPS);
_cprintf("Position: %f %f %f, speed: %f, North/Dir: %f°\r\n",GPS.XPos,GPS.YPos,GPS.ZPos,GPS.LinearSpeed, Moda::Commons::MathFunctions::ToDeg(GPS.NorthAngleRad));
//Move the robot
pMotorLeft->SetVelocityDPS(180);
pMotorRight->SetVelocityDPS(90);
pConnection->Sleep(4000);
//Read GPS position
pGPS->GetValues(&GPS);
_cprintf("Position: %f %f %f, speed: %f, North/Dir: %f°\r\n",GPS.XPos,GPS.YPos,GPS.ZPos,GPS.LinearSpeed, Moda::Commons::MathFunctions::ToDeg(GPS.NorthAngleRad));
//Move the robot
pMotorLeft->SetVelocityDPS(90);
pMotorRight->SetVelocityDPS(-90);
pConnection->Sleep(4000);
}
delete pMotorLeft;
delete pMotorRight;
delete pGPS;
}
else
{
_cprintf("motor(s) and/or GPS not found ...\r\n");
}
delete robot;
}
else
{
_cprintf("Robot not found in this world\r\n");
}
}
else
{
_cprintf("Unable to connect to moda server : be sure Exec is running and MODA TCP/UDP ports are open\r\n");
}
pConnection->Disconnect();
delete pConnection;
return 0;
}
|
Documentation v4.7 (18/01/2015), Copyright (c) 2015 anyKode. All rights reserved.
|
|
What do you think about this topic? Send feedback!
|