上一节我们推导并在代码中实现了运动学正解,本节我们来学习下运动学逆解,实现给定线速度和角速度,计算出轮子达到怎样的转速才能达到这个速度。
一、逆解推导
我们直接用正解结果进行求逆解即可。
二、编写代码
继续在上一节中的代码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,测试。
标签:--,float,运动学,dev,逆解,slam,speed,out From: https://www.cnblogs.com/ai-ldj/p/18280718