机器人搬箱子

上传人:夏** 文档编号:560874275 上传时间:2022-09-30 格式:DOC 页数:4 大小:71KB
返回 下载 相关 举报
机器人搬箱子_第1页
第1页 / 共4页
机器人搬箱子_第2页
第2页 / 共4页
机器人搬箱子_第3页
第3页 / 共4页
机器人搬箱子_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《机器人搬箱子》由会员分享,可在线阅读,更多相关《机器人搬箱子(4页珍藏版)》请在金锄头文库上搜索。

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( box , a)问题目标状态TABLE (

2、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。定义函数改变问题状态。运行结果1 / 4实现程序#include #include /* author lizm*/ 描述系统状态typede

3、f struct Problemchar robot_site; / 描述机器人的位置char is_robot_block; /机器人手中是否拿着箱子char block_site; /箱子所在位置SProblem;/ 初始化系统初始状态和目标状态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- bloc

4、k_site = a;printf( 状态 %d: n机器人当前所在位置: %c, 机器人是否拿着箱子:%c,箱子所在位置: %c。 nn, *status_number, p-robot_site, p-is_robot_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_si

5、te;printf( 状态 %d: n 机器人从 %c 移动到了 %c。nn, *status_number,temp_robot_site, p- robot_site);*status_number += 1;/ 机器人搬起箱子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(

6、状态 %d: n机器人拿起了箱子。nn,*status_number);2 / 4*status_number += 1;/ 机器人放下箱子int set_down_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 = N)printf( 状态 %d: n机 器 人 将 箱 子 放 在 了 %c 。 nn,*status_num

7、ber,p-block_site);*status_number += 1;/ 判断机器人是否完成任务int judeg_obj(const SProblem obj, const SProblem p)if(obj.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

8、 robot_object_site = a;char block_site = r;char is_robot_block;/ 状态 1:机器人位置 c 是否拿着箱子 N 箱子位置 a init_status(&obj, &sp, &status_number);/ 状态 2:机器人位置 a 是否拿着箱子 N 箱子位置 a robot_move(&sp, robot_object_site, &status_number); block_site = r;is_robot_block = Y;/ 状态 3:机器人位置 a 是否拿着箱子 Y 箱子位置 robot pick_up_block(&

9、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 箱子位置b3 / 4set_down_block(&sp, is_robot_block, block_site, &status_number); robot_object_site = c;/ 状态 5:机器人位置 c 是否拿着箱子 N 箱子位置 brobot_move(&sp, robot_object_site, &status_number);/ 判断机器人是否完成任务judeg_obj(obj, sp);return 0;(范文素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)4 / 4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号