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

拟墨画扇 提交于 2020-08-06 21:31:32

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

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

入门文档

ROS_Robot_Programming_CN.PDF 提取码: kzeg

官方中文 Wiki 文档

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

导入 LDS 的 msg 数据类型包名
import rospy
from sensor_msgs.msg import LaserScan

查看 Topic 消息内容

rostopic echo /kobuki/lase/scan -n1

输出

header:
seq: 5
stamp:
secs: 2829
nsecs:  69000000
frame_id: "laser_sensor_link"
angle_min: -1.57079994678
angle_max: 1.57079994678
angle_increment: 0.00436940183863
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
  uint32 seq
  time stamp
  string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities

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

from 功能包名.msg import 消息文件名

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

sensor_msgs/Imu Message 解释说明

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

关于 nav_msgs/Odometry 的疑惑解释

使用 linear 和 angular 计算路径发布到 odometry

wiki 使用 linear 和 angular 计算路径发布到 odometry

docker 下安装

docker 下 ros 开启图形化界面

urdf 学习笔记一

很好的一篇 URDF 解读

URDF

连杆(link)标签的属性,参考书籍P416
<link33>: 连杆的可视化、碰撞和惯性信息设置
<collision>: 设置连杆的碰撞计算的信息
<visual>: 设置连杆的可视化信息
<inertial>: 设置连杆的惯性信息
<mass>: 连杆重量(单位:kg)的设置
<inertia>: 惯性张量(Inertia tensor34)设置
<origin>: 设置相对于连杆相对坐标系的移动和旋转
<geometry>: 输入模型的形状。提供box、cylinder、sphere等形态,也可以导入COLLADA (.dae)、STL(.stl)格式的设计文件。在<collision>标签中,可以指定为简单的形态来减少计算时间
<material>: 设置连杆的颜色和纹理
关节(joint)标签的属性
<joint name=” joint2” type=” revolute”>
  <parent link="link2"/>
  <child link="link3"/>
  <origin xyz="0 0 0.5" rpy="0 0 0"/>
  <axis xyz="0 1 0"/>
  <limit effort="30" lower="-2.617" upper="2.617" velocity="1.571"/>
</joint>

<joint35>: 与连杆的关系和关节类型的设置
<parent>: 关节的父连杆
<child>: 关节的子连杆
<origin>: 将父连杆坐标系转换为子连杆坐标系
<axis>: 设置旋转轴
<limit>: 设置关节的速度、力和半径(仅当关节是revolute或prismatic时)

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

很好的一个有关超声波、红外、IMU、ODO传感器示例
roslaunch rover_gazebo rover_world.launch
开启键盘交互节点
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

进阶实践

turtlebot3 机器人官方教程

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

记得设置环境变量 export TURTLEBOT3_MODEL=waffle_pi (或者add to your ~/.bashrc file)

或者

source /opt/ros/kinetic/setup.bash && source ~/ankobot_catkin_ws/devel/setup.bash && export TURTLEBOT3_MODEL=waffle_pi

Simulate TurtleBot3 inside a fake house with Gazebo (gazebo_ros package)

roslaunch turtlebot3_gazebo turtlebot3_house.launch

Start SLAM in a new terminal tab (gmapping):

roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

Start autonomus navigation in a new terminal tab (simple obstacle avoidance, source code in turtlebot3_drive.cpp)

roslaunch turtlebot3_gazebo turtlebot3_simulation.launch

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

几篇有关订阅(多收多发、多收一发) topic 的文章
  1. 关于同时订阅多个topic的问题
  2. ROS Topic概念
  3. ROS 多个传感器 publish 同一个Topic
  4. 单节点的多Topic同时收发

传感器规格确定

支持LDS的典型的ROS功能包包括支持SICK LDS的sicks300、sicktoolbox和sicktoolbox_wrapper功能包,还有支持Hokuyo公司的LDS的hokuyo_node和urg_node功能包,以及支持velodyne公司的LDS的velodyne功能包。还有支持RPLIDAR的rplidar功能包,以及支持TurtleBot3所配备的LDS的hls_lfcd_lds_drive功能包

turtleBot3 Waffle Pi:

TurtleBot3的硬件设计文件像开源软件一样,都向公众开放。如果需要使用TurtleBot3的控制器
OpenCR或需要TurtleBot3各型号的硬件文件,请使用以下链接地址。每个开源硬件如无特指,都遵
循Open Source Hardware Statement of Principles and Definition v1.0许可证
http://www.robotis.com/service/download.php?no=678


概念

TurtleBot3的软件由OpenCR控制板的固件(FW)和4个ROS功能包组成
TurtleBot3的ROS功能包包括turtlebot3、turtlebot3_msgs、turtlebot3_simulations
和turtlebot3_applications

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!