版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、机器人搬箱子问题设在房内 c 处有一机器人, 在 a 及 b 处各有一张桌子, a 桌子上有一个箱子。 为了让机器人从 c 处出发把箱子从a 处拿到 b 处的桌上,然后再回到 c 处,需要制定相应的行动规划。现在用一阶为此逻辑来描述机器人的行动过程。相关谓词定义table ( x ) : x 是桌子empty ( y ) : y 手中是空的at (y, z) : y 在 z 附近holds ( y , w ) : y 拿着 won ( w , x ) : w 在 x 上面问题初始状态table ( a )table ( b )empty ( robot )at ( robot , c)on (
2、 box , a)问题目标状态table ( a )table ( b )empty ( robot )at ( y, z)on ( box , a)任务执行过程初始状态机器人在 c处;机器人从c移动到a;在a处拿起了箱子;从 a移动到b;在 b处放下箱子;从 b回到c。问题实现思路定义3个变量描述问题状态,robot_site表示机器人位置,取值为a,b,c ; is_robot_block描述机器人手中是否拿着箱子,取值为y、n; block_site描述箱子的位置取值为a, b。定义函数改变问题状态。运行结果3 机器人当前所在位置:c,机器人是否拿着箱子:n,箱子所在位置;3状态“机器人
3、从c移动到了、状态黯机器人草起了箱子。状态4:机器人从声多动到了如状热:机器人将箱子放在了小状态k机器人从心移动到了人机器人完成任务-nce?s exited with retupn ualue e 5ress any key tn cantinnis . .实现程序#include #include /* author lizm */ 描述系统状态typedef struct problemchar robot_site; / 描述机器人的位置char is_robot_block; / 机器人手中是否拿着箱子char block_site; / 箱子所在位置sproblem;/ 初始化系统
4、初始状态和目标状态int init_status(sproblem *obj, sproblem *p, int *status_number)obj- robot_site = c;obj- is_robot_block = n;obj- block_site = b;p- robot_site = c;p- is_robot_block = n;p- block_site = a;printf( 状态 %d : n 机器人当前所在位置: %c, 机器人是否拿着箱子: %c ,箱子所在位置: %c 。 nn, *status_number, p-robot_site, p-is_robot_
5、block, p-block_site);*status_number += 1;/ 机器人移动int robot_move(sproblem *p, char robot_object_site, int *status_number)char temp_robot_site = p- robot_site;p- robot_site = robot_object_site;printf( 状态 %d : n 机 器 人 从 %c 移 动 到 了 %c 。nn,*status_number,temp_robot_site, p- robot_site);*status_number += 1
6、;/ 机器人搬起箱子int pick_up_block(sproblem *p, char is_robot_block, char block_site, int *status_number)p- is_robot_block = is_robot_block;p- block_site = block_site;if(p- is_robot_block = y)printf( 状态 %d : n 机器人拿起了箱子。 nn, *status_number);*status_number += 1;/ 机器人放下箱子int set_down_block(sproblem *p, char i
7、s_robot_block, char block_site, int*status_number)p- is_robot_block = is_robot_block;p- block_site = block_site;if(p- is_robot_block = n)printf( 状态 %d : n 机 器 人 将 箱 子 放 在 了 %c 。 nn, *status_number, p-block_site);*status_number += 1;/ 判断机器人是否完成任务int judeg_obj(const sproblem obj, const sproblem p)if(o
8、bj.robot_site = p.robot_site & obj.is_robot_block = p.is_robot_block &obj.block_site = p.block_site)printf( 机器人完成任务。 n);int main(int argc, char *argv) sproblem sp;sproblem obj;int status_number = 1;char robot_object_site = a;char block_site = r;char is_robot_block;/ 状态1 :机器人位置c 是否拿着箱子n 箱子位置ainit_sta
9、tus(&obj, &sp, &status_number);/ 状态2 :机器人位置a 是否拿着箱子n 箱子位置arobot_move(&sp, robot_object_site, &status_number); block_site = r;is_robot_block = y;/ 状态 3 :机器人位置 a 是否拿着箱子y 箱子位置 robotpick_up_block(&sp, is_robot_block, block_site, &status_number); robot_object_site = b;/ 状态 4 :机器人位置 b 是否拿着箱子y 箱子位置 robotrobot_move(&sp, robot_object_site, &status_number); block_site = b;is_robot_block = n;/ 状态 5 :机器人位置 b 是否拿着箱子n 箱子位置 bset_down_block(&sp, is_robot_block, block_site, &status_number); robot_object_site = c;/ 状态 5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- KEMA培训资料教学课件
- 2024-2025学年专题1.3 运动的快慢-八年级物理人教版(上册)含答案
- 发改委产业结构优化调查报告
- DB11-T 2072-2022 栎属植物苗木繁育与栽培技术规程
- 5年中考3年模拟试卷初中道德与法治七年级下册01专项素养综合全练(一)
- 齿轮泵培训课件
- 家庭清洁孕婴护理产品项目可行性研究报告模板-立项拿地
- (统考版)2023版高考化学一轮复习第十二章有机化学基础第3讲烃的含氧衍生物学生用书
- 建筑垃圾清运协议模板
- 超声波测距离加语音报距
- 医防融合工作总结范文
- 酒店宴会行业分析
- 白族扎染工艺图解
- 知识产权法案例分析:大头儿子案
- 支气管胸膜瘘的护理
- 单位消防安全评估
- 员工拒绝购买社保的全文协议
- 寺院义工培训课件
- 小学健康体育知识讲座
- 财务用发票分割单原始凭证 发票分割单范本
- 内科吉兰-巴雷综合征护理教学查房
评论
0/150
提交评论