有多少人工,就有多少智能

ros - slam - microros - 两轮差速模型运动学 - 运动学逆解

上一节我们推导并在代码中实现了运动学正解,本节我们来学习下运动学逆解,实现给定线速度和角速度,计算出轮子达到怎样的转速才能达到这个速度。

 一、逆解推导
我们直接用正解结果进行求逆解即可。

 二、编写代码
继续在上一节中的代码Kinematics.cpp中完善即可。

void Kinematics::kinematic_inverse(float linear_speed, float angular_speed, float &out_wheel1_speed, float &out_wheel2_speed)
{
    out_wheel1_speed =
        linear_speed - (angular_speed * wheel_distance_) / 2.0;
    out_wheel2_speed =
        linear_speed + (angular_speed * wheel_distance_) / 2.0;
}

三、下载测试
下载代码,运行agent,点击RST按键

sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6

 看到连接建立表示通信成功,接着用ros2 topic list

ros2 topic list

 看到/cmd_vel表示正常,接着我们使用teleop_twist_keyboard进行键盘控制

ros2 run teleop_twist_keyboard teleop_twist_keyboard

先调整下速度,降低到0.05左右(50cm/s),然后使用i\j\j\k,测试。

 

posted @ 2024-07-02 23:07  lvdongjie-avatarx  阅读(10)  评论(0编辑  收藏  举报