天天看点

ROS 中写 python 的 roslaunch

文章目录

    • 1. 必看教程(快速入门)
      • 1.1. 快速入门ROS的视频教程(里面有一节是专门讲 roslaunch 的):https://www.bilibili.com/video/av59458869/
      • 1.2. PDF文档(How to create a ROS package (In Python) in Easy Steps.pdf):https://duckietown.mit.edu/media/pdfs/1rpRisFoCYUm0XT78j-nAYidlh-cDtLCdEbIaBCnx9ew.pdf
      • 1.3. 官方文档(Writing a ROS Python Makefile):http://wiki.ros.org/rospy_tutorials/Tutorials/Makefile
    • 2. 调试 bug 参考的文档
      • all processes on machine have died, roslaunch will exit!
      • 异常中出现 ^M 标志
      • rolaunch 启动的 * .py 的第一行须要添加 python 环境路径
    • 3. 开发过程常用到的信息保存如下:
      • 3.1. 创建工作区
      • 3.2. 环境激活:
      • 3.3. 创建功能包
    • 4. 我最终的 文件结构 截图如下:
    • 5. 常用的命令放在下面:

背景:之前将交通标志的检测程序,放在了 ROS 环境中运行,能实现正常的订阅和发布功能,实现了与其他程序的配合。但是没有运行程序时,是通过直接终端输入

python2 detect_traffic_sign_2030.py

实现启动节点的。

开发需求:把整个 node 配置成完整的 ROS 启动,roslaunch 启动

1. 必看教程(快速入门)

先看1(视频) 再看 2(pdf),3(官方可不看) 最后看1(视频),我才把代码调通。

官方文档 通过创建 bin 文件夹的方法,误导了我,最终是不需要这样操作的。

1.1. 快速入门ROS的视频教程(里面有一节是专门讲 roslaunch 的):https://www.bilibili.com/video/av59458869/

1.2. PDF文档(How to create a ROS package (In Python) in Easy Steps.pdf):https://duckietown.mit.edu/media/pdfs/1rpRisFoCYUm0XT78j-nAYidlh-cDtLCdEbIaBCnx9ew.pdf

1.3. 官方文档(Writing a ROS Python Makefile):http://wiki.ros.org/rospy_tutorials/Tutorials/Makefile

这个参考的较少,其中的 Installing scripts and exporting modules 过程在PDF文档中没有提及,所以我 最终不是通过创建 bin 文件夹的方法来实现 rosrun 来运行 *.py 文件的。

2. 调试 bug 参考的文档

all processes on machine have died, roslaunch will exit!

参考的文档:file:///F:/E/ROS%E5%AD%A6%E4%B9%A0%E6%96%87%E4%BB%B6/rocon_launch.launch%20%E2%80%94%20rocon_launch%200.3.2%20documentation.html

截图重点部分如下:把原来的代码,改成下面这个。

ROS 中写 python 的 roslaunch

异常中出现 ^M 标志

出现原因:我将win下的代码复制到linux中去,这是由于两个系统的编码格式不同导致的.

解决方法:参考 https://blog.csdn.net/u011498011/article/details/89474931

rolaunch 启动的 * .py 的第一行须要添加 python 环境路径

解决方法: 1. 通过

which python

找到你需要的 python 环境的路径,我的最终修改结果如下:

ROS 中写 python 的 roslaunch

3. 开发过程常用到的信息保存如下:

激活自己笔记本上的 ros_py27 环境:conda activate ros_py27

激活 ros 环境:source /opt/ros/kinetic/setup.bash

3.1. 创建工作区

ROS 中写 python 的 roslaunch

3.2. 环境激活:

ROS 中写 python 的 roslaunch

3.3. 创建功能包

ROS 中写 python 的 roslaunch

4. 我最终的 文件结构 截图如下:

ROS 中写 python 的 roslaunch

说明:build 和 devel 中的文件是 通过

katkin_make

自动生成了(我没有具体看过里面的内容),里面的内容可以删除,重新 make 就会自动生成。这三个文件夹都需要自己手动创建。

ROS 中写 python 的 roslaunch

traffic_sign_2030

文件夹 和

CMakeLists.txt

是通过

catkin_create_pkg traffic_sign_2030

命令自动生成的。

所以这里可以 并立存放(创建)多个 pkg

ROS 中写 python 的 roslaunch

txt 和 xml 文件是自动创建的,但需要根据自己使用到的依赖,进行添加内容。

setup.py 是自己创建的,内容根据 参考的PDF文档修改。

ROS 中写 python 的 roslaunch
ROS 中写 python 的 roslaunch

__init__.py

是个空文件

ROS 中写 python 的 roslaunch
ROS 中写 python 的 roslaunch

根据自己的需要,自己定义。

ROS 中写 python 的 roslaunch
ROS 中写 python 的 roslaunch

具体路径通过

which python

来查找。

ROS 中写 python 的 roslaunch

需要

import rosgraph

5. 常用的命令放在下面:

ROS 中写 python 的 roslaunch
ROS 中写 python 的 roslaunch
ROS 中写 python 的 roslaunch
ROS 中写 python 的 roslaunch