《ROS机器人开发实践》| 目录

18044
56
2018年5月22日 11时19分

前言

 

1 初识ROS

1.1 ROS是什么

1.1.1 ROS的起源

1.1.2 ROS的设计目标

1.1.3 ROS的特点

1.2 如何安装ROS

1.2.1 操作系统与ROS版本的选择

1.2.2 配置系统软件源

1.2.3 添加ROS软件源

1.2.4 添加密钥

1.2.5 安装ROS

1.2.6 初始化rosdep

1.2.7 设置环境变量

1.2.8 完成安装

1.3 本书源码下载

1.4 本章小结

 

2. ROS系统架构

2.1 ROS架构设计

2.2 计算图

2.2.1 节点(Node)

2.2.2 消息(Message)

2.2.3 话题(Topic)

2.2.4 服务(Service)

2.2.5 节点管理器

2.3 文件系统

2.3.1 功能包

2.3.2 元功能包

2.4 开源社区

2.5 ROS的通信机制

2.5.1 话题

2.5.2 服务

2.5.3 参数

2.6 话题与服务的区别

2.7 本章小结

 

3 ROS基础

3.1 第一个ROS例程——小乌龟仿真

3.1.1 turtlesim功能包

3.1.2 控制乌龟运动

3.2 创建工作空间

3.2.1 什么是工作空间

3.2.2 创建工作空间

3.2.3 创建功能包

3.3 工作空间的覆盖

3.3.1 ROS中的空间覆盖

3.3.2 工作空间之间的覆盖

3.4 搭建Eclipse IDE开发环境

3.4.1 安装Eclipse

3.4.2 创建Eclipse工程文件

3.4.3 将工程导入Eclipse

3.4.4 设置头文件路径

3.4.5 运行/调试程序

3.5 RoboWare IDE

3.5.1 RoboWare的特点

3.5.2 RoboWare的安装与使用

3.6 话题中的Publisher与Subscriber

3.6.1 乌龟例程中的Publisher与Subscriber

3.6.2 如何创建Publisher

3.6.3 如何创建Subscriber

3.6.4 编译功能包

3.6.5 运行Publisher与Subscriber

3.6.6 自定义话题消息

3.7 服务中的Server和Client

3.7.1 乌龟例程中的Service

3.7.2 如何自定义服务数据

3.7.3 如何创建Server

3.7.4 如何创建Client

3.7.5 编译功能包

3.7.6 运行Server和Client

3.8 ROS中的命名空间

3.8.1 有效的命名

3.8.2 命名解析

3.8.3 命名重映射

3.9 分布式多机通信

3.9.1 设置IP地址

3.9.2 设置ROS_MASTER_URI

3.9.3 多机通信测试

3.10 本章小结

 

4 ROS中的常用组件

4.1 launch启动文件

4.1.1 基本元素

4.1.2 参数设置

4.1.3 重映射机制

4.1.4 嵌套复用

4.2 TF坐标变换

4.2.1 TF功能包

4.2.2 TF工具

4.2.3 乌龟例程中的TF

4.2.4 创建TF广播器

4.2.5 创建TF监听器

4.2.6 实现乌龟跟随运动

4.3 Qt工具箱

4.3.1 日志输出工具——rqt_console

4.3.2 计算图可视化工具——rqt_graph

4.3.3 数据绘图工具——rqt_plot

4.3.4 参数动态配置工具——rqt_reconfigure

4.4 rviz三维可视化平台

4.4.1 安装并运行rviz

4.4.2 数据可视化

4.4.3 插件扩展机制

4.5 gazebo仿真环境

4.5.1 gazebo的特点

4.5.2 安装并运行gazebo

4.5.3 构建仿真环境

4.6 rosbag数据记录与回放

4.6.1 如何记录数据

4.6.2 如何回放数据

4.7 本章小结

 

5 机器人平台搭建

5.1 机器人的定义

5.2 机器人的组成

5.2.1 执行机构

5.2.2 驱动系统

5.2.3 传感系统

5.2.4 控制系统

5.3 机器人系统搭建

5.3.1 MRobot

5.3.2 执行机构的实现

5.3.3 驱动系统的实现

5.3.4 内部传感系统的实现

5.4 基于Raspberry Pi的控制系统实现

5.4.1 硬件平台Raspberry Pi

5.4.2 安装Ubuntu 16.04

5.4.3 安装ROS

5.4.4 控制系统与MRobot通信

5.4.5 PC端控制MRobot

5.5 为机器人装配摄像头

5.5.1 usb_cam功能包

5.5.2 PC端驱动摄像头

5.5.3 Raspberry Pi驱动摄像头

5.6 为机器人装配Kinect

5.6.1 freenect_camera功能包

5.6.2 PC端驱动Kinect

5.6.3 Raspberry Pi驱动Kinect

