Robotics 机器人
风竹夜
github: https://github.com/fengzhuye
开源软件, github,c/c++, linux,orocos,ros,ethercat,canopen, matlab etc.
展开
-
DC Motor 参数的理解
关于如何理解电机参数:http://www.robotshop.com/blog/en/how-do-i-interpret-dc-motor-specifications-3657如何正确计算期望电机参数: http://www.gearseds.com/files/Lesson3_Mathematical%20Models%20of%20Motors.pdf原创 2015-12-11 16:00:35 · 6229 阅读 · 0 评论 -
Lock-Free,无锁数据结构 & 无锁编程 Orocos — Muliti Writer Single Reader Queue
无锁数据结构无锁的数据结构应用越来越广泛,现在几乎所有的多核cpu都提供了 CAS 操作。实现无锁的 Muliti Writer Single Reader Queue 的关键还是 实现指针的 CAS( gcc: __sync_val_compare_and_swap ).这里有一个 Single Writer Mulity Reader 的 无锁实现 see link实现过程:创建一个数组 _bu原创 2016-06-03 15:59:21 · 3596 阅读 · 2 评论 -
机器人奇异性 & 奇异区域的判断 make&test
通常来说,一个6轴机械臂有三种个奇异点 (对应三个奇异区域): Wrist Singularities - These happen when two of the robot’s wrist axes (joints 4 and 6) line up with each other. This can cause these joints to try and spin 180 degr原创 2016-08-08 16:47:38 · 9609 阅读 · 0 评论 -
CANOpen,关于 DS402 电机驱动器的状态切换(控制字&状态字)
各种状态的迁移是通过控制字可状态字来完成的: 这是一段关于状态迁移的伪代码:if ( (input.status_word_& 0x007f) == 0x0037) // (正常工作状态)Switch On + Enable Operation + Quick Stop Off + No warning + Voltage On{ // 在这里正常发送控制指令,位置,速度,力矩等}原创 2016-03-31 13:09:22 · 29722 阅读 · 19 评论 -
Trajectory Generation——机器人运动轨迹生成 learn & mark:
一般来说控制机器人(or Motor)运动一个轨迹需要经过这些步骤:操作空间轨迹规划(直线和圆弧就比较简单了,如果是未知的轨迹例如壁障,可通过概率路标-sample based,快速扩展随机树-RRT,tree based等算法生成的壁障轨迹)以时间(或者距离,误差精度and其他)为参数,获得轨迹上的MultiPoints,或者生成pvt数据,再通过机器人逆运动学和雅克比求得关节空间的位置和速度原创 2016-03-23 16:00:33 · 10158 阅读 · 7 评论 -
Orocos OperationCaller 解析
在 Orocos 中 OperatoinCaller 表示一个可以调用其他模块的函数的对象, 如果一个模块添加了一个 Operation,则该 Operation 表示的函数可以被其他模块的 OperationCaller 调用。 在连接 ( connectService ) 调用端(OperationCaller)和被调用端(Operation)之后,该 OperatoinCaller 就能够原创 2016-06-02 11:10:38 · 3675 阅读 · 0 评论 -
持续集成(CI)-build, test, and deploy & 自动化编译系统 mark & learn
当涉及到多个模块编程的时候,持续集成或者自动化编译系统能够发现一些模块之间的依赖问题,并且能很方便的管理大型项目。各种 CI tools: https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software但是如果你的项目是在 github 上的,则推荐用 Travis CI,简单方便.jenkins 更新,见博客:原创 2016-02-24 20:27:59 · 4509 阅读 · 0 评论 -
jenkins 安装,配置 和 运行 & Build Pipeline 插件的使用
安装1 . 可以手动安装(下载安装包,运行之) see link: http://www.tutorialspoint.com/jenkins/jenkins_installation.htm 2 . ubuntu 自动安装wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -原创 2016-07-11 16:56:38 · 11467 阅读 · 0 评论 -
Orocos ExecutionEngine 对函数Operation调用的实现
在 Orocos 中每一个 ExecutionEngine 可以属于一个线程,其拥有一个成员变量,指向 Activity 类(表示一个线程)。 该 ExecutionEngine 负责函数的调用,数据的传输等等(如下图所示) 其中每一个 ExecutionEngine 中都有一个无锁的队列 MWSRQueue 类 see linkinternal::MWSRQueue<base::Dispos原创 2016-06-03 11:04:24 · 3536 阅读 · 0 评论 -
Orocos Activity&ExecutionEngine 解析
Orocos 每一个TaskContext 类表示一个完整的模块,该模块有configure,start,stop,clean,setPeriod等等方法来控制这个模块的运行。如果使用了该模块的setActivity方法,将该模块放在一个单独的线程中运行,该模块内便独立于其他模块,根据自己的周期频率执行各个函数,读写dataport等。setActivity 方法如下:bool TaskContex原创 2016-06-01 13:47:20 · 3351 阅读 · 0 评论 -
机器人控制——电机驱动器 learn & mark
电机驱动器主要可以分为两种,数字式的驱动器和非数字式的驱动器: 数字式的基本上依靠总线通讯,通过读写驱动器上的控制器的寄存器或者RAM来实现数据交换。在上层就只需要发送简单的控制参数就可以了(例如,PTP运动——以给定的速度运动到给定的位置,JOG运动——以给定的速度一直运动等等),该驱动器一般多用在直流伺服电机的控制上,直流驱动相对简单一些(通讯,PWM,控制算法),因此可以做得特别小(功率也小原创 2015-11-09 15:41:20 · 5188 阅读 · 0 评论 -
deploy 自己编写的 QT 程序 (如何打包window下的程序)
如果你自己写了一个QT程序,需要在另一台电脑上运行,如何打包所有的dll和资源呢?将QT程序编译为Release版本。下载 Dependency Walker,运行之,然后在里头Open编译后的QT程序,然后查看需要哪些dll文件(一般会报很多dll却失,但只要能够正常运行你的QT程序就没问题,因为Dependency Walker会报告很多系统自带的dll丢失,但其实这些dll都没问题),复制原创 2016-01-28 13:18:20 · 7278 阅读 · 2 评论 -
why 集电极开路? 各种信号输出类型 learn
很多信号的输出都标识了集电极开路(如旋转编码器的ABZ相输出信号),为什么是集电极开路(OC: Open Collector)呢?example:SN7407N为一个集电极开路输出的六缓冲器,就是你输入低电平,输出端也是低电平;输入高电平,输出端就是高阻态,如图:从上图中可以看出其中有个三极管:基极接信号输入(中间加了一个非门,有小圆圈的)、发射极接地、集电极啥也没接就直接连输出端了(所以就是集电极原创 2016-01-12 13:46:26 · 5113 阅读 · 0 评论 -
不同国家的小数点的表示
12,345.67 English12.345,67 German 12345,67 French1,2345.67 Asia原创 2015-12-21 13:40:44 · 11205 阅读 · 0 评论 -
EMI/RFI (开关电源外壳带高压?)
在使用电子器件的时候都需要考虑高频干扰(EMI/RFI—— EMI一般为150 kHz 至 30 MHz; RFI一般为 30 MHz 至 1 GHz)。 电路中具有开关电路(如开关电源)的时候就会有产生这种高频干扰(其原理所致),所以需要设计高频抑制电路(通常为 L-C 电路)来过滤输掉高频交流纹波。 开关电源电路 和其中的 EMI Filter 见下图:开关电源电路图:EMI Filter:原创 2015-12-21 10:20:57 · 4702 阅读 · 0 评论