自主导航机器人制作十日谈学习心得(5)(6)

6.机器人操作系统的使用与配置

熟悉环境

  • Linux基础命令

    • 创建文件夹,查看文件夹
      • mkdir创建文件夹
      • ls显示文件夹
    • 进入文件夹
      • cd
    • 用“某某某”打开“某某某”
  • 贴士:忘了输啥用TAB(如果没有用可以用rospack profile修复一下) 忘了用法-help

  • ROS基础命令

    • 核心指令

      • roscore 运行ros
      • rosrun(运行) 哪里(功能包名) 的 APP(节点)
      • rostopic(话题工具箱) 工具 被修理的东西
    • 话题工具箱

      • rostopic

        -list (清单)

        -echo (接收消息)

        -pub (发送信息)

    • 配置功能包

      • 创建工作空间
      • 自主导航机器人制作十日谈学习心得(5)(6)_第1张图片
    • 安装ROS Arduino Bridge功能包

      • 功能包放在工作空间的src目录

      • 获取功能包

        -git的方式

        -复制黏贴的方式

    • 配置参数文件(my_arduino_param.yamll)

      • 自主导航机器人制作十日谈学习心得(5)(6)_第2张图片

      • 自主导航机器人制作十日谈学习心得(5)(6)_第3张图片

    • 调试功能包

      • 通过roslaunch启动功能包
      • 通过rostopic查看相关话题
      • 通过rostopic发布cmd_vel消息控制底盘运动
  • 一劳永逸:Linux/ROS——获取串口权限

  • Ctrl + Shift + T 以标签页打开终端

  • Ctrl + Alt + T 打开终端 但不是标签页

  • 虚拟机中写文件后退出:https://jingyan.baidu.com/article/5553fa8284fc7865a239341a.html

    • 要先按ESC再输入命令
      自主导航机器人制作十日谈学习心得(5)(6)_第4张图片

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功能包来控制小乌龟

  1. 修改代码,将代码中/cmd_vel改成/turtle1/cmd_vel

  2. 通过转换命令:(在不改代码的情况下用别人的代码来实现自己的功能)

    rosrun topic_tools relay /cmd_vel /turtle1/cmd_vel
    
  3. ros Control应用的使用

    1. 前提条件:
      • 与手机/电脑在同一网络
    2. 打开App,新建机器人
    3. 配置ROS_MASTER_URL
      • 在ros终端输入ifconfig 得到IP地址
    4. 配置速度控制的话题
      • 从joy/cmd_vel
      • 到/cmd_vel

自主导航机器人制作十日谈学习心得(5)(6)_第5张图片

3.拓展与延伸

自主导航机器人制作十日谈学习心得(5)(6)_第6张图片

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文件的启动程序
    

自主导航机器人制作十日谈学习心得(5)(6)_第7张图片

1.4激光雷达正方向

自主导航机器人制作十日谈学习心得(5)(6)_第8张图片

2.RVIZ可视化工具

  • 简介
    • 一种可视化工具
    • 必须配备参考系,插件以及正确的话题
  • 参考系
    • The Fixed Frame(固定坐标系):必须取相对世界坐标系禁止的物体建立坐标
    • The Target Frame(目标坐标系):可取地图(视角为第三视角);机器人坐标(视角为机器人第一视角)

自主导航机器人制作十日谈学习心得(5)(6)_第9张图片

3.RGBD深度相机传感器

3.1.驱动

网站下载(ROS2GO自带了)

3.2查看数据

  • 使用RQT可视化工具查看【深度画面】

    根据灰度信息来判断距离

自主导航机器人制作十日谈学习心得(5)(6)_第10张图片

  • 使用RVIZ可视化工具查看【三维点云】

自主导航机器人制作十日谈学习心得(5)(6)_第11张图片

4.ROS ECHO语音交互传感器

  • 需要12V的电池
  • 需要通过USB与PC端相连

4.1驱动

  • 同之前下载功能包

4.2查看数据

#查看答复
rosrun rosecho answer_echo.py
#查看问题
rosrun rosecho asr_echo.py

自主导航机器人制作十日谈学习心得(5)(6)_第12张图片

4.3语音识别

【第九节的第二部分】

5.拓展与延伸


自主导航机器人制作十日谈学习心得(5)(6)_第13张图片
自主导航机器人制作十日谈学习心得(5)(6)_第14张图片

9.自主导航

1.仿真环境中的自主导航

1.1 2D仿真环境Stage

  • 功能包:turtlebot_stage

    sudo apt-get install-melodic-turtlrbot*
    
  • 这些是由ACIM产生的粒子群,用来确定小车位置的

自主导航机器人制作十日谈学习心得(5)(6)_第15张图片

  • 图中青色灰色部分是“膨胀层”,假设也是障碍物,有利于导航

  • 目标点包括位置的姿态(运动到哪里和运动后朝哪个方向)

1.2 3D仿真环境Gazebo

  • 带有物理引擎
  • 地图也可以用三维软件来制作
  • 使用ROSECHO语音交互来指定导航点https://www.jianshu.com/p/3074d2f3a48d

注意

  • 运用RVIZ来查看信息要注意三点:参考系,插件和正确的话题

2.自主导航实例演示

2.1 自主导航的功能包(介绍两个)

  • movebase(导航)
  • gmapping(建立地图)

2.2 任务

  • 我是谁
  • 我在哪
  • 我要去哪

自主导航机器人制作十日谈学习心得(5)(6)_第16张图片

2.3 安装SLAM

自主导航机器人制作十日谈学习心得(5)(6)_第17张图片

2.4 判断串口名称

  • 因为小车零件中有几个是通过串口连接到电脑的,此时就要判断不同名字对应哪个零件

    在知道零件对应的串口名称后,在对应文件夹中也要进行检查并修改

2.5 运行

  • 启动slam时要注意取消代码中注释的部分,告诉底盘激光雷达在底盘的什么位置,激光雷达中心跟底盘的距离关系

3.拓展与延伸

自主导航机器人制作十日谈学习心得(5)(6)_第18张图片
自主导航机器人制作十日谈学习心得(5)(6)_第19张图片

10.学习拓展

1.find_object_2d功能包

1.1定义

根据名字以及查阅的信息来看,这个功能包实现的功能是物体识别,在启动相应节点后,可以显示出haar角点,然后进行拍照保存

自主导航机器人制作十日谈学习心得(5)(6)_第20张图片

还可以确定物体的位置

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

在第四讲中有介绍到面包板是竖的在一起,横的在一起,如下图所示

自主导航机器人制作十日谈学习心得(5)(6)_第21张图片

3.2 实例

圈圈的是连接电机,右边箭头指向的跟左边的线在同一条通路上,实现电路连接

4.roslaunch的作用

https://zhuanlan.zhihu.com/p/98663550

你可能感兴趣的:(机器人,其他)