机器人操作系统
未读ROS 通信机制进阶-API代码分析
初始化
1234567891011121314/** @brief ROS初始化函数。 * * 该函数可以解析并使用节点启动时传入的参数(通过参数设置节点名称、命名空间...) * * 该函数有多个重载版本,如果使用NodeHandle建议调用该版本。 * * \param argc 参数个数 * \param argv 参数列表 * \param name 节点名称,需要保证其唯一性,不允许包含命名空间 * \param options 节点启动选项,被封装进了ros::init_options * */void init(int &argc, char **argv, const std::string& name, uint32_t options = 0);
在 roscpp 中,话题和服务的相关对象一般由 NodeHandle 创建。
话题与服务对象
发布对象
对象获取:
123456789101112131415161718192021/*** \brief 根据话题生成发布对象** 在 R ...
机器人操作系统
未读ROS 通信机制
ROS 中的基本通信机制主要有如下三种实现策略:
话题通信(发布订阅模式)
服务通信(请求响应模式)
参数服务器(参数共享模式)
话题通信
话题通信是ROS中使用频率最高的一种通信模式,话题通信是基于发布订阅模式的,也即:一个节点发布消息,另一个节点订阅该消息。话题通信的应用场景也极其广泛,比如下面一个常见场景:
机器人在执行导航功能,使用的传感器是激光雷达,机器人会采集激光雷达感知到的信息并计算,然后生成运动控制信息驱动机器人底盘运动。
在上述场景中,就不止一次使用到了话题通信。
以激光雷达信息的采集处理为例,在 ROS
中有一个节点需要实时地发布当前雷达采集到的数据,导航模块中也有节点会订阅并解析雷达数据。
再以运动消息的发布为例,导航模块会根据传感器采集的数据时时的计算出运动控制信息并发布给底盘,底盘也可以有一个节点订阅运动信息并最终转换成控制电机的脉冲信号。
以此类推,像雷达、摄像头、GPS….
等等一些传感器数据的采集,也都是使用了话题通信,换言之,话题通信适用于不断更新的数据传输相关的应用场景。
...
机器人操作系统
未读ROS 简介
ROS概念
起源:2007 年,一家名为
**柳树车库(Willow Garage)**的机器人公司发布了
ROS(机器人操作系统),ROS是一套机器人通用软件框架,可以提升功能模块的复用性,并且随着该系统的不断迭代与完善,如今
ROS 已经成为机器人领域的事实标准。
ROS全称Robot Operating System(机器人操作系统)
ROS是适用于机器人的开源元操作系统
ROS集成了大量的工具,库,协议,提供类似OS所提供的功能,简化对机器人的控制
还提供了用于在多台计算机上获取,构建,编写和运行代码的工具和库,ROS在某些方面类似于“机器人框架”
ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities +
Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体
ROS设计目标
**代码复用:**ROS的目标不是成为具有最多功能的框架,ROS的主要目标是支持机器人技术研发中的代码重用。
**分布式:**ROS是进程(也称为Nodes)的分 ...
机器人操作系统
未读ROS
深蓝学院宇树机器人强化学习训练与部署
环境必备
深蓝学院的作业是基于宇树科技的官方强化学习文档进行布置的,里面的部署操作步骤也在官网有,这里给出宇树机器人的强化学习部署链接:
https://support.unitree.com/home/zh/G1_developer/rl_control_routine
https://support.unitree.com/home/zh/rl_gym/intro
系统要求
由于 isaac_gym 仿真平台需要 CUDA,本文建议硬件需要配置
NVIDIA 显卡(显存>8GB、
RTX系列显卡),并安装相应的显卡驱动。建议系统使用
ubuntu18/20,显卡驱动 525 版本。
这里最好使用 Ubuntu20.04 发行版
下载 miniconda
为了方便进行环境的隔离,这里本电脑早期已经完成了
miniconda
的相关包下载,这里直接按照链接步骤进行即可,在此不进行记录
创建强化学习环境
1$ conda create -n rl-g1 python=3. ...
编程学习
未读CMake 快速入门
前言
什么是 CMake ?
CMake 是一个
跨平台的自动化构建系统工具,主要用于生成项目的构建文件(如
Makefile、Visual Studio 工程、Ninja 等),以便编译和管理 C/C++
等语言的代码项目。
CMake 基本文件结构
123456cmake-template├── CMakeLists.txt└── build└── include└── src └── main.cpp
CMakeLists.txt 文件用来告诉
CMake:项目有哪些源文件?需要哪些依赖库?生成什么目标(如可执行文件、静态库、动态库)?
构建系统
123mkdir buildcd buildcmake ..
会在 build 目录生成平台特定的构建文件
例程
下面是宇树科技的功能包 controller 的
CMakeLists.txt 文件
12345678910111213141516171819202122232425262728293031323334353637383 ...
机器人操作系统
未读
ROS
实现深蓝学院宇树机器人仿真
环境必备
深蓝学院的作业是使用 ROS
一件安装指令,在终端进行操作
使用鱼香 ROS 一键安装指令
1$ wget http://fishros.com/install -O fishros && . fishros
此时安装后的版本为 ROS-Noetic
更新系统,在终端执行指令
1$ sudo apt update && sudo apt upgrade -y
按照深蓝指南安装与 ROS 相关的依赖库
12345678910111213$ sudo apt install -y \ cmake \ curl \ git \ libfreeimage-dev \ libprotoc-dev \ protobuf-compiler \ libignition-math6-dev \ libsqlite3-dev \ libtinyxml2-dev \ libgflags-dev \ libav ...
Latex写作4:公式、表格、参考文献与人物简介篇
公式撰写
熟练latex公式撰写的同学可以根据代码
1234\begin{equation}your equation\lable{eq:x}\end{equation}
自行撰写,需要注意的是上述公式自带编号,公式引用格式为(\ref{eq:x}),而下述代码则没有自带编号的公式:
123\begin{equation*}your equation\end{equation*}
小技巧:
纯代码式编写公式操作比较麻烦,可视化弱,可以将通用的公式截图在网站:SimpleTex - Snip &
Get!进行识别得到latex代码进行修改。
如果被识别的公式非常复杂的代码中难以定位,则可以吧复制的latex代码粘贴到Mathtype中进行可视化的编辑,之后设置Mathtype选项
设置剪切和复制预置
之后将Mathtype选择公式复制到latex编辑环境中公式最左和最右处会多出\[ \],如下所示
1\[{\rm{a + b = c}}\]
删掉即可
表格绘制
如图所示
...
latex
未读Latex写作2:文本编辑篇
导言区
在自己需要的自定义包之前都是IEEE Template模板自带的包,由于我们只需要使用就不介绍每个包做什么用的,只需要知道我们想要什么功能的时候去搜索相关的代码,然后需要某个包就去导入哪个包。
标题、作者和致谢区
共有三个代码,分别是\title,\author,\thanks。
每个代码后面接{+内容}。
注意latex代码间的空白行代表着下一个需另起一段,如上述的段落
This article has supplementary downloadable
material available at http://ieeexplore.ieee.org, provided by the
authors.与段落Color versions of one or more of
the figures in this article are available online at
http://ieeexplore.ieee.org.是两个不同的段落,其代码如下所示:
12345\thanks{This arti ...
latex
未读Latex写作1:总体介绍篇
准备工作
英文写作上普遍使用latex编辑方式,这种方式相较于word虽然说可视性差一点,基于代码式的编译方式,但是不容易出格式问题,方便自动排版。初见latex写作我们得创建一个基本的latex环境。下载latex并构建环境网上都有教程,这里给出我学习查看的博客:
【LaTex】LaTex的下载与安装(超详细、超简洁)_latex下载-CSDN博客
环境创建完毕之后,就需要下载对应期刊的模板,进行论文写作,这里以IEEE/ASME的论文写作为例(暂时没写过,但是帮人排版过),步骤如下:
网页上搜索IEEE template
选择矩形框所示的期刊文件(根据自己需求进行选择)
选择ASME的期刊类别(根据自己需求…)

默认勾选(没其他可选的)
选择Latex模版类别
之后就可以下载模板了 ...
等价输入干扰EID:Matlab求解LMI
镇稳目标
使EID系统镇稳的LMI推导详细请见上篇。
本篇论文中,使整个系统稳定的LMI条件为:
待定LMI变量为,其中前四个为对称半正定矩阵,后三个为合适矩阵即可
(1)式和(2)式内各参数为:
求解后可得参数:
基于 Yalmip 的
Matlab 程序编写
初始化准备
1234567891011121314151617181920212223242526272829303132%清空环境clear; clc;%系统矩阵A = [-2 3; 4 -5];B = [1;1]; C = [2 1];Bd = [2;1];M = [-1;0];%系统参数AF = -101; BF = 100;CF = 1; %计算伪逆BZBZ = pinv(B);%svd分解[U,S,V] = svd(C);V1 = V(:,1);V2 = V(:,2);S = S(1); %权重,不晓得干嘛的w = 0.5;%其他参数a=1;b=1;alfa_1 = 1;alfa_2 = 1;
定义sdpvar变量
1 ...










