极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21183|回复: 14

关于矩阵

[复制链接]
发表于 2013-2-2 11:56:26 | 显示全部楼层 |阅读模式
本帖最后由 碇源堂 于 2013-2-3 10:30 编辑

有没有矩阵库之类的?因为计算机器人的各个关节位置需要矩阵来计算【矩阵可是好东西啊,只要是个人都能用矩阵来精确计算机器人的姿态】

回复

使用道具 举报

发表于 2013-2-2 13:27:19 | 显示全部楼层
可以使用C语言的矩阵库函数,有很多现成的版本。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-2 18:17:18 | 显示全部楼层
春泥蛋炒饭 发表于 2013-2-2 13:27
可以使用C语言的矩阵库函数,有很多现成的版本。

感谢,具体实施方法是直接下载C语言函数库添加进去?还是直接使用C语言的矩阵库函数?
回复 支持 反对

使用道具 举报

发表于 2013-2-3 07:52:28 | 显示全部楼层
碇源堂 发表于 2013-2-2 18:17
感谢,具体实施方法是直接下载C语言函数库添加进去?还是直接使用C语言的矩阵库函数?

要把C的矩阵库目录(含h和CPP文件)考到arduino的libraries目录下,然后在你的arduino程序里声明,编译应该没问题,因为arduino的编程语言是C/C++的子集,最需要注意的是arduino芯片的内存很小(uno只有2K的SRAM),不能操作太大的矩阵。这里有几个免费的C/C++矩阵库供参考:http://www.ibm.com/developerwork ... r/matrix/index.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-3 10:30:01 | 显示全部楼层
春泥蛋炒饭 发表于 2013-2-3 07:52
要把C的矩阵库目录(含h和CPP文件)考到arduino的libraries目录下,然后在你的arduino程序里声明,编译应 ...

感激不尽,我用的ARDUINO板子是目测目前官方板子里最豪华的DUE,而且是2块通过串口通讯来运行,SRAM一块有96K,应该能够用吧…………
回复 支持 反对

使用道具 举报

发表于 2013-2-3 12:55:34 | 显示全部楼层
碇源堂 发表于 2013-2-3 10:30
感激不尽,我用的ARDUINO板子是目测目前官方板子里最豪华的DUE,而且是2块通过串口通讯来运行,SRAM一块有 ...

Due很牛了,没问题。几十个舵机也是小菜
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-3 13:12:12 | 显示全部楼层
春泥蛋炒饭 发表于 2013-2-3 12:55
Due很牛了,没问题。几十个舵机也是小菜

那就行,不过没找到中文资源…………咳咳…………英语能力勉强…………而且我只找到了.H文件,CPP没找到…………
回复 支持 反对

使用道具 举报

发表于 2013-2-3 18:04:23 | 显示全部楼层
春泥蛋炒饭 发表于 2013-2-3 12:55
Due很牛了,没问题。几十个舵机也是小菜

请问一下,“几十个舵机”
是怎么计算出来的??
平均一个舵机需要几个输入输出口?
回复 支持 反对

使用道具 举报

发表于 2013-2-3 18:09:01 | 显示全部楼层
这种库很多

比如:

http://playground.arduino.cc/Code/MatrixMath
提供了加减乘除、求逆、求转制


http://arduino.cc/playground/uploads/Code/MatrixMath.zip
放到"libraries\".目录里,
还有例子程序


可能自己要改一下
#include "WProgram.h"
改成
#include <Arduino.h>

还有一点,矩阵的元素是float类型。

回复 支持 反对

使用道具 举报

发表于 2013-2-3 18:21:53 | 显示全部楼层
碇源堂 发表于 2013-2-3 10:30
感激不尽,我用的ARDUINO板子是目测目前官方板子里最豪华的DUE,而且是2块通过串口通讯来运行,SRAM一块有 ...

代码应该占用不了多少空间,要看你的矩阵的数量和大小。

常见用于旋转的矩阵,我记得是4x4,
如果用float (每个float占4 bytes),一个矩阵就是4x4x4=64字节

1K 内存可以建立 1024/16=64个矩阵

对机器人不熟悉,一个关节的所有信息(位置、速度、加速度、方向、角速度等等),
应该用8个矩阵可以描述了吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-3 19:44:49 | 显示全部楼层
StrongZhu 发表于 2013-2-3 18:21
代码应该占用不了多少空间,要看你的矩阵的数量和大小。

常见用于旋转的矩阵,我记得是4x4,

我觉得应该够了…………毕竟96K这种程度的内存足够计算很大的矩阵了,就算机器人用的矩阵比较独特和复杂…………不过比较担心84MHZ的运行速度啊,不知道能不能快速计算完30个传感器回传的数据做成的矩阵和计算出机体动作的矩阵,接着生成动作指令…………如果不能在0.1-0.5S内完成那就蛋疼了…………不过刚刚订购了一枚树莓派B版512M的,700-800MHZ的速度应该足够了…………我想…………潜心研究如何用树莓派计算矩阵ING…………
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-3 19:46:02 | 显示全部楼层
StrongZhu 发表于 2013-2-3 18:21
代码应该占用不了多少空间,要看你的矩阵的数量和大小。

常见用于旋转的矩阵,我记得是4x4,

我觉得应该够了…………毕竟96K这种程度的内存足够计算很大的矩阵了,就算机器人用的矩阵比较独特和复杂…………不过比较担心84MHZ的运行速度啊,不知道能不能快速计算完30个传感器回传的数据做成的矩阵和计算出机体动作的矩阵,接着生成动作指令…………如果不能在0.1-0.5S内完成那就蛋疼了…………不过刚刚订购了一枚树莓派B版512M的,700-800MHZ的速度应该足够了…………我想…………潜心研究如何用树莓派计算矩阵ING…………
回复 支持 反对

使用道具 举报

发表于 2013-2-3 20:39:49 | 显示全部楼层
碇源堂 发表于 2013-2-3 19:44
我觉得应该够了…………毕竟96K这种程度的内存足够计算很大的矩阵了,就算机器人用的矩阵比较独特和复杂… ...

查了一下,arduino是8bit的cpu,用来做浮点运算,确实压力比较大。
回复 支持 反对

使用道具 举报

发表于 2013-2-4 02:32:50 | 显示全部楼层
StrongZhu 发表于 2013-2-3 18:04
请问一下,“几十个舵机”
是怎么计算出来的??
平均一个舵机需要几个输入输出口?

楼主用矩阵不是为了控制舵机,而是为了管理各关节的位置。这里舵机数是指关节数,考虑的是把各个关节的姿态用一个矩阵来描述时,矩阵操作所需的内存是否比arduino板能提供的内存还大。和舵机控制和I/O口无关的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-4 08:01:30 | 显示全部楼层
StrongZhu 发表于 2013-2-3 20:39
查了一下,arduino是8bit的cpu,用来做浮点运算,确实压力比较大。

其实我还有杀手锏的…………树莓派2,因为咱在国外,所以体验到了35美刀超值价格…………现在正在运输中,不过最快也要6号才能到…………TAT…………STM32开发板比ARDUINO MINI都便宜…………嗯F103的…………不过占地太大…………机器人没那麽多空间放…………
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 04:07 , Processed in 0.063982 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表