5.6.4 Kinect电源改造

5.7 为机器人装配激光雷达

5.7.1 rplidar功能包

5.7.2 PC端驱动rplidar

5.7.3 Raspberry Pi驱动rplidar

5.8 本章小结

 

6 机器人建模与仿真

6.1 统一机器人描述格式——URDF

6.1.1 <link>标签

6.1.2 <joint>标签

6.1.3 <robot>标签

6.1.4 <gazebo>标签

6.2 创建机器人URDF模型

6.2.1 创建机器人描述功能包

6.2.2 创建URDF模型

6.2.3 URDF模型解析

6.2.4 在rviz中显示模型

6.3 改进URDF模型

6.3.1 添加物理和碰撞属性

6.3.2 使用xacro优化URDF

6.3.3 xacro文件引用

6.3.4 显示优化后的模型

6.4 添加传感器模型

6.4.1 添加摄像头

6.4.2 添加Kinect

6.4.3 添加激光雷达

6.5 基于ArbotiX和rviz的仿真器

6.5.1 安装ArbotiX

6.5.2 配置ArbotiX控制器

6.5.3 运行仿真环境

6.6 ros_control

6.6.1 ros_control框架

6.6.2 控制器(Controllers)

6.6.3 硬件接口(Hardware Interface)

6.6.4 传动系统(Transmissions)

6.6.5 关节约束(Joint Limits)

6.6.6 控制器管理器(controller manager)

6.7 gazebo仿真

6.7.1 机器人模型添加gazebo属性

6.7.2 在gazebo中显示机器人模型

6.7.3 控制机器人在gazebo中运动

6.7.4 摄像头仿真

6.7.5 RGB-D摄像头仿真

6.7.6 激光雷达仿真

6.8 本章小结

 

7 机器视觉

7.1 ROS中的图像数据

7.1.1 二维图像数据

7.1.2 三维点云数据

7.2 摄像头标定

7.2.1 camera_calibration功能包

7.2.2 启动标定程序

7.2.3 标定摄像头

7.2.4 标定Kinect

7.2.5 加载标定参数的配置文件

7.3 OpenCV库

7.3.1 安装openCV

7.3.2 在ROS中使用OpenCV

7.4 人脸识别

7.4.1 应用效果

7.4.2 源码实现

7.5 物体跟踪

7.5.1 应用效果

7.5.2 源码实现

7.6 二维码识别

7.6.1 ar_track_alvar功能包

7.6.2 创建二维码

7.6.3 摄像头识别二维码

7.6.4 Kinect识别二维码

7.7 物体识别

7.7.1 ORK功能包

7.7.2 建立物体模型库

7.7.3 模型训练

7.7.4 三维物体识别

7.8 本站小结

 

8 机器语音

8.1 让机器人听懂你说的话

8.1.1 pocketsphinx功能包

8.1.2 语音识别测试

8.1.3 创建语音库

8.1.4 创建launch文件

8.1.5 语音指令识别

8.1.6 中文语音识别

8.2 通过语音控制机器人

8.2.1 编写语音控制节点

8.2.2 语音控制小乌龟运动

8.3 让机器人说话

8.3.1 sound_play功能包

8.3.2 语音播放测试

8.4 人工智能标记语言——AIML

8.4.1 AIML中的标签

8.4.2 Python中的AIML解析器

8.5 来和机器人对话吧

8.5.1 语音识别

8.5.2 智能匹配应答

8.5.3 文本转语音

8.5.4 智能对话

8.6 让机器人听懂中文

8.6.1 下载科大讯飞SDK

8.6.2 测试SDK

8.6.3 语音听写

8.6.4 语音合成

8.6.5 智能语音助手

8.7 本章小结

 

9 机器人SLAM与自主导航

9.1 理论基础

9.2 准备工作

9.2.1 传感器信息

9.2.2 仿真平台

9.2.3 真实机器人

9.3 gmapping

9.3.1 gmapping功能包

9.3.2 gmapping节点的配置与运行

9.3.3 在gazebo中仿真SLAM

9.3.4 真实机器人SLAM

9.4 hector

9.4.1 hector功能包

9.4.2 hector节点的配置与运行

9.4.3 在gazebo中仿真SLAM

9.4.4 真实机器人SLAM

9.5 google cartographer

9.5.1 cartographer功能包

9.5.2 官方demo测试

9.5.3 cartographer节点的配置与运行

9.5.4 在gazebo中仿真SLAM

9.5.5 真实机器人SLAM

9.6 rgbdslam

9.6.1 rgbdslam功能包

9.6.2 使用数据包实现SLAM

9.6.3 使用Kinect实现SLAM

9.7 ORB_SLAM

9.7.1 ORB_SLAM功能包

9.7.2 使用数据包实现单目SLAM

