ROS从入门到放弃 —— 玩一玩F1TENTH
0. 准备工作
- 这里我们先安装一下F1TENTH。
- 如果使用ROS kinetic,可以用这样的方式安装
sudo apt-get install ros-kinetic-tf2-geometry-msgs ros-kinetic-ackermann-msgs ros-kinetic-joy ros-kinetic-map-server
cd ~/catkin_ws/src
git clone https://github.com/f1tenth/f1tenth_simulator.git
cd ~/catkin_ws
catkin_make
source devel/setup.bash
- 期间可能会出在catkin_make出现的问题:
解决办法:
观察具体安装的版本
然后
cd /opt/ros/kinetic/lib/
sudo ln -s liborocos-kdl.so.1.3.0 liborocos-kdl.so.1.3.2
结果:
0.1 开车车
使用下面的代码打开Simulation,并对着终端按下k
。之后我们就可以用wasd来控制汽车移动了,并用空格让汽车停下。
roslaunch f1tenth_simulator simulator.launch
并且可以用rviz里面的2d Pose Estimate来重置车车的位置,下面是系统运行时候的rqt_graph。
0.2 学习如何控制车车!
- 话题:
/key
- 消息类型:
std_msgs/String
- 具体定义:
string data
我们使用rostopic info /key
可以看到这个topic使用的消息类型:std_msgs/String
。
而这个消息具体的定义:rosmsg show std_msgs/String
:string data
其他的一些参数的定义可见:
Advanced Information
1. 让车车跟墙墙走
具体内容
PID
让车跟墙走
1.1 PID
- 用于闭环控制
- u ( t ) u(t) u(t)是我们转角的度数
- e ( t ) e(t) e(t)是设定值和当前值的差值,我们这个例子中是我们希望的和墙壁的夹角和实际夹角之间的差距。
1.2 跟墙走!
1.2.1 如何测量和墙壁之间的夹角:
- 记 D t D_t Dt为t时刻车辆中心与墙壁之间的距离。
由图,我们可以计算出夹角 α \alpha α
α = a r c t a n ( a ∗ c o s ( θ ) − b a ∗ s i n ( θ ) ) \alpha = arctan(\frac{a*cos(\theta)-b}{a*sin(\theta)}) α=a