机器人操作系统
未读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 ...