2018年智能机器人技术综合实训专题二控制算法

举报
zhangrelay 发表于 2021/07/15 03:12:34 2021/07/15
【摘要】 2018年智能机器人技术综合实训专题二控制算法 教材:《ROS机器人项目开发11例》 自学: 第2章,使用ROS、OpenCV和Dynamixel伺服电机进行人脸检查与跟踪, (摄像头检测人脸得到方位PID控制舵机跟踪) 人脸识别之前已经讲过,控制机器人左转和右转的代码也提过,这里需要复习并实现; 第8章,在Matlab和Android上运行ROS,此部分延续专...

2018年智能机器人技术综合实训专题二控制算法


教材:《ROS机器人项目开发11例》

自学:

第2章,使用ROS、OpenCV和Dynamixel伺服电机进行人脸检查与跟踪,

(摄像头检测人脸得到方位PID控制舵机跟踪)

人脸识别之前已经讲过,控制机器人左转和右转的代码也提过,这里需要复习并实现;

第8章,在Matlab和Android上运行ROS,此部分延续专题一,很多算法可以在Matlab中找到,

应用API可以直接控制ROS机器人;


复习智库文章-甲子光年-APP--->API

案例学习:

V-Rep巡线小车示例:(线导引式物流小车)

理解模数转换,灰度传感器,电机控制,与能控能观的联系。

将其巡线核心代码读懂。


        if (simExtK3_getLineSensor(k3Handle,0)>0.5) then 
            velLeft=maxVel         -- left sensor intensity > 0.5
        else
            velLeft=maxVel*0.5    -- left sensor intensity <= 0.5
        end

        if (simExtK3_getLineSensor(k3Handle,1)>0.5) then 
            velRight=maxVel        -- right sensor intensity > 0.5
        else
            velRight=maxVel*0.5    -- right sensor intensity <= 0.5
        end

        simExtK3_setVelocity(k3Handle,velLeft,velRight) -- Set desired left and right motor


认真学习视频,v.youku.com/v_show/id_XMzkyNjQ1NzMxMg==.html

将上述代码,修改为PID算法。代码精简优雅,并且效率提高,如何做到?

补充练习:

将灰度传感器改为摄像头,如何实现下述巡线小车功能?

参考链接:blog.csdn.net/ZhangRelay/article/details/81352622

四旋翼呢?空中机器人算法如何设计?为什么?

说明PID控制的局限性,传统控制理论的优势和不足,并比较现代控制理论。

误差在传统PID控制中的作用,被控对象模型在现代控制理论中的作用?

学有余力的同学,请自学并完成ETH的ROS课程:

blog.csdn.net/ZhangRelay/article/details/79463689

完成第3课:本课练习的目标是实现Husky机器人闭环控制。 首先,从激光扫描中获取支柱(singlepillar)的位置,然后控制机器人,使其行驶到支柱附近。(PID算法)

blog.csdn.net/zhangrelay/article/details/79956801

提示:


        //P-Controller to drive husky towards the pillar
        //propotinal gain
        float p_gain_vel = 0.1;
        float p_gain_ang = 0.4;
        if(x_pillar>0.2)
        {
            if (x_pillar <= 0.4 )
             {
                 vel_msg_.linear.x = 0; 
                 vel_msg_.angular.z = 0;
 
             }
            else 
              {
                 vel_msg_.linear.x = x_pillar * p_gain_vel  ;
                 vel_msg_.angular.z = -(y_pillar * p_gain_ang) ;
 
              }
 
       }
       else
       {
                 vel_msg_.linear.x = 0;
                 vel_msg_.angular.z = 0;
       }
       cmd_pub_.publish(vel_msg_);
 


为什么是这样?


 

文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/84979485

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。