I’m trying to move position the rover without GPS using Raspberry-Pi. It’s supposed to follow a red marker by using the camera to detect a target from which the position can be determined.
I want to implement it indoors where GPS is not available. I am trying to use set_position_target_local_ned_encode on vehicle.message_factory to implement movement. However, it does not work.
Questions:
Does set_position_target_local_ned_encode only work on effective GPS readings and not on situations where Mission Planner sometime say GPS: NoFix
Are there any alternatives to implement rover movement without being GPS dependent?
ArduPilot needs a sensor source for position and velocity information. Normally that is GPS, but other sensors can be used - see Non-GPS Navigation — Rover documentation
Monocular SLAM algorithms may work here, but you likely need to write your own software to take in the Pi Camera’s images and determine a position and velocity output to send to ArduPilot.