Opencr 펌웨어 변경 및 CalcOdometry 수식 질문

안녕하세요. 저는 Turtlebot3 WafflePI( xm430, raspberrypi4b, opencr 1.0)으로 공부를 진행하고 있는 학생입니다. 두 가지 궁금증이 있어 질문드립니다.

  1. Arduino IDE에서 확인해 본 결과, 위치를 수정하는 식에 대해 궁금증이 생겼습니다. 엔코더가 돌아가는 값에 따라 Double Wheel Mobile Robot의 Odometry를 Calculating하는 CalcOdometry 함수에서

x값의 변화량은 delta_s * cos(theta + delta_theta/2)인데 이유를 잘 모르겠습니다.
지금 제가 보고 있는 논문인 Trajectory Center과 Geometry Center가 다른(터틀봇과 같이) 경우에는, delta_s * cos (theta) - delta_theta * d * sin (theta) 가 되어야 한다고 생각합니다. (d는 로봇의 바퀴 간 중심과 기하학적 중심의 차이)

delta_theta/2에 대한 reference가 어떻게 되는지, 어째서 저런 항이 나오는지 아무리 찾아도 발견하지 못했습니다. Chatgpt-Scholar에 물어본 결과 해당 로봇이 nonholonomic하므로 평균 방향을 하는 것이 안전하다고 하는데, 이는 Taylor Series에 의해서 전개되는 건지, 어떻게 유도된 건지 궁금합니다.

  1. Arduino IDE를 통해 Firmware를 올리면 RaspberryPI에서 Robot_state_publishing이 안됩니다. /dev/ttyACM0을 인식하지 못하는데, 이는 펌웨어의 문제라고 판단되었습니다.

그래서 펌웨어를 다운받아서 올리는 방식으로 하면 잘 되는데, 문제는 해당 펌웨어를 수정할 수 없다는 것이 단점입니다. .opencr 파일을 어떻게 수정하는 지 궁금합니다. 파일을 열게 되면 글자가 전부 깨져보이더라구요.

혹시 .opencr 파일을 수정할 수 있는 방법이 있을까요?