安装

$ cat /etc/issue
Ubuntu 20.04.1 LTS \n \l
ROS Noetic Ninjemys

根据系统选择不同版本ros
http://wiki.ros.org/cn/ROS/Installation
image.png

更新软件源失败?
image.png

同时开启三个终端输入以下命令,
image.png

ROS发展史

image.png
image.png

ROS是什么

image.png

ROS通信机制

image.png
image.png

节点与节点管理器

image.png

话题通信

image.png

服务通信

image.png

话题vs服务

image.png

参数

image.png

文件系统

image.png

ROS中的开发工具

image.png

ROS命令行工具

image.png

roscore 启动ros master
rqt_graph:查看节点间通信
rosnode:列举系统所有通信节点

话题相关

rostopic:查看节点发布的话题

例如:
$ rosnode list
/rosout
/teleop_turtle
/turtlesim

查看具体某个节点信息:
rosnode info /turtlesim
image.png

发布话题消息
不适用电脑键盘方向键控制小乌龟一点,改用命令行rostopic方式控制,可使用tab键补全,如下
image.png

说明:
/turtle1/cmd_vel,为话题名
geometry_msgs/Twist,数据内容消息结构
“linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0”
双引号为Twist数据内容,linear线速度,angular角速度,每个速度可以分为xyz三个方向上的分量。速度单位是m/s,角度单位为rad/s,角速度z值是是垂直仿真器桌面(屏幕)向外的方向。
pub指令只会发布一次,对应的小乌龟也只会移动一次。

也可以使用循环命令,让小乌龟10Hz运动,并修改角速度
image.png
image.png
补充内容
单位
当圆的半径相同时,圆心角θ越大,它所对应圆的弧越长,二者成正比.因此可以用弧长与半径的比值表示圆心角的大小。
例如,弧长是0.12m,半径是0.1m,那么θ=0.12m÷0.1m=1.2.
弧长与半径的单位都是米,在计算二者之比时要消掉.为了表述的方便,我们“给”θ一个单位:弧度,用符号rad表示。这样,上面计算得到的角θ就是1.2弧度,记为θ=1.2rad.
对于一个圆,θ=2πrad=360°,则
ROS - 图22
角位移的单位是rad,角速度的单位是s-1或rad/s.
方向
角速度是矢量。按右手螺旋定则,大拇指方向为ω方向.当质点作逆时针旋转时,ω向上;作顺时针旋转时,ω向下。
设线速度为v,取圆心为原点,设位矢(位置矢量)为r,则
v=ω×r

查看消息数据结构,rosmsg show xx
image.png

服务相关

查看仿真器提供所有服务内容,
$ rosservice list
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn / 产生、诞生一个新的海龟 /
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

发布服务请求
终端作为客户端去请求某个服务
rosservice call /spawn (tab键)
image.png

service是C/S模型,是有反馈的。可以看到上图终端有两个name,最后一个name是server返回的。
image.png

日志log记录

image.png

然后关闭之前打开的所有制终端,重新打开终端启动roscore和仿真器节点,找到home目录下记录的log文件进行回放,
image.png

image.png

ROS中的生态系统

image.png
image.png

代码开发

创建工作空间

image.png

创建功能包

image.png

发布者Publisher的编程实现

话题模型

image.png

创建功能包

image.png

编写代码

代码仓库:git@gitlab.com:neethan_/ros.git

velocity_publisher.cpp
image.png

配置发布者代码编译规则

image.png

编译并运行发布者

image.png

订阅者Subscriber编程实现

话题模型

image.png

编写代码

代码仓库:git@gitlab.com:neethan_/ros.git
image.png

配置订阅者代码编译规则

image.png

编译运行订阅者

image.png

话题消息的定义与使用

话题模型

image.png

自定义话题消息

image.png

ROS机器视觉

https://blog.csdn.net/seniorc/article/details/109754745?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

ROS摄像头驱动及数据接口

image.png
image.png

二维图像数据格式

image.png

压缩图像消息

image.png

三维摄像头RGBD

image.png
image.png

三维图像格式

image.png

Realsense D435

image.png
image.png

Rviz

image.png

Gazebo

image.png

摄像头参数标定

image.png

摄像头标定流程

image.png

标定效果,全部为绿色效果会更好

可以前后左右晃动,旋转等
image.png
image.png
然后点击CALIBRATE等待一段时间,呆算法标定参数计算完成
image.png
得到计算标定的结果
image.png
点击SAVE按钮会保存,点击COMMIT保存在home目录下然后退出。
image.png

Kinect标定流程

image.png

ROS+OpenCV图像处理方法及案例

image.png

安装OpenCV

image.png

ROS+Tensorflow物体识别方法及案例

image.png
pip install —upgrade tensorflow
git clone https://github.com/Kukanani/vision_msgs.git
git clone https://github.com/osrf/tensorflow_object_detector.git

安装tensorflow报错解决

image.png
python3 -m pip install launchpadlib

物体识别

image.png

调试

启动ros

roscore

运行海龟仿真器

rosrun turtlesim turtlesim_node

古月居(胡春旭)博客

https://www.guyuehome.com/805
视频教程
https://www.bilibili.com/video/BV1zt411G7Vn?p=5

参考资料

image.png
image.png