用C#写一个机器人基础知识类

本文介绍如何使用C#编程语言构建机器人基础知识类,涵盖运动学的DH参数、自由度、坐标系转换、正反算、雅可比矩阵及轨迹规划等;深入讨论动力学的负载、力反馈、控制理论;详细讲解硬件组件如马达、编码器、减速器、驱动和控制器;并探讨多种通讯协议如FTP、SOAP、Socket、CAN、TCP和Modbus,以及vxWorks系统在机器人中的应用。
摘要由CSDN通过智能技术生成


1.工业机器人

运动学

1.DH参数

2.自由度

3.坐标系

4.坐标系转换

5.正算与反算

6.雅可比矩阵

7.轨迹规划

8.Blend算法

9.速度,加速度,位置

 

动力学

1.负载

2.力反馈

3.柔性

4.刚性

 

控制理论

1.boxcar

2.反馈模型

 

硬件

1.马达

2.编码器

3.减速器

4.驱动

5.控制器

6.电源

7.连接部件

 

通讯

1.ftp

2.soap

3.socket

4.profit bus

5.can

6.tcp

7.modbus

 

系统

vxwork系统

 

    /// <summary>
    /// 根据给的点获得数据
    /// </summary>

    public class Val3
    {
        #region 公共变量
        /// <summary>
        /// 产品Frame
        /// </summary>
        public static double[] RecipeFrame = new double[6];
        /// <summary>
        ///产品偏移
        /// </summary>
        public static double[] RecipeOffset = new double[6];
        /// <summary>
        /// 工具信息
        /// </summary>
        public static double[] Tool = new double[6];

        /// <summary>
        /// 路径FRAME
        /// </summary>
        public static double[] TrajFrame = new double[6];
        /// <summary>
        /// 路径偏移
        /// </summary>
        public static double[] TrajOffset = new double[6];
        /// <summary>
        /// 圆的直径
        /// </summary>
        public static double TrajDiameter = 0;

        public static double Blend = 0;

        public static double RecipeSpeed = 0;

        public static double TrajSpeed = 0;


        //

        public static double[][] Point;

        public static double[][] SaftyPoint;

        public static double[][] BeforePoint;

        public static double[][] AfterPoint;

        public static double[][] BeforeSpeed;

        public static double[][] SaftySpeed;

        public static double[,] DH;
        public static double[,] DH160L = new double[,] { { 150, 825, 0,  0,   0,  0 },
                                                         { 0,    0,  0,  0,   0,  0 }, 
                                                         { 0,    0,  0,  925, 0,  110}, 
                                                         { -90,  0,  90, -90, 90, 0 }, 
                                                         { 0,    0,  0,  0,   0,  0 }, 
                                                         { 0,  -90,  90, 0,   0,  0 }
                                                       };
        //a,0,d.

        #endregion

        #region 公共函数
        public static double[] Joint2Point(double[] Joint, double[,] DH)
        {

            if (!IsJoint(Joint) || DH == null || DH.Length != 36)
            {
                return null;
            }
            double[] Trsf0 = new double[] { 0, 0, 0, 0, 0, Joint[0] + DH[5, 0] };
            double[] Trsf1 = new double[] { DH[0, 0], DH[1, 0], DH[2, 0], DH[3, 0], DH[4, 0], Joint[1] + DH[5, 1] };
            double[] Trsf2 = new double[] { DH[0, 1], DH[1, 1], DH[2, 1], DH[3, 1], DH[4, 1], Joint[2] + DH[5, 2] };
            double[] Trsf3 = new double[] { DH[0, 2], DH[1, 2], DH[2, 2], DH[3, 2], DH[4, 2], Joint[3] + DH[5, 3] };
            double[] Trsf4 = new double[] { DH[0, 3], DH[1, 3], DH[2, 3], DH[3, 3], DH[4, 3], Joint[4] + DH[5, 4] };
            double[] Trsf5 = new double[] { DH[0, 4], DH[1, 4], DH[2, 4], DH[3, 4], DH[4, 4], Joint[5] + DH[5, 5] };
            double[] Trsf6 = new double[] { DH[0, 5], DH[1, 5], DH[2, 5], DH[3, 5], DH[4, 5], 0 };

            double[] Buff = TrsfTrsf(Trsf0, Trsf1);
            Buff = TrsfTrsf(Buff, Trsf2);
            Buff = TrsfTrsf(Buff, Trsf3);
            Buff = TrsfTrsf(Buff, Trsf4);
            Buff = TrsfTrsf(Buff, Trsf5);
            return TrsfTrsf(Buff, Trsf6);

        }

        private static double[] StandardTrsf(double[] Trsf)
        {

            if (Trsf == null || Trsf.Length != 6)
                return null;
            double[] Res = new double[6];
            Res[0] = Trsf[0] / 1000.0;
            Res[1] = Trsf[1] / 1000.0;
            Res[2] = Trsf[2] / 1000.0;


            Res[3] = Trsf[3] / 180.0 * Math.PI;
            Res[4] = Trsf[4] / 180.0 * Math.PI;
            Res[5] = Trsf[5] / 180.0 * Math.PI;

            return Res;

        }
        public static double[] Point2Joint(double[] Trsf, double[,] DH, bool[] Pose)
        {

            if (!IsTrsf(Trsf) || DH == null || DH.Length != 36 || Pose == null || Pose.Length < 3)
            {
                return null;
            }
            double[] Joint = new double[6];
            double[] Trsf0 = new double[] { 0, 0, 0, 0, 0, Joint[0] + DH[5, 0] };
            double[] Trsf1 = new double[] { DH[0, 0], DH[1, 0], DH[2, 0], DH[3, 0], DH[4, 0], Joint[1] + DH[5, 1] };
            double[] Trsf2 = new double[] { DH[0, 1], DH[1, 1], DH[2, 1], DH[3, 1], DH[4, 1], Joint[2] + DH[5, 2] };
            double[] Trsf3 = new double[] { DH[0, 2], DH[1, 2], DH[2, 2], DH[3, 2], DH[4, 2], Joint[3] + DH[5, 3] };
            double[] Trsf4 = new double[] { DH[0, 3], DH[1, 3], DH[2, 3], DH[3, 3], DH[4, 3], Joint[4] + DH[5, 4] };
            double[] Trsf5 = new double[] { DH[0, 4], DH[1, 4], DH[2, 4], DH[3, 4], DH[4, 4], Joint[5] + DH[5, 5] };
            double[] Trsf6 = new double[] { DH[0, 5], DH[1, 5], DH[2, 5], DH[3, 5], DH[4, 5], 0 };

            double[] Buff = TrsfTrsf(Trsf, InverseTrsf(Trsf6));
            if (Buff == null)
    
软件名称:梦想接口工作室 -- QQ机器人! 软件版本:1.0.0.1 更新日期:2010/7/19 软件作者:小胡 软件下载地址:http://www.8han.com/qq/down/QQRobot.rar 软件说明: 1.在论坛:http://www.8han.com 论坛中注册一个账号。然后用账号登陆软件。 2.登陆成功后输入QQ账号和密码。点击登陆,如果QQ好友比较多,就会比较慢,因为每次登陆都会下载好友信息和群信息。 3.在实时日志中就能看到QQ机器人的动作。 4.配置修改中,可以修改QQ机器人的默认语句和问答语句。 5.论坛整合中需要输入论坛的数据库信息。 6.设置 数据库信息 注:数据库前缀不要下划线,论坛地址后面不要加“/” 7.QQ群号有2层含义,1.与论坛绑定的群号,如若发现论坛有新帖,机器人就会向所设置的群号中发信息,2锁定的群号,因为考虑到有的用户,不想让机器人在别的群中说话,所以就可以锁定机器人只在锁定的群中发言。 8.如果在使用的过程中遇到问题,可以在论坛中提交问题,请经常查看版本信息,获取最新的QQ机器人版本。 函数讲解: 1.默认回答中的函数:$qq$:收到信息的发送QQ。 $qm$ :收到的信息。 2.论坛主贴群通知新信息:$author$ :帖子的发送人 $subject$:帖子的标题 $url$:帖子的地址 3.论坛主贴群通知新信息:$tauthor$ :帖子的发送人 $author$ :帖子的回复人 $subject$:帖子的标题 $url$:帖子的地址 $views$ : 浏览次数 $replay$ :回复次数 命令详解: help:列出所有命令集 s:www.8han.com 查询8han.com的收录情况和PR值 e:english 把英文翻译为中文 c:中国 把中文翻译为英文 j:中国 把简体翻译成繁体 f:中國 把繁体翻译成简体 软件调试成功后,论坛中发新帖会在绑定的QQ群中发言。 论坛中发新回帖会给发帖的楼主发信息。 QQ机器人2010-7-22 更新日志: 1.版本由1.0.0.1升级至1.0.0.2 2.简约了登陆界面 3.解决了缩小就关闭的问题,软件制作成:关闭就关闭了软件,但是做出了QQ一样的缩进效果! 4.软件增加了测试论坛链接成功与否按钮 5.论坛版块中,点击了开始监控,才监控论坛。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值