锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

summay2 机器人的里程计数据分析[AI]

时间:2022-08-25 22:30:00 py2系列位移传感器py2

本课程结束时,您将能够:
解释ROS在这些信息中,机器人发布的里程计数据与两轮差速驱动机器人(如TurtleBot3)相关部分。
开发Python节点,从活跃ROS网络获取里程计信息,并将其转换为方便、可读的机器人姿势的有用信息。
使用ROS实现机器人开环速度控制的命令行工具。
开发Python机器人遵循预定义的运动路径,采用开环速度控制方法。

恢复你的环境
请记住,在WSL-ROS环境中的任何工作都不会保留在会话或不同大学的计算机之间。在最后一节实践课结束时,你应该运行wsl_ros将您的主目录备份到您的大学U:驱动器。在TERMINAL 以下命令在本周2开始会议前立即恢复:

[TERMINAL 1] $ wsl_ros restore 

启动机器人模拟
在一个空世界中输入以下命令TurtleBot3模拟华夫饼:

[TERMINAL 1] $ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch 

机器人的位置和速度
你应该从本维基的机器人介绍中了解到,我们正在使用它TurtleBot以下传感器和执行器用于导航:
两个独立控制的车轮电机(差速驱动配置)。
惯性测量单元用于检测运动和方向(IMU)。
360°激光位移传感器(LiDAR)用于检测环境。
可以向任何ROS机器人发出两种速度指令来移动:
线速:机器人在其轴上向前或向后移动。
角速:机器人绕轴旋转的速度。
您认为列表中的哪个主题可以用来控制机器人的速度?rostopic info命令查看主题的更多信息。
您确定的主题应使用几何图形/扭曲消息。为了移动机器人,您必须向此主题发送此类消息。rosmsg命令(就像你上周做的那样)

$ rosmsg info geometry_msgs/Twist 

了解更多关于此消息格式的信息。
如上所述,TurtleBot只能在x轴上产生线速,在z轴上产生角速。因此,只有速度命令被发送到线性系统。x或角度。这个消息的z部分会有任何影响。如上所述,TurtleBot只能在x轴上产生线速,在z轴上产生角速。因此,只有速度命令被发送到线性系统。x或角度。这个消息的z部分会有任何影响。

练习1:探索里程计数据
运行上面的rostopic list命令时应该出现的另一个主题是/odom。这个主题包含里程计数据,这也是机器人导航所必需的,也是允许机器人接近其位置的基本反馈信号。
在终端2中使用rostopic echo命令显示模拟机器人当前发布的里程计数据:

 [TERMINAL 2] $ rostopic echo -c /odom  [WT(B)] $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch  [TERMINAL 2] $ rosrun com2009_examples robot_odometry.py 

里程计是什么?
我们可以用rostopic info命令了解更多关于里程计数据的信息:
这就提供了关于该主题使用的消息类型的信息:
类型:导航/里程计
我们可以用rosmsg info命令了解更多信息:
rosmsg信息导航/里程计
这告诉我们nav_msgs里程计信息包含四个基本元素:
标题;子帧id;姿势;扭曲

pose告诉我们机器人相对于任何参考点的位置和方向(通常是打开时机器人的位置)。姿势由以下决定:
来自OpenCR板上惯性测量单元(IMU)来自左右车轮编码器的数据估计了机器人从其定义参考点(使用空间计算)的距离。
位置数据对于确定机器人的运动非常重要,我们可以估计它在三维空间中的位置。
方向以四元数为单位表示,角度需要转换为主轴(以度为单位)。幸运的是,ROS tf库中有一些函数可以为我们实现这一点,我们可以在任何地方Python这些函数用于节点
我们的TurtleBot3机器人只能在二维平面上移动,因此,事实上,它的姿势可以完全使用(x,y,θz)其中x和y是机器人在x-y平面上的二维坐标,θz是机器人绕z(偏航)轴的角度。你应该在上面的练习中注意到这一点,其中delta列中的线性_z、θx和θy值都应该为0.000(或变化很小)。twist告诉我们机器人当前的线速和角速,这些数据直接来自车轮编码器。所有这些数据都是根据主轴定义的。

练习2:创建Python处理里程计数据节点
odom_subscriber.py

基本导航:开环速度控制
练习3:移动终端中带rostopic的机器人

[TERMINAL 3] rostopic pub /cmd_vel geometry_msgs/Twist[SPACE][TAB] $ rostopic pub /cmd_vel geometry_msgs/Twist "linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0" 

could only change the linear x and y, it means change the velocity of object on the x and y axle

练习4:创建Python机器人移动节点
move_circle.py

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章