笔记,记录了一名PHPer整了 ROS 两个月左右的一些文档

文章记录了近期整了两个月左右过程中用到的一些资料,整理下来,有些乱...

建议要是能用 Docker 安装 ROS 的话,就尽量少去折腾环境,留出时间研究 ROS

入门文档

ROS_Robot_Programming_CN.PDF 提取码: kzeg

官方中文 Wiki 文档

Python 示例代码
使用 Python 读取 scan topic 的方法!

导入 LDS 的 msg 数据类型包名
import rospy
from senso{ 8 a ir_msgsO * V _ j V K s.msg import LaserScan

查看 Topic 消息内容! S Q # [ 6 0 a

rostopic echo /kobuki/lase/scan -n1

输出

header:
seq: 5
stamp:N d ? Q c
secs: 2829
nsecs:  69000000
frame_id: "laser_sensor_link"t : s F 5 1 :
a/ ) D 4 W s % Fngle_min: -1.U ` v y  l $57079994678
angle_max: 1_ 8 _ ).5707999467; g - |8
angle_increment: 0.004369401838h 7 263
time_increment: 0.0
scan_time: 0.0
range_min: 0.10000000149
range_max: 30.0
ranges: [inf, inf, inf, inf, inf, ....]

查看消息类型

rosmsg show sensor_msgs/LaserScan

输出

 showShell
std_msgs/Header header
uk 0 8 % D e v A :int32 seq
time stamp
string frame_id
float32 angle_min
float32 al ) M N 8ngle_max
float32 ang! { Kle_increment
float32 time_in` S W Z d bcrement
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities

Python 使用自定义 msg 导入方式:

from 功能包名.msg imp6 r a Q 8 { Z uort 消息文件名

std_msgs Msg/Srv Documentation 所支持的类型
ODO 示例讲解 topic 的传输

sel . 9 ! ~ _ i M Vnsor_msgs/Imu Message 解释说明

经由 TF、odometry 发送里程信息到 ROS

关于 nav_msgs/Odometry 的疑惑解释

使用 linea2 i U / O T A [r 和 angular 计算路径发布到 odometry

wiki 使用 lineg 4 i ? {ar 和 angular 计算路径发布到 odometry

docker 下安装

docker 下 ros 开启I K B T G j图形化界6 x J } 8 *

urdf 学习笔X 9 c } 8 x记一

很好的一篇 URDF 解读

URDF

连杆(link)标签的E P h 0 @ e G 4 d属性,参考书籍P416
<link33>@ $ 2: 连杆的可视化、碰撞和惯性信息设置
<collision>: 设置连杆的碰撞计算的信息
<vW - _ b D B t Sisual>: 设置连杆的可视化信息
<inertial>: 设置连杆的惯性信息
<mass>: 连杆重量(单位:kg)的设置
<inertia>: 惯性张量(Inew L 9 6 z  , Jrtia tensor34)设置
<R f ;origin>: 设置相对于连杆相对坐标系的移动和旋转
<geometry>, U {: 输入模型的形状。提供box、cylinder、sphere等形态,也可以导入COLLADA (.dae)、STL(.stl)格式的设计文件。在<collision>标签中,可以指定为简单的形态来减少计算时间
<matec ? h _ _ t d [ Urial>: 设置连杆的颜色和纹理& f )
关节(joint)标签的属性
<joint name=” joint2” type=” revolute”>
<parL / n x I { H 0ent link="link2"/>
<child link="link3"/>
<origin xyz="0 0 0.5" rpy="0 0 0"/>
<axis xyz="0 1 0"/>
<limit effort="30" lower=", f 0 @ A-2.617"N Q o Y k $ upper="2.617" veloc; R %  0 [ 3 c Fity="1.571"/>
</joint>
<joint35>: 与连杆的关系和关节类型的设置
<paren! : E E L 9t>: 关节的父连杆
<child>, G , H , # ^ }: 关节的子连杆
<origin>: 将父连杆坐标系转换为子连杆坐标系
<axiP *  W d Z ws&g 6 q dt;: 设置旋转轴
<limit>: 设F @ + 3 (置关节的速度、力和半径(仅当关节是revolute或prismatic时)

添加超声波传感器
非常好的一篇添加超声波、红外传感器的文章

很好的一个有关超声波、红外、IMU、( 1 y =ODO传感器 f q { @ x示例
roslaunch rover_{ I m = x pgazebo rover_world.launch
开启键盘交互节点
roslaunch tuF R } _ Xrtlebot3_teleop turtlebot3_teleop_key.launch

进阶s h x实践

turtlebot3 机器人官方教程

最终需要运b g h (行起来以下三条命令节点(运行完整的 turtlebot3 示例)

记得设置环* $ x Z = M %境变量 export TURTLEBOT3_MODEL=waffle_P Y Q ; X Npi (或者add to your ~/.bashrc file)

或者

source /opt/rG ( g Los/kinetic/setup.bash && source ~/ankobot_catkin_ws/devel/setup.bash && export TURTLEBOT3_MODEL=waffle_pi

Simulate TurtleBot3 inside a fake houN g % J 5 f rse with Gazebo (gazebo_ros package)

roslan C | 3 ;unch turtlebot3_gazebo tur$ U 2 & ^ Q B w otlebot3_house.launch

Start SLAM in a new terminal tab (gmapping):

roslaunch turtlebot3_slam turt( + ! _ B J *lebot3_slam.5 d - H - C  v ?launch slam_methods:=gmapping

Start autonomus navigation in a neX t 5 e |w terminal tab (simple obstacle avoidance, source code in turtlebot3_drive.cpp)

roslaunch turtlebot3_gazebo turtlebot3_simulation.launch

需要手动执行的环境变量
sudo docker exec -it kinetic2 bash

` D [ ) X篇有关订阅(多收多发、多收一发) topic 的文章
  1. 关于同时订阅多个topic的问题
  2. ROS Topic概念
  3. ROS 多| 2 H } c s G + K个传感器 publish 同一个Tg k b e j $ ? Zopic
  4. ~ l (P I K P ; 点的多Topic同时收发

传感器规格S Z 4确定

支持LDS的典型的ROS功能包包括支持SICK LDS的sicks300、sicktoolbox和sicktoolbox_wrappeR J g 8r功能包,还有支b S Q G 5 t r R持Hokuyo公司的LDS的hokuyo_node和urg_node功能包,以及支持velodyne公司 w z ! { q 7 =的LDS的velodyne功能包。还有支持RPLIDAR的rplidar功能包,以及支持TurtleBot3所配备的LDS的hls_lfcd_lds_drive功能包

turtleBot3 WafH & z # C W Cfle Pi:

TurtleBot3的硬件设计文件像开源软件一样,都向公众开放。如果需要使用TurtleBot3的控制器
OpenCR或需要TuW 2 A # 9 Q - ertleN b lBot3各型号的硬件a r y R . L . - (文件,请使用h A K以下Q - M 7 !链接地址。每个开源硬件如无特指,都遵 o o U !
循Open Source Hardw | n * l 5 b Dare Statement of Principles and Definiti3 P | q v non v1.0许可证
http://www.robotis.com/7 i q A | M 6 X !service/download.php?no=678

概念

TurtleBot3的软件由OpenCR控制板的固件(FW)和4个ROS功能包组成
TurtleBot3的ROS功能包包括turtlebot3、turtlebot3_msgs、turtlebot3_simulations
和turtlebot3_a( 6 s b = J gpplications