pioneer vs 实现简单四边形移动 和 简单避障
来源:互联网 发布:windows live登录 编辑:程序博客网 时间:2024/05/21 04:19
#include "Aria.h"#include <iostream>using namespace std;int main(int argc, char **argv){ Aria::init(); ArArgumentParser parser(&argc, argv); parser.loadDefaultArguments(); ArRobot robot; // Connect to the robot, get some initial data from it such as type and name, // and then load parameter files for this robot. ArRobotConnector robotConnector(&parser, &robot); if(!robotConnector.connectRobot()) { ArLog::log(ArLog::Terse, "simpleConnect: Could not connect to the robot."); if(parser.checkHelpAndWarnUnparsed()) { // -help not given Aria::logOptions(); Aria::exit(1); } } if (!Aria::parseArgs() || !parser.checkHelpAndWarnUnparsed()) { Aria::logOptions(); Aria::exit(1); } ArLog::log(ArLog::Normal, "simpleConnect: Connected to robot."); robot.enableMotors(); // Start the robot processing cycle running in the background. // True parameter means that if the connection is lost, then the // run loop ends. robot.runAsync(true); // Print out some data from the SIP. We must "lock" the ArRobot object // before calling its methods, and "unlock" when done, to prevent conflicts // with the background thread started by the call to robot.runAsync() above. // See the section on threading in the manual for more about this. for(;;) { if(robot.getX()<1000) { robot.lock(); robot.setVel(100); robot.unlock(); ArUtil::sleep(500); cout<<"forwardx-->"<<robot.getX()<<"_y_"<<robot.getY()<<"_th_"<<robot.getTh()<<"_b_"<<robot.getBatteryVoltage()<<endl; } else break; }for(;;) { if(robot.getTh()<90) { robot.lock(); robot.setRotVel(10); robot.unlock(); ArUtil::sleep(500); cout<<"1--turn90"<<robot.getX()<<"_y_"<<robot.getY()<<"_th_"<<robot.getTh()<<"_b_"<<robot.getBatteryVoltage()<<endl; } else { robot.clearDirectMotion(); break; } } for(;;) { if(robot.getY()<1000) { robot.lock(); robot.setRotVel(0); robot.setVel(100); robot.unlock(); ArUtil::sleep(500); cout<<"Y||^"<<robot.getX()<<"_y_"<<robot.getY()<<"_th_"<<robot.getTh()<<"_b_"<<robot.getBatteryVoltage()<<endl; } else break; } for(;;) { if(robot.getTh()<180 && robot.getTh()>0) { robot.lock(); robot.setRotVel(10); robot.unlock(); ArUtil::sleep(500); cout<<"2turn90"<<robot.getX()<<"_y_"<<robot.getY()<<"_th_"<<robot.getTh()<<"_b_"<<robot.getBatteryVoltage()<<endl; } else { robot.clearDirectMotion(); break; } } for(;;) { if(robot.getX()>0) { robot.lock(); robot.setRotVel(0); robot.setVel(100); robot.unlock(); ArUtil::sleep(500); cout<<"backwordX <--"<<robot.getX()<<"_y_"<<robot.getY()<<"_th_"<<robot.getTh()<<"_b_"<<robot.getBatteryVoltage()<<endl; } else break; } for(;;) { if(robot.getTh()>(-1800)&&robot.getTh()<(-90)) { robot.lock(); robot.setRotVel(10); robot.unlock(); ArUtil::sleep(500); cout<<"3--turn90"<<robot.getX()<<"_y_"<<robot.getY()<<"_th_"<<robot.getTh()<<"_b_"<<robot.getBatteryVoltage()<<endl; } else { robot.clearDirectMotion(); break; } } for(;;) { if(robot.getY()>0) { robot.lock(); robot.setRotVel(0); robot.setVel(100); robot.unlock(); ArUtil::sleep(500); cout<<"backforwardY_4_x_"<<robot.getX()<<"_y_"<<robot.getY()<<"_th_"<<robot.getTh()<<"_b_"<<robot.getBatteryVoltage()<<endl; } else break; } robot.stop(); robot.waitForRunExit(); // exit ArLog::log(ArLog::Normal, "simpleConnect: Exiting."); Aria::exit(0); return 0;}
simple sonar avoid obs—– turn to left or right
#include "Aria.h"#include <iostream>using namespace std;int main(int argc, char **argv){ Aria::init(); ArArgumentParser parser(&argc, argv); parser.loadDefaultArguments(); ArRobot robot; // Connect to the robot, get some initial data from it such as type and name, // and then load parameter files for this robot. ArRobotConnector robotConnector(&parser, &robot); if(!robotConnector.connectRobot()) { ArLog::log(ArLog::Terse, "simpleConnect: Could not connect to the robot."); if(parser.checkHelpAndWarnUnparsed()) { // -help not given Aria::logOptions(); Aria::exit(1); } } if (!Aria::parseArgs() || !parser.checkHelpAndWarnUnparsed()) { Aria::logOptions(); Aria::exit(1); } ArLog::log(ArLog::Normal, "simpleConnect: Connected to robot."); robot.enableMotors(); // Start the robot processing cycle running in the background. // True parameter means that if the connection is lost, then the // run loop ends. robot.runAsync(true); // Print out some data from the SIP. We must "lock" the ArRobot object // before calling its methods, and "unlock" when done, to prevent conflicts // with the background thread started by the call to robot.runAsync() above. // See the section on threading in the manual for more about this. int left=1,right=-1; for(;;) { if(robot.getX()<1000) { int n = 8; double sonarValue[8]={0}; for(int i = 0; i< n;i++) sonarValue[i]=robot.getSonarRange(i); int minNum=0; double minRange = sonarValue[0]; for(int i=1;i<n;i++) { if(sonarValue[i] < minRange) { minRange = sonarValue[i]; minNum = i; } } if(minNum < 4 && minNum > 0) { robot.lock(); robot.setVel2(100,-100); robot.unlock(); ArUtil::sleep(500); } else { robot.lock(); robot.setVel2(-100,100); robot.unlock(); } ArUtil::sleep(500); cout<<"forwardx-->"<<robot.getX()<<"_y_"<<robot.getY()<<"_th_"<<robot.getTh()<<"_b_"<<robot.getBatteryVoltage()<<endl; } else break; } robot.stop(); robot.waitForRunExit(); // exit ArLog::log(ArLog::Normal, "simpleConnect: Exiting."); Aria::exit(0); return 0;}
阅读全文
0 0
- pioneer vs 实现简单四边形移动 和 简单避障
- pioneer rosaria 话题读取声呐数据和声呐避障
- pioneer 移动机器人实现平滑轨迹
- 简单实现左右移动
- VS C#实现简单拼图游戏
- Android实现简单移动动画
- rem简单实现移动端适配
- 使用OpenCV实现简单的移动物体检测和追踪
- 简单的,通过代码,实现光标的移动和定位
- axure简单实现移动端下滑和上滑功能
- 简单的几何签到--能否组成四边形
- Arduino简单实例之五_红外避障传感器模块
- POJ2318 TOYS 和POJ2398 Toy Storage题解(点在四边形内)(简单几何)
- VS 2015跨平台移动开发简单感受
- B. USB vs. PS/2 - 简单实现
- 使用VS实现简单的单元测试
- java简单实现文字重复移动
- 利用UImageView实现简单坦克移动操作
- mysql大数据高并发处理
- 拦截器
- Deep Image Prior文章解析
- 【Scikit-Learn 中文文档】优化估计器的超参数
- 迭代器
- pioneer vs 实现简单四边形移动 和 简单避障
- ListView加载多种的样式
- android camera(一):camera模组CMM介绍
- Filter链使用及FilterConfig总结(二)
- Hibernate综合运用内部留言本(二)
- Openv和Tensorflow中的image相互转换
- Linux运维工作经验小叙
- jQ4 操作样式
- Spring MVC系列(一):创建MVC项目