# 2019算法组线上测试 **Repository Path**: buaarobot_admin/algorithm_group_online_test_2019 ## Basic Information - **Project Name**: 2019算法组线上测试 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2019-06-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2019算法组线上测试 ### 测试一 **主要目的:** * 完成`linux`安装和基本环境配置 * 学习`python`的基本语法和应用 * 学习`git`的基本应用 * *学习`vim`的基本应用 **目标和任务:** 1. 安装`Ubuntu`系统(推荐18.04 Bionic Beaver),并学习Linux基本操作。 > Ubuntu是Linux的发行版之一, 拥有比较友好的图形界面,因ROS一般会选择在Ubuntu上运行,故我们选用Ubuntu。 > > 18.04是Ubuntu最新的LTS(长期支持)版本,其相对于16.04的最大区别是桌面环境更换为了GNOME。 > > 安装Ubuntu之后,应先进行更换软件源操作,具体百度`Ubuntu换源`即可,否则apt速度会极慢。 推荐资料:[Linux基本命令](https://www.jianshu.com/p/3a40cc6f20f5) (学习基本命令时可先不关注多用户相关命令,咱们一般用不到) ​ [*GNOME扩展](https://linuxconfig.org/how-to-install-gnome-shell-extensions-on-ubuntu-18-04-bionic-beaver-linux) (可方便地为GNOME桌面环境增加第三方插件,其中包括屏幕录制插件`Easyscreencast`,**如不使用该插件,请自行找寻安装录屏软件,提交任务时需要屏幕录像**) --- **任务1准备:** 请在终端中依次输入以下代码,将仓库克隆到本地,并将一份任务文件夹复制到根目录下 ``` git clone https://gitee.com/buaarobot/algorithm_group_online_test_2019.git ~/algorithm_group_online_test_2019 cp -r ~/algorithm_group_online_test_2019/test1/grand_parent ~ ``` ***请注意不要对algorithm_group_online_test_2019目录下的东西做任何修改,仅限最后提交任务时添加文件*** **任务1:** > `~/grand_parent/parent/children/`目录下有1000个child, > > 请利用Linux基本命令找出其中的bad boy并用文本编辑器将其改正为good boy, > > 然后将目录整理成下图所示形式(1000个child文件仍在children目录下)。 > > ![task](./pictures/later.png) > > **请录制以上操作全部过程,作为视频文件上交** 2. 安装python,学习其基本语法和面向对象编程思路。 > 编辑器或IDE大家可根据喜好自行选择,推荐选用JetBrains的Pycharm。 > > 推荐大家先学python2,3和2相差并不是特别大,虽然3是趋势,但现存的大多数python文件都是用的2。 推荐资料:[python基础](https://www.runoob.com/python/python-tutorial.html) --- **任务2:** > 1.在task2.py中实现Martrix类,其中应至少包含`判断相等,转置,求和,点乘,叉乘`的基本功能。 > > 2.在python交互界面中展示自己的Martrix类,并将过程进行录屏(不要求操作流畅,能展示效果就行),示例可参考`algorithm_group_online_test_2019/test1/傅帅/task2.webm` > > **最后将task2.py和录屏一并上交** 3. 学习版本管理软件git的基本用法。 > git是一款分布式版本管理软件,咱们的测试题就是在国内平台gitee上发布和提交的。 > > 多人协同工作时,使用git会更加方便。 推荐资料:[git基础](https://www.liaoxuefeng.com/wiki/896043488029600) ------ **任务3:** > 将1,2中任务放到`algorithm_group_online_test_2019/test1/你的姓名/.`下,并提交(push)到远程仓库。目录结构示例如下(视频格式不限): > > ![example](pictures/example.png) 4. *学习vim基本操作 > vim是一种非常强大的文本编辑器,非常轻量简洁,也具有极强的可拓展性。推荐vim的理由主要有下面两点: > > 1.在Linux日常使用中,有一定可能会遇到无法使用图形界面的情况,这种时候使用vim编辑文件会比较方便。而且在后期调试机器人时,通过快捷的ssh连接时无法开启图形界面,这时使用vim可以提高调试效率。 > > 2.熟练使用vim会极大地提高写代码速度,虽然开始时会比较慢,但在不断使用的过程中速度会越来越快,而且上限极高。 推荐资料:[vim基础](https://www.runoob.com/linux/linux-vim.html) 这个大家按个人意愿学习,不布置任务。 ### 测试二 **主要目的:** * 完成ROS的环境配置和基本概念的学习。 * 实战应用ROS中的话题,服务,参数等通讯结构。 **目标和任务:** 1.完成安装和基本概念的学习。 > ROS是一种用于机器人开发的软件框架,其最大的优点就是可以将各个模块独立开来,并统一其通讯的接口,由此极大的提高了程序的复用性并方便了多用户开发。 > > 初步学习ROS的主要目标就是理解其节点间的各种通讯方式。而其他较为进阶的诸如rviz,tf,gazebo之类的组件,初学时不需要深入了解。 > > 在Ubuntu18.04上,一般来说只能安装ROS-melodic版本。同理在Ubuntu16.04上只能安装ROS-kinetic。 推荐资料:[ROS官网](http://www.ros.org) ​ [ROS基础教材](./test2/ros-tutorial-icourse163.pdf) 请先掌握ROS的基本概念再去做测试题,测试题不会给出教学引导。 2.Gazebo仿真软件的初步应用 > gazebo是对ROS适配性较好的一款仿真软件,我们目前对这个软件的应用也处在尝试阶段,并希望能将其投入实用。因此需要大家对其做一些基础了解。 > > 如果ROS安装的是full-desktop版本,则应该已经默认安装好了Gazebo。 --- **任务1准备:** 记得先将更新的仓库pull下来,然后将test2包拷贝进自己的工作空间。 ``` cp -r ~/algorithm_group_online_test_2019/test2/test2_ros ~/catkin_ws/src/ 开启新终端或source ~/.bashrc后 roslaunch test2_ros test2.launch 即可看到开启了一个turtlesim_node节点和一个target_pos_pubber节点 ``` **任务1:** > 请通过turtlesim包中的`turtlesim_node`和`turtle_teleop_key`节点了解turtlesim的控制方式。即`turtle1/cmd_vel`话题每次收到速度信息都会对小乌龟执行`1s`的该速度。且新发送的速度会覆盖之前的速度。 > > `target_pos_pubber`节点会不断在话题`target_pos`上以`std_msgs/Float32MultiArray`格式发布当前小乌龟的目标位置[x,y]. 并维护了参数`pen_off`,其0/1表示轨迹画笔开启/关闭。 > > 请参考以上信息,完成test2.py文件的编写,其作用为控制小乌龟轨迹画笔的开关,并使其以`直线`的形式不断到达各个目标位置。 > > **完成后,请以与测试1任务3相同的方式提交test2.py文件和最终效果的录屏至`algorithm_group_online_test_2019/test2/你的姓名`下** 提示: 1.[turtlesim ROSwiki](http://wiki.ros.org/turtlesim) 2.可灵活运用`rostopic`,`rosmsg`,`rosservice`,`rossrv`,`rosparam`等命令查询各个通讯方式所用的数据类型。 3.call`turtle1/set_pen`服务时srv`SetPen`的前几个参数请设置为`255,80,20,20`。 4.target_pos话题依据当前位置与目标点的距离判断是否到达,当`error<=0.1`时认为到达,判断频率为`1000HZ`。 --- #### 任务2: > 阅读[Gazebo官网教程](http://gazebosim.org/tutorials)或中文教程,对Gazebo建立一个大概的了解, 然后仔细阅读官网教程中的Categorized -> Connect to ROS -> `URDF in Gazebo/Gazebo plugins in ROS/ROS control` 三个章节,并在自己电脑上将教程中的rrobt导入gazebo,对其施加一定控制,并在rviz中查看。 > > **请将最后效果的录屏`task2.webm`上交同任务1** --- #### *任务3: > 请自行设计一个自己的小模型(如四轮小车),并导入Gazebo中,并自己写一个节点对其进行控制。 > > **请将最后的ros包和效果录屏`task3.webm`一并上交同任务1**