9.7.3 使用摄像头实现单目SLAM

9.8 导航功能包

9.8.1 导航框架

9.8.2 move_base功能包

9.8.3 amcl功能包

9.8.4 代价地图的配置

9.8.5 本地规划器配置

9.9 在rviz中仿真机器人导航

9.9.1 创建launch文件

9.9.2 开始导航

9.9.3 自动导航

9.10 在gazebo中仿真机器人导航

9.10.1 创建launch文件

9.10.2 运行效果

9.10.3 实时避障

9.11 真实机器人导航

9.11.1 创建launch文件

9.11.2 开始导航

9.12 自主探索SLAM

9.12.1 创建launch文件

9.12.2 通过rviz设置探索目标

9.12.3 自主探索SLAM

9.13 本章小结

 

10 MoveIt!机械臂控制

10.1 MoveIt!系统架构

10.1.1 运动组(move_group)

10.1.2 运动规划器(motion_planner)

10.1.3 规划场景(Planning Scene)

10.1.4 运动学求解器(Kinematics)

10.1.5 碰撞检测(Collision Checking)

10.2 如何使用MoveIt!

10.3 创建机械臂模型

10.3.1 声明模型中的宏

10.3.2 创建六轴机械臂模型

10.3.3 加入gazebo属性

10.3.4 显示机器人模型

10.4 使用Setup Assistant配置机械臂

10.4.1 加载机器人URDF模型

10.4.2 配置自碰撞矩阵(Self-Collisions)

10.4.3 配置虚拟关节(Virtual Joints)

10.4.4 创建规划组(Planning Groups)

10.4.5 定义机器人位姿(Robot Poses)

10.4.6 配置终端夹爪(End effectors)

10.4.7 配置无用关节(Passive Joints)

10.4.8 设置作者信息(Author Information)

10.4.9 生成配置文件(Configuration Files)

10.5 启动MoveIt!

10.5.1 拖动规划

10.5.2 随机规划

10.5.3 初始位姿更新

10.5.4 碰撞检测

10.6 配置文件

10.6.1 SRDF文件

10.6.2 fake_controllers.yaml

10.6.3 joint_limits.yaml

10.6.4 kinematics.yaml

10.6.5 ompl_planning.yaml

10.7 添加ArbotiX关节控制器

10.7.1 添加配置文件

10.7.2 运行ArbotiX节点

10.7.3 测试例程

10.7.4 运行效果

10.8 配置MoveIt!关节控制器

10.8.1 添加配置文件

10.8.2 启动插件

10.9 MoveIt!编程学习

10.9.1 关节空间规划

10.9.2 工作空间规划

10.9.3 笛卡尔运动规划

10.9.4 避障规划

10.10 Pick and Place

10.10.1 应用效果

10.10.2 创建抓取的目标物体

10.10.3 设置目标物体的放置位置

10.10.4 生成抓取姿态

10.10.5 pick

10.10.6 place

10.11 Gazebo中的机械臂仿真

10.11.1 创建配置文件

10.11.2 创建launch文件

10.11.3 开始仿真

10.12 使用MoveIt!控制Gazebo中的机械臂

10.12.1 关节轨迹控制器

10.12.2 MoveIt!控制器

10.12.3 关节状态控制器

10.12.4 运行效果

10.13 ROS-I

10.13.1 ROS-I的目标

10.13.2 ROS-I的安装

10.13.3 ROS-I的架构

10.14 本章小结

 

11 ROS与机器学习

11.1 AlphaGo的大脑——TensorFlow

11.2 TensorFlow基础

11.2.1 安装TensorFlow

11.2.2 核心概念

11.2.3 第一个TensorFlow程序

11.3 线性回归

11.3.1 理论基础

11.3.2 创建数据集

11.3.3 TensorFlow解决线性回归问题

11.4 手写数字识别

11.4.1 理论基础

11.4.2 TensorFlow中的MNIST例程

11.4.3 基于ROS实现MNIST

11.5 物体识别

11.5.1 安装TensorFlow Object Detection API

11.5.2 基于ROS实现动态物体识别

11.6 本章小结

 

12 ROS进阶功能

12.1 action

12.1.1 什么是action

12.1.2 action的工作机制

12.1.3 action的定义

12.1.4 实现action通信

12.2 plugin

12.2.1 工作原理

12.2.2 如何实现一个插件

12.2.3 创建基类

12.2.4 创建plugin类

12.2.5 注册插件

12.2.6 编译插件的动态链接库

12.2.7 将插件加入ROS系统

12.2.8 调用插件

12.3 rviz plugin

12.3.1 速度控制插件

12.3.2 创建功能包

12.3.3 代码实现

12.3.4 编译插件

12.3.5 运行插件

12.4 dynamic reconfigure

12.4.1 创建配置文件

