ROS1学习(中级)
手动创建ROS package
roscreate-pkg节省精力避免错误,但package只不过就是一个文件夹外加一个XML文件。
gedit package.xml
在package中添加如下语句:
<package> <name>foobar</name> <version>1.2.4</version> <description> This package provides foo capability. </description> <maintainer email="foobar@foo.bar.willowgarage.com">PR-foobar</maintainer> <license>BSD</license> <buildtool_depend>catkin</buildtool_depend> <build_depend>roscpp</build_depend> <build_depend>std_msgs</build_depend> <run_depend>roscpp</run_depend> <run_depend>std_msgs</run_depend> </package>还需要一个CMakeLists.txt文件,在 foobar/CMakeLists.txt文件里输入:
cmake_minimum_required(VERSION 2.8.3) project(foobar) find_package(catkin REQUIRED roscpp std_msgs) catkin_package()这就是在ROS下用catkin编译package需要的最小工作了。
管理系统依赖项:
- ROS packages有时会需要操作系统提供一些外部函数库,这些函数库就是所谓的“系统依赖项”。在一些情况下,这些依赖项并没有被系统默认安装,因此,ROS提供了一个工具rosdep来下载并安装所需系统依赖项。
rosdep install [package]
- 为turtlesim下载并安装系统依赖项:
$ rosdep install turtlesim
Roslaunch在大型项目中的使用技巧
我们希望launch文件能够尽可能的重用,这样在不同的机器人平台上就不需要修改这些launch文件就能使用。即使是从真实的环境转到模拟环境中也只要稍微修改即可。
- 高层级的launch文件:
- 高层级的launch文件应该简短,利用include指令将系统的组成部分和ROS parameter引用过来即可。
(待续)
跨机器运行的 Talker / listener
假如说我们希望在两台机器上分别运行talker / listener, 主机名分别为 marvin 和 hal.登陆主机名为marvin的机器,只需
ssh marvin
同样的方法可以登陆hal.
启动 master
ssh hal
roscore
启动 listener
配置ROS_MASTER_URI
ssh hal
export ROS_MASTER_URI=http://hal:11311
rosrun rospy_tutorials listener.py
启动 talker
配置ROS_MASTER_URI
ssh marvin
export ROS_MASTER_URI=http://hal:11311
rosrun rospy_tutorials talker.py
自定义消息
自定义一个消息类型很简单,只要将.msg文件放到一个package的msg文件夹下即可
- 消息类型都被归属到与package相对应的域名空间下,例如:
from std_msgs.msg import String
msg = String()
依赖项
如果你要使用在其他package里定义的消息类型,添加:
<build_depend>name_of_package_containing_custom_msg</build_depend>
<run_depend>name_of_package_containing_custom_msg</run_depend>
作者:zhangjn 创建时间:2025-03-30 21:07
最后编辑:zhangjn 更新时间:2025-04-13 15:00
最后编辑:zhangjn 更新时间:2025-04-13 15:00