目前同学们都完成了第一个编程作业,基本实现了图像的旋转和平移,但是在编程中还没有完全体现面向对象的方法,希望结合本周的课程学习、课外阅读和编程练习,能继续迭代优化代码,更加熟练的掌握面向对象编程,希望大家掌握的要点有:

  • 如何设计和实现一个类
    在设计层面,要考虑如何进行合理的抽象,由多个类来共同承担一个复杂的任务。
    在实现层面,要掌握C++的语法,类的构造函数和析构函数,操作符的重载,虚函数等。
  • 使用容器和算法对一个对象进行操作
    结合例子程序理解容器的作用并运用到编程中去,容器及其操作就是设计模式的体现。
  • 理解并运用抽象类
    抽象类的作用是给用户提供一个接口,而具体的实现变化并不影响接口的稳定性,从而有利于软件的重构
  • 类之间的关系:复合、继承、委托
    复合、继承和委托表达了类之间的关系,能正确使用这三者的表示符号来画出类图。
  • 了解设计模式的作用
    “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案二不必做重复劳动。”
    通过示例代码,理解如何通过类之间的复合、继承、委托,实现各种设计模式的。

第二个编程作业,为了实现我们的机器人咖啡角,我们将基于第一次作业中的图形旋转,构造一个两轴平面机器人,运动原理见动画
要求:
1)代码中至少包括两个类:一个Robot类和一个Solver类,Robot类中定义每个机械臂的长度,每个关节的转动角度范围和零点,Solver求解器类用于实现机器人的正逆运动学变换,正运动学为把机器人的关节坐标变换成笛卡尔坐标,逆运动学为把机器人的笛卡尔坐标变换成关节坐标。
2)定义坐标系类:机器人的原点为世界坐标系(World Frame),同时,允许用户定义工件坐标系或任务坐标系(Task Frame),任务坐标系和世界坐标系之间存在着偏移和旋转关系。机器人各个关节的角度值构成关节坐标系(Joint Frame)。
3)每个机器人允许定义任意多个任务坐标系,请运用Vector容器实现该功能。
4)机器人对象接收来自用户的PTP(Point To Point)运动指令,该指令所给出的坐标值,可能是关节坐标系或世界坐标系或任务坐标系,机器人通过Solver求解器类把世界坐标值和任务坐标值变换成关节坐标并更新关节角度值。
注意:在本次编程中不需要机器人具备连续轨迹运动的功能,只需要能够根据用户的PTP指令直接把内部的关节角度值更新就可以。
5)测试主程序架构如下:

int main()
{
//创建一个机器人对象myRobot,初始化机器人的机械参数,关节坐标系(JF),世界坐标系(WF)。
//给机器人对象创建3个任务坐标系TF1, TF2, TF3。
//控制机器人对象在不同坐标系下的运动,如:
//myRobot.PTPMove(JF,P1);
//myRobot.PTPMove(WF,P2);
//myRobot.PTPMove(TF1,P3);
//myRobot.PTPMove(TF2,P4);
//myRobot.PTPMove(TF3,P5);
}

鼓励大家阅读并借鉴OROCOS中的代码实现上述功能。

转载于:https://www.cnblogs.com/bingc/p/5020564.html

《实时控制软件设计》第二个编程作业相关推荐

  1. 《实时控制软件设计》第一次编程作业

    //代码: #include <iostream> #include <Eigen/Dense> #include <cmath> using Eigen::Mat ...

  2. 实时控制软件设计第二周作业-停车场门禁控制系统状态机设计

    门禁控制系统的输入信号包括: 起落杆位置传感器:有两个位置值信号(升起/落下) 汽车入闸传感器:有两个值(True/False) 汽车出闸传感器:有两个值(True/False) 门禁控制系统的输出信 ...

  3. 《实时控制软件设计》第一周作业

    转载于:https://www.cnblogs.com/xiaoxiaoxiaohan/p/6107043.html

  4. 《实时控制软件设计》第三次作业

    实时控制软件设计第三次作业 一.      本地操作 1.    用git init创建一个本地版本库. 2.    创建一个文本文件如Readme.txt,用git add和git commit添加 ...

  5. 实时控制软件开发第二次作业总结

    作业地址 评分细则 本次作业总分10分 按时交 - 有分 晚交 - 扣本次作业所得分一半分 抄袭 - 0分 不交 - 0分 按照demo1的readme做到第四步GDB调试,第5步trace要等板子到 ...

  6. 北京石油大学C语言设计第二次作业,北京石油大学机器人设计第二次在线作业...

    北京石油大学机器人设计第二次在线作业 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 第二次在线作业窗体顶端单选题 (共25道题)收 ...

  7. Emojify - v2 吴恩达老师深度学习第五课第二周编程作业2

    吴恩达老师深度学习第五课第二周编程作业2,包含答案! Emojify! Welcome to the second assignment of Week 2. You are going to use ...

  8. Operations on word vectors-v2 吴恩达老师深度学习课程第五课第二周编程作业1

    吴恩达老师深度学习课程第五课(RNN)第二周编程作业1, 包含答案 Operations on word vectors Welcome to your first assignment of thi ...

  9. Cousera吴恩达深度学习第二次编程作业

    第二次编程作业出现在第三周,下载链接->深度学习 (6月13日上传,如果看不到可能还在审核)

最新文章

  1. Unity3D中如何计算场景中的三角面和顶点数
  2. 网站如何才能吸引用户,增加网站点击率?
  3. 浅谈Dynamic 关键字系列之二:调用属性,方法,字段
  4. excel中如何筛选重复数据
  5. 写文件头的算法流程及C代码实现
  6. 「雕爷学编程」Arduino动手做(33)——ESP-01S无线WIFI模块
  7. 从学校到现在的一个总结
  8. 超棒的30款JS类库和工具
  9. Power BI for Office 365 概览
  10. mysql设置远程登录
  11. Visual Studio 2017 15.9 Previews扩展C++调试功能
  12. textView属性
  13. 数据分析中的常用数学模型实战教程笔记(上)
  14. 免费代理IP地址列表
  15. python蓝屏_plt.绘图()导致windows出现蓝屏
  16. 小波奇异点检测C语言,matlab小波变换对奇异点的检测
  17. 『认知升级』是比其他一切都更加重要的思维模型转变
  18. dmrman恢复数据报错Segmentation fault (core dumped)
  19. RK3588 VR、AR、MR和XR场景下的解决方案
  20. COMSOL 专题学习

热门文章

  1. 港股通不得不了解的汇率问题
  2. lol那个服务器有无限火力,全新游戏模式-无限火力上线
  3. 网易教育线终于『并轨』
  4. 怎么安装iso服务器系统安装win7系统,win7纯净版iso怎么安装
  5. c#向pdf插入图片,使用iTextSharp【实测成功】
  6. syntax error:unterminated quoted string
  7. Win10 设备管理器一个USB设备描述符请求失败解决方法
  8. Visual Studio内存泄露检测工具
  9. Coap在Andorid中的简单应用
  10. 使用openpyxl 对Excel的简单操作