ros install learn方法屡试不爽爽爽爽
1. 启动ws
cd /home/itcast/0ros_learn/0zkdrosmelodic
已经catkin_make完了slam_sim_demo
source devel/setup.bash
roscore
2. 启动物理仿真Gazebo(眺望台)(相当于物理环境模拟可视化出来)
roslaunch robot_sim_demo robot_spawn.launch
3. 运行激光Slam程序 (4个方法激光slam:hector,gmapping,)
roslaunch slam_sim_demo gmapping_demo.launch
4. 可视化 Rviz
roslaunch slam_sim_demo view_slam.launch
学习课程:1 中科院slam_smi_demo ROS初学
学习课程2:autorobot公司
3. 造车文档ross learn 2 tutor 赵显左autolabor
4. 视频bili
学习课程3:黑马机器人研究所,有个教育培训合作
传志教育视频教程上下位机 黑马合作ROS通信开源视频
教学文档小车平台ROS
代码github黑马小车原代码666
学ROS可以开阔视野,了解各个技术下位机驱动程序开发,上位机感知算法,增量定位建图算法,完成巡航任务,无人驾驶任务。短训业务后续发展提供新突破口,突破软硬结合
python nano串口https://blog.csdn.net/qq_44847636/article/details/113872341
(系统和软件中间件 中国大学讲解层面比较宏观和格局大容易形成知识体系)https://wiki.ros.org/:
框架plumbing:分布式(扩展性好只改底层模块),进程node管理,node通信
tools: 可视化工具,rviz gazebo
功能:控制 规划 视觉(人脸识别功能加入设计,其他直接拿来复用) 建图
社区:开源包,项目 app get 工具 文档和教程
进程管理master注册和管理:roscore(rosout,parameter server顺带启动)
node通信:node是一个process ,c++程序,python程序的 可执行程序 :node是活动的:rosrun pname nodename,rosnode list 、info、kill,,,roslaunch pname launchname(会自动先启动roscore,再指定node 依赖 参数 yaml parame)
rospack find pname
rospack list
roscd pname
rosls pname
rosed pname filename ==vim
catkin_create_pkg pname deps
rosdep install pname # 用于编译其他人的包的依赖
metapacakge:类似init模块
通信方式:topic,service,parameter service , actionlib
msg是类(结构体),topic是对象:数据bool,int16,time duration,header,可变长array 类似vector,固定array【c】
rosmsg list rosmsg show msgname # 中科学 相机模型是knict相机可见2m深度
topic(pub,sub异步发收不用绑定 模拟器camera采集数据发送img-view和img-process),service,parameter service , actionlib
service:(请求和响应同步,会阻塞等server做完)如果有些信息不会被一直检测,比如姿态检测目标检测,只有在需要时才被cli调用serve
srv和msg:
rosservice list 、 info service_name
rosservice call service_name args
rossrv list
sorsrv show srv-name
parameter server: 有别于同步和异步,相对于静态一些,维护字典,可命令行,lauch,
rosparam list
rosparam get param_key
rosparam set param_key param_value
rosparam dump file_name 按照 yaml格式字典 name:“zjh” \n age:20
rosparam load file_name
rosparam load file_name
rosparam delete param_key
tools:仿真,v-rep,carsim,调试可视化Rviz,rqt,命令行工具:rostopic,rosbag 专用工具Moveit!机械臂专用
仿真三维世界gazebo,物理引擎ODE,bulet其他的,仿真动力学,导航仿真,感知仿真(cam,lidar,毫米波雷达)无人驾驶模拟训练
Rviz: robot visualization tool 监控和调试 启动Rviz,可以添加命令比如之前的订阅cam信息 viewer出来,激光调试
rqt:调试用的很多,快速了解别人代码的原貌,rqt_graph:显示通信架构 了解系统原貌
rqt_plot 曲线,调试查看IMU数据,激光lidar数据,调试硬件通讯的接口,
rqt_console,日志
rosrun rqt
rosbag:调试多,数据记录和回放:record 时间戳 ,公开数据集合就是通过record记录
rosbag record topicname # rosbag record /camera/rgb/image_raw
rosbag record -a
rosbag paly bag_file #
client library接口如何开发业务程序: ROS库,对api进一步封装
roscpp,topic,service,param,timer 执行效率高
init NodeHandle master:命令空间
背诵写topic_demo(GPS): package,msg, Cmakelist package.xml
talker.cpp: 模仿GPS发布周期信息,要了解硬件接口通讯协议
listener.cpp :
背诵service_demo:
param_demo: node handle
rospy,开发效率高,调取viewr小脚本
和cpp接口有点不一样,在ros2中统一了
node,topic,service,param,time
roslisp
课程8章节TF坐标变换(抓取一个东西 基础知识理论 位置和姿态),URDF,机器人自身属性
tf树(维护位置世界关系我在哪联通的node,给tf发消息):topic,tool,接口
tf:vector3 Point Quaternion matrix3x3,pose,transform,stamped,stampedTransform
URDF统一机器人描述格式 linkPart, joint运动副
SLAM入门,如何应用ROS工具满足算法,mapping localization ,path planing A啥的导航路径规划用现成的
算法包:Gmapping,Karto hector google的Carorapher
定位:localization
导航:全局:Dijkstra,A 局部DWA路径规划: Navigation:
建图top:栅格地图: Topic/map Type: nav_msg/OccupancyGrid
slam1: Gmapping Topic 激光slam,激光和编码器,执行器
input订阅: tf,scan: laser lidar 点云, encoder , 其他 vision,imu
slam2:Karto比Gmapping早差一些
10.navigation:导航2d,目标点 输出速度角速度
硬件
lidar slamtec 思岚机器人
串口通信调试助手
pip3 install pyserial
pip3 install pyqt5
nano串口通信测试程序,如果用的是microUSB的用 ttyGS0
https://blog.csdn.net/qq_44847636/article/details/113872341
pyserial
conda install pyqt图像窗口GUI设计
heiMa stm32 nano SLAM 淘宝3199
nano slam 淘宝
nano GPIO示例 只有数字信号
相当于标志位信号
电机、led、蜂鸣器、oled显示屏幕
python threading,不用按顺序执行
import threading
def say_hello(i):
print('hello {}'.format(i))
if __name__ == '__main__':
for i in range(8):
t= threading.Thread(target=say_hello,args=(i,))
t.start()
print('我是主线程')
预编程机器人
自主机器人(扫地机器人)
遥控机器人(AR,消防,排爆)
增强机器人(人思考算力最强)
传感器(雷达、相机、温度,IMU GPS,编码器)、执行器(电机)
软件:业务流程、算法、硬件逻辑执行
单线多线激光雷达频率,结构光可见范围,分辨率高低
路径规划、计算机视觉各个领域 结合,提升开发效率
进程管理、进程间通讯、设备驱动
模拟器、可视化、调试工具包、日志管理工具包
ros foxy fitzroy是ros2版本
robots.ieee.org
Melodic版本
http://wiki.ros.org/cn
进入ws
通过clion的sh打开文件src
seting cmake debud /tem/hellor_ros/cmake-debug
source devel/setup.bash
roscore
rosrun hello_ros
机器人(英语:Robot)包括一切模拟人类行为或思想,或者模拟其他生物的机械(如机器狗,机器猫等)。
在当代工业中,机器人指能自动运行任务的人造机器设备,用以取代或协助人类工作,一般会是机电设备,由计算机程序或是电子电路控制。
特点:可控制、有感知、可运动
机器人操作系统(能有分布式联动,通讯,下发指令,大脑控制小脑)
机器人由硬件和软件组成,硬件包含机械结构,执行器显示器,传感器(感知imu cam lidar等组成),MCU小脑驱动软件驱动执行器,上位机大脑通过通讯协议得到感知器的信息并经过某项任务功能的算法导航到某一地点,对机器人执行器驱动node发送驱动指令
rosrun rviz rviz
rosparam set /robot_description -t 01_first.urdf
rosrun joint_state_publisher joint_state_publisher
分析:
总共有7个部件,4个轮子,1个板子,2个联轴杆.
抽象成urdf,则是有7个link。
这个7个link是通过6个joint结合在一起的。
其中,板子和2个联轴杆属于固定连接在一起的。
对自动驾驶来说,控制就是指使用方向盘、油门和刹车,将车驾驶到期望的位置。我们开车在十字路口或拐弯时候,可以凭着直觉和经验来决定拐弯的角度大小,加速的时机,以及是否需要刹车等。我们需要将这种直觉教给计算机。
我们经常把控制算法称之为控制器,PID控制器就是最常见、最基础的控制器之一。在介绍PID控制器之前,我们先了解关于控制的大的分类,根据是否有反馈可以分为开环控制和闭环控制。
我们给定设定目标速度为 60kph (输入量,单位:公里/小时),此时控制器将之转换成小车电机(受控对象)所需PWM方波数量(控制量);
小车电机接收到信号开始转动,但是由于上下坡、负重、路况等不可控因素,往往结果速度也就是 输出量 不能准确等于目标速度60kph,例如输出为55kph;
此时,电机的编码器即车速仪(传感器)收集到实际的行驶速度 55kph 作为 反馈量 ;
求和节点将 误差信号 = 输入量 - 反馈量 作为 控制器 的输入(可用使用多种算法),即对电机多发送 5kph 对应的PWM方波
不断循环 2-4 此过程,以保证 输出量 可以接近并等于 输入量
常见闭环控制系统场景
车道线校正,偏航矫正,车道保持,用视觉做反馈调整转向控制器
车速控制
四轴飞行器高度控制
变频空调温控
锅炉温控
我们需要识别出黄色的车道线,同时最好能画出车头转向的指示线,最终所表现的结果如下:
黄色提取,二值化,ROI截取,边缘提取,找出直线(霍夫直线预测cv.HoughLinesP),
计算引导线(屏幕中央的线是形势线),偏离形式线的角度,调整