12.4.2 创建服务端节点

12.4.3 参数动态配置

12.5 SMACH

12.5.1 什么是SMACH

12.5.2 状态机跑起来

12.5.3 状态机实现剖析

12.5.4 状态间的数据传递

12.5.5 状态机嵌套

12.5.6 多状态并行

12.6 ROS-MATLAB

12.6.1 ROS-MATLAB是什么

12.6.2 ROS-MATLAB可以做什么

12.6.3 连接Matlab和ROS

12.6.4 Matlab可视化编程

12.6.5 创建可视化界面

12.6.6 编辑控件的回调函数

12.6.7 运行效果

12.7 Web GUI

12.7.1 ROS中的Web功能包

12.7.2 创建Web应用

12.7.3 使用Web浏览器控制机器人

12.8 本章小结

 

13 ROS机器人实例

13.1 PR2

13.1.1 PR2功能包

13.1.2 gazebo中的PR2

13.1.3 使用PR2实现SLAM

13.1.4 PR2机械臂的使用

13.2 TurtleBot

13.2.1 TurtleBot功能包

13.2.2 gazebo中的TurtleBot

13.2.3 使用TurtleBot实现导航

13.2.4 尝鲜TurtleBot 3

13.3 Universal Robot

13.3.1 Universal Robots功能包

13.3.2 gazebo中的UR机器人

13.3.3 使用MoveIt!控制UR机器人

13.4 catvehicle

13.4.1 构建无人驾驶仿真系统

13.4.2 运行无人驾驶仿真器

13.4.3 控制无人驾驶汽车

13.4.4 实现无人驾驶汽车的SLAM功能

13.5 HRMRP

13.5.1 总体架构设计

13.5.2 SLAM与导航

13.5.3 多机器人扩展

13.6 Kungfu Arm

13.6.1 总体架构设计

13.6.2 具体层次功能

13.6.3 功夫茶应用展示

13.7 本章小结

 

14 ROS 2.0

14.1 ROS 1存在的问题

14.2 什么是ROS 2.0

14.2.1 ROS 2的设计目标

14.2.2 ROS 2的系统架构

14.2.3 ROS 2的关键中间件——DDS

14.2.4 ROS 2的通信模型

14.2.5 ROS 2的编译系统

14.3 Ubuntu安装ROS 2

14.3.1 安装步骤

14.3.2 运行talker和listener例程

14.4 Windows安装ROS 2

14.4.1 安装Chocolatey

14.4.2 安装Python

14.4.3 安装OpenSSL

14.4.4 安装Visual Studio Community 2015

14.4.5 配置DDS

14.4.6 安装OpenCV

14.4.7 安装依赖包

14.4.8 下载并配置ROS 2

14.4.9 运行talker和listener例程

14.5 ROS 2中的话题通信

14.5.1 创建工作目录和功能包

14.5.2 创建talker

14.5.3 创建listener

14.5.4 修改CMakeLists.txt

14.5.5 编译并运行节点

14.6 自定义话题和服务

14.6.1 自定义话题

14.6.2 自定义服务

14.6.3 修改CMakeLists.txt和package.xml

14.6.4 编译生成头文件

14.7 ROS 2中的服务通信

14.7.1 创建Server

14.7.2 创建Client

14.7.3 修改CMakeLists.txt

14.7.4 编译并运行节点

14.8 ROS 2与ROS 1的集成

14.8.1 ros1_bridge功能包

14.8.2 话题通信

14.8.3 服务通信

14.9 本章小结

发表评论

后才能评论

