- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
机器人程序注释
1.
LPVOID是一个没有类型的指针,也就是说你可以将任意类型的指针赋值给LPVOID类型的变量(一般作为参数传递),然后在使用的时候在转换回来。
例如:
class CMyClass
{
???? void Start();
???? static UINT StartThread(LPVOID lParam);
};
void CMyClass::Start()
{
????? AfxBeginThread(StartThread, this);
}
UINT CMyClass::StartThread(LPVOID lParam)
{
???? CMyClass * pMyClass = (CMyClass*)lParam;
???? ...
???? return 0;
}
2.HANDLE就是句柄的意思通过把HANDLE传入内核,系统就可以将其转为特定的指针操作,MS不允许你直接对内核对象操作,所以给你个句柄作为假指针你可简单理解为和设备通信的一个“索引”Windows中的句柄很象C语言中用来访问一个文件的句柄,它是一个对象的数字化表示。在Windows中,句柄可以访问画刷(画屏幕的对象)、光标、窗口、设备描述表(用来把输出送往屏幕或打印机的对象)以及其他很多对象。在调用其他Windows函数时,分配给一个对象的句柄被用来访问该对象。 句柄号通常在程序调用Windows API函数时由Windows分配给相应的对象。表示句柄的变量名通常带有一个前缀,它由字母“h”和表示句柄所访问的对象的助记符组成。 typedef unsigned long DWORD
4. 避障函数+position函数
void Avoid(Robot *robot,Environment *env,double x,double y){int desired_angle = 0, theta_e = 0, d_angle = 0, vl, vr, vc = 190;int j=1;double dx, dy, d_e, Ka = 10.0/90.0;//给系数Ka赋个较小的初值,作为默认情况的取值dx = x - robot-pos.x;//目标点与小车在x轴方向上的距离dy = y - robot-pos.y;d_e = sqrt(dx * dx + dy * dy);//小车与目标点之间的距离if (dx == 0 dy == 0)desired_angle = 90;//当小车已在目标点时,期望角赋为90度elsedesired_angle = (int)(180. / PI * atan2((double)(dy), (double)(dx)));//小车与目标点之间的连线与水平线之间的夹角,即期望角(与position函数里的期望角相同)theta_e = desired_angle - (int)robot-rotation;//用上面一句计算出的期望角减去小车当前的角度,得到一个差角theta_ewhile (theta_e 180) theta_e -= 360;while (theta_e -180) theta_e += 360;/*这两句与position函数里的相同,都是为了使得当计算出的差角|theta_e|180的时候,加上或减去360度以使theta_e的绝对值始终小于180。因为从后面的程序可以看到,theta_e实际上是小车需要旋转的角度(因为小车必须旋转直到其面向目标点,此时往前运动才能完成朝向目标点的运动),那么与其让它旋转大于180度,不如只让其旋转360-theta_e度角(这里实在不好表达)*/if (d_e 100.) //当小车到目标点的距离大于100时,Ka取45.0/90(即对不同长度的距离分别选用不同大小的系数,系数的大小据实际情况定,是试出来的。该系数后面计算轮速时要用到)Ka=45./90.;else if (d_e 50)Ka=65./90;else if (d_e 30)Ka=75./90.;else if (d_e 20)Ka=85./90.;else Ka=95./90.;if (theta_e 95 || theta_e -95){j=-1;theta_e += 180;//如果差角大于90度,将theta_e转化成其补角(即如果小车是屁股朝向目标点的话,它没必要转一大圈将脑袋对着目标点前进,而是直接转个很小的角度让屁股正对目标点倒退着行进就可以了,这样就节约了时间,这就是position函数里的原理)if (theta_e 180) theta_e -= 360;if (
您可能关注的文档
最近下载
- 【交通运输类】浙江省汽车维修行业工时定额和收费标准浙江省交通厅浙江省物价局精编.pdf VIP
- TD-JZ2006-6001西南设计院预埋件图集.pdf
- 01J925 1 压型板屋面.PDF VIP
- 视听语言 镜头运动.pptx VIP
- 广州市白云区广大附中实验中学2022-2023学年上学期期中调研八年级物理问卷.docx VIP
- JB∕T 5317-2016 环链电动葫芦.pdf VIP
- 广东省广州市白云区广大附中实验中学2022-2023学年八年级上学期期末线上考试语文试卷.doc VIP
- 风电机组专项隐患排查治理记录表.doc VIP
- 风电机组专项隐患排查治理记录表自查.pdf VIP
- 工厂生产管理制度(3篇).docx VIP
文档评论(0)