机器人学习ROS篇
机器人学习ROS篇
文章目录
前言
本系列主要记载本人在机器人道路上摸爬滚打的经历。本篇是ROS相关的内容,虽然本科期间接触过不少,但是并没有进行过总结,每每用到什么东西都要重新查,很多都忘记了。近期重新进行了整理,学无止境,长期更新。
一、一些资料
二、如何安装ROS?
1.添加ROS软件源
$ sudo sh -c 'echo"deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc)main">/etc/apt/sources.list.d/ros-latest.list'
2.添加密钥
$ sudo apt-key adv--keyserver hkp://ha.pool.sks-keyservers.net:80--recv-key421C365BD9FF1F717815A3895523BAEEB01FA116
3.安装ROS
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-desktop-full
4.初始化rosdep
$ sudo rosdep init
$ rosdep update
5.设置环境变量
$ echo "source/opt/rps/kinetic/setup.bash">>~/.bashrc
$ source ~/.bashrc
6.安装rosinstall
$ sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
总结
现在应该已经安装完成了。可以打开终端,输入roscore就可以启动ROS Master了。古月居课程在这里提到了终端可以用zsh而不是bash所以附个链接,大家想下的可以自取。Linux shell-zsh配置方案
三、ROS常用命令
可以在终端中使用Tab键来查看所有相关的命令。
四、ROS基本使用
1.小海龟仿真器的使用
1.rqt_graph可视化工具查看系统中运行的计算图
2.rqt-plot不能正常使用
在实验过程的时候遇到了rqt_plot不能正常打开,原因是ubuntu16.04的Python版本为2.7对于软件来说比较老了。rqt_plot打不开解决方案
期间还出现了一些权限不够的问题参考解决方案文件权限不够解决方案
2.工作空间
1.创建工作空间
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
2.编译工作空间
$ cd ~/catkin_ws/
$ catkin_make
3.设置环境变量
$ source devel/setup.bash
4.检查环境变量
$ echo $ROS_PACKAGE_PATH
3.创建功能包
$ cd ~/catkin_ws/src
$ catkin_create_pkg learning_communication std_msgs rospy roscpp
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
同一个工作空间,不允许存在同名功能包
不同工作空间下,允许存在同名功能包
4.通信编程
话题编程流程:
1.创建发布者、订阅者
如何实现一个发布者:
初始化节点信息;
向ros master注册节点信息,包括发布的话题名和话题中的消息类型;
按照一定频率循环发布消息。
如何实现一个订阅者:
初始化ROS节点;
订阅需要的话题;
循环等待话题消息,接收到消息后进入回调函数;
在回调函数中完成消息处理。
2.添加编译选项
设置需要编译的代码和生成的可执行文件;
设置链接库(CMakelist);
设置依赖。
3.运行
rosrun …;
如何自定义话题消息:
$ rosmsg show [文件名]
如何进行服务编程:
如何运行可执行文件:
$ rosrun learning_communication server
$ rosrun learning_communication client 3 5
可以看到客户端收到相加过的数值,也能在服务端看到处理过程。移动机器人开发学习经历
5.动作编程
action文件
6.ROS中的关键组件
1.Launch文件
通过XML文件实现多节点的配置和启动。
launch文件中的根元素采用标签定义
启动节点
<node pkg="package-name"type="executable-name"name=“node-name”/>
pkg:节点所在的功能包名称
type:节点的可执行文件名称
name:节点运行时名称
output:某一些节点的输出控制
respawn:输出失败的时候会重新启动
required:节点是必须的节点,没启动launch不能启动
ns:命名空间的属性
args:节点的具体输入参数
2.TF坐标变换
《机器人学概论》
待补充。。。。。。