ROS 学习笔记第一篇。参考https://rsl.ethz.ch/education-students/lectures/ros.html ROS教程
ROS
ROS = Robot Operating System
- Plumbing
- Tools
- Capabilities
- Ecosystem
Philosophy
- Peer to peer communication
Individual programs communicate over define API (ROS msgs, services, etc) - Distributed
- Multi-Lingual
C++ Python, Matlab, Java - Light-Weight
- Free and Open
ROS就是一个分布式的信息交互操作系统,每个node通过将信息传递给相应的接收node从而进行相应的操作。
ROS master manages the msgs, start with roscore
ROS nodes, single-purpose, individually compiled, organized in pakages
rosrun package_name
rosnode list
ROS Topics, node communicate over topics
尽量使用catkin build pakage_name
注意使用catkin build需要安装python_catkin_tools这个包
Whenever you build a new package, update your environment
source devel/setup.bash
1 | linux 建立链接 |
ROS launch is a tool for launching multiple nodes (as well as parameters). Are written in XML as *.launch files
Start a launch file from a package: > roslaunch package_name file_name.launch
When launching, arguments can be set with >roslaunch launch_file.launch arg_name:=value
ROS Topic
- rostopic list 可以查看所有的rostopic
- rosmsg show可以查看当前rosmsg的格式是什么
- 利用rostopic在终端进行命令控制:
rostopic pub [parm] [topic] [type] [args]
例如:在husky_simulation中对cmd_vel 的geometry_msgs/Twist进行控制 (-r 10)表示以10hz的频率进行publish
rostopic pub -r 10 /cmd_vel /geometry_msgs/Twist – ‘[0.1, 0.0, 0.0]’ ‘[0.0., 0.0, 0.1]’
千万注意参数中的空格,输入参数的格式
环境配置问题
- catkin build 需要安装python_catkin_tools (apt 安装)
- 进行catkin build ros_package_template 的时候发现如下错误:
ImportError: “from catkin_pkg.package import parse_package” failed: No module named catkin_pkg.package
Make sure that you have installed “catkin_pkg”, it is up to date and on the PYTHONPATH.
这里提示找不到catkin_pkg。注意catkin_pkg有两种安装方式,回到用户根目录,使用pip进行安装。
pip install catkin_pkg
安装成功之后,编译成功
如果觉得配置失败,可以使用catkin clean将生成的devel,build和logs目录删掉重新进行配置
在进行gazebo husky仿真的时候,出现no module called rospkg found.
这个仍然使用pip进行安装,pip install rospkg使用gazebo进行仿真的时候,因为之前安装了anaconda python3.5 导致在编译的过程中出现_tf2 import error. 要切回ubuntu自带的python2.7才可以
系统自带的python位于/usr/bin, 所以先查看echo $PATH, 如果/usr/bin位于anaconda之前,则python会先找到python2.7而不是anaconda。
我的方法是将固定的PATH在.bashrc中先死打印,之后调整anaconda的前后顺序,这样就可以避免PATH出现一堆重复的路径。
gazebo world 加载失败黑屏的问题
$cd /usr/share/gazebo-7/worlds
$gazebo willowgarage.world
打开gazebo的时候会发现一直处于这种状态,这是因为model库加载不正确导致的。
解决办法:
$ cd ~/
$ hg clone https://bitbucket.org/osrf/gazebo_models
下载完成后将gazebo_models复制到~/.gazebo文件夹中,重命名为models.
注意使用cp 进行文件复制的时候,将该目录下的所有文件复制是
cp -r dir/ dir/
查看models下是否包含所有的model文件