文章记录了近期整了两个月左右过程中用到的一些资料,整理下来,有些乱...
建议要是能用 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
: 连杆的可视化、碰撞和惯性信息设置
: 设置连杆的碰撞计算的信息
: 设置连杆的可视化信息
: 设置连杆的惯性信息
: 连杆重量(单位:kg)的设置
: 惯性张量(Inertia tensor34)设置
: 设置相对于连杆相对坐标系的移动和旋转
: 输入模型的形状。提供box、cylinder、sphere等形态,也可以导入COLLADA (.dae)、STL(.stl)格式的设计文件。在标签中,可以指定为简单的形态来减少计算时间
: 设置连杆的颜色和纹理
关节(joint)标签的属性
: 与连杆的关系和关节类型的设置
: 关节的父连杆
: 关节的子连杆
: 将父连杆坐标系转换为子连杆坐标系
: 设置旋转轴
: 设置关节的速度、力和半径(仅当关节是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 的文章
- 关于同时订阅多个topic的问题
- ROS Topic概念
- ROS 多个传感器 publish 同一个Topic
- 单节点的多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