1、ROS机器人开发:实用案例分析011 ROS初体验初体验1 ROS1 ROS初体验初体验1.6 ROS节点与ROS节点管理器1.5 ROS的功能包与清单1.4 生成一个catkin工作空间1.3 安装并启动ROS1.2 哪些机器人采用了ROS1.1 ROS的用途以及学习ROS的好处1 ROS1 ROS初体验初体验1.7 第一个ROS机器人模拟程序Turtlesim1.8 ROS命令小结1.9 本章小结1 ROS1 ROS初体验初体验1.1 ROS的用途以及学习ROS的好处ROS的版本控制1 ROS1 ROS初体验初体验1.3 安装并启动ROS1.3.1 配置Ubuntu系统的软件源01011.
2、3.2 设置Ubuntu系统软件源列表02021.3.3 设置Ubuntu系统密钥03031.3.4 安装ROS Indigo04041.3.5 初始化rosdep05051.3.6 环境设置06061.3 安装并启动ROS1 ROS1 ROS初体验初体验1.3.8 故障排除ROS环境测试1.3.7 安装rosinstall1 ROS1 ROS初体验初体验1.5 ROS的功能包与清单1.5.1 ROS清单1.5.2 探索ROS功能包1 ROS1 ROS初体验初体验1.6 ROS节点与ROS节点管理器1.6.2 ROS节点管理器1.6.3 确定节点和主题的ROS命令1.6.1 ROS节点1 RO
3、S1 ROS初体验初体验1.7 第一个ROS机器人模拟程序Turtlesim1.7.1 启动Turtlesim节点01011.7.2 Turtlesim节点02021.7.3 Turtlesim主题与消息03031.7.4 Turtlesim的参数服务器04041.7.5 移动乌龟的ROS服务0505022 构建一个模拟的两轮构建一个模拟的两轮ROS机器人机器人2 2 构建一个模拟的两轮构建一个模拟的两轮ROSROS机器人机器人2.5 本章小结2.4 Gazebo2.3 构建差分驱动的机器人URDF2.2 生成并构建ROS功能包2.1 rviz2 2 构建一个模拟的两轮构建一个模拟的两轮ROS
4、ROS机器人机器人2.1 rviz2.1.1 安装和启动rviz1 12.1.2 使用rviz2 22 2 构建一个模拟的两轮构建一个模拟的两轮ROSROS机器人机器人2.3 构建差分驱动的机器人URDF010103032.3.1 生成机器人底座2.3.2 使用roslaunch2.3.3 添加轮子02020404050506062.3.4 添加小脚轮2.3.5 添加颜色2.3.6 添加碰撞属性LOGOLOGOhttps:/2 2 构建一构建一个模拟的个模拟的两轮两轮ROSROS机器人机器人2.3 构建差分驱动的机器人URDF1 12.3.7 2.3.7 移动轮子移动轮子2 23 32.3.9
5、 2.3.9 添加物理学属性添加物理学属性4 42.4 Gazebo2 2 构建一个模拟的两轮构建一个模拟的两轮ROSROS机器人机器人2.4.2 使用roslaunch启动Gazebo2.4.4 机器人URDF的修改2.4.6 在Gazebo中查看URDF2.4.1 安装并启动Gazebo2.4.3 使用Gazebo2.4.5 Gazebo模型验证2 2 构建一个模拟的两轮构建一个模拟的两轮ROSROS机器人机器人2.4 GazeboCBA2.4.7 机器人模型调整2.4.8 移动机器人模型2.4.9 其他的机器人仿真环境033 TurtleBot机器人操控机器人操控3 TurtleBot3
6、 TurtleBot机器人操控机器人操控3.1 TurtleBot机器人简介3.3 在Gazebo中启动TurtleBot模拟器3.5 联接上网本与远程计算机3.2 下载TurtleBot模拟器软件3.4 控制一台真正的TurtleBot机器人的准备3.6 TurtleBot机器人的硬件规格参数3 TurtleBot3 TurtleBot机器人操控机器人操控3.8 rqt工具简介3.10 TurtleBot机器人的自动充电3.7 移动真实的TurtleBot机器人3.9 TurtleBot机器人的里程计3.11 本章小结3 TurtleBot3 TurtleBot机器机器人操控人操控3.3 在
7、Gazebo中启动TurtleBot模拟器3.3.2 ROS命令与Gazebo02023.3.1 常见问题与故障排除01013.3.3 模拟环境下使用键盘远程控制TurtleBot03033 TurtleBot3 TurtleBot机器人机器人操控操控3.4 控制一台真正的TurtleBot机器人的准备TurtleBot机器人单机测试3.5 联接上网本与远程计算机3 TurtleBot3 TurtleBot机器人操控机器人操控3.5.1 网络类型3.5.2 网络地址3.5.3 远程计算机网络设置3.5.6 网络设置小结3.5.5 安全外壳协议联接3.5.4 上网本网络设置3 TurtleBot
8、3 TurtleBot机器人操控机器人操控3.5 联接上网本与远程计算机3.5.7 排查网络联接中的故障3.5.8 TurtleBot机器人系统测试3.6 TurtleBot机器人的硬件规格参数uTurtleBot机器人的仪表盘3 TurtleBot3 TurtleBot机器人操控机器人操控LOGOLOGOhttps:/3 3 TurtleBotTurtleBot机器人操控机器人操控3.7 移动真实的TurtleBot机器人3.7.1 采用键盘远程控制TurtleBot机器人移动0 01 10 02 23.7.2 采用ROS命令控制TurtleBot机器人移动0 03 33.7.3 编写第一个
9、Python脚本程序控制TurtleBot机器人移动3 TurtleBot3 TurtleBot机器人操控机器人操控3.8 rqt工具简介3.8.1 rqt_graph3.8.2 rqt的消息发布与主题监控3 TurtleBot3 TurtleBot机器机器人操控人操控3.9 TurtleBot机器人的里程计01013.9.1 模拟的TurtleBot机器人的测程3.9.2 真实的TurtleBot机器人的里程计在rviz下的显示044 TurtleBot机器人导航机器人导航4 TurtleBot4 TurtleBot机器人导航机器人导航AEDBC4.2 配置TurtleBot机器人并安装3D
10、传感器软件4.3 独立模式下测试3D传感器4.5 TurtleBot机器人导航4.4 运行ROS可视化节点4.1 TurtleBot机器人的3D视觉系统LOGOLOGOhttps:/4 4 TurtleBotTurtleBot机器人导航机器人导航4.1 TurtleBot机器人的3D视觉系统4.1.2 3D传感器对比1 13 32 24.1.1 3D视觉传感器原理4.1.3 障碍物规避的缺陷4 TurtleBot4 TurtleBot机器人导航机器人导航4.2 配置TurtleBot机器人并安装3D传感器软件4.2.1 Kinect4.2.2 ASUS与PrimeSense4.2.3 摄像头软
11、件结构4.2.4 术语界定LOGOLOGOhttps:/4 4 TurtleBoTurtleBot t机器人导机器人导航航4.4 运行ROS可视化节点A4.4.1 使用Image Viewer可视化数据4.4.2 使用rviz可视化数据4 TurtleBot4 TurtleBot机器人导航机器人导航4.5 TurtleBot机器人导航4.5.1 采用TurtleBot机器人构建房间地图4.5.2 采用TurtleBot机器人实现自主导航4.5.3 rqt_reconfigure4.5.4 进一步探索ROS导航055 构建模拟的机器人手臂构建模拟的机器人手臂5 5 构建模拟的机器人手臂构建模拟的
12、机器人手臂ABC5.2 采用Xacro建立一个关节式机器人手臂URDF5.3 在Gazebo中控制关节式机器人手臂5.4 本章小结5.1 Xacro的特点5 5 构建模拟的机器人手臂构建模拟的机器人手臂5.1 Xacro的特点扩展Xacro5 5 构建模拟的机器人手臂构建模拟的机器人手臂5.2 采用Xacro建立一个关节式机器人手臂URDF5.2.1 使用Xacro属性标签5.2.2 使用roslaunch启动rrbot5.2.3 使用Xacro的包含与宏标签5.2.4 给机器人手臂添加网格5 5 构建模拟的机器人手臂构建模拟的机器人手臂5.3 在Gazebo中控制关节式机器人手臂AEDBC5
13、.3.2 将机器人手臂固定在世界坐标系下5.3.3 在Gazebo中查看机器人手臂5.3.5 采用ROS命令行控制机器人手臂5.3.4 给Xacro添加控件5.3.1 添加Gazebo特定的元素066 机器人手臂摇摆的关节控制机器人手臂摇摆的关节控制6 6 机器人手臂摇摆的关节控制机器人手臂摇摆的关节控制20176.1 Baxter简介0120186.2 Baxter的手臂0220196.3 下载Baxter软件0320206.4 在Gazebo中启动Baxter模拟器0420216.5 Baxter手臂与正向运动学056 6 机器人手臂摇摆的关节控制机器人手臂摇摆的关节控制6.7 配置真实的
14、Baxter机器人6.8 控制真实的Baxter机器人6.9 反向运动学6.10 本章小结6 6 机器人手臂摇摆机器人手臂摇摆的关节控制的关节控制6.1 Baxter简介A6.1.2 Baxter模拟器6.1.1 Baxter,一款研究型机器人6.2 Baxter的手臂6 6 机器人手臂摇摆的关节控制机器人手臂摇摆的关节控制6.2.2 Baxter的滚转关节6.2.4 Baxter手臂的控制模式6.2.6 Baxter手臂的传感器6.2.1 Baxter的俯仰关节6.2.3 Baxter的坐标系6.2.5 Baxter手臂抓手6 6 机器人手臂摇摆的关节控制机器人手臂摇摆的关节控制6.3 下载
15、Baxter软件6.3.1 安装Baxter SDK软件6.3.2 安装Baxter模拟器6.3.3 配置Baxter shell6.3.4 安装MoveIt6 6 机器人手臂摇摆的关机器人手臂摇摆的关节控制节控制6.4 在Gazebo中启动Baxter模拟器6.4.1 启动Baxter模拟器6.4.2“热身”练习6.4.3 弯曲Baxter手臂6.4.4 Baxter手臂控制器的调校LOGOLOGOhttps:/6 6 机器人机器人手臂摇摆手臂摇摆的关节控的关节控制制6.5 Baxter手臂与正向运动学6.5.1 关节与关节状态发布器6.5.3 rviz下的tf坐标系6.5.4 查看机器人元
16、素的tf树6.5.2 理解tf6 6 机器人手臂摇摆的关节控制机器人手臂摇摆的关节控制6.6 MoveIt简介6.6.2 在场景中添加物体贰6.6.1 采用MoveIt给Baxter手臂进行运动规划壹6.6.3 采用MoveIt进行避障运动规划叁6.8 控制真实的Baxter机器人6 6 机器人手臂摇摆的关节控制机器人手臂摇摆的关节控制DCBA6.8.1 控制关节到达航路点6.8.2 控制关节的力矩弹簧6.8.3 关节速度控制演示6.8.4 其他示例6.8.5 视觉伺服和抓握077 空中机器人基本操控空中机器人基本操控7 7 空中机器人基本操控空中机器人基本操控7.2 四旋翼飞行器的传感器7.
17、4 在无人机中使用ROS7.6 Crazyflie 2.0简介7.1 四旋翼飞行器简介7.3 放飞前的准备工作7.5 Hector四旋翼飞行器简介7 7 空中机器人基本操控空中机器人基本操控01017.7 Bebop简介02027.8 本章小结7 7 空中机器人基本操控空中机器人基本操控7.1 四旋翼飞行器简介7.1.1 风靡的四旋翼飞行器01017.1.2 滚转角、俯仰角与偏航角02027.1.3 四旋翼飞行器原理03037.1.4 四旋翼飞行器的组成04047.1.5 添加传感器05057.1.6 四旋翼飞行器的通信0606LOGOLOGOhttps:/7 7 空中机空中机器人基本器人基本
18、操控操控7.2 四旋翼飞行器的传感器A7.2.1 惯性测量单元7.2.2 四旋翼飞行器状态传感器7 7 空中机器人基本操控空中机器人基本操控7.3 放飞前的准备工作7.3.1 四旋翼飞行器检测7.3.2 飞行前检测列表7.3.3 飞行中的注意事项7.3.4 需要遵循的规则和条例LOGOLOGOhttps:/7 7 空中机空中机器人基本器人基本操控操控7.5 Hector四旋翼飞行器简介7.5.1 下载Hector Quadrotor功能包7.5.2 在Gazebo中启动Hector四旋翼飞行器7.6 Crazyflie 2.0简介7 7 空中机器人基本操控空中机器人基本操控7.6.2 使用Cr
19、azyradio PA进行通信7.6.4 放飞前的检查7.6.6 在运动捕获系统下飞行7.6.1 无ROS情况下的Crazyflie控制7.6.3 加载Crazyflie ROS软件7.6.5 使用teleop操控Crazyflie飞行7 7 空中机器人空中机器人基本操控基本操控7.6 Crazyflie 2.0简介7.6.7 控制多个Crazyflie飞行7.7 Bebop简介7 7 空中机器人基本操控空中机器人基本操控7.7.2 Bebop飞行前的准备7.7.1 加载bebop_autonomy软件7.7.3 使用命令控制Bebop飞行088 使用外部设备控制机器人使用外部设备控制机器人8
20、 8 使用外部设备控制机器人使用外部设备控制机器人8.2 创建自定义ROS Android设备接口8.4 本章小结8.1 创建自定义ROS游戏控制器接口8.3 在Arduino或树莓派上创建ROS节点8 8 使用外部设备控制机器人使用外部设备控制机器人8.1 创建自定义ROS游戏控制器接口8.1.1 测试游戏控制器01018.1.2 使用joy ROS功能包02028.1.3 使用自定义游戏控制器接口控制Turtlesim03038 8 使用外部设备控制机器人使用外部设备控制机器人8.2 创建自定义ROS Android设备接口01028.2.1 8.2.1 使用使用Turtlebot Tur
21、tlebot RemoconRemocon进行操控进行操控8.2.2 8.2.2 使用使用AndroidAndroid设备实现设备实现ROSROS机器人机器人的自定义控制的自定义控制8 8 使用外部设使用外部设备控制机器人备控制机器人8.3 在Arduino或树莓派上创建ROS节点8.3.1 使用Arduino8.3.2 使用树莓派099 操控操控Crazyflie执行飞行任务执行飞行任务9 9 操控操控CrazyflieCrazyflie执行飞行任务执行飞行任务9.1 执行任务所需的组件9.2 安装任务所需的软件9.3 任务设置9.6 本章小结9.5 放飞Crazyflie9.4 Crazy
22、flie控制9 9 操控操控CrazyflieCrazyflie执行飞行任务执行飞行任务9.1 执行任务所需的组件9.1.1 用于Windows的Kinect v29.1.2 Crazyflie操作9.1.3 任务软件结构9.1.4 OpenCV与ROS9 9 操控操控CrazyflieCrazyflie执行飞行任务执行飞行任务9.2 安装任务所需的软件CBA9.2.1 安装libfreenect29.2.2 安装iai_kinect29.2.3 使用iai_kinect2元包9 9 操控操控CrazyflieCrazyflie执行飞行任务执行飞行任务9.3 任务设置CBA9.3.1 探测Cr
23、azyflie与目标9.3.2 使用Kinect与OpenCV9.3.3 对Crazyflie进行跟踪9 9 操控操控CrazyflieCrazyflie执行飞行任务执行飞行任务9.4 Crazyflie控制Crazyflie的控制状态信息9 9 操控操控CrazyflieCrazyflie执执行飞行任务行飞行任务9.5 放飞Crazyflie9.5.1 悬停9.5.2 飞往静止目标9.5.3 吸取的经验1010 ROS功能扩展功能扩展10 ROS10 ROS功能扩展功能扩展10.1 10.1 通过声音控制通过声音控制机器人机器人10.4 10.4 本章小结本章小结10.2 10.2 给机器人添加语给机器人添加语音功能音功能10.3 10.3 给机器人添加人给机器人添加人脸识别功能脸识别功能68%44%21%15%10.3.1 采用级联分类器进行人脸识别10.3.2 采用OpenCV进行人脸识别 10.1.1 Sphinx库10.1.2 Rospeex库 感谢聆听