ROS进阶学习手记 7 -- RViz仿真实例1
【任务2】:
用simulator: RViz 工具,完成对小车的建模,名字drive RViz = dvrv, 用 dvrv_node 发布topic和数据格式,向它发送位置指令,使它能接受键盘输入,并完成前进,后退,转弯90°功能。
Topic, 还是拟用/turtle1/cmd_vel
Message Type: geometry_msgs/Twist
-----------
1. RViz介绍
参考:RViz Package Link: http://wiki.ros.org/rviz
内含:RViz User Guide: http://wiki.ros.org/rviz/UserGuide
RViz Tutorials: http://wiki.ros.org/rviz/Tutorials
rviz是一个显示机器人实体的工具,本身不具有模拟的功能,需要安装一个模拟器arbotix。但官网有关arbotix的资料很缺,跟另一个“10分钟上手玩ROS仿真”http://blog.exbot.net/archives/899, 对比一个不work的教程:ros_by_example_1_hydro.pdf
(6.2 Testing the Simulator),有兴趣可以研究5. Installing the ros-by-example Code以后,再玩6.2, 估计就work了。本次就不深入那个。
2. 用ExBot机器人实验室的包来仿真
打开terminal,输入命令:
roslaunch exbotxi_rviz view_model.launch
将会打开rviz,并加载查看ExBot XI移动机器人平台模型的配置。
ExBot XI移动机器人平台兼容turtlebot了,这里就用turtlebot包的键盘控制node来控制机器人移动。
Ctrl + C 结束掉前面的程序,关闭terminal,然后再打开3个terminal,分别输入下面的3个命令:
roslaunch exbotxi_bringup fake_exbotxi.launch
roslaunch exbotxi_rviz view_mobile.launchroslaunch turtlebot_teleop keyboard_teleop.launch
跟这个“10分钟上手玩ROS仿真” 走完整个流程就好。
第1条命令用于启动ExBot XI仿真机器人,启动成功后显示信息如下:

第2条命令用于打开ROS可视化工具rviz,并加载移动机器人视图配置。
第3条命令用于启动键盘控制node。
现在将光标focus在第3条命令的terminal窗口,便可以通过键盘控制仿真机器人了:

