ros

72. Edit Distance(编辑距离 动态规划)

元气小坏坏 提交于 2021-02-13 03:43:33
Given two words word1 and word2 , find the minimum number of operations required to convert word1 to word2 . You have the following 3 operations permitted on a word: Insert a character Delete a character Replace a character Example 1: Input: word1 = "horse", word2 = "ros" Output: 3 Explanation: horse -> rorse (replace 'h' with 'r') rorse -> rose (remove 'r') rose -> ros (remove 'e') Example 2: Input: word1 = "intention", word2 = "execution" Output: 5 Explanation: intention -> inention (remove 't') inention -> enention (replace 'i' with 'e') enention -> exention (replace 'n' with 'x') exention

leetcode第72题:编辑距离

£可爱£侵袭症+ 提交于 2021-02-13 01:47:35
给定两个单词 word1 和 word2 ,计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入: word1 = "horse", word2 = "ros" 输出: 3 解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose (删除 'r') rose -> ros (删除 'e') 示例 2: 输入: word1 = "intention", word2 = "execution" 输出: 5 解释: intention -> inention (删除 't') inention -> enention (将 'i' 替换为 'e') enention -> exention (将 'n' 替换为 'x') exention -> exection (将 'n' 替换为 'c') exection -> execution (插入 'u' 网易面试时遇到了这题,当时没做出来,想不出来状态转移方程。 解题思路如下: 首先定义状态矩阵,dp[m][n],其中m为word1的长度+1,n为word2的长度+1,为什么+1?因为要考虑如果word1或word2为空的情况,后面可以看到。 定义dp[i][j

SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

岁酱吖の 提交于 2021-02-12 03:51:07
摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达、IMU、麦克风、音响、摄像头这些通用部件可以直接买到,很难买到通用的底盘。一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的;另一方面是因为底盘包含软硬件整套解决方案,是很多机器人公司的核心技术,一般不会随便公开。出于强烈的求知欲与学习热情,我想自己DIY一整套 两轮差分底盘 ,并且将完整的设计过程公开出去供大家学习。说干就干,本章节主要内容: 1.stm32主控硬件设计 2.stm32主控软件设计 3.底盘通信协议 4.底盘ROS驱动开发 5.底盘PID控制参数整定 6.底盘里程计标 1.stm32主控硬件设计 完整的 stm32 主控硬件包括:带霍尔编码器的直流减速电机、电机驱动、 stm32 单片机开发板等配件。 1.1. 带霍尔编码器的直流减速电机 (图 1 )带霍尔编码器的直流减速电机 要制作一台机器人底盘,需要一套完整的电机部件,就如图 1 中看到的一样,需要有轮胎、联轴器、减速箱、电机和编码器,具体选型可以参考这几个方面的因素: 轮胎: 直径越大,小车的越障能力越好,但会降低小车爬坡的马力; 联轴器: 选择跟轮胎与电机输出轴尺寸相匹配的型号; 减速箱: 减速比决定电机输出轴的扭矩,减速比越大,输出轴扭矩越大,但输出轴转速越慢; 电机: 一般是 12V 的电机,直流有刷简单易控制; 编码器:

SLAM+语音机器人DIY系列:(四)差分底盘设计——6.底盘里程计标

夙愿已清 提交于 2021-02-12 03:41:52
摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达、IMU、麦克风、音响、摄像头这些通用部件可以直接买到,很难买到通用的底盘。一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的;另一方面是因为底盘包含软硬件整套解决方案,是很多机器人公司的核心技术,一般不会随便公开。出于强烈的求知欲与学习热情,我想自己DIY一整套 两轮差分底盘 ,并且将完整的设计过程公开出去供大家学习。说干就干,本章节主要内容: 1.stm32主控硬件设计 2.stm32主控软件设计 3.底盘通信协议 4.底盘ROS驱动开发 5.底盘PID控制参数整定 6.底盘里程计标 6.底盘里程计标 机器人底盘运行的精度是衡量底盘的重要指标。底盘精度受里程计的走直线误差和转角误差影响。因此,需要对里程计的走直线和转角进行标定,尽量减小误差。 miiboo 机器人底盘的 ROS 驱动中已经写好了相应的标定程序,跟里程计标定有关的文件主要有: .../miiboo_bringup/launch/check_linear.launch 为里程计走直线标定启动文件 .../miiboo_bringup/launch/check_angular.launch 为里程计转角标定启动文件 .../miiboo_bringup/launch/minimal.launch 为设置标定参数及底盘控制启动文件 下面是标定步骤过程。 第一步:

SLAM+语音机器人DIY系列:(三)感知与大脑——3.轮式里程计与运动控制

大憨熊 提交于 2021-02-12 03:34:54
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话。朝着这个理想,我准备设计一个能 自由行走 ,并且可以与人 语音对话 的机器人。实现的关键是让机器人能通过传感器感知周围环境,并通过机器人大脑处理并输出反馈和执行动作。本章节涉及到的传感器有激光雷达、IMU、轮式里程计、麦克风、音响、摄像头,和用于处理信息的嵌入式主板。关于传感器的ROS驱动程序开发和在机器人上的使用在后面的章节会展开,本章节重点对机器人传感器和嵌入式主板进行讲解,主要内容: 1.ydlidar-x4激光雷达 2.带自校准九轴数据融合IMU惯性传感器 3.轮式里程计与运动控制 4.音响麦克风与摄像头 5.机器人大脑嵌入式主板性能对比 6.做一个能走路和对话的机器人 3.轮式里程计与运动控制 底盘提供轮式里程计与运动控制,是机器人 SLAM 建图与避障导航的基础。所以对底盘进行了解,和熟悉轮式里程计与运动控制的底层原理是很有益处的。这里以我们的 miiboo 机器人的底盘为例,对底盘上的轮式里程计和运动控制的原理进行分析。 3.1. 硬件概述 ( 图 20 ) miiboo 机器人底盘 底盘主要由电机控制板和带编码器的减速电机构成,如图 20 。电机控制板通过串口与机器人的大脑(如树莓派 3 )相连接,通过接收大脑下发的控制指令,利用 PID 算法对电机进行控制;同时

Communictaion in local area network(LAN) problem about ROS on WSL2

你说的曾经没有我的故事 提交于 2021-02-10 13:08:17
问题 I am a developer of ROS projects. Recently I am trying using ROS(melodic) on WSL2(Windows Subsystem for Linux), and all things works just great. But I got some trouble when I want to use another PC which also in the same local area network(LAN) to communicate with. Before setting the environment variables like "ROS_MASTER_URI, ROS_IP", I know that since WSL 2 work on Hyper-V so the IP show on WSL2 is not the one in the real LAN. I have to do some command like below in order to make everyone

Communictaion in local area network(LAN) problem about ROS on WSL2

大城市里の小女人 提交于 2021-02-10 13:07:58
问题 I am a developer of ROS projects. Recently I am trying using ROS(melodic) on WSL2(Windows Subsystem for Linux), and all things works just great. But I got some trouble when I want to use another PC which also in the same local area network(LAN) to communicate with. Before setting the environment variables like "ROS_MASTER_URI, ROS_IP", I know that since WSL 2 work on Hyper-V so the IP show on WSL2 is not the one in the real LAN. I have to do some command like below in order to make everyone

Communictaion in local area network(LAN) problem about ROS on WSL2

有些话、适合烂在心里 提交于 2021-02-10 13:05:51
问题 I am a developer of ROS projects. Recently I am trying using ROS(melodic) on WSL2(Windows Subsystem for Linux), and all things works just great. But I got some trouble when I want to use another PC which also in the same local area network(LAN) to communicate with. Before setting the environment variables like "ROS_MASTER_URI, ROS_IP", I know that since WSL 2 work on Hyper-V so the IP show on WSL2 is not the one in the real LAN. I have to do some command like below in order to make everyone

让AI落地,从打造一台智能无人机开始

…衆ロ難τιáo~ 提交于 2021-02-06 01:11:50
对于大多数无人机爱好者来说,能自己从头开始组装一台无人机,之后加入AI算法,能够航拍,可以目标跟踪,是心中的梦想。 并且,亲自从零开始完成复杂系统,这是掌握核心技术的必经之路。 开课吧特邀北京航空航天大学无人机专家,进行设计和指导,独家研发与真实的科学研究和工程开发接轨的课程。 软硬件结合, 教你亲自研发一台智能 无人机 。 《完成你的第一个无人机》 让智能无人机梦想照进现实 名额有限 招满即止 本期招生名额还剩 13 人 请备注【无人机】添加 课程由北京航空航天大学无人机专家设计和指导,与真实的科学研究和工程开发接轨。有以下六大优势: 那么,直接购买无人机和我们的课程研发无人机的区别在哪里呢?请看下图: 我们的课程并不是简单的拼装课程,更涉及到 飞行器设计、仿真平台搭建和算法实现的整体流程。 我们课程将会 教你无人机的基本组成、飞行原理、控制理论、状态估计、同时定位与建图、运动规划、目标检测追踪与多无人机协同; 从元器件开始搭建一个具有GPS导航和人为规划路线功能的无人机,并搭建无人机仿真平台,在仿真平台上实现各类智能算法的开发与部署。 本课程分为两大板块: ❥ 课程大纲 (仿真环境下无人机SLAM) ( 真实环境下无人机VIO ) (仿真环境下的运动规划) (仿真环境下的多机协同) (仿真环境下的无人机追踪行人) (真实环境下,无人机追踪亮灯) 《完成你的第一个无人机》

source in every Dockerfile RUN call

拜拜、爱过 提交于 2021-01-28 11:22:40
问题 I have a Dockerfile, where I am finding myself constantly needing to call source /opt/ros/noetic/setup.bash . e.g.: RUN source /opt/ros/noetic/setup.bash \ && SOME_COMMAND RUN source /opt/ros/noetic/setup.bash \ && SOME_OTHER_COMMAND Is there a method to have this initialised in every RUN call in a Dockerfile? Have tried adding to ~/.bash_profile and Docker's ENV command with no luck. 回答1: TL;DR: what you want is feasible by copying your .sh script in /etc/profile.d/ and using the SHELL