如何在函数 mstraj 中 如何定位到各个经过点的时间步
时间: 2024-05-03 21:19:16 浏览: 24
在函数 mstraj 中,可以通过以下步骤定位到各个经过点的时间步:
1. 首先,使用 linspace 函数生成一系列时间步 t,以确定轨迹的时间范围和分辨率。例如,可以使用以下代码生成从零到终止时间 tf 的 n 个时间步:
```
t = np.linspace(0, tf, n)
```
2. 然后,对于每个经过点 p,可以使用 interp1d 函数找到其在时间轴上对应的时间步 tp。interp1d 函数可以根据已知的数据点(即轨迹的起始点、经过点和终止点)来进行线性插值,从而找到任何一个时间点对应的位置。
```
from scipy.interpolate import interp1d
xp = [x0] + [p[i,0] for i in range(N)] + [xf]
yp = [y0] + [p[i,1] for i in range(N)] + [yf]
tp = interp1d(np.cumsum(d), t)(np.arange(sum(N)+1))
```
这里,xp 和 yp 分别是包含所有已知位置的数组,tp 是根据已知位置计算出的对应时间步的数组。np.cumsum(d) 是从起始点到每个经过点的距离之和,N 是经过点的数量。
3. 最后,可以通过索引 tp 来获取每个经过点的时间步。例如,要获取第 i 个经过点的时间步,可以使用以下代码:
```
ti = tp[np.sum(N[:i])+1]
```
这里,np.sum(N[:i])+1 是前 i 个经过点的位置总数加上起始点的位置数,加一是因为起始点也是一个时间点。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)