PK P;K meta.xml\82866#FFFFFFXMindR3.6.50.201606271038PK+a \ PK P;K content.xml ROS机器人操作系统ros初探什么是rosROS是面向机器人的开源的元操作系统(meta-operating
system)为什么选择ros抽象硬件支持分布式计算复用性强ros做什么地面移动机器人、旋翼无人机和类人机器人等用什么编译rosbuildcatkin不得不知的ros安装账户配置 1.rosdep update 2.在用户根目录.bashrc中添加source /opt/ros/indigo/setup.bash验证export | grep ROS使用turtlesim小例子什么是turtlesim仿真器启动 turtlesimroscore节点管理器rosrun turtlesim turtlesim_node小海龟rosrun turtlesim turtle_teleop_key控制功能包/软件包定义在 ROS 中,所有软件都被组织为软件包的形式,称为 ROS 软
件包或功能包,有时也简称为包。查看和定位rospack listros 软件列表清单rospack find package-name找某个软件包查看软件包rosls package-name查看ls roscd package-name切换cd节点管理器启动roscore节点 ROS程序的运行
实例被称为节点(node)理解但凡通过rosrun启动的程序都成为节点节点列表查看rosnode list查看节点rosnode info node-name终止节点rosnode kill node-name查看节点计算图rqt_graph话题和消息节点之间通信依靠消息消息被组织成话题传递方式发布(publish)消息订阅(subscribe)话题获取话题列表rostopic list打印消息内容rostopic echo topic-name测量发布频率rostopic hz topic-name每秒发布的消息数量rostopic bw topic-name每秒发布消息所占的字节量查看话题rostopic info topic-name查看消息类型rosmsg show message-type-name消息类型中包含域用命令行发布消息发布rostopic pub –r rate-in-hz topic-name message-type message-contentrostopic pub –r 1 /turtle1/cmd_vel geometry_msgs/Twist ’[2,0,0]’ ’[0,0,0]’海龟沿直线前进(X轴)rostopic pub –r 1 /turtle1/cmd_vel geometry_msgs/Twist ’[0,0,0]’ ’[0,0,1]’绕着z轴旋转理解消息类型的命名如何编写ros程序创建工作区和功能包编写程序编写程序编译声明依赖库 CMakeLists.txt find_package(catkin REQUIRED COMPONENTS package-names)pakage.xmlbuild_depend (编译依赖)<build_depend>package-name</build_depend> run_depend(运行依赖)<run_depend>package-name</run_depend>声明可执行文件 CMakeLists.txtadd_executable(executable-name source-files)想要可执行的文件明target_link_libraries(executable-name ${catkin_LIBRARIES})库依赖编译工作区catkin_make 注意是在工作目录子主题 4执行Sourcing setup.bash配置环境变量等rosrun agitr hello发布者程序订阅者程序日志消息什么是日志消息ROS_INFO_STREAM所展示的严重级别DEBUGINFOWARNERRORFATAL生成日志消息ROS_DEBUG_STREAM(message);ROS_INFO_STREAM(message);ROS_WARN_STREAM(message);ROS_ERROR_STREAM(message);ROS_FATAL_STREAM(message);查看日志消息控制台rosout 上的消息rostopic echo /rosoutrqt_console日志文件查找运行标识码清除日志rosclean purge计算图源命名什么是计算图源计算图源名称节点、 话题、 服务和参数统称为计算图源,而每个计算图源
由一个叫计算图源名称(graph resource name)的短字符串标识。全局名称组成“/”全局名称斜杠分开的命名空间(namespace)基本名称(base name)描述资源本身的相对名称缺少全局名称带
有的前斜杠“/”如:teleop_turtle、turtlesim、cmd_vel等解析相对名称私有名称特征波浪字符(~)开始转换成全局名称匿名名称请求自动分配启动文件什么是启动文件一个脚本为什么需要同时启动节点管理器(master) 和多个节点怎么编写启动文件同时启动节点管理器(master) 和多个节点agtr包的根目录下<launch>
<node
pkg="turtlesim "
type="turtlesim_node"
name="turtlesim "
respawn="true "
/>
...
</launch>怎么使用roslaunch package-name launch-file-name创建启动文件存储位置 launch目录根元素<launch>
…
<launch>启动节点<node
pkg=”package-name”
type=”executable-name”
name=”node-name”
/>请求复位respawn=”true”当被次标记的节点退出了,会重启该节点必要节点required=”true”同一根绳上的蚂蚱在命名空间内启动节点名称重映射(Remapping names)创建重映射original-name := new-namerosrun turtlesim turtlesim_node turtle1/pose:=tim通过启动文件的方式<remap from=”original-name”to ”new-name”/>子主题 2包含其他文件启动文件中<E%topics type="attached"><include file=”path-to-launch-file”>启动文件的其他元素格式<include file=”$(find package-name)/launch-file-name”>启动参数声明<arg name=”agr-name”>创建组how<group ns=”namespace”/>
…
</group>参数通过命令行获取参数查看参数列表rosparam list查询参数rosparam get parameter_name设置参数rosparam set parameter_name parameter_value使用 C++获取参数void ros::param::set(parameter_name, input_value);bool ros::param::get(parameter_name, output_value);在启动文件中设置参数服务用于通信服务的专用术语从命令行查看和调用服务列出所有服务rosservice list查看服务类型 rosnode info node-name查找提供服务的节点rosservice node service-name服务数据构成查看服务数据类型rossrv show service-data-type-name从命令行调用服务rosservice call service-name request-content客户端程序服务器程序消息录制与回放使用rosbag 的工具录制与回放包文件录制包文件 rosbag record -O filename.bag topic-namesrosbag record -a 记录当前发布的所有话题的消息回放包文件rosbag play filename.bag检查文件包rosbag info filename.bag启动文件里面的包文件录制<node
pkg="rosbag"
name="record"
type="record"
args="-O filename.bag topic-names"
/>回放<node
pkg="rosbag"
name="play"
type="play"
args="filename.bag"
/>ROSPKf\(? 5 PK P;K
styles.xmlZ
PK=f_
Z
PK P;K 2 Revisions/0ho75se63pm7j2futq9ceavrek/revisions.xml"PK" " PK P;K * attachments/0o2mksvlgmd7q08ej5u28qfher.pngoPNG
IHDR 4 WIDATxyPLJ]ԕUcEQDEEDEeQTT<#UA]مEPA9EP9J
XܕI*I%S&$`EH{әz 0dom @1 ) ) HPL @
b
R S Q;KIB'׆{<$#vl
LOtU}h_+)>͈p(ȉ¡,iGr0Kx͡!Hz yQ_ڡM9=(DAx@ZY/DjþvW5qFCAN !rHTLC@[<