评论列表(56条)

  • tjxpe_9987 2020年8月22日 下午9:16

    最近买了古月老师的这本书,书中提到的MRobot在哪里可以买到呀,搜了半天实在没找到😭,或者MRobot只是一个种类代名词并不是指某一款?新手求指教(>﹏<)

  • 勺狮 2020年2月14日 下午3:20

    古月老师您好,我在运行本书135中的 $roslaunch mrobot_telelop mrobot_teleop.launch的过程中,编译出现问题
    /opt/ros/kinetic/share/catkin/cmake/em/order_packages.cmake.em:23: error: : ‘file’ object has no attribute ‘pop’
    Traceback (most recent call last):
    File “/usr/bin/empy”, line 3302, in
    if __name__ == ‘__main__’: main()
    File “/usr/bin/empy”, line 3300, in main
    invoke(sys.argv[1:])
    File “/usr/bin/empy”, line 3291, in invoke
    interpreter.shutdown()
    File “/usr/bin/empy”, line 2157, in shutdown
    self.finalize()
    File “/usr/bin/empy”, line 2646, in finalize
    self.push()
    File “/usr/bin/empy”, line 2200, in push
    sys.stdout.push(self)
    AttributeError: ‘file’ object has no attribute ‘push’
    CMake Error at /opt/ros/kinetic/share/catkin/cmake/safe_execute_process.cmake:11 (message):
    execute_process(/home/user/catkin_ws/build/catkin_generated/env_cached.sh
    “/usr/bin/python” “/usr/bin/empy” “–raw-errors” “-F”
    “/home/user/catkin_ws/build/catkin_generated/order_packages.py” “-o”
    “/home/user/catkin_ws/build/catkin_generated/order_packages.cmake”
    “/opt/ros/kinetic/share/catkin/cmake/em/order_packages.cmake.em”) returned
    error code 1
    Call Stack (most recent call first):
    /opt/ros/kinetic/share/catkin/cmake/em_expand.cmake:25 (safe_execute_process)
    /opt/ros/kinetic/share/catkin/cmake/catkin_workspace.cmake:35 (em_expand)
    CMakeLists.txt:67 (catkin_workspace)

    — Configuring incomplete, errors occurred!
    See also “/home/user/catkin_ws/build/CMakeFiles/CMakeOutput.log”.
    See also “/home/user/catkin_ws/build/CMakeFiles/CMakeError.log”.
    Invoking “cmake” failed
    这个问题一直导致编译不成功,请问如何解决呢?谢谢您

    • 古月 回复 勺狮 2020年2月23日 下午7:36

      感觉是python的版本问题,确认一下用的是不是python2

    • 勺狮 回复 古月 2020年2月27日 上午11:03

      好的,谢谢老师指点!

  • 张子阳 2019年12月20日 下午5:03

    古老师您好,我在执行pick_and_place例程时,place后的物体都是东倒西歪的,有没有办法让它们的姿态都 摆正,尝试过修改make_place里面的姿态参数,将yaw,pitch都改为0,但是依然无效,这该怎么办呢?

  • 秦有成 2019年11月12日 下午6:56

    老师好,这本书466页的roslaunch pilotless automobile catvehicle .launch .在464页下载的文件里没有啊,所以roslaunch 的时候会显示is neither a launch 之类的错误,请您有空解答一下,谢谢

  • 刘德康 2019年10月16日 下午7:43

    胡老师,为什么网上的都只有六章内容

  • 邓志颖 2019年9月20日 下午10:58

    老师,您的书《ros机器人开发实践》上面给的github上面的源码,我多次尝试下载都中途中断了,也换过其他电脑尝过过了,这该如何是好?
    这本书讲到的勘误,可以发下链接吗?辛苦的找了好久没找到,望回复

  • Dandelionzb 2018年12月26日 下午9:44

    运行此条命令时rosrun robot_vision cv_bridge_test.py出现
    [rosrun] Couldn’t find executable named cv_bridge_test.py below /home/dandelion/ros_exploring/src/robot_perception/robot_vision
    [rosrun] Found the following, but they’re either not files,
    [rosrun] or not executable:
    [rosrun] /home/dandelion/ros_exploring/src/robot_perception/robot_vision/scripts/cv_bridge_test.py

    • 古月 回复 Dandelionzb 2018年12月27日 上午11:37

      cv_bridge_test.py文件需要添加可执行权限

    • Dandelionzb 回复 古月 2018年12月27日 下午8:42

      好的,谢谢老师的指点

    • WZX1234566 回复 Dandelionzb 2018年12月29日 上午11:37

      老师 怎么添加可执行权限

    • Dandelionzb 回复 WZX1234566 2018年12月29日 下午3:11

      到相应文件夹下输入 chmod a+x example.py。example.py为一个例子,对所有python文件执行的话,改为*.py就行

    • WZX1234566 回复 Dandelionzb 2018年12月30日 上午9:16

      好的 谢谢

    • 古月 回复 WZX1234566 2018年12月29日 下午9:55

      chmod命令,百度下

    • WZX1234566 回复 古月 2018年12月30日 上午9:17

      好的 谢谢 老师

  • 孙冬 2018年12月9日 下午8:06

    您好,我最近买了您的这本书,在安装编译cartographer的时候出现报错,报错的一部分为:
    [192/338] Linking CXX executable cartographer_autogenerate_ground_truth
    FAILED: : && /usr/bin/c++ -O3 -DNDEBUG CMakeFiles/cartographer_autogenerate_ground_truth.dir/cartographer/ground_truth/autogenerate_ground_truth_main.cc.o -o cartographer_autogenerate_ground_truth -rdynamic libcartographer.a /home/dyson_sun/catkin_google_ws/install_isolated/lib/libceres.a -lglog -lgflags -lpthread -lspqr -ltbb -ltbbmalloc -lcholmod -lccolamd -lcamd -lcolamd -lamd -llapack -lf77blas -latlas -lsuitesparseconfig -lrt -lcxsparse -lgomp -lpthread -lspqr -ltbb -ltbbmalloc -lcholmod -lccolamd -lcamd -lcolamd -lamd -llapack -lf77blas -latlas -lsuitesparseconfig -lrt -lcxsparse -lgomp -llua5.2 -lm -lboost_iostreams -lboost_regex -lglog -lgflags -lcairo /usr/local/lib/libprotobuf.so -lpthread -Wl,-rpath,/usr/local/lib: && :
    libcartographer.a(transform.pb.cc.o):在函数‘cartographer::transform::proto::Rigid2d::GetMetadata() const’中:
    transform.pb.cc:(.text+0x14d1):对‘google::protobuf::GoogleOnceInitImpl(long*, google::protobuf::Closure*)’未定义的引用
    libcartographer.a(transform.pb.cc.o):在函数‘cartographer::transform::proto::protobuf_cartographer_2ftransform_2fproto_2ftransform_2eproto::(anonymous namespace)::protobuf_RegisterTypes(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)’中:
    transform.pb.cc:(.text+0x1571):对‘google::protobuf::GoogleOnceInitImpl(long*, google::protobuf::Closure*)’未定义的引用
    出现这个错误实在无从下手解决,期待您能够指点一二,谢谢。

  • Jinz 2018年11月1日 下午4:42

    古月老师,您好!我刚学习ROS,我按照您的书本《ROS机器人开发实践》的3.6.6 自定义话题消息操作,到catkin_make编译是出现错误:CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:196 (message):
    catkin_package() the catkin package ‘geometry_msgs’ has been
    find_package()-ed but is not listed as a build dependency in the
    package.xml
    Call Stack (most recent call first):
    /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package)
    learning_communication/CMakeLists.txt:12 (catkin_package)
    请问这个怎么解决呢?谢谢!

    • 古月 回复 Jinz 2018年11月2日 下午3:51

      请在learning_communication包里package.xml文件中加入geometry_msgs的build_depend和run_depend

    • 陈满 回复 古月 2018年11月22日 下午3:28

      胡老师,您好!在编译您的代码时出现下面编译问题不知道怎么解决
      /usr/bin/ld: 找不到 -lmsc
      collect2: error: ld returned 1 exit status
      robot_perception/robot_voice/CMakeFiles/voice_assistant.dir/build.make:113: recipe for target ‘/home/yyl/ros_exploring/devel/lib/robot_voice/voice_assistant’ failed
      make[2]: *** [/home/yyl/ros_exploring/devel/lib/robot_voice/voice_assistant] Error 1
      CMakeFiles/Makefile2:2002: recipe for target ‘robot_perception/robot_voice/CMakeFiles/voice_assistant.dir/all’ failed
      make[1]: *** [robot_perception/robot_voice/CMakeFiles/voice_assistant.dir/all] Error 2
      /usr/bin/ld: 找不到 -lmsc
      collect2: error: ld returned 1 exit status
      robot_perception/robot_voice/CMakeFiles/iat_publish.dir/build.make:165: recipe for target ‘/home/yyl/ros_exploring/devel/lib/robot_voice/iat_publish’ failed
      make[2]: *** [/home/yyl/ros_exploring/devel/lib/robot_voice/iat_publish] Error 1
      CMakeFiles/Makefile2:1965: recipe for target ‘robot_perception/robot_voice/CMakeFiles/iat_publish.dir/all’ failed
      make[1]: *** [robot_perception/robot_voice/CMakeFiles/iat_publish.dir/all] Error 2

      [ 25%] Linking CXX executable /home/yyl/ros_exploring/devel/lib/mrobot_bringup/mrobot_bringup
      [ 25%] Built target mrobot_bringup
      Makefile:138: recipe for target ‘all’ failed
      make: *** [all] Error 2
      Invoking “make -j8 -l8” failed
      还请胡老师帮忙解决一下!

    • 古月 回复 陈满 2018年11月24日 下午12:50

      msc是科大讯飞的库,在ros_voice中的lib下找到libmsc这个库,拷贝到/usr/lib下即可

    • 唐升平 回复 陈满 2018年12月26日 上午10:42

      这本书是以python为编程语言的么?

    • 陈满 回复 古月 2018年11月22日 下午5:24

      胡老师,您好!在编译cartographer出现下面问题,请问一下怎么解决?
      cartographer/cartographer/mapping/proto/trajectory_node_data.proto
      cartographer/mapping/proto/trajectory_node_data.proto:15:10: Unrecognized syntax identifier “proto3”. This parser only recognizes “proto2″.
      [8/338] cd /home/yyl/cartographer_ws/b…d/cartographer/install/AllFiles.cmake”
      ninja: build stopped: subcommand failed.
      cd /home/yyl/cartographer_ws/build_isolated/cartographer && /home/yyl/cartographer_ws/install_isolated/env.sh ninja -j8 -l8

      Command failed, exiting.

    • 古月 回复 陈满 2018年11月24日 下午5:04

      这个是要安装proto3

    • 曾令东 回复 Jinz 2018年11月26日 下午3:20

      楼上兄弟,问题是否解决了?

    • mmEcho 回复 曾令东 2019年6月14日 下午4:18

      不知道您解决了这个问题没,没有的话可以参考https://blog.csdn.net/mmEcho/article/details/91982518

    • mmEcho 回复 Jinz 2019年6月14日 下午4:17

      不知道您解决了这个问题没,没有的话可以参考https://blog.csdn.net/mmEcho/article/details/91982518

  • Gatta 2018年10月24日 下午8:02

    老师我在看了您的这本书的语音控制小乌龟运动那里,运行roslaunch .launch、 rosrun .py 和 rosrun _node这三个 都没有报错,而且我说的go left这些都可以在终端打印下来但是小乌龟就是不动,代码是跟着您书上的代码

    • 古月 回复 Gatta 2018年10月28日 下午8:28

      用rqt_graph看下节点关系,是否都连接成功,然后再检查每一个的话题是否有数据

    • Gatta 回复 古月 2018年10月29日 下午3:34

      看了下是turtlesim这个节点没有订阅voice.py这个节点,需要怎么改,新手,还不太会

    • 古月 回复 Gatta 2018年11月2日 下午3:49

      voice.py这个节点会根据收到的语音指令,发布一个cmd的速度话题,可以在voice里边加一些调试信息,看下有没有顺利收到语音并转换成指令,然后看下cmd话题有没有数据

    • 管彬 回复 古月 2018年11月29日 下午10:28

      g@g:~/bagfiles$ rosbag record -a
      Usage: rosbag record TOPIC1 [TOPIC2 TOPIC3 …]

      rosbag: error: Cannot find rosbag/record executable
      g@g:~/bagfiles$

      请问这个怎么解决啊?

    • 古月 回复 管彬 2018年12月1日 上午12:15

      建议重新安装试试

  • niubulin 2018年8月7日 下午8:35

    古月您好,正在学习您的教程,由于刚开始学习,很多的知识点都不太明白。在gazebo中仿真自己建立的机器人模型时遇到了如下问题:
    Invalid tag: Cannot load command parameter [robot_description]: command [/opt/ros/kinetic/lib/xacro/xacro –inorder ‘/home/niubulin/catkin_ws/src/mbot_description_practice/urdf/mbot.xacro’] returned with code [1].

    Param xml is
    The traceback for the exception was written to the log file
    感觉应该是文件哪里配置出现了问题,自己搜索很久也没有找到问题的根源在哪里

    • 古月 回复 niubulin 2018年8月7日 下午11:46

      应该是没有把机器人模型路径加载到robot_description参数里,最好对照着例程改

  • 潘达 2018年7月27日 上午11:06

    古月前辈你好,最近一直在看你这本大作《ROS机器人开发实战》,并也在真实机器人平台实验,对我的学习真是有莫大的指导~!但由于刚入门,好多东西都没懂,在第九章“机器人SLAM与自主导航”的9.4hector_slam试验中,执行hector_demo.launch 后,地图总不能显示出来,终端提示内容为“lookupTransform base_footprint to laser timed out. Could not transform laser scan into base_frame.”,rviz里面的global status提示warn,具体为fixed frame:“No tf data. Actual error: Fixed Frame [map] does not exist”。通过rqt_graph能看出hect_mapping已经订阅激光的scan话题并也发布map到rviz。我用的激光雷达为Hokuyo UST-20LX,小车平台没有里程计信息。已经困扰很久,还请前辈不吝赐教~多谢!

    • 古月 回复 潘达 2018年7月29日 下午11:38

      错误提示是找不到map这个坐标系,检查一下激光数据是不是正常发布,频率方面是不是稳定

    • 潘达 回复 古月 2018年8月3日 下午4:58

      多谢古月大神,前几天在调里程计没有看到回复不好意思~我的ros是indigo,发现《ROS机器人开发实践》上面好多教程不能照例进行,正准备重新安装ros重新调试。再次谢古月前辈~~

  • fengyuan 2018年7月17日 下午8:40

    古月老师您好,看了您的书,感觉收获很大,但是有四个问题想请教下您,(1)我在运行《ROS机器人开发实践》第十章的p351的代码roslaunch marm_gazebo arm_gazebo_control.launch的时候,有时候会出现[gazebo-1] process has died [pid 6764, exit code 134, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -e ode worlds/empty.world __name:=gazebo这个错误,请问这个是什么原因呢,但有时候又是正常的,感觉很奇怪(2)在运行357页的代码的时候,roslaunch marm_gazebo arm_bringup_moveit.launch,出现错误 Action client not connected : arm_controller/follow_joint_trajectory,rviz中可以进行运动,但是gazebo中运动不了(3)在moveIT控制机械臂进行运动的时候,添加arbotix插件是否一定添加呢,和我运行roslaunch marm_moveit_config demo.launch 和rosrun marm_planning moveit_fk_demo.py这两个命令的时候,arm机械臂也是可以进行运动(4)在gazebo进行机械臂的仿真的时候,用了关节轨迹控制器,请问这个轨迹控制器也是一定要加上才可以进行在gazebo中的仿真吗

    • 古月 回复 fengyuan 2018年7月19日 上午12:15

      1. gazebo本身不稳定,和计算机的配置也有关系,都会导致gazebo启动失败,多启动几次就行,正常的
      2. 请确定是否安装了ros-kinetic-ros-control和ros-kinetic-ros-controllers包
      3. demo里是再带一个fake controller的,功能和arbotix一样,可以不用arbotix
      4. 这个必须要加上的,是接口要求

    • 可可 回复 古月 2019年5月13日 下午9:53

      第二个文题也安装了ros-kinetic-ros-control和ros-kinetic-ros-controllers这两个包,但是还是出现这样的错误怎么办,呜呜呜

  • lijiashushu 2018年7月6日 下午4:38

    大神您好,在您的书中看到了Roboware-studio这款软件,感觉功能非常强大。但是在使用中出现问题,打开本地的工作空间,构建时总提示错误Remote Arguments not configured! 。而自己新建工作空间时,出现错误磁盘上路径“/home/robot/catkin_ws”似乎不是一个有效的 ROS 工作区。请问您遇到过么?

    • 古月 回复 lijiashushu 2018年7月9日 下午5:16

      这个IDE我用的少,可以咨询他们的客服

    • zzzyyyccc 回复 lijiashushu 2018年9月4日 下午3:26

      左上角调试模式改成debug

    • Krasa 回复 zzzyyyccc 2018年9月27日 下午3:10

      古月老师,我刚开始学ros 按书里写的我把下载的包放在工作站里catkin_make了之后缺失了 ecto的包,manipulation-msgs的包,都安装好了,现在出来缺少moveit_msgs的包,我在网上查了下都没有下载方法,请问怎么办啊

    • 古月 回复 Krasa 2018年9月28日 下午4:38

      这些都是ROS的功能包,sudo apt-get install ros-kinetic-moveit-msgs就可以安装,缺少的其他包也使用类似的方法安装,也可以sudo apt-get install ros-kinetic-moveit-*安装所有moveit的包

    • LSC 回复 lijiashushu 2019年2月13日 下午1:53

      你好,我也遇到这样的问题,新建工作空间,提示不是有效的ros工作区,且在软件里面启动roscore,rviz等都是无法启动,返回错误代码1这样的提示,自己单独终端运行都正常,请问你有这样的问题吗,怎么解决的

  • 花生 2018年6月10日 上午11:04

    古月大神你好,在第一批买的你原版书籍,感觉超有价值,由于我是新手,所以遇到一个问题不能解决,在下载完你书中提供的源代码,在工作空间中catkin_make后遇到如下问题:请您解答一下。
    Could not find the required component ‘ecto’. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
    CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
    Could not find a package configuration file provided by “ecto” with any of
    the following names:

    ectoConfig.cmake
    ecto-config.cmake

    Add the installation prefix of “ecto” to CMAKE_PREFIX_PATH or set
    “ecto_DIR” to a directory containing one of the above files. If “ecto”
    provides a separate development package or SDK, be sure it has been
    installed.
    Call Stack (most recent call first):
    ros_exploring-master/robot_perception/ork_tutorials/CMakeLists.txt:4 (find_package)

    — Configuring incomplete, errors occurred!
    See also “/home/qinpeiwang/catkin_ws/build/CMakeFiles/CMakeOutput.log”.
    See also “/home/qinpeiwang/catkin_ws/build/CMakeFiles/CMakeError.log”.
    Invoking “cmake” failed

    • 古月 回复 花生 2018年6月12日 上午9:50

      感谢支持,缺少ecto这个包,用sudo apt-get install ros-kinetic-ecto安装

    • 花生 回复 古月 2018年6月17日 下午4:16

      谢谢您,我在微信活动中,评论一直是第一,好想能得到一本你的亲笔签名。永远支持你!

    • 不群 回复 古月 2020年9月8日 上午9:55

      古月老师您好,我ros是melodic版本,我运行sudo apt-get install ros-melodic-ecto的时候提示无法定位软件包,怎么回事呢?

    • JiMale 回复 花生 2018年8月23日 下午8:31

      请问怎么下载书中源代码啊?
      还请赐教!!!

    • 古月 回复 JiMale 2018年8月29日 下午2:41

      书里的第一章就有github下载地址