赞
踩
你好,我是小鱼。上一节我们推导并在代码中实现了运动学正解,本节我们来学习下运动学逆解,实现给定线速度和角速度,计算出轮子达到怎样的转速才能达到这个速度。
我们直接用正解结果进行求逆解即可。
v
=
(
v
l
+
v
r
)
/
2
ω
=
(
v
r
−
v
l
)
/
l
v=(v_l+v_r)/2 \\ {\omega} = (v_r-v_l)/l
v=(vl+vr)/2ω=(vr−vl)/l
所以有
v
l
=
v
−
ω
l
/
2
v
r
=
v
+
ω
l
/
2
v_l = v-\omega l/2 \\ v_r = v+\omega l/2
vl=v−ωl/2vr=v+ωl/2
继续在上一节中的代码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,测试。
没啥好说的,记得提交下代码
git commit -m "feat(13.13):完成运动学逆解"
代码提交也是有规范的,我们一起来学习下:https://fishros.org.cn/forum/topic/390
我们采用用的比较多的Angular 规范
git commit -m "<type>(<scope>): <subject>"
其中 type(必选)、scope(可选)和 subject(必选)
scope用于说明 commit 影响的范围,比如电机控制层、通信层等等,视项目不同而不同。
例如在FishBot嵌入式中,可以是motors,uart等。如果你的修改影响了不止一个scope,你可以使用*代替。
subject是commit目的的简短描述,不超过50个字符。
结尾不加句号或其他标点符号。
举个例子
小鱼给FishBot增加了oled支持
git commit -m "feat(13.13):完成运动学逆解"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。