3. 拆解ExBot机器人实验室的包
首先打开fake_exbotxi.launch文件。( ~/catkin_ws/src/exbot_xi/exbotxi_bringup/launch )
文件可以大概分为四个部分:
(1) 从指定的包中加载urdf文件
(2) 启动arbotix模拟器
(3) 启动状态发布节点
(4) tf 坐标系配置--本次可能没有
<launch>
<arg name="urdf_file" default="$(find xacro)/xacro.py '$(find exbotxi_description)/urdf/exbotxi.urdf.xacro'" />
<param name="robot_description" command="$(arg urdf_file)" /> <node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
<rosparam command="delete" param="/arbotix" />
<rosparam file="$(find exbotxi_bringup)/config/fake_irobot_create_arbotix.yaml" command="load" />
<param name="sim" value="true"/>
<remap from="cmd_vel" to="mobile_base/commands/velocity"/>
</node> <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher">
<param name="publish_frequency" type="double" value="8.0" />
</node> <node pkg="topic_tools" type="mux" name="exbotxi_mux1" args="mobile_base/commands/velocity cmd_vel_mux/input/teleop" />
<node pkg="topic_tools" type="mux" name="exbotxi_mux2" args="mobile_base/commands/velocity cmd_vel" />
</launch>
接下来的几个教程都要follow这个古月居的博客了,古月居的专栏:http://blog.csdn.net/column/details/ros-explore.html
附录:安装arbotix
安装 arbotix : (如果联网有问题,还原网络设定,hosts文件有关的设定,http://blog.csdn.net/sonictl/article/details/46986565)
$ sudo apt-get install ros-hydro-arbotix
然后加入ros package路径:
$ rospack profile
参考:http://blog.csdn.net/scliu12345/article/details/44521327
测试仿真器:
$ roslaunch rbx1_bringup fake_turtlebot.launch
遇到错误,[fake_turtlebot.launch] is neither a launch file in package [rbx1_bringup] nor is [rbx1_bringup] a launch file name,
找了半天估计是跟错教程了,果断换
ROS进阶学习手记 7 -- RViz仿真实例1的更多相关文章
- ROS进阶学习手记 7.2 -- RViz仿真实例2:Create SmartCar
上一节玩了 exbot 在RViz里的仿真控制,这里我们用urdf文件写个自己的小车模型,ref: http://blog.csdn.net/hcx25909/article/details/8904 ...
- ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - ROSMapModify - ROS地图修改
ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - 2 - MapModify地图修改 We can use gmapping model to genera ...
- ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM
(写在前面: 这里参考rbx书中第八章和ROS社区教程进行学习,先看社区教程) === Doing the Turtlebot Navigation === ref ros wiki: http ...
- ROS 进阶学习笔记(13) - Combine Subscriber and Publisher in Python, ROS
Combine Subscriber and Publisher in Python, ROS This article will describe an example of Combining S ...
- ROS进阶学习笔记(10)- 搭建自己的Turtlebot(5) - Interactive Makers
用interactive_makers控制Turtlebot移动 interactive_makers 是Willow Garage公司开发的一个虚拟控制工具,可通过鼠标在虚拟环境中的操作,完成实际机 ...
- ROS 进阶学习笔记(12) - Communication with ROS through USART Serial Port
Communication with ROS through USART Serial Port We always need to communicate with ROS through seri ...
- JMeter学习-011-JMeter 后置处理器实例之 - 正则表达式提取器(三)多参数获取进阶引用篇
前两篇文章分表讲述了 后置处理器 - 正则表达式提取器概述及简单实例.多参数获取,相应博文敬请参阅 简单实例.多参数获取. 此文主要讲述如何引用正则表达式提取器获取的数据信息.其实,正则表达式提取器获 ...
- ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)
ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python) 时隔1年,再回来总结这个问题,因为它是ros+python开发中,太常用的一个操作,需要 ...
- Python进阶学习之特殊方法实例详析
Python进阶学习之特殊方法实例详析 最近在学习python,学习到了一个之前没接触过的--特殊方法. 什么是特殊方法?当我们在设计一个类的时候,python中有一个用于初始化的方法$__init_ ...
随机推荐
- !important强制此css最强,其它被覆盖
有时我们引用别人写的插件不知道某个样式在哪儿,或者想要覆盖其它样式,就要用到 !importan; 例如以下是引用boostrap,默认bootstrap都是圆边框,我们不想用,例子中同一样式也出现多 ...
- Thinkphp 缓存和静态缓存局部缓存设置
1.S方法缓存设置 if(!$rows = S('indexBlog')){ //*$rows = S('indexBlog') $rows = D('blog')->select(); S(' ...
- DS图--最小生成树
题目描述 根据输入创建无向网.分别用Prim算法和Kruskal算法构建最小生成树.(假设:输入数据的最小生成树唯一.) 输入 顶点数n n个顶点 边数m m条边信息,格式为:顶点1 顶点2 权值 P ...
- 基于vue.js实现远程请求json的select控件
基本思路 前端把需要的参数类型编码传到后台,后台返回相应的参数列表json,前端利用vue渲染select控件 具体实现 前端代码 <select v-model="template. ...
- C++进阶--不让编译器自动生成类函数
//############################################################################ /* * 不让编译器自动生成类函数 * * ...
- 【Mysql+shell】查询结果导出到文件,文件数据导入到数据库
Shell: 执行Mysql查询,并将查询结果导出到文件 直接使用Mysql执行查询 mysql> use xxx_dbName; mysql> select * from log_06 ...
- 【剑指offer】斐波那契数列非递归求解第N项
public class Solution { public int Fibonacci(int n) { //错误输入处理 if(n<0) return -1; int pre = 1; in ...
- jquery zTree异步搜索的例子--搜全部节点
参考博客: https://segmentfault.com/a/1190000004657854 https://blog.csdn.net/houpengfei111/article/detail ...
- 学习-工作:GTD
ylbtech-学习-工作:GTD GTD就是Getting Things Done的缩写,翻译过来就是“把事情做完”,是一个管理时间的方法.GTD的核心理念概括就是必须记录下来要做的事,然后整理安排 ...
- 廖雪峰Java2面向对象编程-2数据封装-1方法重载
方法重载 方法重载Overload是指:多个方法的方法名相同,但各自的参数不同 参数的个数不同 参数的类型不同 参数位置不同 方法返回值类型通常都是相同的 目的:相同功能的方法使用同一名字,便于调用 ...