机器人

POJ 3436 ACM Computer Factory (网络流,最大流)

橙三吉。 提交于 2020-02-05 07:34:32
POJ 3436 ACM Computer Factory (网络流,最大流) Description As you know, all the computers used for ACM contests must be identical, so the participants compete on equal terms. That is why all these computers are historically produced at the same factory. Every ACM computer consists of P parts. When all these parts are present, the computer is ready and can be shipped to one of the numerous ACM contests. Computer manufacturing is fully automated by using N various machines. Each machine removes some parts from a half-finished computer and adds some new parts (removing of parts is sometimes necessary as

SLAM第1章:认识SLAM

被刻印的时光 ゝ 提交于 2020-02-05 05:16:01
简介 1. 介绍 2. 应用场景 2.1 场景一 2.2 场景二 3. 研究内容 3.1 主要研究内容 3.2 位置表示的传递性 1. 介绍   SLAM的英文名称是 simultaneous localization and mapping 或 Concurrent Mapping and Localization ,中文名称是 即时定位与地图构建 或 并发建图与定位 。   SLAM就是一项技术,这个技术可以帮助一个运动的物体定位。之所以称为 即时定位与地图构建 ,是因为它可以在定位的同时创建地图。 2. 应用场景 2.1 场景一   你买回家一个扫地机器人(SLAM的应用场景之一),把它随意放在你家客厅的某个位置开始扫地。这个扫地机器人对你家完全陌生,它的任务是把你家客厅和所有房间打扫干净(尽量不重复,不能像无头苍蝇那样随便扫)。为了完成任务它需要记住: 自己从哪出发。 自己走过哪些地方。 自己现在在哪(相对出发点的位置)。 2.2 场景二   机器人被安排到一个山洞中了解内部空间结构。山洞很大,洞穴相连,一张照片不能拍出布局。机器人从山洞入口开始,要一边走一边根据自己所见画出山洞布局图。为了创建布局图它需要记住: 自己从哪出发。 山洞每个区域相对出发点的坐标。 3. 研究内容 3.1 主要研究内容   从2中的应用场景可以总结SLAM的任务: 在出发点选定一个坐标系

【Java基础】09_常用API

冷暖自知 提交于 2020-02-04 21:16:45
API概述 API概念 API(Application Programming Interface) : 应用程序编程接口 也称之为 : 帮助文档 编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写。但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的Java类,这些类中定义好了操作机器人各种动作的方法。其实,这些Java类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为API。本章涉及的Java API指的就是JDK中提供的各种功能的Java类 快速使用API步骤: A:打开帮助文档 B:点击显示,找到索引,看到输入框 C:你要学习什么内容,你就在框框里面输入什么内容 ​ 举例:Random D:看包 java.lang包下的类在使用的时候是不需要导包的 E:看类的描述 ​ Random类是用于生成随机数的类 F:看构造方法 ​ Random():无参构造方法 ​ Random r = new Random(); G:看成员方法 ​ public int nextInt(int n):产生的是一个[0,n)范围内的随机数 ​ 调用方法: ​ 看返回值类型:人家返回什么类型,你就用什么类型接收 ​ 看方法名:名字不要写错了 ​ 看形式参数:人家要几个参数

机器人的运动范围

旧巷老猫 提交于 2020-02-03 22:59:44
机器人的运动范围 题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子? 思想 回溯法:分别寻找机器人能进入的上下左右方格,如果当前方格不满足阈值则回溯到上一个依次进行。 需要有一个寻找路径的函数,在此函数中进行上下左右寻找,将找到的数加到满足count中。 定义一个判别函数,对于正在探寻的方格进行判断,如果满足,进行加和。 代码 public class MovingCount { /** * 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动, * 每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 * 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。 * 但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子? */ public int movingCount(int threshold, int rows, int cols) { if

ROS 导航——用Gmapping构建一张地图

人盡茶涼 提交于 2020-02-03 21:14:31
用Gmapping构建一张地图 Gmapping功能包介绍 使用Gmapping功能包的一些准备 /tf 雷达和机器人基座标 里程计 /scan 使用Gmmaping功能包 得到的地图 Gmapping功能包介绍 参见wiki官网 Gmapping功能包 .其中包括了Gmapping功能包订阅发布的话题,参数等。 使用Gmapping功能包的一些准备 根据官网介绍,Gmapping订阅了两个话题: /tf 和 /scan /tf tf指的是坐标变换,就是将机器人各组件的相对位置关系表示出来,对于Gmapping而言,它需要三个tf: 雷达 , 机器人基坐标 和 里程计 雷达和机器人基座标 对于 雷达 和 机器人基座标 ,我们可以有两种发布的方法。 第一种:通过urdf建立机器人模型,然后写一个launch文件将模型文件载入并发布机器人的状态信息给tf。urdf是一种机器人建模的一种方法,具体参见 urdf wiki官网 launch文件示例如下: < ? xml version="1.0" ? > <launch > < !--param name="/use_sim_time" value="true"/ - - > <arg name="model" /> <!-- 加载机器人模型参数 --> <param name="robot_description" command="$

BZOJ 1207

这一生的挚爱 提交于 2020-02-03 20:43:36
1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3089 Solved: 1499 [ Submit ][ Status ][ Discuss ] Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气。你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死。而机器人每一时刻只能够移动一格或停留在原地不动。机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i,j-1),(i,j+1)四个网格,机器人不能走出整个n*n的网格。游戏开始时,你可以自由选定机器人的初始位置。现在你知道在一段时间内,鼹鼠出现的时间和地点,希望你编写一个程序使机器人在这一段时间内打死尽可能多的鼹鼠。 Input 第一行为n(n<=1000), m(m<=10000),其中m表示在这一段时间内出现的鼹鼠的个数,接下来的m行每行有三个数据time,x,y表示有一只鼹鼠在游戏开始后time个时刻,在第x行第y个网格里出现了一只鼹鼠

机器人系统设计

丶灬走出姿态 提交于 2020-02-03 03:05:09
目录 : 1、机器人的定义与组成 2、机器人系统构建 3、URDF机器人建模 一、机器人的定义与组成 (控制的角度) 二、机器人系统构建 即以上框图内各部分的实现 (1)连接摄像头: sudo apt-get install ros-melodic-usb-cam (安装功能包) roslaunch usb_cam usb_cam-test.launch (启动功能包) 另外打开一个终端 rqt_image_view (2)连接RGB摄像头例如Kinet sudo apt-get install ros-melodic-freenect-* (安装功能包) git clone https://github.com/avin2/SensorKinect.git cd SensorKinect/Bin tar xvf SensorKinect093-Bin-Linux-x86-v5.1.2.1.tar.bz2 sudo ./install.sh … 三、URDF机器人建模 Unified robot description format统一机器人描述格式 如 机器人拆解开来,大致分为两类:连杆(link)和关节(joint) 所以,完整的机器人模型: 四、实践部分 在src文件夹下打开终端,创建功能包:catkin_creat_pkg mbot_description urdf

用 Python 实现聊天机器人(tkinter+urllib)

会有一股神秘感。 提交于 2020-02-03 01:46:19
这篇文章将使用 Python 的 urllib 模块 和 tkinter 模块实现一个聊天机器人。 本程序使用的模块有: import tkinter from tkinter import* from tkinter.colorchooser import askcolor from tkinter import messagebox from tkinter import scrolledtext import urllib.request import urllib.parse 聊天机器人设置 本程序使用了 茉莉聊天机器人 ,通过爬虫爬取回复。 茉莉聊天机器人 可以自己申请,申请链接: http://www.itpk.cn/ 申请过程本文不作介绍。 如不想申请,可以用本文的 1.对发送信息进行设置 首先要对发送的信息进行转换,否则无法打开网页,无法爬取。转换方式很简单,如下: urllib.parse.quote_plus(string) 2.爬取网页 已知茉莉聊天机器人的请求格式如下: http://i.itpk.cn/api.php?api_key= 申请的ApiKey &api_secret= 密码 &question= 问题 所以,爬虫代码为: urllib.request.urlopen("http://i.itpk.cn/api.php?api_key

XDOJ综合题 机器人

≯℡__Kan透↙ 提交于 2020-02-02 21:12:29
XDOJ - 机器人 类别 :综合 时间限制 :1S 内存限制 :256Kb 问题描述: 机器人按照给定的指令在网格中移动,指令有以下四种: N 向北(上)移动 S 向南(下)移动 E 向东(右)移动 W 向西(左)移动 如下图所示,在网格1中,机器人初始位于网格第1行第5列,按照网格中的指令,机器人在走出网格前需要10步。在网格2中,机器人初始位于网格第1行第1列,按照网格中的指令,机器人将进入一个循环,永远走不出网格,且在进入循环前走了11步。 假定机器人初始时刻总是在网格第一行的某一列上,请你写一个程序确定机器人能否走出网格,并输出走出网格或进入循环需要的步数。 输入说明: 输入数据第一行为空格分隔的3个整数,分别表示网格行数N、列数M和初始时刻机器人所在的列C(从网格最左边开始,以1为基准计数)。每个网格的行数和列数均不超过20。接下来是N行指令,指令只包含N,S,E和W四种,所有指令之间没有空格。 输出说明: 如果机器人可以走出网格,输出"out "加上走出网格需要的步数;如果机器人进入循环不能走出网格,输出"loop "以及进入循环前走的步数。 输入样例: 3 6 5 NEESWE WWWESS SNWWWW 输出样例: out 10 #include<stdio.h> #include<string.h> int main() { int N,M,C,i,j,sum