linorobot入门教程-里程
linorobot入门教程-里程
说明:
- 里程信息用于评估机器人相对于原地的位置。
- 为了使用里程信息更可靠,这里使用了两种来源的里程信息
- 主要来源是安装在电机上的编码器,机器人的线速度通过计算随时间变化的脉冲数并发布到/raw_vel话题来计算。
- 然而,计算机器人角速度的方法可能由于噪音和车轮滑动而容易产生误差
- 使用IMU通过测量陀螺仪的转速来计算机器人的角速度。
- 订阅/raw_imu话题的节点使用AHRS算法通过imu_filter_madgwick包过滤掉IMU中的噪音
- 滤波后的输出发布到/imu/data,以提供lino_base_node机器人的角速度和可靠的IMU数据,以用于需要加速计,磁力计和陀螺仪测量的节点。
使用rostopic查看里程:
- 在机器人电脑执行:
roslaunch linorobot bringup.launch
- 在开发电脑,需要打开二个终端
- 第一个终端,执行teleop_twist_keyboard:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
- 第二个终端,显示里程话题
rostopic echo odom
向前驱动机器人,查看第二终端输出的结果
如果x轴的线速度近似等于teleop_twist_keyboard中定义的速度(即0.5 m/s)如下所示。
当您向前推动时,线性速度必须为正值,在您反转机器人时为负值。
如图:
- 对于mecanum驱动机器人,您还需要检查y轴上的线速度。
- 首先,您需要通过按SHIFT + j向左移动并按SHIFT + l向右移动机器人
- 这一次,检查y轴的线速度。 速度必须近似等于teleop_twist_keyboard中定义的速度。
- 当向左移动时,返回正线速度,向右移动返回负线速度
- 接下来,逆时针旋转机器人(按teleop_twist_keyboard上的'j')
- 并检查/odom角速度是否与teleop_twist_keyboard中定义的速度(即1 rad/s)几乎相同。
- 顺时针为正值,逆时针为负值
- 如图:
使用rviz查看里程信息:
- 在机器人电脑执行:
roslaunch linorobot bringup.launch
- 在开发电脑,需要打开二个终端
- 第一个终端,执行teleop_twist_keyboard:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
- 第二个终端,打开rviz
roscd lino_visualize/rviz
rviz -d odometry.rviz
- 通过按teleop_twist_keyboard中的'j'旋转机器人360度。
- 检查rviz是否机器人回到初始角度。
- 对于阿克曼转向机器人,因为它不能原地旋转,携带机器人并将其旋转360度。
- 检查rviz是否机器人回到初始角度。
- 如图:
- 接下来,驱动机器人前进约1米。
- 检查rviz机器人是否位移是约1m, rviz的每个方格都是1平方米。
- 如图:
- 最后,以正方形的方式驱动机器人。
- 检查rviz是否机器人的位置大致靠近其原点
- 如图:
问题:
- 如果线速度符号错误,请尝试交换编码器引脚
- 如果角速度符号不正确,请检查IMU是否以正确的方向安装(X - 朝前,Y-朝左)。
- 如果角速度根本没有读数,请检查IMU的接线。
- 如果rviz机器人的位移与机器人的实际位移不匹配,请检查机器人的配置 (linorobot /teensy /firmware/lib /config/lino_base_config.h)
- COUNTS_PER_REV = no of ticks per wheel revolution (每圈的脉冲数)
- MAX_RPM = max motor's RPM (最大电机转速)
- WHEEL_DIAMETER = wheel's diameter (车轮直径)
- TRACK_WIDTH = mounting plate's width (轮子间距)
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号