In the last two months I was exploring an idea of using a haptic device to control a multirotor. Here is the video I made showing the system working in simulation:
The setup
For the simulation I used Px4 SITL running with jMAVSim. For interfacing with Px4 I'm using mavos + two custom ROS nodes. If you are interested in trying it yourself then you can find all source code in the following repo: https://github.com/msadowski/px4_falcon .
The diagram below roughly shows the architecture of my system:
Results
In short: I wouldn't use Novint Falcon as casual 'controller' for UAV. I found the device to be slightly unreliable (sometimes motors stop for about 1 second). Nevertheless I still consider this concept to be quite interesting. Obviously it can only work in stabilized modes where you control groundspeed. One personal advantage I have from this project is that I probably could use whatever device that produces sensible output to control a Px4 based system.
Unfortunately at this time I cannot test the system with a real drone. As soon as I get hands on Pixhawk I will try to set it up and post an update.
Future work
I'm not planning to put too much more effort into this project as there are many more things to explore. I'm happy however to accept pull requests on improvements and fix any potential bugs.
Some remaining work:
- Implement yaw rotation using digital buttons (lame, I know)
- Implement homing mode on starting program (for offsetting Novint Falcon encoders)
- Programatically establish minimum and maximum values for positions received from Falcon for each axis
- Clean up the code
- Review offb_node.cpp timings (especially refresh rates)
More info
If you would like to know more about the project then here are some links:
- Github repository with the project: https://github.com/msadowski/px4_falcon
- 1st blog post: https://msadowski.github.io/1ppm/uav-haptic-control-pt1/
- 2nd blog post: https://msadowski.github.io/1ppm/uav-haptic-control-pt2/
Comments