- 博客(88)
- 资源 (5)
- 收藏
- 关注
原创 SLAM学习——相机模型(针孔+鱼眼)
针孔相机模型是很常用,而且有效的模型,它描述了一束光线通过针孔之后,在针孔背面投影成像的关系,基于针孔的投影过程可以通过针孔和畸变两个模型来描述。模型中有四个坐标系,分别为worldcameraimage为世界坐标系,可以任意指定xw轴和yw轴,为上图P点所在坐标系。camera为相机坐标系,原点位于小孔,zc轴与光轴重合,xc轴和yc轴平行投影面,为上图坐标系XcYcZc。zc1image。
2023-12-14 22:20:13
3858
原创 Cheetah-Software方案分析
开源的为MIT Cheetah 3和MIT Mini Cheetah的控制系统,两个平台在控制和和通讯上都有一定区别。MIT的Cheetah-Software方案是很经典的四足机器人控制框架,在这之后,有不少更优秀的方案,但不妨碍从Cheetah开始入手学习四足机器人。其他一些方案参考。
2022-08-20 17:26:17
10279
2
原创 结合protobuf和socket实现多进程通讯
采用protobuf实现数据的序列化和逆序列化,再使用socket进行通讯实现类似ROS topic通讯的效果。
2022-08-20 15:06:30
2133
原创 ROS基础——命令
Filesystem Command-line Tools命令作用rospack/rosstackA tool inspecting packages/stacks.roscdChanges directories to a package or stack.roslsLists package or stack information.roscreate-pkgCreates a new ROS package.roscreate-stackCrea
2022-04-21 16:55:46
2619
原创 ProtoBuf
ProtoBuf简述protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,可用于通信协议、数据存储等。使用流程:创建 .proto 文件,定义数据结构编译 .proto文件生成接口调用接口实现序列化、反序列化以及读写安装不同版本的protobuf无法互相兼容,ROS安装时会一并安装,路径为/usr/bin/protoc,若需要依赖其他版本可安装在不同路径下安装依赖 sudo apt-get install autoconf automake l
2022-04-14 14:48:15
2935
原创 运动控制——模型预测控制MPC
算法解析模型预测控制(Model Predictive Control)指一类算法,周期性基于当帧测量信息在线求解一个有限时间开环优化问题,并将结果的前部分控制序列作用于被控对象。根据所用模型不同,分为动态矩阵控制(DMC),模型算法控制(MAC)、广义预测控制(GPC)。在智能驾驶方向,重点在于基于状态空间模型的模型预测控制。模型预测控制的基本思想为利用一个已有的模型、系统当前的状态和未来的控制量,来预测系统未来的输出,然后与期望的系统输出做比较,得到一个损失函数,即:损失函数=[未来输出(模型
2021-08-22 17:13:52
5517
1
原创 机械臂——DH参数
DH参数DH参数存在三种不同的描述:根据机器人学中的最小线性表示约定,欧几里得空间中的坐标变换,最少需要由4个参数描述标准DH参数 (四参数)标准DH参数由Denavit和Hartenberg提出,在一些旧教材上介绍得多,适用于开链机器人建模,在描述树状(一个连杆末端连接两个关节)和闭链结构时会产生歧义。不建议使用。改进DH参数 Modified DH(四参数)Khalil和Kleinfinger提出的一种修改DH法,适用于开链,树状和闭链机器人建模。建议使用。改进DH参数 M
2021-08-15 15:02:38
25396
1
原创 机器人控制系统——LCM
简述Huang A S, Olson E, Moore D C. LCM: Lightweight communications and marshalling[C]//2010 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE, 2010: 4057-4062.LCM(Lightweight Communications and Marshalling)是一组用于消息传递和数据编组的库和工具,其基于U
2021-05-29 00:07:14
4764
1
原创 移动机器人——自定义规划算法
此处自定义global_planner,local_planner流程一样但继承nav_core::BaseLocalPlanner继承nav_core::BaseGlobalPlanner编写插件需重写initialize,makePlan,footprintCost读入参数的命名空间为/move_base/RobotGlobalPlanner/,通过move_base加载参数时默认加入move_base命名空间,只需要在yaml文件中设置RobotGlobalPlanner命名空间即可n.
2021-05-29 00:06:44
2329
1
原创 移动机器人——ros navigation
一、概述ROS navigation为移动机器人导航相关包的集合,实现定位规划避障等相关功能。整体工作流程为:加载地图navigation通过map_server加载现有地图。navigation无建图相关包,需另外实现后保存,默认只支持2维地图,其他包类似grid_map提供2.5维地图的加载。发布TF坐标变换navigation包内的AMCL提供map->odom的变换,AMCL实际为全局绝对定位,即map->base,但在应用时里程计会提供odom->base的变
2021-04-10 00:16:25
4082
原创 移动机器人传感器——GNSS
一、北斗定位北斗卫星导航系统由空间段、地面段和用户段三部分组成,可在全球范围内全天候、全天时为各类用户提供高精度、高可靠定位、导航、授时服务,并且具备短报文通信能力,已经初步具备区域导航、定位和授时能力,定位精度为分米、厘米级别,测速精度0.2米/秒,授时精度10纳秒。GNSS误差因素:与卫星有关卫星轨道误差卫星钟差相对论效应与传播途径相关电离层(折射)延迟对流程(折射)延迟多路径效应与接收设备有关接收机天线相位中心的偏移和变化接收机钟差接收机内部噪声其他影
2021-03-14 14:06:58
4640
原创 ROS进阶——Websocket
WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久性的连接,并进行双向数据传输。一、配置rosbridge_suite:Rosbridge provides a JSON API to ROS functionality for non-ROS programs. .
2021-03-11 16:27:33
7149
原创 ROS进阶——Behaviortree行为树
一、简述BehaviorTree_cpp_v3版本之间api改动较大,需注意版本问题BehaviorTree.CPP has many interesting features, when compared to other implementations:It makes asynchronous Actions, i.e. non-blocking, a first-class citizen.It allows the creation of trees at run-time, usi
2021-02-28 14:27:58
4754
1
原创 移动机器人传感器——IMU
IMU(Inertial Measurement Unit)惯性测量单元:加速度计,陀螺仪构成,输出加速度和角速度,并可以解算出姿态,结合加速度和角速度计可以获得较为准确的Roll和Pitch(旋转轴与重力方向垂直),yaw(旋转轴与重力方向平行)主要通过角速度积分获得,会有偏移误差无法长时间使用。AHRS(Attitude and Heading Reference System)航姿参考系统:由加速度计,磁力计,陀螺仪构成,输出加速度,角速度和姿态,其中姿态是联合三个传感器解算出来,其中磁力计..
2020-12-20 17:23:12
5278
原创 移动机器人传感器——激光雷达
一、激光雷达简介通过持续不断的发射激光束,激光束遇到障碍物会产生反射,部分反射会被激光雷达(Lidar)传感器再次接收到,通过测量激光束发送和返回传感器的耗时(Round Trip Time)可以获得周围物体距离激光雷达的距离。除了距离(Distance)之外,激光雷达(Lidar)还返回反射值强度(Intensity),不同的障碍物材质反射的激光束的强度(Intensity)不同。激光雷达的测量模型为距离-方位角-俯仰角模型(Range-Azimuth-Elevation, RAE)。P是激光雷达的
2020-12-20 17:00:21
4536
1
原创 ROS进阶——笛卡尔轨迹规划descartes
一、配置在kinetic版本无法直接通过apt-get安装descartes,因此采用源码安装。git clone https://github.com/ros-industrial-consortium/descartes.git下载descartes到工作空间内并编译。(可去掉descartes_tests)二、解析2.1 descartes简介官方说明Cartesian...
2020-11-22 15:55:55
3695
原创 移动机器人——里程计矫正
一、问题分析机器人可以基于码盘数据和底盘运动学模型进行航迹推演,得到机器人的轨迹,但实际轨迹与推演轨迹存在误差,分析原因如下:底盘实际尺寸与理论模型存在偏差,如轮子半径,两轮间距等;底盘在运动过程中打滑或路面不平整导致偏差;注意:方向上的偏差较平移的偏差影响更大,会随着移动扩大误差。码盘里程计受电控,底盘机械结构影响,在路况复杂和室外场景下,误差会较大。解决方案直接线性(此处使用该方法)基于模型(可参考2d Laser 和 Odomter 内外参数标定工具原理及使用方法)二、
2020-11-22 15:49:37
4565
1
原创 移动机器人——运动模型
一、简述一般来说移动机器人的运动模型可分为完整约束和非完整约束。完整约束(Holonomic,控制数=自由度):可以用一个由位形变量x,y,θx,y,\thetax,y,θ组成的方程来描述。包括全向轮模型。非完整约束(Non-holonomic,控制数<自由度):只能用位形变量的微分方程描述,无法积分成一个位形变量的约束方程。包括双轮自行车模型和差速模型 。通常地面机器人的自由度为3,包括x,y与朝向。对于角轮(castor wheels)或者是全向轮(Omni-wheels)的机器人,
2020-08-02 17:50:31
15713
1
原创 ROS学习——tf2
一、TF2简介Since ROS Hydro, tf has been “deprecated” in favor of tf2. tf2 is an iteration on tf providing generally the same feature set more efficiently. As well as adding a few new features.tf2是TF1的新版本,tf2包分为tf2和tf2_ros,前者用来进行坐标变换等具体操作,后者负责与ROS消息打交道,负责发布
2020-07-26 14:17:26
5956
原创 SLAM学习——使用ARUCO_marker进行AR投影
SLAM应用AR投影使用ARUCO_marker进行AR投影使用orb-slamr进行AR投影
2020-06-06 15:24:03
4166
原创 运动规划——B样条曲线
一、贝塞尔曲线(Bézier curve)贝塞尔曲线主要用于二维图形应用程序中的数学曲线,曲线由起始点,终止点(也称锚点)和控制点组成,通过调整控制点,通过一定方式绘制的贝塞尔曲线形状会发生变化。n阶贝塞尔曲线公式B(t)=∑i=0nCniPi(1−t)n−iti,t∈[0,1]B(t) = \sum^n_{i=0} \textrm{C}_{n}^{i}P_i(1-t)^{n-i}t^...
2020-03-25 11:19:48
5500
1
原创 机械臂动力学——二轴机械臂动力学参数识别
本文为A matlab-based identification procedure applied to a two-degrees-of-freedom robot manipulator for engineering students学习笔记,相关数据代码可以通过Matlab程序和数据下载一、概述1.1 二轴机械臂参数说明m1m_1m1连杆1质量m...
2020-02-09 21:34:44
9577
4
原创 ROS进阶——MoveIt Planning Request Adapters
一、Planning Request AdaptersPlanning Request Adapters为规划处理适配器,用于处理运动规划(motion_planer)请求(before plan)和响应(after plan)的数据。注意:不同版本ROS提供的适配器略有不同,如果需要使用新版本ROS或者自定义适配器,需要根据流程配置。moveit_ros适配器作用...
2020-01-15 23:32:25
2987
1
原创 SLAM学习——卡尔曼滤波(KF/EKF)
符号意义x^\hat{x}x^:状态x的估计状态,后验xˉ\bar{x}xˉ:估计状态x^k\hat{x}_kx^k的预估值,先验PPP:协方差一、卡尔曼滤波(KF)1.1 状态观测器(State Observers)实际系统x˙=Ax+Buy=Cx\dot{x} = Ax+Bu\\y = Cxx˙=Ax+Buy=Cx数学模型x^˙=Ax^+Bu+K(y−y...
2020-01-04 16:28:50
2880
原创 ROS——vscode配置
一、概述相关扩展C/C++PythonCMakeCMake Toolsvscode-icons:给不同类型文件设置图标ROSvscode-rosvscode-ros是在vscode上用于辅助ros开发的插件,因roboware不再更新所以切换到vscode平台。不会修改工作空间文件目录结构(roboware会改变目录结构,手动创建的无法导入roboware,robowar...
2020-01-03 23:50:50
12054
5
原创 机械臂动力学——动力学建模
一、动力学方程基本动力学模型τ = D(q)q¨+C(q,q˙)+G(q)\tau = D(q)\ddot{q}+C(q,\dot{q})+G(q)τ = D(q)q¨+C(q,q˙)+G(q)τ\tauτ为关节力矩,D(q)D(q)D(q)为机械臂的n×nn \times nn×n质量矩阵,C(q,q˙)C(q,\dot{q})C(q,q˙)为n×1n \times 1n×1离心...
2019-10-17 17:51:15
51492
15
原创 相机标定(二)——图像坐标与世界坐标转换
一、坐标关系相机中有四个坐标系,分别为world,camera,image,pixelworld为世界坐标系,可以任意指定xwx_wxw轴和ywy_wyw轴,为上图P点所在坐标系。camera为相机坐标系,原点位于小孔,z轴与光轴重合,xwx_wxw轴和ywy_wyw轴平行投影面,为上图坐标系XcYcZcX_cY_cZ_cXcYcZc。image为图像坐标系,原点位于光轴...
2019-10-12 09:31:18
49227
37
转载 Linux学习——Socket编程
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有...
2019-09-29 15:38:51
521
原创 SLAM学习——Ceres
一、安装配置依赖# CMakesudo apt-get install cmake# google-glog + gflagssudo apt-get install libgoogle-glog-dev# BLAS & LAPACKsudo apt-get install libatlas-base-dev# Eigen3sudo apt-get install l...
2019-09-03 09:28:17
1402
1
原创 相机标定(三)——手眼标定
相机标定(一)——内参标定与程序实现相机标定(二)——图像坐标与世界坐标转换相机标定(三)——手眼标定一、简述手眼标定目的在于实现物体在世界坐标系和机器人坐标系中的变换。在标定时,一般在工作平面设置一个世界坐标系,该坐标系与机器人坐标系不重合,在完成相机的内外参标定后,可计算获得物体在世界坐标系中的位置。若需要机器人与视觉联动,需要获得物体在在机器人坐标系中的坐标。二、 原理2.1 ...
2019-09-03 09:27:09
31597
6
原创 ROS进阶——运动规划分析
通过给定的轨迹点,根据设定的最大速度和加速度计算每个点的速度,加速度和时间帧。轨迹点:可通过插补获得,数据类型为moveit_msgs::RobotTrajectory设定的最大速度和加速度:为URDF文件中设定参数分析在规划固定轨迹时(直线,圆弧),规划获得速度和加速度一般会有抖动,特别是在精确的规划下,因此在对轨迹要求不高的情况下,使用样条曲线(Spline Curves)可以获得...
2019-09-03 00:02:56
10461
17
原创 数据结构与算法——图论
一、图的概念图形由顶点/节点和连接这些顶点的边/线组成。图可以是无向的(意味着在与每个双向边相关联的两个顶点之间没有区别)或者可以指向图(意味着其边缘从一个顶点指向另一个顶点但不一定在另一个方向上)。可以对图形进行加权(通过向每个边缘分配权重,其表示与该连接相关联的数值)或者图形可以是未加权的(所有边缘具有单位权重1或者所有边缘具有相同的恒定权重)图的可视化顶点(vertex)...
2019-08-23 00:16:59
1009
原创 Ubuntu安装ROS2
一、安装二、使用参考Installing ROS2 via Debian PackagesUsing colcon to build packagesROS2入门教程-linux下apt安装ROS2 CrystalROS2探索总结(六)——迎接ROS2.0时代的到来数据分发服务DDS技术研究...
2019-08-22 23:41:36
7376
3
原创 机械臂——工具标定
文章目录一、标定实现1.1 TCP位置标定1.2 TCF姿态标定二、原理分析2.1 TCP位置标定分析2.2 TCF姿态标定分析三、程序实现参考一、标定实现机器人工具坐标系标定就是确定工具坐标系相对于末端连杆坐标系的变换矩阵1.1 TCP位置标定标定步骤控制机械臂移动工具从不同方位触碰空间中某个固定点,记录N组数据(n⩾3n \geqslant 3n⩾3);计算获得工具末端点...
2019-06-17 11:56:30
15805
11
原创 Git——GitHub&Gitlab配置
文章目录一、配置Git1.1 Github1.2 GitLab1.3 配置账户名和密码二、添加仓库三、检出仓库四、代理配置一、配置Git1.1 Github在本地创建ssh keyssh-keygen -t rsa -C "your_email@youremail.com"后面的your_email@youremail.com改为你在github上注册的邮箱,之后会要求确认路径和输入密...
2019-05-18 23:18:30
1826
原创 Git——git命令
文章目录1、创建新仓库2、检出仓库3、工作流4、添加和提交5、推送改动6、分支7、更新与合并8、标签9、替换本地改动10、撤销和回滚10.1 撤销10.2 回滚11、比较差异参考1、创建新仓库创建新文件夹,打开,然后执行git init2、检出仓库执行如下命令以创建一个本地仓库的克隆版本:git clone /path/to/repository如果是远端服务器上的仓库,你的命令...
2019-05-16 11:14:23
445
原创 ROS进阶——SMACH状态机
文章目录一、简述1.1 状态机简介1.2 状态机的应用二、smach的使用2.1 基本状态机2.2 状态机+话题2.3 状态机+服务器参考一、简述1.1 状态机简介有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。FSM是一种算法思想,简单而言,有限状态机由一组状态、一个初始状...
2019-04-23 10:27:38
7161
2
原创 齐次坐标的分析
一、齐次坐标的理解“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。向量对于一个向量v⃗\vec{v}v以及基oabcoabcoabc,可以找到一组坐标(v1,v2,v3)(v_1,v_2,v_3)(v1,v2,v3),使得(1)v⃗=v1a⃗+v2b⃗+v3c⃗\vec{v...
2019-04-15 00:22:44
2893
2DOF Robot Parameter Identification.zip
2020-09-23
ROS Industrial (Kinetic) Training Exercises.zip
2019-06-13
Robotics Toolbox 10.3.1
2019-02-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人