나는 로봇을 가지고 있는데,이 로봇을 외부 필드의 8 자 형태로 미리 정의 된 경로를 따르고 싶습니다. 로봇은 조종하기 쉽지 않으며 바람과 같은 외부 요인에 의해 로봇이 정확한 경로를 따르지 않아 경로 옆에 놓일 가능성이 높습니다.로봇 공학 프로젝트에서 입방 스플라인에 가장 가까운 점을 얻는 방법은 무엇입니까?
나는 5 점을 정의하여 형성 수행하고 큐빅 스플라인 (I가이 경로가이 메시지 아래에 정의하는 데 사용되는 코드)를 사용하는 점 이상 라인 만들려면 경로 :
을저는 항상 큐빅 스플라인 선상에있는 지점으로 로봇을 조정할 수 있기를 원합니다.
- 입방 스플라인 라인을 따라
- 사전
0.2
단위가 새를 결정하기 위해 로봇의 현재 위치에서 큐빅 스플라인에 가장 가까운 지점을 계산 : 내가 가장 쉬운 방법이다 생각이 작업을 수행 할 수 있도록 로봇이 목표로 삼을 웨이 포인트. 그리드에서 로봇의 위치가 위의x=0.4, y=-0.5
경우
예를 들어, 가장 가까운 지점은 약 x=0.4, y=-0.28
하고 새로운 웨이 포인트는 약 x=0.22, y=-0.18
다음과 같습니다
지금은했습니다 세 가지 질문이 있습니다.
- 입방체 스플라인에서 가장 가까운 점은 어떻게 찾을 수 있습니까?
- 큐빅 스플라인의 발견 된 점에서 0.2 단위를 "전진"시키는 방법은 무엇입니까?
- 중간에 경로가 교차하는 경우에도 주어진 경로에 머물러있게하려면 어떻게해야합니까?
모든 도움말을 환영합니다!
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate
x = [-0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5]
y = [0.25, 0, -0.25, 0.25, 0, -0.25, 0.25, 0, -0.25]
tck, u = interpolate.splprep([x, y], s=0)
unew = np.arange(0, 1.01, 0.01)
out = interpolate.splev(unew, tck)
plt.figure()
plt.plot(x, y, 'o', out[0], out[1])
plt.legend(['Predefined points', 'Cubic Spline'])
plt.axis([-0.75, 0.75, -0.75, 0.75])
plt.show()