6.机器人操作系统的使用与配置
熟悉环境
-
Linux基础命令
- 创建文件夹,查看文件夹
- mkdir创建文件夹
- ls显示文件夹
- 进入文件夹
- cd
- 用“某某某”打开“某某某”
- 创建文件夹,查看文件夹
-
贴士:忘了输啥用TAB(如果没有用可以用rospack profile修复一下) 忘了用法-help
-
ROS基础命令
-
核心指令
- roscore 运行ros
- rosrun(运行) 哪里(功能包名) 的 APP(节点)
- rostopic(话题工具箱) 工具 被修理的东西
-
话题工具箱
-
rostopic
-list (清单)
-echo (接收消息)
-pub (发送信息)
-
-
配置功能包
- 创建工作空间
-
安装ROS Arduino Bridge功能包
-
功能包放在工作空间的src目录
-
获取功能包
-git的方式
-复制黏贴的方式
-
-
配置参数文件(my_arduino_param.yamll)
-
调试功能包
- 通过roslaunch启动功能包
- 通过rostopic查看相关话题
- 通过rostopic发布cmd_vel消息控制底盘运动
-
-
一劳永逸:Linux/ROS——获取串口权限
-
Ctrl + Shift + T 以标签页打开终端
-
Ctrl + Alt + T 打开终端 但不是标签页
-
虚拟机中写文件后退出:https://jingyan.baidu.com/article/5553fa8284fc7865a239341a.html
- 要先按ESC再输入命令
- 要先按ESC再输入命令
7.功能包与移动控制
1.常见的功能包
每次加入新的功能包都要catkin_make
- usb_cam功能包
- 调用摄像头并返回一个实时画面
- teleop_twist_keyboard功能包
- find_object_2d功能包
使用功能包的方法
- 思考自己要实现什么样的功能
- 查找有没有对应的功能包
- 在查找结果中挑一两个进行了解
注意:所有系统文件夹opt路径下的文件夹,要编辑并保存,在打开时前面要加上sudo
/opt/ros/melodic/share/usb_cam/launch$ sudo gedit usb_cam-test.launch
要下载github上的代码可以用代码:(下载时要在路径下打开终端)
git clone http...(网址)
2.控制机器人进行移动
用teleop_twist_keyboard功能包来控制小乌龟
-
修改代码,将代码中/cmd_vel改成/turtle1/cmd_vel
-
通过转换命令:(在不改代码的情况下用别人的代码来实现自己的功能)
rosrun topic_tools relay /cmd_vel /turtle1/cmd_vel
-
ros Control应用的使用
- 前提条件:
- 与手机/电脑在同一网络
- 打开App,新建机器人
- 配置ROS_MASTER_URL
- 在ros终端输入ifconfig 得到IP地址
- 配置速度控制的话题
- 从joy/cmd_vel
- 到/cmd_vel
- 前提条件:
3.拓展与延伸
8.激光雷达与可视化工具
1.激光雷达传感器
1.1简介
- 360距离传感器
1.2驱动(不管什么传感器都需要经历下边的流程)
- 下载(wiki下载)
- 编译
- 运行
- 固定结构(将功能包存放在src文件夹下)
- 特定流程(source和编译)
1.3查看数据
- rostopic echo /scan(比较反人类的数据呈现形式,要用可视化工具来看比较好)
-
view_rplidar.launch(友好型的数据呈现形式)
roslaunch rplidar_ros view_rplidar.launch(会出现RVIZ可视化工具以及激光雷达数据) 这个launch文件包含了另一个launch文件的启动程序
1.4激光雷达正方向
2.RVIZ可视化工具
- 简介
- 一种可视化工具
- 必须配备参考系,插件以及正确的话题
- 参考系
- The Fixed Frame(固定坐标系):必须取相对世界坐标系禁止的物体建立坐标
- The Target Frame(目标坐标系):可取地图(视角为第三视角);机器人坐标(视角为机器人第一视角)
3.RGBD深度相机传感器
3.1.驱动
网站下载(ROS2GO自带了)
3.2查看数据
-
使用RQT可视化工具查看【深度画面】
根据灰度信息来判断距离
- 使用RVIZ可视化工具查看【三维点云】
4.ROS ECHO语音交互传感器
- 需要12V的电池
- 需要通过USB与PC端相连
4.1驱动
- 同之前下载功能包
4.2查看数据
#查看答复
rosrun rosecho answer_echo.py
#查看问题
rosrun rosecho asr_echo.py
4.3语音识别
【第九节的第二部分】
5.拓展与延伸
9.自主导航
1.仿真环境中的自主导航
1.1 2D仿真环境Stage
-
功能包:turtlebot_stage
sudo apt-get install-melodic-turtlrbot*
-
这些是由ACIM产生的粒子群,用来确定小车位置的
-
图中青色灰色部分是“膨胀层”,假设也是障碍物,有利于导航
-
目标点包括位置的姿态(运动到哪里和运动后朝哪个方向)
1.2 3D仿真环境Gazebo
- 带有物理引擎
- 地图也可以用三维软件来制作
- 使用ROSECHO语音交互来指定导航点https://www.jianshu.com/p/3074d2f3a48d
注意
- 运用RVIZ来查看信息要注意三点:参考系,插件和正确的话题
2.自主导航实例演示
2.1 自主导航的功能包(介绍两个)
- movebase(导航)
- gmapping(建立地图)
2.2 任务
- 我是谁
- 我在哪
- 我要去哪
2.3 安装SLAM
2.4 判断串口名称
-
因为小车零件中有几个是通过串口连接到电脑的,此时就要判断不同名字对应哪个零件
在知道零件对应的串口名称后,在对应文件夹中也要进行检查并修改
2.5 运行
- 启动slam时要注意取消代码中注释的部分,告诉底盘激光雷达在底盘的什么位置,激光雷达中心跟底盘的距离关系
3.拓展与延伸
10.学习拓展
1.find_object_2d功能包
1.1定义
根据名字以及查阅的信息来看,这个功能包实现的功能是物体识别,在启动相应节点后,可以显示出haar角点,然后进行拍照保存
还可以确定物体的位置
https://blog.csdn.net/zbr794866300/article/details/100538794
1.2 个人思考
既然这是一个物体识别的功能包,那么可以加以训练,根据特征点数量来判断物体的名称
1.3 拓展 --ros关于物体识别
https://blog.csdn.net/wajsy/article/details/80304502?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
2.底盘连接
- 树莓派作为一个控制器,只需要连接Arduino和激光雷达即可,电源可以连接充电宝
- Arduino连接了电机,TB6612,上边连接四根线作为输入输出
- 输入:接收带有编码器的电机发送给它的消息
- 输出:将控制信号间接发送给电机(需要先发送给TB6612,TB6612的作用是放大Arduino给它的控制信号,驱动电机)
3.面包板
3.1介绍
https://baike.baidu.com/item/%E9%9D%A2%E5%8C%85%E6%9D%BF/4703361?fr=aladdin
在第四讲中有介绍到面包板是竖的在一起,横的在一起,如下图所示
3.2 实例
圈圈的是连接电机,右边箭头指向的跟左边的线在同一条通路上,实现电路连接
4.roslaunch的作用
https://zhuanlan.zhihu.com/p/98663550