并联四足机器人项目开源教程(二)--- 基于ROS搭建控制架构

在这里插入图片描述
这个是本人在大三期间做的项目 ---- 基于MIT的Cheetah方案设计的十二自由度并联四足机器人,这个项目获得过两个国家级奖项和一个省级奖项。接下来我会将这个机器人的控制部分所有代码进行开源,并配有相关的教程博客,希望能够帮助到在学习相关领域知识或者进行项目开发的同学。

学习建议

ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。
在这里插入图片描述

学习视频:古月居ROS21讲
学习资料:我的学习笔记
ROS的原理+实战学习资料
ROS机械臂的moveit编程实现和视觉应用学习源码

  1. 建议先看完古月居21讲,对ROS就会有个比较全面的认识,看的过程中可以结合它配套的课件以及我做的笔记。
  2. 看完教学视频之后,建议做一个小项目进行巩固练习,推荐基于ROS搭建一个移动机器人或机械臂,在我的学习笔记中有搭建机械臂仿真环境的相关教程可以进行参考。

学习内容

首先要明确,ROS是作为工具使用,更多是用于搭建框架,而不包括相应的驱动逻辑和算法,所以在编写ROS相关代码的时候,需要将代码框架和功能实现进行区分。

话题,服务,动作

使用ROS构建的框架属于分布式节点网络,每个节点对应着一个独立的进程(而非线程),进程与进程之间就通过话题,服务,动作这三种方式进行数据交互,从而构建出如下的通信网络。
在这里插入图片描述

话题模型:一个发布者 + n个订阅者(最常用的通信方式)
服务模型:一个服务端 + n个客户端(双向通信)
动作模型:一个服务端 + 一个客户端(拥有完整的流程管理,属于是应用层的通信方式,内核其实就是话题和服务),实现方式如下图所示。

在这里插入图片描述
详细内容可以参考我的笔记:ROS的安装及基础语法

参数管理,Launch文件

对于大工程,常常伴随着许多需要整定的参数,所以就需要进行参数管理,便于修改和存储各个参数值。ROS自带有一套完整的参数管理方法。

  1. 采用yaml参数文件进行参数存储
  2. 将参数载入到ROS网络中(一般通过launch文件)
  3. 各个ROS节点通过调用相应的API函数,读取参数值
/* 设置背景颜色参数 */
ros::param::set("/background_r", 255);
ros::param::set("/background_g", 255);
ros::param::set("/background_b", 255);

/* 读取背景颜色参数 */
ros::param::get("/background_r", red);
ros::param::get("/background_g", green);
ros::param::get("/background_b", blue);

Launch文件是为了更方便地启动ROS的各个节点,加载参数文件,以及对项目文件进行分类管理(因为内部的文件包含机制,类比c++的#include,可以对不同类别的文件进行分类编写和包含)。

#没有使用launch文件
roscore
rosrun package node1
rosrun package node2
rosparam load file_name

#使用了launch文件
roslaunch file-name file.launch

详细内容可以参考我的笔记:ROS进阶用法学习

工具使用

ROS除了用于通信网络的构建,其也提供了非常多的功能包以及开发工具,以下列出常用的几个。

rviz

rviz是ROS提供的一个集成的可视化GUI,可以实现各种数据的显示,同时其也提供二次开发的插件,可以打造个性化的机器人的控制界面。
在这里插入图片描述

gazebo

机器人仿真软件,与verp和webots类似,操作难度不高,并且与ROS较为适配,有相应的功能包,可以结合rviz一起使用。
详细内容可以参考我的笔记:ROS机械臂项目实战
在这里插入图片描述

rqt

用于可视化ROS网络的相关信息。

#画出发布在topic上的数据变化图
rosrun rqt_plot rqt_plot  
#画出node关系图 
rosrun rqt_graph rqt_graph 
#属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息
rosrun rqt_console rqt_console  
#参数动态配置工具
rosrun rqt_reconfigure rqt_reconfigure
#tf树
rosrun rqt_tf_tree rqt_tf_tree

ros-navigation导航功能包

ROS的导航功能包非常成熟,属于是只要有相应的外设(如雷达,里程计),并配置好话题名称,就可以直接调库实现功能。剩下的就只有调参工作。
详细内容可以参考我的笔记:ros-navigation的应用
在这里插入图片描述

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一个“集成”,“生活机器人开源机器人项目。 什么是“整合”? 当我们在线搜索开源机器人时,我们发现它们是机器人代码和演示的一部分,我们无法找到一个完整的项目,直接将它下载到我们的覆盆子pi,开机,然后它可以移动,我们可以玩。Rtp做到了这一点; 实际上它已经能够移动和通话,一个基于ros的集成机器人代码。得到一个覆盆子pi,连接几个电机和一个扬声器/麦克风,好吧,它准备好了。您可以播放,更改代码,再试一次。虽然粗糙但基本上满足了玩它的需要(子功能也需要各种改进)。 什么是“活机器人”? 想象一下,如果你有一只兔子或一只蜥蜴作为宠物,它们绝不会卖给你可爱的,也不会回答你的任何机智或愚蠢的问题。但我们仍然保留这样的宠物; 为什么?因为它“活着”。Rtp负责创造“活着”的感觉,我们称之为“活着的机器人”:但一旦实现它将会非常好,它具有“魔力”的感觉并且会非常有趣:人为地创造一种机械的“生命” 。就像面对Cozmo一样,你会有类似的感觉。 ------------------------------------------------技术与去做 - - - - - - - - - - - - - - - - - - - - - - - - - ---------------- 软件: Python / C. ROS&linux(debian / raspbian / ubuntu) 使用语音识别和对话来使对话更有趣。 ai“心脏”充当真正的兴趣“生活”的东西。 相机和脸部检测/识别以及他所处的空间感。 添加更多传感器,使其与人体互补。 dnn改善用户体验。 硬件: Raspberry Pi 3B(pi 2B,或tk1也很好)+一些传感器模块。 使用Robi或其他类人机器人,如“Ubtech优必选”Alpha2或Abilix“Everest” 该项目是改进软件和硬件以改造/改进可爱的Robi机器人的原创。 2017.2.7 ----------------------------------------------- - - 背景 - - - - - - - - - - - - - - - - - - - - - - - ------------------------- Robi的设计非常好。我们喜欢它。但软件并不强大。这使得Robi不够兴趣。 看起来世界上的机器人只有Nao和Robi。Nao只是“设计”但你不能说它是“艺术”,但对于Robi我们可以感受到“艺术”。“辣椒”怎么样?耶稣,这绝对是丑陋的,用一个大触摸板吓到我了。它甚至比iphone 6背面的绷带更糟糕:-) 什么是Robi:http://www.robo-garage。 由'奇怪'教授兼首席执行官(ROBOGARAGE.Co。,Ltd)设计Tomotaka Takahashi 硬件和调试进展:http ://blog.csdn.net/zister 2015.12.12 -------------- - - - - - - - - - - - - - - - - - - - - 联系 - - - - - -------------------------------------------------- ----------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煜个头头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值